Author SHA1 Message Date
Thore Cimbal 3921c9efeb Merge branch 'main' into Neckbeard-v0.1.1-analyse-1 2026-08-10 12:00:00 +00:00
Thore Cimbal feab9bda73 analysis: record session-close answers; withdraw the game-operating negative
The human answered the report's open questions: the game-operating
mirror exists (a controlled re-probe shows Gitea hides repo existence
behind an auth prompt, so the anonymous negative was inconclusive --
withdrawn in F-007); component dormancy is intentional and staged
(F-009 addendum); any F-002/F-003 remediation must ship an old->new
Zuordnung in the proven style of commit-zuordnung-2026-08-07 (F-002).
2026-08-10 12:00:00 +00:00
Thore Cimbal e68b295249 analysis: complete the systematic claim verification; add F-017 and ADR-0010 draft
verify_claims.py gives all 813 claim rows a mechanical disposition;
the 28 flags were adjudicated by hand (REPORT.md appendix). Two survived
as genuine drift (F-017): a closed issue still described as open in
shared/lab-netzwerk.md, and a 'pending' decision block in hosts/cfgmon.md
whose premise the same file records as executed.

Also: narrow the vendored-path filter (it silently dropped 7 tracked
icon files and produced false path-miss flags), record the confirmed
canonical author identity in F-003, verify the Gitea#48->GitLab#46
numbering shift by title in F-005, and add the ADR-0010 draft under
analysis/drafts/ for the human to git-mv into decisions/.

Branch renamed to Neckbeard-v0.1.1-analyse-1 per the human.
2026-08-10 12:00:00 +00:00
Thore Cimbal ccf83da515 analysis: correct the reach of the timestamp exposure
The Gitea mirror is private to the owner. An earlier draft inferred
'public' from an anonymous git ls-remote succeeding on the owner's
machine, which does not follow -- corrected in F-002, F-003, F-006,
REPORT.md and HANDOFF.md.

The exposure is prospective and sits on the git.lab side: content there
may later be pushed to GitHub. No such path is configured today (no
remote besides origin, no github.com reference in any of the six CI
configs). The severity ranking is unchanged and its reasoning is now
stated: a protection believed present but absent is what would make a
later outward push unsafe.
2026-08-10 12:00:00 +00:00
Thore Cimbal 0f419f006f analysis: add drift report and session handoff
REPORT.md groups the 16 findings by their four root-cause patterns,
maps each pattern to the neckbeard mechanism that would have caught it,
and lists the seven framework gaps the field test exposed.
HANDOFF.md carries scope, reproduction, this session's decisions and
the seven calls I am least confident about.
2026-08-10 12:00:00 +00:00
Thore Cimbal eaa00f0ed2 analysis: add 16 evidence-backed drift findings
Twelve drift findings and four works-well findings, each citing file
paths, line numbers, commit hashes or rows in analysis/data/. Every
'neckbeard mechanism' field names a concrete rule in neckbeard v0.1.1 or
states explicitly that none exists.
2026-08-10 12:00:00 +00:00
Thore Cimbal 959bf882e9 analysis: resolve SHA references and measure timestamp anonymisation
Two checks the human asked for after Phase 1: whether the mapping list
from the 2026-08-07 history rewrite still resolves older references, and
how far the anonymisation rule actually reaches.

sha_refs.tsv verifies all 251 mapping rows against the repos and
resolves every SHA cited in a management doc.
timestamp_anonymisation.tsv separates the project's own commits from
upstream fork history before counting non-compliant timestamps.
2026-08-10 12:00:00 +00:00
Thore Cimbal b8b853163d analysis: add deterministic inventory scripts and raw data
run_all.sh reproduces every file under analysis/data/ from zero: it
clones the in-scope components if missing, exports group issue metadata
from git.lab, and regenerates the inventories. Reruns are diff-clean --
no wall-clock time enters an output; 'days since' is measured against
the management repo's HEAD date.

The management repo is inventoried at main, not at the analysis branch,
so this analysis does not observe its own commits. inv_repo.py aborts
the run if anything outside analysis/ was modified.
2026-08-09 12:00:00 +00:00
Thore Cimbal f6a9b9f26b analysis: freeze scope and record neckbeard reference state 2026-08-09 12:00:00 +00:00
45 changed files with 24397 additions and 0 deletions
+158
View File
@@ -0,0 +1,158 @@
# HANDOFF.md — Session 1 → Session 2
Everything Session 2 needs, and nothing else. Session 2 designs and builds the
neckbeard-based management system in a **new branch**, starting fresh from this file.
## Where things are
| | |
|---|---|
| Analysis branch | `Neckbeard-v0.1.1-analyse-1`, branched from `main` at `2f012a6` (renamed from `analysis/neckbeard-fieldtest` at session close, per the human) |
| Commits | `git log main..` on this branch lists them: scope, inventory, SHA/timestamps, findings, report/handoff, reach correction, verification pass |
| Deliverables | [SCOPE.md](SCOPE.md) · [REPORT.md](REPORT.md) · [findings/](findings/) (F-001…F-017) · [data/](data/) · [scripts/](scripts/) |
| Read first | REPORT.md executive summary, then the pattern → mechanism → implication table |
| Neckbeard reference | `v0.1.1` @ `823a08cac6b03a47d7e2f661200a49ac6e09d38d`, `main`, clean |
Nothing outside `analysis/` was modified on this branch. `main` is untouched.
## Reproducing the raw data from zero
```bash
git clone https://git.lab/axion1337.chat/management.git
cd management && git checkout Neckbeard-v0.1.1-analyse-1
bash analysis/scripts/run_all.sh
```
Clones the five component repos into `../components/` if absent, exports group issue
metadata from git.lab, regenerates everything under `analysis/data/`. Bash + python3
stdlib only, no pip installs. Requires lab/VPN access for the clone and the issue export;
both skip cleanly without it and the rest still runs. Override the checkout location with
`NB_WORKSPACE`.
**A second run on an unchanged tree must produce no diff.** Verified with
`diff -r` after a full regeneration. No wall-clock time enters any output: "days since"
is measured against the management repo's HEAD commit date (2026-08-09), not the clock.
`inv_repo.py` aborts the whole run if anything outside `analysis/` was modified. That
guard was tested by deliberately dirtying `README.md`; it fires.
## Scope, as frozen at the Phase-0 STOP
Five components, slugs verified against git.lab with `git ls-remote`, human-confirmed:
| Display name | Repo slug |
|---|---|
| ThreadNet Call | `threadnet-call` |
| ThreadNet Git | `thread-net-git` |
| ThreadNet Operating | `threadnet-operating` |
| ThreadNet Server Suite | `axion1337.chat-gitops` |
| ThreadNet Web | `ThreadNet-Web` |
Out of scope as analysis targets: `game-operating`, `gameserver`, the `vendor` and
`Archiv` subgroups. References into them are recorded as `points-outside-scope`.
The human confirmed their own working copy points at canonical git.lab, not the mirror.
## Decisions taken this session, and why
1. **Both repos freshly cloned; push URL set to `DISABLED-no-push` on every clone**,
including clones `run_all.sh` creates. The mandate forbids modifying originals; making
it mechanically impossible beats remembering not to.
2. **The management repo is inventoried at `main`, not at the analysis branch.** The first
run counted this session's own commits and `analysis/` files as project reality (87
commits instead of 86, 45 files instead of 44). An analysis that observes itself
reports its own footprint as drift.
3. **Commits follow the repo's own convention** (`CLAUDE.md:116-134`): English,
conventional style, author *and* committer date at 12:00:00 UTC, plus the mandated
`analysis:` prefix. Not anonymising would have been drift this session introduced.
4. **The GitLab token is referenced by path, never read into output.** Per `CLAUDE.md:109`
its value was not printed, logged or written anywhere; the export holds **metadata
only** — no issue descriptions, no comments.
5. **All group issues exported, open and closed**, rather than an arbitrary
"recently closed" cutoff. The group is small (111 issues); a full export is
deterministic and needs no justification for where the line was drawn.
6. **`sha_refs.tsv` and `timestamp_anonymisation.tsv` were added** beyond the mandated file
list, prompted by the human's question about the rebase mapping list. They carry the
evidence for F-002, F-003, F-006, F-012 and F-015.
7. **Two tooling bugs were found and fixed mid-flight**, both of which would have produced
false conclusions: `git grep -E '\b…'` silently reports **zero** markers because git's
ERE has no `\b` (real count: 543), and a `TZ` that is not set on the `git` process
itself makes every commit look non-anonymised.
8. **Link statuses stayed at the three mandated values**; the nuance moved into a `kind`
column rather than inventing a fourth status.
9. **The claim sweep was completed inside Session 1**, after the human asked whether
pulling it forward would break the two-session split. It does not: verifying claims is
Phase-2 analysis work; only designing/fixing belongs to Session 2. Result: F-017 and
the REPORT appendix.
10. **ADR-0010 exists as a draft under [drafts/](drafts/)**, not under `decisions/`
the human decided it is filed in the old scheme, but this session must not create
files outside `analysis/`; placing it is one `git mv` by the human. Deliberately in
German, matching the old scheme it belongs to (a stated deviation from this
session's English-artifacts rule).
11a. **Session-close answers by the human (2026-08-10)**: F-002/F-003 remediation must
produce a Zuordnung (old→new mapping, style of `shared/commit-zuordnung-2026-08-07.md`);
`game-operating` mirror exists (private — the analysis negative was withdrawn);
`thread-net-git`/`threadnet-operating` dormancy is intentional and staged (base
features → monitoring → security; no polish detours) — see F-002/F-007/F-009 addenda.
11. **Session-close corrections by the human**, both binding for Session 2: the Gitea
mirror is **private to the owner**, not public (reach of F-002/F-003 rewritten —
the exposure is prospective, via a possible future git.lab→GitHub push); canonical
author identity is `Thore Cimbal <cfx@riot.8shield.net>` (F-003 addendum).
## Where Session 2 should start
**Standing directive from the human (session close):** before applying anything, work
through the failures of *both* approaches — the drift this report found in the
management approach *and* the seven neckbeard gaps it exposed — and where the old
approach carries value that fits neckbeard's philosophy (candidates are the four
works-well findings, the milestone/priority evidence in F-014, the mirror-topology
prose in F-013), fold that value into neckbeard rather than discarding it. Adoption
comes after that two-way harvest, not before.
The pattern → mechanism → implication table in REPORT.md is the input. Two things gate
everything else:
- **Question 1 in REPORT.md** — where the 71 open issues live after migration. ADR-0002
Option C versus pure Option B changes the shape of the whole design.
- **Neckbeard gap 1** — how five repos share one `AGENTS.md`. Unanswered, this blocks any
multi-repo adoption.
Neckbeard's own rules for Session 2: `PROJECT.md` is absent from the management repo, so
**Gate 0 fires there** (`AGENTS.md:57-63`) — it was suspended for this session only. The
migration is size L, so `WORKFLOW.md` Gates 15 with a design doc in `docs/design/` apply.
## The decisions I am least confident about
In descending order of how much they could mislead Session 2.
1. **The claim sweep is complete mechanically, not semantically.** Every one of the 813
rows now has a disposition (REPORT appendix), and all 28 mechanical failures were
adjudicated by hand. What remains open is honest but real: 360 rows carry no
mechanically checkable token — their truth is prose about hosts, procedures and
history that only a human or a live system can judge. And extraction itself is still
trigger-based: a false sentence containing no path, issue, ID, date, count or
status word was never in `claims.tsv` to begin with.
2. **The `game-operating` no-mirror conclusion did not survive** (F-007 addendum): Gitea
hides repo existence behind an auth prompt, my first probe discarded stderr, and the
human confirmed the mirror exists (private visibility). Twice in one session an
anonymous-`ls-remote` inference broke — treat such negatives as inconclusive by
default. The `CLAUDE.md:36` vs `hosts/overmind.md:28` contradiction stands.
3. **F-009 and F-010 are judgement calls, marked `medium`.** "Doc attention should follow
work mass" assumes dormancy is unintended, and a "Stand" label may legitimately mean
"system state as last verified" rather than "state of this text". Both could be
dismissed by an answer I do not have.
4. **The severity I assigned to F-002/F-003.** I first called the Gitea mirror public,
inferring it from an anonymous `git ls-remote` succeeding on the owner's machine. The
human corrected this: the host is private to them. The findings were rewritten; the
exposure is prospective (a future push from git.lab to GitHub) rather than realised.
The severity ranking still puts F-002 first, on the argument that a protection believed
present but absent is what makes a later outward push unsafe. That weighting is mine
and is contestable.
5. **F-011's confidence is `medium` because the sentence is ambiguous.** "Projekt-Repos
haben eigene CLAUDE.mds" may be descriptive rather than a claim about all five. I read
it as a claim because the sentence goes on to define conflict resolution against it.
6. **I did not verify claims made inside issue bodies.** `CLAUDE.md:52` says the migration
footnote *in the issue* is authoritative for shifted gitops numbers — so the one source
that could settle F-005's numbering question is the one I deliberately did not export.
7. **`markers.tsv` was produced and then barely used.** 543 markers, 538 of them inherited
upstream. I recorded "management: 0 markers, checked, no drift found" and moved on. If
technical debt in the components matters to Session 2, that file is unmined.
+231
View File
@@ -0,0 +1,231 @@
# REPORT.md — Neckbeard field test on the axion1337.chat management repo
Session 1 of 2, analysis only. Measured against neckbeard **v0.1.1**
(`823a08cac6b03a47d7e2f661200a49ac6e09d38d`, `main`, clean) as pinned in
[SCOPE.md](SCOPE.md). Raw data reproducible from zero with
`bash analysis/scripts/run_all.sh`; 16 findings in [findings/](findings/).
---
## Executive summary
The management repo is 11 days old, holds 44 files and 86 commits, and steers five
component repos plus itself. Its home-grown approach is **not decayed — it is unevenly
enforced**. Where a tool can hold a rule, the rule holds perfectly: every one of 71 open
issues has exactly one milestone and at most one status label, the WIP limit is respected,
no legacy ID is reused across 23 issues, and the management repo's 161 document links
contain zero broken targets. Where nothing enforces anything — prose, git refs, commit
metadata, agreement between two files — the same rule set fails, and it fails in the same
four ways every time.
The most consequential finding is not documentation drift. The 2026-08-07 history rewrite
set 251 commits to 12:00 UTC so that personal working hours could not be read out of the
history. That goal is met in **one of six repos**. 237 commits by the project's own
identities still carry real clock times, including 41 on an abandoned branch in
`axion1337.chat-gitops` clustered at 21:0001:00. Two component repos were never rewritten
at all. Both hosts are private today, so nothing has leaked; the cost is that the
protection is believed to be in place and is not, so any future decision to push outward —
to GitHub, or by opening a project — would be taken on a false premise, and history once
pushed cannot be recalled. The rule's own caveat in `CLAUDE.md:143` lists push times, issue
timestamps and pipelines as residual exposure, but not the git history itself, so a reader
concludes the opposite of what is true. See [F-002](findings/F-002-timestamp-anonymisation-covers-one-of-six-repos.md),
[F-003](findings/F-003-author-identity-unification-incomplete.md),
[F-006](findings/F-006-stale-branches-publish-pre-rewrite-history.md).
Second: a decision that was made, executed and is already load-bearing exists in no
steering document. Milestone **M5 — Härtung** was created on 2026-08-09 with 14 issues moved
out of M1. `roadmap.md`, committed the same day, still poses it as an open question and
still prints the pre-split distribution; `CLAUDE.md:98` still binds every issue to "M1M4";
no ADR covers it, though the repo's own rules make one mandatory for process decisions. An
agent following the canonical file would silently undo the split.
See [F-001](findings/F-001-milestone-m5-decided-but-absent-from-steering-docs.md).
What must survive migration is substantial and specific. The mirror topology is documented
with its reasoning, its counter-argument, its rescue procedure and its single justified
exception — and all six mirrors measure in sync. The rewrite mapping list verifies 251 of
251 rows against the live repositories, with zero contradictions. The repo names its own
unresolved problems, files them as issues, and records a near-miss as luck rather than
design. That candour is why this analysis was possible at all: every finding here is
downstream of a claim precise enough to be wrong.
**Bottom line for Session 2.** This project already works the way neckbeard assumes. The
migration's value is not new discipline but moving the existing discipline from places
where only a human can check it into places where a script can. Four framework gaps stand
in the way, listed below; the sharpest is that ADR-0001 solves one-repo-many-harnesses and
this project is many-repos-one-ruleset.
---
## Findings by root-cause pattern, most impactful first
### Pattern B — A rule is declared repo-wide and applied to a subset
The declaration and the application live in different places, and nothing compares them.
| Finding | | Impact |
|---|---|---|
| [F-002](findings/F-002-timestamp-anonymisation-covers-one-of-six-repos.md) | Anonymisation reaches 1 of 6 repos; 237 commits carry real hours | Stated privacy goal unmet while believed met; blocks any safe future push outward |
| [F-003](findings/F-003-author-identity-unification-incomplete.md) | 5 author identities of one person survive, one malformed | Same exposure class; one person renders as 45 contributors |
| [F-011](findings/F-011-component-claude-md-claim-unmet.md) | 4 of 5 components have no `CLAUDE.md` | The distribution channel for the rules is itself only partly applied — a plausible cause of F-002/F-003 |
| [F-008](findings/F-008-component-slugs-inconsistent.md) | Five components, four naming schemes | No deterministic path from display name to repo; this session had to ask |
### Pattern A — A decision is executed in the tool; the documentation is not carried along
| Finding | | Impact |
|---|---|---|
| [F-001](findings/F-001-milestone-m5-decided-but-absent-from-steering-docs.md) | M5 decided and populated; docs still call it open | Every new session is mis-primed by the canonical file |
| [F-007](findings/F-007-mirror-scope-claims-contradict-each-other.md) | Mirror count stated as five and six on the same day (the `game-operating` negative was withdrawn post-analysis — mirror exists, not anonymously readable) | Two canonical documents assert different repo counts simultaneously |
| [F-005](findings/F-005-dead-gitea-tracker-still-referenced.md) | Live doc routes to the tracker three docs declare dead, under an ambiguous number | A high-priority open decision is reachable only through a retired system |
| [F-010](findings/F-010-stand-labels-lag-their-own-commits.md) | Hand-written "Stand" labels older than their own file's last commit | Trains readers to distrust current content; gives no signal when content really is stale |
| [F-017](findings/F-017-prose-asserts-states-already-resolved.md) | Prose asserts states the tracker already resolved: a closed issue called open, a "pending" decision whose premise was executed 60 lines earlier | Sentences a reader would act on; found only by the systematic claim sweep |
### Pattern C — Two backlogs, one rule
| Finding | | Impact |
|---|---|---|
| [F-004](findings/F-004-open-work-lives-only-in-host-markdown.md) | Open next steps only in `hosts/`; OVERMIND-01, CFGMON-11/12/13, MATRIX-05 have no issue | Items invisible to board, milestone, priority and refinement |
| [F-009](findings/F-009-doc-attention-does-not-follow-work-mass.md) | gitops holds half the backlog and is absent from the vision | Session-start reading mis-weights prioritisation |
### Pattern D — Artifacts outlive their purpose without an owner
| Finding | | Impact |
|---|---|---|
| [F-006](findings/F-006-stale-branches-publish-pre-rewrite-history.md) | 3 abandoned branches, one carrying 41 pre-rewrite commits; `wiki` branch is a 3-month-old parallel truth | Undoes the rewrite for 42 commits; two truths about the same docs |
| [F-012](findings/F-012-orphaned-sha-references.md) | 6 unresolvable SHA citations, all benign — but nothing could check them | Evidence-by-citation depends entirely on human diligence at rewrite time |
### What works and must be preserved
| Finding | | Why it must survive |
|---|---|---|
| [F-014](findings/F-014-issue-hygiene-is-real.md) | Milestone duty 100%, one status label 100%, WIP limit held, no ID reuse, 0 broken links | Proof the team already works the way neckbeard assumes |
| [F-013](findings/F-013-mirror-topology-actually-holds.md) | All six mirrors in sync; decision recorded with reason, counter-argument, rescue path, one bounded exception | The form is the value: this is an ADR in all but frontmatter |
| [F-015](findings/F-015-rewrite-mapping-is-sound.md) | 251/251 mapping rows verified, 0 contradictions; near-miss recorded as luck | Shows a destructive operation made auditable by hand |
| [F-016](findings/F-016-self-documentation-is-honest.md) | Known problems named and filed; "zwei Wahrheiten … schlimmer als eine unvollständige" | Falsifiable claims are what made this analysis possible |
---
## Pattern → neckbeard mechanism → migration implication
| Pattern | Neckbeard mechanism (v0.1.1) | Implication for Session 2 |
|---|---|---|
| **B** — rule declared repo-wide, applied to a subset | **Largely a gap.** ADR-0001 (`docs/adr/0001-agents-md-canonical.md`) removes per-harness duplication *within* one repo; `schema.yaml` filename patterns + `validate.py` ("filename does not match", "id does not match filename prefix") show the framework already holds that names must be mechanically derivable | Decide **how five repos share one `AGENTS.md`** before anything else — vendoring copies re-creates the drift ADR-0001 rejects; a cross-repo link breaks ADR-0003 portability. Then introduce a components artifact that names each repo's canonical slug, so F-008 becomes checkable |
| **A** — decision executed, docs not carried along | `AGENTS.md:79` + `scripts/gen_status.py`: `STATUS.md` is generated, "do not edit by hand". `AGENTS.md:81`: ADRs binding, "never edited, only superseded". `WORKFLOW.md:128`: STATUS review on the refinement agenda. `WORKFLOW.md:136-138`: "Contradictions are resolved or explicitly flagged — never left silently coexisting" | Replace every hand-written count and "Stand" label with generated output. Port `decisions/0001-0009` to `docs/adr/` with `schema.yaml` frontmatter — they are already ADRs in substance. **Then file the missing one for M5.** |
| **C** — two backlogs, one rule | ADR-0002 (`docs/adr/0002-in-repo-issues.md`): issues as `docs/issues/NNNN-slug.md`, status in frontmatter, `STATUS.md` as index; `schema.yaml:76-84` enum `[open, in-progress, done, rejected]` enforced by `validate.py` `check_fields` | The **biggest decision of Session 2**: 71 open issues currently live in GitLab with milestones, `priority:*` labels and a group board. ADR-0002 Option C (repo canonical, mirrored to the forge) exists precisely for this and is the only option that does not throw away F-014's proven discipline. Do not migrate by deleting the board |
| **D** — artifacts outlive their purpose | **Gap for refs.** `schema.yaml`'s `warn_if_orphan` shows "reachable from nowhere" is already an accepted reportable condition — for documents. `WORKFLOW.md:122,126`: refinement backlog triage and wiki lint | Add a branch/ref hygiene step to the refinement ritual, and a SHA-resolution check (`analysis/scripts/inv_shas.py` is a working reference implementation) |
---
## Neckbeard gaps this field test exposed
Listed only, not filed as issues in the neckbeard repo — that is a separate act.
1. **Many repos, one ruleset.** ADR-0001 decides one-repo-many-harnesses. Nothing says how
a five-component project shares a governing `AGENTS.md` without either vendoring copies
(the drift ADR-0001 rejects) or cross-repo links (which ADR-0003 portability disallows).
Sharpest gap found. → F-011
2. **No components artifact.** No artifact type declares "these are the repos and these are
their canonical names", so slug drift and cross-repo status are unrepresentable.
`gen_status.py` covers one repo. → F-008, F-009
3. **No milestone or delivery-bucket concept.** `schema.yaml` has no field grouping issues
by what they pay into. This project uses milestones on 100% of open issues. → F-001
4. **`validate.py` does not resolve commit SHAs cited in prose.** `check_body_links` covers
markdown link targets only. Resolving a cited SHA is a textbook deterministic job under
`AGENTS.md:101-103`. → F-012
5. **No git-level hygiene at all** — commit metadata, author identity, branch lifetime are
outside the framework's field of view, while in this project they carry its most
sensitive claims. → F-002, F-003, F-006
6. **External link targets are never checked.** A document pointing at a retired external
tracker stays green. → F-005
7. **Field-test evidence on a deliberately rejected idea.** The creation AAR lists "priority
field on issues (YAGNI, revisit via refinement)" among ideas not adopted. This project
carries `priority:*` on 101 of 111 issues and treats it as distinct from the milestone
("`priority:*` sagt **wie dringend**, der Meilenstein sagt **worauf es einzahlt**",
`CLAUDE.md:99-101`). Recorded as evidence for the refinement that ADR-flagged revisit,
**not** re-proposed here. → F-014
---
## Appendix — the systematic claim verification
`analysis/scripts/verify_claims.py` gave every one of the 813 extracted claim rows a
mechanical disposition (`analysis/data/claims_verification.tsv`): **205 checked-ok**
(a path, issue reference or state assertion verified against tree or tracker),
**207 informational** (tokens classed as runtime/net/image/forge references — correctly
outside the analysed trees), **360 prose-or-runtime** (no mechanically checkable token;
their semantic truth remains unchecked, stated as a limit, not passed silently),
**13 in code blocks**, **28 flagged** for hand adjudication.
The 28 flags resolve as: **10** references into out-of-scope repos (homelab/wiki,
wiki-bookstack, vendor, the retired gitops wiki) — consistent with their own context;
**7** host/runtime artifacts that correctly are not in any tree (`lab.conf`,
`runner-data/`, an untracked `.npmrc` the doc itself calls untracked, npm tarball
contents); **3** historically removed files whose removal the surrounding text records;
**2** enumerations of a hypothetical revert, not claims; **1** tokenizer artifact
(`text/html`); **3** bare/ambiguous issue references; **2** genuine drift → **F-017**.
Bonus verification: all of `roadmap.md`'s gitops references (#25, #45, #46, #47, #48,
#49) match their GitLab titles — post-migration references are consistently
GitLab-numbered, strengthening F-014.
## Open questions for the human
1. **Where do the 71 open issues go?** ADR-0002 Option C (repo canonical, mirrored to
GitLab) preserves the board, the milestones and the labels that F-014 shows are working.
Pure Option B is cleaner and loses all three. This decides the shape of Session 2.
2. **F-002/F-003 are a live exposure, not a documentation defect.** Do you want the
remediation treated as an incident now — separately from and ahead of the migration?
This session recorded it and changed nothing, per mandate.
3. **`game-operating` mirror**: is it absent, or does it mirror under a name other than
`sorb/game-operating`? The negative result rests on the naming convention.
4. **Are `thread-net-git` (4 files) and `threadnet-operating` (0 issues, 7 days idle)
dormant by design?** If yes, the vision document should say so; if no, they are
under-tracked. Either way the docs currently imply five equal product lines.
5. **The M5 ADR** — file it as ADR-0010 in the current scheme now, or let it land as the
first ADR in the migrated `docs/adr/`?
---
### Answers received at session close (2026-08-10)
1. *(Issue location)* — deferred to Session 2, as proposed.
2. *(F-002/F-003 remediation)* — binding constraint recorded: any history rewrite must
ship an old→new **Zuordnung** in the style of `shared/commit-zuordnung-2026-08-07.md`
(the pattern F-015 verified). Timing remains with the human / Session 2.
3. *(game-operating mirror)***exists**, per the human; the anonymous negative was
withdrawn as inconclusive (Gitea hides existence behind an auth prompt — see F-007
addendum). Not ThreadNet-related beyond planned monitoring inclusion.
4. *(Dormant components)***intentional and staged**: base feature set first, then
monitoring and security build-out; deliberately not getting lost in polish. Recorded
in the F-009 addendum; no repo document states it yet.
5. *(M5 ADR)* — drafted as `analysis/drafts/0010-haertung-eigener-meilenstein.md`;
placed on local `main` as `decisions/0010-haertung-eigener-meilenstein.md` (banner
stripped) at session close. Push of `main` pending; the draft stays in the analysis
record as the field-test paper trail.
## Non-goals — what this analysis deliberately did not examine
- **No design doc in the target repo.** Deliberate deviation from `WORKFLOW.md` size-L
Gates 15: the migration design belongs to Session 2. Analysis precedes adoption.
- **Gate 0 suspended.** `PROJECT.md` is absent from the management repo, which under
`AGENTS.md:57-63` would be the init trigger. Suspended by the session mandate; recorded
as an observation, not a task.
- **Component code read structurally only** — trees, manifests, CI files, entry points.
No depth reading; no finding here required it.
- **Upstream fork history not analysed as project drift.** `threadnet-call` and
`ThreadNet-Web` carry thousands of Element/Matrix commits and 538 of the 543
TODO/FIXME/HACK markers found. Those are inherited, not steering artifacts. The
management repo itself contains **0 markers** — checked, no drift found.
- **Issue descriptions and comments were not exported.** `gitlab_issues.json` holds
metadata only, by design. Claims made *inside* issue bodies are therefore unverified —
including the migration footnotes `CLAUDE.md:52` says are authoritative for shifted
gitops numbers.
- **Out-of-scope repos** — `game-operating`, `gameserver`, the `vendor` and `Archiv`
subgroups — analysed only where a management-repo claim referred to them. Their contents
were not examined.
- **The `homelab` group** (`docs`, `wiki`, `wiki-bookstack`) and **axionwiki.lab** were not
examined; cross-references to them are recorded as `points-outside-scope` in `links.tsv`.
- **CI behaviour was not exercised**, only configuration presence (e.g. `canonize_rotation`
verified to exist at `.gitlab-ci.yml:51` in gitops; not observed running).
- **The human's own working copy** could not be inspected. The human confirmed at the
Phase-0 STOP that it points at git.lab.
- **Nothing was fixed.** No file outside `analysis/` was modified; `inv_repo.py` aborts the
run if any was, and the guard was tested by deliberately dirtying `README.md`.
+130
View File
@@ -0,0 +1,130 @@
# SCOPE.md — Field test scope freeze (Session 1, analysis only)
Status: **proposed — awaiting human confirmation (Phase 0 STOP)**
Every line is marked `[observed]` (verified by command output in this
session) or `[inferred]` (derived, not verified).
## 1. Reference state
| Item | Value | Source |
|---|---|---|
| Neckbeard reference | `v0.1.1` @ `823a08cac6b03a47d7e2f661200a49ac6e09d38d` | `git describe --tags --always`, `git log -1` `[observed]` |
| Neckbeard branch / cleanliness | `main`, clean worktree | `git status --porcelain` empty `[observed]` |
| Neckbeard origin | `https://git.lab/oss-projekte/ai/neckbeard.git` | `git remote -v` `[observed]` |
| Management HEAD | `2f012a6cd2964fbc114bf7da6942ddd30f3dee70` (2026-08-09, `docs: AAR for 2026-08-09 …`) | `git log -1` `[observed]` |
| Management branch / cleanliness | `main`, clean worktree | `git status --porcelain` empty `[observed]` |
| Management origin | `https://git.lab/axion1337.chat/management.git`**canonical git.lab, not the Gitea mirror** | `git remote -v` `[observed]` |
| Management commits / span | 86 commits, 2026-07-30 … 2026-08-09 | `git rev-list --count`, `git log --date=short` `[observed]` |
| Analysis branch | `Neckbeard-v0.1.1-analyse-1`, branched from `main` (created as `analysis/neckbeard-fieldtest`, renamed at session close per the human) | `git checkout -b`, `git branch -m` `[observed]` |
The reference standard for every "neckbeard mechanism" field in Phase 2
findings is neckbeard `v0.1.1` as pinned above (per ADR-0006).
### Working-copy safety
Both repos are **fresh clones** made by this session into
`/Users/thore/Documents/neckbeard-test-1/`; no pre-existing working copy
of the human's was touched. As an additional guard, the push URL of both
clones was set to the invalid value `DISABLED-no-push`, so nothing from
this session can reach git.lab. `[observed]`
Consequence for the Phase-0 mandate "verify that the working copy's
remote points at the canonical git.lab origin": verified **for this
session's clone** (it is canonical by construction). Whether the human's
own working copy points at git.lab or at the Gitea mirror is **not
observable from here** — carried into Phase 3 as an open question.
## 2. Gate-0 suspension (explicit, per session mandate)
`PROJECT.md` is absent from the management repo `[observed]`. Per the
override in the session mandate, AGENTS.md §2 does **not** fire here:
its absence is an observation for the report, not a task. Gate 0 for the
management repo belongs to Session 2.
## 3. Components in scope
The five ThreadNet repos of the GitLab group `axion1337.chat`. Display
names come from the mandate; slugs were **not** guessable from the
display names and were resolved against repo documents and then verified
against git.lab with `git ls-remote` (read-only, no clone).
| # | Display name | Repo slug | Slug evidence | `ls-remote` | Availability |
|---|---|---|---|---|---|
| 1 | ThreadNet Call | `threadnet-call` | `vision/threadnet.md:10`, `hosts/overmind.md:29` | OK (2 heads) `[observed]` | **clone required** from `https://git.lab/axion1337.chat/threadnet-call.git` |
| 2 | ThreadNet Git | `thread-net-git` | `vision/threadnet.md:10`, `hosts/overmind.md:29` | OK (2 heads) `[observed]` | **clone required** from `https://git.lab/axion1337.chat/thread-net-git.git` |
| 3 | ThreadNet Operating | `threadnet-operating` | `README.md:78`, `CLAUDE.md:4`, `hosts/overmind.md:29` | OK (2 heads) `[observed]` | **clone required** from `https://git.lab/axion1337.chat/threadnet-operating.git` |
| 4 | ThreadNet Server Suite | `axion1337.chat-gitops` | `CLAUDE.md:6` states the equation verbatim: „ESS-/Flux-Details in ThreadNet Server Suite' = `axion1337.chat-gitops`" | OK (3 heads) `[observed]` | **clone required** from `https://git.lab/axion1337.chat/axion1337.chat-gitops.git` |
| 5 | ThreadNet Web | `ThreadNet-Web` | `roadmap.md:53`, `hosts/overmind.md:28`, `hosts/matrix.md:20` | OK (3 heads) `[observed]` | **clone required** from `https://git.lab/axion1337.chat/ThreadNet-Web.git` |
No local checkout of any component existed before this session; the
working directory was empty. `[observed]` No `.gitmodules` exists in the
management repo, so submodule discovery yields nothing. `[observed]`
### Slug irregularities already visible (carried into Phase 2, not fixed)
- **`thread-net-git`** breaks the `threadnet-*` pattern of its four
siblings. `https://git.lab/axion1337.chat/threadnet-git.git` returns
"project could not be found". `[observed]`
- **`ThreadNet-Web`** is the only CamelCase slug. `ThreadNet-Web` and
`threadnet-web` resolve to byte-identical ref lists, i.e. the same
project reached through GitLab's case-insensitive path handling
`[observed]`; docs and CI use both spellings plus a lowercase registry
path `registry.git.lab/axion1337.chat/threadnet-web/desktop-build`
(`hosts/overmind.md:54`).
- **`axion1337.chat-gitops`** carries no ThreadNet name at all; the
display name "ThreadNet Server Suite" exists only inside prose.
These are recorded as scope facts here and will be turned into findings
in Phase 2, not corrected.
## 4. Out of scope (fixed by the human, not re-derived)
Not analysis targets: `game-operating`, `gameserver`, the `vendor`
subgroup, the `Archiv` subgroup. Cross-references from the management
repo into them are still recorded in `links.tsv` / `claims.tsv` as
`points-outside-scope` — they are evidence about the management repo.
Already sighted in the management repo and to be recorded that way:
`hosts/overmind.md:29` (`game-operating`), `hosts/overmind.md:33`
(`gameserver`), `hosts/overmind.md:23` (`vendor/windows`). `[observed]`
Also referenced but outside the five components: the `homelab` group
(`docs`, `wiki`, `wiki-bookstack`) and the Gitea host
`rohana.axion1337.de`. Treated as `points-outside-scope`, not analysed.
## 5. GitLab API access — decision required
`GITLAB_ACCESS` was left blank in the mandate. Findings:
- `glab` is **not installed** `[observed]`; no `~/.config/glab-cli/`.
- No GitLab token in any environment variable `[observed]`.
- A token file **exists** at `~/.config/gitlab-lab/token` — exactly the
path the management repo's `CLAUDE.md:112` names as the sanctioned way
to reference lab credentials. `[observed]` Its value has not been
read, printed or logged, per `CLAUDE.md:109`.
- Anonymous API: `GET /api/v4/groups/axion1337.chat` → HTTP 200;
`GET /api/v4/projects/axion1337.chat%2Fmanagement/issues``404
Project Not Found`, i.e. issues are not readable anonymously.
`[observed]`
So the ticket dimension of Phase 1/2 (`gitlab_issues.json`, the backlog
duality check) is reachable **only** if the human authorises use of that
token file. Without it, backlog duality is analysed from in-repo
evidence only and the gap is recorded as an explicit non-goal in
REPORT.md. Web-UI scraping is excluded by the mandate and will not be
attempted.
## 6. Open questions for the Phase-0 STOP
1. **Clone the five component repos?** All five need cloning; approval
is required before any clone happens.
2. **May this session read the git.lab API using
`~/.config/gitlab-lab/token`** (read-only: group and project issues,
metadata only, no descriptions)? Or is the ticket dimension a
non-goal for this session?
3. **Is `axion1337.chat-gitops` = "ThreadNet Server Suite" correct?**
The equation rests on a single sentence in `CLAUDE.md:6`. It is a
large, infrastructure-heavy repo; confirming it fixes the scope.
4. **Does the human's own management working copy point at git.lab or at
the Gitea mirror?** Not observable from this session.
+814
View File
@@ -0,0 +1,814 @@
path line triggers in_code_block doc_last_commit_date doc_days_since_change claim_text
.gitlab/issue_templates/Deploy-Übergabe.md 14 component-ref no 2026-08-02 7 Beispiel: axion1337.chat/threadnet-operating @ main, b6007c5 -->
.gitlab/issue_templates/Deploy-Übergabe.md 67 status no 2026-08-02 7 Datensammlung und Zustellung getrennt scharf zu schalten ist fast immer
.gitlab/issue_templates/Deploy-Übergabe.md 75 status no 2026-08-02 7 ## Bewusst offen gelassen
CLAUDE.md 1 status;mirror-topology no 2026-08-09 0 # CLAUDE.md — übergreifende Arbeitskonventionen (kanonisch)
CLAUDE.md 4 component-ref no 2026-08-09 0 Gruppe (axion1337.chat-Stack, ThreadNet-Repos, CFGMON/threadnet-operating,
CLAUDE.md 6 component-ref no 2026-08-09 0 ESS-/Flux-Details in „ThreadNet Server Suite" = `axion1337.chat-gitops`) — bei
CLAUDE.md 10 component-ref;path-claim;mirror-topology no 2026-08-09 0 > Push-Mirror unter `https://rohana.axion1337.de/sorb/management` von überall
CLAUDE.md 11 status no 2026-08-09 0 > **lesbar** — dort diese Datei und die ADRs nachschlagen. Nur pushen ist tabu.
CLAUDE.md 18 date-claim no 2026-08-09 0 ## Projektrealitäten (Stand 2026-08-01)
CLAUDE.md 20 component-ref no 2026-08-09 0 **Das Lab ist die Quelle der Wahrheit** ([ADR-0002](decisions/0002-issues-und-management-ins-lab.md)):
CLAUDE.md 22 path-claim no 2026-08-09 0 - Kanonische Repos liegen auf `git.lab/axion1337.chat/*` (nur im Lab/VPN
CLAUDE.md 23 mirror-topology no 2026-08-09 0 auflösbar). Gitea/rohana wird per **Push-Mirror** beliefert und bleibt
CLAUDE.md 24 mirror-topology no 2026-08-09 0 Flux-Source, Container-/npm-Registry und Release-Download
CLAUDE.md 25 status;mirror-topology no 2026-08-09 0 ([ADR-0001](decisions/0001-gitlab-kanonisch-push-mirror.md)).
CLAUDE.md 27 mirror-topology no 2026-08-09 0 liegen die *Baupläne*, auf Gitea eine Kopie, die der Cluster **ohne verfügbares
CLAUDE.md 34 mirror-topology no 2026-08-09 0 - **Nie direkt zu Gitea pushen** (gespiegelte Repos) — der Mirror überschreibt
CLAUDE.md 36 count;mirror-topology no 2026-08-09 0 - **Gespiegelt wird nur die Gruppe `axion1337.chat`** (die fünf Produkt-Repos und
CLAUDE.md 37 component-ref no 2026-08-09 0 `management`). Die Gruppe **`homelab`** (`docs`, `wiki`, `wiki-bookstack`) hat
CLAUDE.md 43 path-claim;mirror-topology no 2026-08-09 0 `verfahren/aar/` (dieses Repo ist gespiegelt), nicht nur in die READMEs der
CLAUDE.md 45 count;mirror-topology no 2026-08-09 0 - Landet doch ein Commit auf Gitea (z. B. aus einer Host-Session ohne Lab-Route):
CLAUDE.md 48 mirror-topology no 2026-08-09 0 von Gitea ziehen, `git am` (erhält Autorschaft), Push über git.lab.
CLAUDE.md 49 status;mirror-topology no 2026-08-09 0 - **Issues leben auf git.lab.** Die alten Gitea-Issues sind geschlossen und
CLAUDE.md 51 mirror-topology;issue-ref no 2026-08-09 0 (Gitea zählte PRs mit; z. B. Gitea#48 → GitLab#46) — alte „gitops#N"-Verweise
CLAUDE.md 52 mirror-topology no 2026-08-09 0 meinen die Gitea-Nummer; verbindlich ist der Migrations-Fußtext im Issue.
CLAUDE.md 54 mirror-topology no 2026-08-09 0 TURN-Rotations-CronJob schreibt weiter nach Gitea, weil er im Cluster läuft und
CLAUDE.md 56 mirror-topology no 2026-08-09 0 **Die Rotation nicht von Hand nachziehen und den PR nie auf Gitea mergen** —
CLAUDE.md 57 status;date-claim no 2026-08-09 0 das erledigt seit 2026-08-02 der geplante CI-Job `canonize_rotation` im
CLAUDE.md 58 status no 2026-08-09 0 gitops-Repo täglich von git.lab aus. Scheitert er, bleibt die Pipeline rot;
CLAUDE.md 62 date-claim no 2026-08-09 0 Das gitops-Wiki liegt seit 2026-08-02 auf git.lab (*Wiki*-Reiter im Projekt);
CLAUDE.md 63 path-claim no 2026-08-09 0 ⚠️ der `wiki`-**Branch** im gitops-Repo ist ein überholter Mai-Abzug von `docs/`
CLAUDE.md 65 path-claim no 2026-08-09 0 **axionwiki.lab** ([`homelab/wiki`](https://git.lab/homelab/wiki), Docusaurus) —
CLAUDE.md 72 component-ref;count no 2026-08-09 0 - **Alles Offene ist ein Issue** — host-/infra-Scope hier im management-Projekt
CLAUDE.md 73 issue-ref no 2026-08-09 0 (`host:`-Labels, alte IDs wie `CFGMON-01` bleiben im Titel), Projekt-Scope im
CLAUDE.md 74 path-claim no 2026-08-09 0 jeweiligen Projekt. Kein neues Backlog-Markdown anlegen; `hosts/`/`shared/`
CLAUDE.md 90 path-claim no 2026-08-09 0 - **Der Titel trägt keine Priorität.** Präfixe wie `[HIGH]`/`[MEDIUM]`/`[LOW]`
CLAUDE.md 92 issue-ref no 2026-08-09 0 Alte Kennungen wie `CFGMON-01` bleiben, die benennen den Gegenstand, nicht die
CLAUDE.md 94 count;mirror-topology no 2026-08-09 0 ⚠️ Der Grund ist keine Ästhetik: Aus der Gitea-Migration trugen 34 Issues ein
CLAUDE.md 97 status no 2026-08-09 0 über dieselbe Sache sind schlimmer als eine unvollständige. Bereinigt 2026-08-06.
CLAUDE.md 101 count no 2026-08-09 0 einzahlt**. Ein Issue ohne Meilenstein taucht in keiner Roadmap-Ansicht auf und
CLAUDE.md 112 path-claim no 2026-08-09 0 `~/.config/gitlab-lab/token`) oder maskierte CI-Variablen.
CLAUDE.md 116 date-claim no 2026-08-09 0 ## Commit-Konventionen (seit 2026-08-07)
CLAUDE.md 136 count;date-claim no 2026-08-09 0 📎 Die Umstellung der Alt-Historie am 2026-08-07 hat 251 Commits neue SHAs
CLAUDE.md 138 path-claim no 2026-08-09 0 [`shared/commit-zuordnung-2026-08-07.md`](shared/commit-zuordnung-2026-08-07.md)
CLAUDE.md 146 mirror-topology no 2026-08-09 0 öffentlichen Gitea-Spiegel. Wer daraus wirklich keine Muster ableitbar haben
CLAUDE.md 151 status no 2026-08-09 0 - **Aussagen mit Quelle:** Verifiziert (Messung/Konsole) klar von Vermutung
CLAUDE.md 158 status no 2026-08-09 0 „fertig" heißt verifiziert.
README.md 1 component-ref no 2026-08-02 7 # management
README.md 8 date-claim no 2026-08-02 7 *(Bis 2026-08-01 hieß dieses Repo `Backlogs` und führte offene Punkte als
README.md 11 date-claim no 2026-08-02 7 ## Repo-Topologie (seit 2026-08-01)
README.md 13 component-ref;status;path-claim;mirror-topology no 2026-08-02 7 **Kanonisch lebt dieses Repo auf `git.lab`** (`axion1337.chat/management`, nur im
README.md 15 component-ref no 2026-08-02 7 [ADR-0002](decisions/0002-issues-und-management-ins-lab.md)).
README.md 16 component-ref;path-claim;mirror-topology no 2026-08-02 7 `rohana.axion1337.de/sorb/management` ist ein **Push-Mirror**: git.lab
README.md 17 mirror-topology no 2026-08-02 7 überschreibt ihn bei jedem Push per Force. Deshalb **nie direkt zu Gitea
README.md 18 mirror-topology no 2026-08-02 7 pushen** — solche Commits gehen beim nächsten Mirror-Lauf verloren (Rettung:
README.md 19 mirror-topology no 2026-08-02 7 `.patch` von Gitea ziehen + `git am`, siehe
README.md 22 date-claim no 2026-08-02 7 **Keine Ausnahmen mehr.** Die **Deploy-Übergabe-Issues** liefen bis 2026-08-02 auf
README.md 23 mirror-topology no 2026-08-02 7 dem Gitea-Tracker, weil Hosts außerhalb des Labs `git.lab` nicht erreichten. Mit dem
README.md 25 status no 2026-08-02 7 Grund entfallen — bei eingeschaltetem Tunnel erreicht CFGMON git.lab. Sie sind
README.md 26 status;mirror-topology;issue-ref no 2026-08-02 7 umgezogen (LABNET-03), der Gitea-Tracker ist leer, die Vorlage liegt als
README.md 33 path-claim no 2026-08-02 7 | [`CLAUDE.md`](CLAUDE.md) | **Kanonische Arbeitskonventionen für alle Agenten-Sessions** (Topologie, Framework, Secrets, Karpathy-Guidelines) |
README.md 34 path-claim no 2026-08-02 7 | `vision/` | Eine Vision je Linie: Community (axion1337.chat), Tool (ThreadNet), Plattform (Homelab) |
README.md 35 path-claim no 2026-08-02 7 | `roadmap.md` | Linien, Meilenstein-Kandidaten, Kadenz — GitLab-Milestones halten den Stand |
README.md 36 path-claim no 2026-08-02 7 | `decisions/` | ADRs — Pflicht bei Architekturentscheidungen **und dauerhaften Ausnahmen** |
README.md 37 path-claim no 2026-08-02 7 | `verfahren/` | Wie wir arbeiten: [Deploy-Übergabe/DoD](verfahren/deploy-uebergabe.md), [Refinement & Retro](verfahren/refinement.md), [AARs](verfahren/aar/), Werkzeuge |
README.md 38 path-claim no 2026-08-02 7 | `hosts/`, `shared/` | **Bestand + Historie** je Host/Thema — u. a. [Branding](shared/branding.md) (Marke, Paletten, wo welches Theme eingestellt ist); offene Punkte sind Issues |
README.md 43 path-claim no 2026-08-02 7 [`homelab/wiki`](https://git.lab/homelab/wiki)). **Geändert wird immer hier, nie dort.**
README.md 48 issue-ref no 2026-08-02 7 `host:`-Labels; die alten IDs wie `CFGMON-01` bleiben im Titel) bzw. in den
README.md 64 issue-ref no 2026-08-02 7 **IDs** (`CFGMON-01`, `ZONE-01`, …) werden **nie wiederverwendet**; sie leben in
README.md 72 status no 2026-08-02 7 **Erledigtes und Verworfenes** bleibt sichtbar: Issues werden geschlossen (nicht
README.md 78 component-ref no 2026-08-02 7 Konfiguration lebt in den Projekt-Repos (z. B. `threadnet-operating` für den
decisions/0001-gitlab-kanonisch-push-mirror.md 1 status;mirror-topology no 2026-08-01 8 # 0001 — git.lab ist kanonisch, Gitea wird per Push-Mirror beliefert
decisions/0001-gitlab-kanonisch-push-mirror.md 8 mirror-topology no 2026-08-01 8 3,7-GiB-Host) und Gitea Actions zeigte mehrere echte Bugs. Das Homelab-GitLab
decisions/0001-gitlab-kanonisch-push-mirror.md 14 path-claim;mirror-topology no 2026-08-01 8 `git.lab/axion1337.chat/*` ist die kanonische Heimat aller Repos; Gitea/rohana
decisions/0001-gitlab-kanonisch-push-mirror.md 15 mirror-topology no 2026-08-01 8 wird über Push-Mirrors beliefert und bleibt Flux-Source, Container-Registry,
decisions/0001-gitlab-kanonisch-push-mirror.md 16 mirror-topology no 2026-08-01 8 npm-Registry und Release-Download. **Direkte Pushes zu Gitea sind für gespiegelte
decisions/0001-gitlab-kanonisch-push-mirror.md 17 mirror-topology no 2026-08-01 8 Repos verboten** — der Mirror überschreibt divergenten Stand per Force.
decisions/0001-gitlab-kanonisch-push-mirror.md 22 mirror-topology no 2026-08-01 8 - Commits, die doch auf Gitea landen (z. B. Cluster-CronJobs ohne Lab-Route),
decisions/0001-gitlab-kanonisch-push-mirror.md 23 path-claim no 2026-08-01 8 brauchen das Kanonisierungs-Verfahren (`verfahren/deploy-uebergabe.md`):
decisions/0001-gitlab-kanonisch-push-mirror.md 24 status no 2026-08-01 8 `.patch` ziehen, `git am`, Push über git.lab. Zweimal live gebraucht.
decisions/0001-gitlab-kanonisch-push-mirror.md 29 issue-ref no 2026-08-01 8 - CFGMON-CI aufrüsten (Swap/Limits): strukturell zu klein, verworfen mit CFGMON-10.
decisions/0002-issues-und-management-ins-lab.md 1 component-ref no 2026-08-02 7 # 0002 — Issues und Management-Repo ziehen ins Lab („das Lab ist die Quelle der Wahrheit")
decisions/0002-issues-und-management-ins-lab.md 8 mirror-topology no 2026-08-02 7 weiter auf Gitea — zwei Wahrheiten, driftgefährdet. Erreichbarkeits-Blocker
decisions/0002-issues-und-management-ins-lab.md 9 date-claim;issue-ref no 2026-08-02 7 LABNET-01 (WireGuard-Roadwarrior) wurde am 2026-08-01 gelöst.
decisions/0002-issues-und-management-ins-lab.md 13 status;mirror-topology no 2026-08-02 7 Alle Projekt-Issues leben auf git.lab (62 migriert, Gitea-Issues geschlossen mit
decisions/0002-issues-und-management-ins-lab.md 14 component-ref;path-claim no 2026-08-02 7 Verweis); das Backlogs-Repo zieht als `axion1337.chat/management` ins Lab
decisions/0002-issues-und-management-ins-lab.md 15 component-ref;path-claim;mirror-topology no 2026-08-02 7 (Push-Mirror → `sorb/management` auf Gitea). Das Lab ist die Quelle der Wahrheit.
decisions/0002-issues-und-management-ins-lab.md 19 mirror-topology no 2026-08-02 7 - ⚠️ gitops-Issue-Nummern haben sich verschoben (Gitea zählte PRs mit); die
decisions/0002-issues-und-management-ins-lab.md 21 mirror-topology no 2026-08-02 7 - ~~**Befristete Ausnahme:** Deploy-Übergabe-Issues laufen auf dem Gitea-Tracker
decisions/0002-issues-und-management-ins-lab.md 22 component-ref;path-claim no 2026-08-02 7 von `sorb/management`, weil CFGMON git.lab (noch) nicht erreicht.~~
decisions/0002-issues-und-management-ins-lab.md 23 component-ref;date-claim;issue-ref no 2026-08-02 7 ✅ **Zurückgebaut am 2026-08-02** (LABNET-03, [#13](https://git.lab/axion1337.chat/management/-/issues/13)):
decisions/0002-issues-und-management-ins-lab.md 25 component-ref;issue-ref no 2026-08-02 7 sind nach git.lab gewandert ([#25](https://git.lab/axion1337.chat/management/-/issues/25),
decisions/0002-issues-und-management-ins-lab.md 26 component-ref;mirror-topology;issue-ref no 2026-08-02 7 [#26](https://git.lab/axion1337.chat/management/-/issues/26)), der Gitea-Tracker ist
decisions/0002-issues-und-management-ins-lab.md 27 status;path-claim no 2026-08-02 7 leer, die Vorlage liegt als `.gitlab/issue_templates/`. **Damit gilt diese ADR
decisions/0002-issues-und-management-ins-lab.md 29 path-claim no 2026-08-02 7 Ausnahmen (siehe `README.md`) — dass sie befristet war und die Frist gehalten hat,
decisions/0002-issues-und-management-ins-lab.md 31 mirror-topology no 2026-08-02 7 - Releases bleiben auf Gitea (öffentlicher Download-Pfad), ebenso das gitops-Wiki.
decisions/0002-issues-und-management-ins-lab.md 35 mirror-topology no 2026-08-02 7 - Issues auf Gitea belassen: dauerhafte Doppelführung, Roadmap/Boards unmöglich.
decisions/0003-cve-meldeweg-aggregiert.md 8 path-claim;issue-ref no 2026-08-01 8 Nachrichten und musste stummgeschaltet werden (gitops#51, AAR in `verfahren/aar/`).
decisions/0003-cve-meldeweg-aggregiert.md 9 issue-ref no 2026-08-01 8 Gleichzeitig war entschieden (CFGMON-13), Release-/Security-Meldungen von
decisions/0004-site-to-site-vpn-hetzner-lab.md 3 component-ref;issue-ref no 2026-08-02 7 **Status:** akzeptiert (umgesetzt und abgenommen 2026-08-01, Testreihe 17 in [management#12](https://git.lab/axion1337.chat/management/-/issues/12)) · **Datum:** 2026-08-01 · **Entscheider:** sorb
decisions/0004-site-to-site-vpn-hetzner-lab.md 14 version;path-claim no 2026-08-02 7 Hetzner-Projektnetz `10.0.0.0/24` mit dem Lab-VLAN `10.58.73.0/24`. Der An/Aus-Schalter
decisions/0004-site-to-site-vpn-hetzner-lab.md 27 version no 2026-08-02 7 | **UDM** | zweiter WG-**Server** „Matrix", UDP **51841**, Tunnelnetz **10.58.75.0/24**, „Alternate Address for Clients" = `178.25.213.70` |
decisions/0004-site-to-site-vpn-hetzner-lab.md 28 version;path-claim no 2026-08-02 7 | **Client „Hetzner"** | `10.58.75.2`, **Networks Behind Client = `10.0.0.0/24`** |
decisions/0004-site-to-site-vpn-hetzner-lab.md 29 status;version;path-claim no 2026-08-02 7 | **CFGMON** | WG-**Client/Initiator**, dauerhaft aktiv (`enable`) + `PersistentKeepalive 25`; AllowedIPs nur `10.58.73.0/24, 10.58.75.1/32`; Split-DNS nur `~lab` → `10.58.73.1`; `ip_forward` + iptables-ACCEPT in `DOCKER-USER` (ufw ist dort inaktiv), **kein NAT** |
decisions/0004-site-to-site-vpn-hetzner-lab.md 30 version no 2026-08-02 7 | **Fritzbox** | Portfreigabe UDP **51841** → `192.168.178.20` |
decisions/0004-site-to-site-vpn-hetzner-lab.md 31 version;path-claim no 2026-08-02 7 | **Hetzner** | Netz-Range auf **`10.0.0.0/8`** erweitert, Route `10.58.73.0/24 → 10.0.0.3` — damit erreichen alle Server im Netz das Lab **ohne eigene Konfiguration** |
decisions/0004-site-to-site-vpn-hetzner-lab.md 32 version;path-claim no 2026-08-02 7 | **UniFi-Firewall** | Trennung vom Roadwarrior über **Quell-/Ziel-IP** (`10.58.75.0/24` + `10.0.0.0/24`), nicht über eine eigene Zone: erlaubt sind nur `10.58.73.17:443` (git.lab/Registry) und `10.58.73.1:53` (DNS); IoT und Arbeit sind für alle VPNs komplett gesperrt |
decisions/0004-site-to-site-vpn-hetzner-lab.md 36 component-ref;date-claim;issue-ref no 2026-08-02 7 - ✅ **Eingelöst am 2026-08-02 (LABNET-03, [#13](https://git.lab/axion1337.chat/management/-/issues/13)):**
decisions/0004-site-to-site-vpn-hetzner-lab.md 37 status no 2026-08-02 7 Übergabe-Issues können nicht nur umziehen — sie sind umgezogen
decisions/0004-site-to-site-vpn-hetzner-lab.md 38 component-ref;issue-ref no 2026-08-02 7 ([#25](https://git.lab/axion1337.chat/management/-/issues/25),
decisions/0004-site-to-site-vpn-hetzner-lab.md 39 component-ref;mirror-topology;issue-ref no 2026-08-02 7 [#26](https://git.lab/axion1337.chat/management/-/issues/26)), der Gitea-Tracker ist
decisions/0004-site-to-site-vpn-hetzner-lab.md 40 status no 2026-08-02 7 leer, die Vorlage liegt als GitLab-Issue-Template, und die Ausnahme aus ADR-0002 ist
decisions/0004-site-to-site-vpn-hetzner-lab.md 50 mirror-topology no 2026-08-02 7 Gitea-PR-Ausnahme bleibt bewusst bestehen.
decisions/0004-site-to-site-vpn-hetzner-lab.md 54 mirror-topology no 2026-08-02 7 Job läuft im Lab und erreicht Gitea öffentlich. Das war der eigentliche Grund für
decisions/0004-site-to-site-vpn-hetzner-lab.md 56 issue-ref no 2026-08-02 7 - game.axion1337.de profitiert erst nach Aufnahme in den vSwitch (GAME-01).
decisions/0005-pm-framework-kanban.md 1 component-ref no 2026-08-01 8 # 0005 — Projektmanagement: Kanban-Rückgrat mit leichten Scrum-Elementen
decisions/0005-pm-framework-kanban.md 22 path-claim no 2026-08-01 8 | Product Goal / Vision | `vision/` (eine Datei je Linie) |
decisions/0005-pm-framework-kanban.md 24 path-claim no 2026-08-01 8 | Review/Retro | AARs (`verfahren/aar/`) nach Deploys/Incidents |
decisions/0005-pm-framework-kanban.md 25 path-claim no 2026-08-01 8 | Definition of Done | Deploy-Übergabe-Verfahren (`verfahren/deploy-uebergabe.md`) |
decisions/0005-pm-framework-kanban.md 26 path-claim no 2026-08-01 8 | Roadmap/Meilensteine | Gruppen-Milestones + `roadmap.md` (CE: keine Epics/Roadmap-View) |
decisions/0005-pm-framework-kanban.md 27 path-claim no 2026-08-01 8 | Entscheidungen | ADRs in `decisions/` |
decisions/0005-pm-framework-kanban.md 32 component-ref;path-claim no 2026-08-01 8 - Das Backlogs-Repo wird zum Management-Repo `axion1337.chat/management`;
decisions/0005-pm-framework-kanban.md 33 path-claim no 2026-08-01 8 offene Punkte aus `hosts/`/`shared/` sind Issues mit `host:`-Labels,
decisions/0006-wikis-konsolidieren-docusaurus.md 9 date-claim;mirror-topology no 2026-08-02 7 1. **Gitea-Wiki-Repo** `…gitops.wiki.git` — 15 Seiten, gepflegt bis 2026-07-31.
decisions/0006-wikis-konsolidieren-docusaurus.md 10 mirror-topology no 2026-08-02 7 Vom Push-Mirror **nicht** erfasst: ein Wiki ist ein eigenes Repo, kein Branch.
decisions/0006-wikis-konsolidieren-docusaurus.md 11 date-claim;mirror-topology no 2026-08-02 7 2. **`wiki`-Branch im gitops-Repo** — Stand 2026-05-14, mitgezogen, weil der Mirror
decisions/0006-wikis-konsolidieren-docusaurus.md 12 path-claim no 2026-08-02 7 alle Branches trägt. Inhalt: ein damaliger Abzug von `docs/`, kein gepflegtes Wiki.
decisions/0006-wikis-konsolidieren-docusaurus.md 13 path-claim no 2026-08-02 7 3. **`docs/` im main-Branch** — die eigentliche, laufend gepflegte Repo-Doku.
decisions/0006-wikis-konsolidieren-docusaurus.md 15 status no 2026-08-02 7 Dazu waren die GitLab-Wikis aller Projekte **leer**, und die Wiki-Inhalte enthielten
decisions/0006-wikis-konsolidieren-docusaurus.md 17 mirror-topology no 2026-08-02 7 2026-08-01 entfernt; Issues „in Gitea", obwohl migriert).
decisions/0006-wikis-konsolidieren-docusaurus.md 23 status;mirror-topology no 2026-08-02 7 „direkt-zu-Gitea"-Ausnahme aus [ADR-0001](0001-gitlab-kanonisch-push-mirror.md).
decisions/0006-wikis-konsolidieren-docusaurus.md 26 path-claim no 2026-08-02 7 [`homelab/wiki`](https://git.lab/homelab/wiki) baut mit Docusaurus eine Seite unter
decisions/0006-wikis-konsolidieren-docusaurus.md 28 component-ref;path-claim no 2026-08-02 7 Homelab (`homelab/docs`), Arbeitsweise (`management`). Die Inhalte werden beim Bau
decisions/0006-wikis-konsolidieren-docusaurus.md 33 path-claim no 2026-08-02 7 - **Änderungen gehören ins Quell-Repo**, nie ins Wiki-Repo — was dort in `content/`
decisions/0006-wikis-konsolidieren-docusaurus.md 43 path-claim no 2026-08-02 7 `.md` wird als CommonMark statt MDX geparst.
decisions/0006-wikis-konsolidieren-docusaurus.md 44 status no 2026-08-02 7 - **Der `wiki`-Branch im gitops-Repo ist überholt.** Er bleibt vorerst als Historie
decisions/0006-wikis-konsolidieren-docusaurus.md 47 component-ref;issue-ref no 2026-08-02 7 ([Issue #19](https://git.lab/axion1337.chat/management/-/issues/19)).
decisions/0006-wikis-konsolidieren-docusaurus.md 51 count no 2026-08-02 7 - **Alles in ein Repo verschmelzen:** Die Quellen haben unterschiedliche Leser und
decisions/0006-wikis-konsolidieren-docusaurus.md 53 mirror-topology no 2026-08-02 7 - **Wiki auf Gitea belassen:** widerspricht ADR-0002 und hielt eine Ausnahme am
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 3 component-ref;status;issue-ref no 2026-08-02 7 **Status:** vorgeschlagen (Entscheidung offen → [Issue #20](https://git.lab/axion1337.chat/management/-/issues/20)) · **Datum:** 2026-08-02 · **Entscheider:** sorb
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 8 date-claim no 2026-08-02 7 Docusaurus als Lesefläche gebaut — läuft seit 2026-08-02 unter `axionwiki.lab`.
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 42 component-ref no 2026-08-02 7 Wahrheit neben git.lab — genau das, was [ADR-0002](0002-issues-und-management-ins-lab.md)
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 52 issue-ref no 2026-08-02 7 Datenbank ohne Sicherung ist eine Zeitbombe (vgl. CFGMON-09, wo genau das seit
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 53 status no 2026-08-02 7 2026-07-30 offen ist).
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 54 path-claim no 2026-08-02 7 - **Ein Einweg-Import zum Befüllen, aber keine Synchronisation** (`import/` im
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 56 path-claim no 2026-08-02 7 vergleichen, deshalb legt `provision.py` dieselben drei Bereiche an wie das
decisions/0008-agenten-sessions-root-aequivalent.md 3 component-ref;issue-ref no 2026-08-06 3 **Status:** akzeptiert · **Datum:** 2026-08-06 (Struktur-Workshop [#17](https://git.lab/axion1337.chat/management/-/issues/17)) · **Entscheider:** sorb
decisions/0008-agenten-sessions-root-aequivalent.md 9 issue-ref no 2026-08-06 3 LABNET-02-Nacht lief deshalb über die **docker-Gruppenmitgliedschaft** des Kontos
decisions/0008-agenten-sessions-root-aequivalent.md 24 component-ref;issue-ref no 2026-08-06 3 [#14](https://git.lab/axion1337.chat/management/-/issues/14).
decisions/0008-agenten-sessions-root-aequivalent.md 46 issue-ref no 2026-08-06 3 ohne diese Entscheidung wäre LABNET-02 gar nicht durchführbar gewesen.
decisions/0008-agenten-sessions-root-aequivalent.md 50 count no 2026-08-06 3 AAR-Pflicht und „alles Offene wird ein Issue" auf diesem Host besonders zählen —
decisions/0008-agenten-sessions-root-aequivalent.md 55 status no 2026-08-06 3 Kommt einer dazu, wird diese ADR abgelöst.
decisions/0008-agenten-sessions-root-aequivalent.md 57 status no 2026-08-06 3 ## Offen, bewusst nicht vor der Entscheidung geklärt
decisions/0008-agenten-sessions-root-aequivalent.md 66 issue-ref no 2026-08-06 3 nächsten Host-Session, festgehalten in #14.
decisions/0008-agenten-sessions-root-aequivalent.md 80 path-claim no 2026-08-06 3 und nicht bloß ein Absatz in `hosts/cfgmon.md`.
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 5 date-claim no 2026-08-09 0 > Nachgetragen am 2026-08-09 in der [Retro](../verfahren/retro/2026-08-09.md). Die
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 13 mirror-topology no 2026-08-09 0 öffentlichem Gitea-Spiegel heißt das: Jeder, der die Repos liest, kann ablesen, an
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 23 date-claim no 2026-08-09 0 **Regel ab 2026-08-07**, gültig für alle Repos der Gruppe `axion1337.chat` und die
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 29 count;date-claim no 2026-08-09 0 **Rückwirkend angewandt am 2026-08-09** auf **251 Commits** — alles aus dieser
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 34 date-claim no 2026-08-09 0 | gitops | 117 von 264 | ab 2026-07-27 |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 35 component-ref no 2026-08-09 0 | management | 78 von 78 | vollständig |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 36 component-ref;date-claim no 2026-08-09 0 | ThreadNet-Web | 47 von 50 | ab 2026-07-28 |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 37 component-ref no 2026-08-09 0 | threadnet-call | 9 von 9 | vollständig |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 39 status no 2026-08-09 0 Dabei wurden 17 Tags mit umgezogen und die Autoren-Identitäten vereinheitlicht —
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 54 path-claim no 2026-08-09 0 [`shared/commit-zuordnung-2026-08-07.md`](../shared/commit-zuordnung-2026-08-07.md).
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 61 status no 2026-08-09 0 wieder aktiv.
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 66 mirror-topology no 2026-08-09 0 liegen im selben GitLab und teilweise auf dem öffentlichen Spiegel — und sind
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 72 component-ref no 2026-08-09 0 Das Force-Push der umgezogenen Tags hat in ThreadNet-Web **drei Release-Pipelines
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 74 version no 2026-08-09 0 `v0.4.0` aus altem Quellcode gegen heutige Basis-Images neu gebaut und
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 77 component-ref;status;issue-ref no 2026-08-09 0 ThreadNet-Web#14; die Sperre ist seit `3cb43f5` scharf.
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 86 count no 2026-08-09 0 angefasst (`Scrublord@Mac.Bad`, 135 Commits aus der Zeit vor dieser
decisions/README.md 6 status no 2026-08-01 8 auf `abgelöst durch NNNN` gesetzt.
decisions/README.md 13 mirror-topology no 2026-08-01 8 git.lab-Cutover 2026-08-01: die „Übergabe-Issues bleiben auf Gitea"-Ausnahme
decisions/template.md 3 status no 2026-08-01 8 **Status:** vorgeschlagen | akzeptiert | abgelöst durch NNNN · **Datum:** JJJJ-MM-TT · **Entscheider:** sorb
hosts/cfgmon.md 3 mirror-topology no 2026-08-09 0 Monitoring-Stack, Gitea und der Reverse Proxy für alles Öffentliche.
hosts/cfgmon.md 8 version no 2026-08-09 0 | **OS** | Ubuntu 24.04.4 LTS |
hosts/cfgmon.md 9 version no 2026-08-09 0 | **IPv4** | `188.245.193.243` |
hosts/cfgmon.md 11 version no 2026-08-09 0 | **Privat** | `10.0.0.3` (`enp7s0`, Hetzner-Netz — dort liegt auch k3s auf `10.0.0.2`) |
hosts/cfgmon.md 12 mirror-topology no 2026-08-09 0 | **DNS** | `rohana.axion1337.de` → Gitea, `selendis.axion1337.de` → Grafana |
hosts/cfgmon.md 19 component-ref;version;path-claim no 2026-08-09 0 | prometheus | `prom/prometheus:v3.3.1` | `monitoring` | `sorb/threadnet-operating`, `monitoring/` |
hosts/cfgmon.md 20 version;path-claim no 2026-08-09 0 | loki | `grafana/loki:3.7.1` | `monitoring` | dito |
hosts/cfgmon.md 21 version;path-claim no 2026-08-09 0 | grafana | `grafana/grafana:12.0.0` | `monitoring` | dito |
hosts/cfgmon.md 22 version;path-claim no 2026-08-09 0 | alloy | `grafana/alloy:v1.16.0` | `monitoring` | dito |
hosts/cfgmon.md 23 version;path-claim no 2026-08-09 0 | node-exporter | `prom/node-exporter:v1.9.1` | `monitoring` | dito |
hosts/cfgmon.md 24 component-ref;status;version;path-claim;date-claim;mirror-topology;issue-ref no 2026-08-09 0 | traefik | `traefik:v3.7.9` | `thread-net-git` | `sorb/thread-net-git`, seit 2026-07-30 in `main` (siehe [CFGMON-02](#cfgmon-02--traefik-gitea-cadvisor-und-runner-unter-iac-gebracht--erledigt-2026-07-30)) |
hosts/cfgmon.md 25 component-ref;version;path-claim;mirror-topology no 2026-08-09 0 | gitea | `gitea/gitea:1.27.0` | `thread-net-git` | dito, gepinnt (war `:latest`) |
hosts/cfgmon.md 26 component-ref;version;path-claim no 2026-08-09 0 | cadvisor | `gcr.io/cadvisor/cadvisor:v0.49.1` | `thread-net-git` | dito, gepinnt (war `:latest`) |
hosts/cfgmon.md 27 component-ref;version;path-claim;mirror-topology;issue-ref no 2026-08-09 0 | runner | `gitea/act_runner:0.6.1` | `thread-net-git` | dito, Container `gitea-runner`, siehe CFGMON-02 |
hosts/cfgmon.md 28 version;path-claim no 2026-08-09 0 | portainer_agent | `portainer/agent:2.27.5` | — | standalone, kein Compose |
hosts/cfgmon.md 32 component-ref;version no 2026-08-09 0 (`10.0.0.2:9100`), `pterodactyl_host_node` und `gameserver_cadvisor`
hosts/cfgmon.md 33 version no 2026-08-09 0 (beide `157.90.155.206`, siehe [game](game.md)).
hosts/cfgmon.md 38 component-ref no 2026-08-09 0 [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
hosts/cfgmon.md 41 component-ref;date-claim;issue-ref no 2026-08-09 0 - [CFGMON-01 — Zertifikatserneuerung braucht offene Ports (zeitkritisch ab 2026-09-28)](https://git.lab/axion1337.chat/management/-/issues/7)
hosts/cfgmon.md 42 component-ref;issue-ref no 2026-08-09 0 - [CFGMON-03 — Prometheus-Remote-Write/Loki öffentlich ohne Auth (Weg A, nachgelagerte Prüfung)](https://git.lab/axion1337.chat/management/-/issues/8)
hosts/cfgmon.md 43 component-ref;issue-ref no 2026-08-09 0 - [CFGMON-04 — Grafana-Admin-Credentials aus `.env` gelten nicht für die API](https://git.lab/axion1337.chat/management/-/issues/9)
hosts/cfgmon.md 44 component-ref;mirror-topology;issue-ref no 2026-08-09 0 - [CFGMON-09 — Gitea-Backups off-host (⚠️ Backup-Cron deaktiviert)](https://git.lab/axion1337.chat/management/-/issues/10)
hosts/cfgmon.md 46 mirror-topology;issue-ref no 2026-08-09 0 ## CFGMON-11 — Gitea-CI-Rückbau nach GitLab-Umzug
hosts/cfgmon.md 48 status no 2026-08-09 0 **Status:** erledigt (2026-07-31 spätabends) — bis auf einen kosmetischen Handgriff:
hosts/cfgmon.md 49 component-ref;path-claim no 2026-08-09 0 auf CFGMON `cd /opt/thread-net-git && git checkout main && git pull` (Checkout parkt
hosts/cfgmon.md 52 component-ref;path-claim no 2026-08-09 0 **Dazu neu (2026-08-01 ~05:00):** Auch `/opt/threadnet-operating` braucht einmal
hosts/cfgmon.md 53 path-claim no 2026-08-09 0 `git fetch && git reset --hard origin/main` — der State-Persistenz-Commit wurde
hosts/cfgmon.md 54 mirror-topology no 2026-08-09 0 dort direkt nach Gitea gepusht (dfe04c4a), vom Mirror überschrieben, vom Mac aus
hosts/cfgmon.md 55 status;mirror-topology no 2026-08-09 0 per Patch gerettet und kanonisch als `6ffab68` neu aufgelegt (inhaltsgleich,
hosts/cfgmon.md 58 status no 2026-08-09 0 **Erledigt (2026-08-01, autonom):**
hosts/cfgmon.md 59 component-ref no 2026-08-09 0 - Actions-Toggles deaktiviert: `ThreadNet-Web`, `threadnet-call`, `axion1337.chat-gitops`
hosts/cfgmon.md 60 component-ref;path-claim no 2026-08-09 0 - `ThreadNet-Web`: alle `.github/workflows/`-Dateien entfernt (Commit `a876758`)
hosts/cfgmon.md 61 path-claim;mirror-topology no 2026-08-09 0 - gitops: Verifikations-Job nach GitLab portiert + `.gitea/workflows/` entfernt
hosts/cfgmon.md 62 status;path-claim;mirror-topology no 2026-08-09 0 (Commit `5e46a24`, Pipeline grün, Mirror→Gitea verifiziert; `milestone-release.yml`
hosts/cfgmon.md 63 issue-ref no 2026-08-09 0 war toter Code, siehe #33). Flux unberührt.
hosts/cfgmon.md 64 component-ref;path-claim no 2026-08-09 0 - `thread-net-git`: Runner-Service/Config/`.env.example` per Commit `d904734` entfernt
hosts/cfgmon.md 65 mirror-topology no 2026-08-09 0 (auf git.lab; Mirror trägt nach Gitea) — **noch nicht deployt**, siehe unten.
hosts/cfgmon.md 66 component-ref;path-claim no 2026-08-09 0 - Registry-Entscheidung npm final (Evidenz: `@sorb/threadnet-call-embedded` ist
hosts/cfgmon.md 67 path-claim;mirror-topology no 2026-08-09 0 pnpm-Dependency von `apps/web`, Lockfile pinnt Tarball-URL auf rohana): **bleibt Gitea**.
hosts/cfgmon.md 70 component-ref;status no 2026-08-09 0 1. ~~`thread-net-git`-Stand deployen~~ **erledigt (2026-07-31 spätabends, via
hosts/cfgmon.md 71 path-claim no 2026-08-09 0 CFGMON-Session)**: Runner-Container/Netz/`runner-data/`/`.env`-Zeile entfernt,
hosts/cfgmon.md 72 mirror-topology no 2026-08-09 0 `builder-1` aus der Gitea-Admin-UI gelöscht, Actions-Registrierungstoken rotiert.
hosts/cfgmon.md 75 component-ref;status;mirror-topology;issue-ref no 2026-08-09 0 Mac→git.lab→Mirror (`15c8f2d`), Hergang in thread-net-git#1 (geschlossen).
hosts/cfgmon.md 77 mirror-topology no 2026-08-09 0 getippte Token (`a89bfb…`) war der Gitea-**Actions-Runner-Registrierungstoken**
hosts/cfgmon.md 82 status no 2026-08-09 0 3. ~~Token-Rotation b~~ **erledigt (2026-07-31 abends)**: Generalschlüssel
hosts/cfgmon.md 87 path-claim;mirror-topology no 2026-08-09 0 `~/.config/gitea-rohana/token` auf dem Mac), `claude-push` (write:repository,
hosts/cfgmon.md 88 version;path-claim;mirror-topology no 2026-08-09 0 `~/.config/gitea-rohana/push-token`). Erster CI-Publish `0.19.2-threadnet.6`
hosts/cfgmon.md 89 component-ref;status;issue-ref no 2026-08-09 0 verifiziert → threadnet-call#1 geschlossen. Alle Klartext-Reste entfernt
hosts/cfgmon.md 94 path-claim no 2026-08-09 0 (`git.lab/axion1337.chat`, Gruppe mit importierten Projekten angelegt; die Domain ist
hosts/cfgmon.md 97 date-claim;mirror-topology no 2026-08-09 0 pausieren). Der am 2026-07-30 auf Gitea-Seite aufgebaute CI-Unterbau wird damit teilweise
hosts/cfgmon.md 102 component-ref;date-claim no 2026-08-09 0 - **Actions-Toggle** `has_actions` bei `ThreadNet-Web` (am 2026-07-30 per API aktiviert)
hosts/cfgmon.md 103 component-ref no 2026-08-09 0 wieder deaktivieren, ebenso bei `threadnet-call` (stoppt die fehlschlagende
hosts/cfgmon.md 105 component-ref;path-claim no 2026-08-09 0 - **`.github/workflows/` in `ThreadNet-Web`** (der kuratierte 6-Dateien-Satz) — wird durch
hosts/cfgmon.md 106 path-claim no 2026-08-09 0 `.gitlab-ci.yml` ersetzt. Die Erkenntnisse aus den Läufen vom 2026-07-30 mitnehmen:
hosts/cfgmon.md 110 component-ref no 2026-08-09 0 - **Geerbte Upstream-Workflows in `threadnet-call`** (build/publish/test/translations/
hosts/cfgmon.md 113 path-claim;mirror-topology no 2026-08-09 0 der Gitea-Admin-UI deregistrieren und `runner-data/.runner` auf dem Host entfernen.
hosts/cfgmon.md 114 component-ref;path-claim no 2026-08-09 0 - **Token: npm-Token in `threadnet-call`s untracked `embedded/web/.npmrc`** (Klartext im
hosts/cfgmon.md 121 component-ref no 2026-08-09 0 - **Runner-Service in `thread-net-git` ganz entfernen?** Hängt daran, ob das gitops-Repo
hosts/cfgmon.md 122 path-claim no 2026-08-09 0 seinen leichten `deploy-on-push.yml` (YAML-Validierung/Notification, läuft sauber)
hosts/cfgmon.md 124 component-ref;path-claim no 2026-08-09 0 Revert-Commit in `thread-net-git`: Compose-Service `runner`, `runner/config.yaml`,
hosts/cfgmon.md 125 path-claim no 2026-08-09 0 `.env.example` (RUNNER_TOKEN), Cache-Port-Bindung 8088, `runner-data/`.
hosts/cfgmon.md 126 component-ref;path-claim;mirror-topology no 2026-08-09 0 - **Registry-Ziel für `@sorb/threadnet-call-embedded`**: bleibt die Gitea-npm-Registry
hosts/cfgmon.md 128 status;mirror-topology no 2026-08-09 0 GitLab-Package-Registry (dann läuft die Gitea-Package-Seite leer).
hosts/cfgmon.md 129 mirror-topology no 2026-08-09 0 - **Container-Images bleiben in der rohana-Registry** (Flux/k8s pullt von dort — spricht
hosts/cfgmon.md 131 mirror-topology no 2026-08-09 0 **neuen** Deploy-/Push-Token für die rohana-Registry (Neuanlage, kein Rückbau).
hosts/cfgmon.md 135 mirror-topology no 2026-08-09 0 Gitea selbst, gitops-Repo als Flux-Source, Issues/Wiki/dieses Repo, der
hosts/cfgmon.md 136 mirror-topology;issue-ref no 2026-08-09 0 API-Token für Issue-Verwaltung, das Gitea-Backup-Script (CFGMON-09).
hosts/cfgmon.md 139 component-ref;status no 2026-08-09 0 umgezogen — [ADR-0002](../decisions/0002-issues-und-management-ins-lab.md) —,
hosts/cfgmon.md 140 component-ref no 2026-08-09 0 das Repo dabei von `Backlogs` zu `management` umgewidmet
hosts/cfgmon.md 142 mirror-topology no 2026-08-09 0 den damaligen Rückbau der Gitea-CI, nicht auf Dauer.)*
hosts/cfgmon.md 145 component-ref;mirror-topology;issue-ref no 2026-08-09 0 [ThreadNet-Web#2](https://rohana.axion1337.de/sorb/ThreadNet-Web/issues/2),
hosts/cfgmon.md 146 component-ref;mirror-topology;issue-ref no 2026-08-09 0 [threadnet-call#1](https://rohana.axion1337.de/sorb/threadnet-call/issues/1).
hosts/cfgmon.md 148 status no 2026-08-09 0 **Nächster Schritt:** die drei manuellen Schritte oben, dann → erledigt.
hosts/cfgmon.md 150 issue-ref no 2026-08-09 0 ## CFGMON-13 — Absender-Design für Release-/CVE-Meldungen: eigener Bot?
hosts/cfgmon.md 154 component-ref;mirror-topology;issue-ref no 2026-08-09 0 Alertmanager-Routing: [gitops#47](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/47).
hosts/cfgmon.md 160 issue-ref no 2026-08-09 0 1. **release-watch** (gitops#22, deploybereit): Upstream-Releases/Security-Releases
hosts/cfgmon.md 162 issue-ref no 2026-08-09 0 2. **Trivy-CVE-Scans** (gitops#31, läuft wöchentlich in der Lab-CI): Funde landen
hosts/cfgmon.md 168 status no 2026-08-09 0 scharf/stumm schaltbar bleibt? Oder bewusst alles über `@alerts` bündeln?
hosts/cfgmon.md 174 mirror-topology;issue-ref no 2026-08-09 0 ## CFGMON-12 — Gitea-Projektmetadaten nach GitLab umziehen/integrieren
hosts/cfgmon.md 176 component-ref;status;mirror-topology;issue-ref no 2026-08-09 0 **Status:** abgelöst durch [gitops#48](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/48) (2026-08-01, sorb: HOHE Priorität — vollständige Issue-Migration + zentrale Gruppen-Roadmap; Plan-Skizze und die offene Erreichbarkeits-Entscheidung git.lab-only vs. extern stehen dort)
hosts/cfgmon.md 178 count;date-claim no 2026-08-09 0 ✅ **Umgesetzt am 2026-08-01/02**: Die Migration ist durch — 62 Issues liegen auf
hosts/cfgmon.md 179 status;mirror-topology no 2026-08-09 0 git.lab, die Gitea-Issues sind geschlossen und tragen einen Migrations-Fußtext.
hosts/cfgmon.md 181 mirror-topology no 2026-08-09 0 die Aufzählung „Noch auf Gitea" gilt nicht mehr. Die zunächst verbliebene Ausnahme
hosts/cfgmon.md 182 date-claim;issue-ref no 2026-08-09 0 für Deploy-Übergabe-Issues ist am 2026-08-02 mit LABNET-03 ebenfalls zurückgebaut.
hosts/cfgmon.md 187 status;mirror-topology no 2026-08-09 0 Projektmetadaten liegen weiterhin auf Gitea/rohana. Verifiziert per API am
hosts/cfgmon.md 190 mirror-topology no 2026-08-09 0 Noch auf Gitea:
hosts/cfgmon.md 192 component-ref;issue-ref no 2026-08-09 0 - **Issues** inkl. Kommentare/Labels: ThreadNet-Web (#2, #5, …), threadnet-call (#1),
hosts/cfgmon.md 193 issue-ref no 2026-08-09 0 gitops (#24, #25, #32, …)
hosts/cfgmon.md 195 path-claim;mirror-topology no 2026-08-09 0 - **Wiki** (gitops-Wiki mit `00-TASKS.md`-Log — bisher bewusst direkt-Gitea)
hosts/cfgmon.md 197 mirror-topology;issue-ref no 2026-08-09 0 [CFGMON-11](#cfgmon-11--gitea-ci-rückbau-nach-gitlab-umzug) auf rohana — bei
hosts/cfgmon.md 202 mirror-topology no 2026-08-09 0 1. **GitLab-Gitea-Importer vs. API-Skript** — der Importer verliert Autorenschaft
hosts/cfgmon.md 205 mirror-topology no 2026-08-09 0 2. **Erreichbarkeit**: rohana ist von überall erreichbar, git.lab nur im Homelab —
hosts/cfgmon.md 208 mirror-topology no 2026-08-09 0 direkt-Gitea).
hosts/cfgmon.md 213 mirror-topology no 2026-08-09 0 auf Gitea" als geltende Regel.
hosts/cfgmon.md 219 component-ref;issue-ref no 2026-08-09 0 ### CFGMON-10 — threadnet-call-CI schlägt am Artifact-Schritt fehl · verworfen 2026-07-30
hosts/cfgmon.md 221 component-ref;date-claim no 2026-08-09 0 Ausgelöst durch einen Push nach `threadnet-call` am 2026-07-30: der Runner (`builder-1`)
hosts/cfgmon.md 226 component-ref no 2026-08-09 0 **Hypothese inzwischen im Kern bestätigt** — beim parallelen ThreadNet-Web-CI-Versuch
hosts/cfgmon.md 229 mirror-topology no 2026-08-09 0 ohne Swap, trägt daneben Gitea/Traefik/Monitoring) kann das strukturell nicht liefern.
hosts/cfgmon.md 233 mirror-topology;issue-ref no 2026-08-09 0 [CFGMON-11](#cfgmon-11--gitea-ci-rückbau-nach-gitlab-umzug)), CFGMON bleibt bei leichten
hosts/cfgmon.md 234 component-ref;mirror-topology;issue-ref no 2026-08-09 0 Jobs. Issue-Seite: [threadnet-call#1](https://rohana.axion1337.de/sorb/threadnet-call/issues/1).
hosts/cfgmon.md 236 status;mirror-topology;issue-ref no 2026-08-09 0 ### CFGMON-02 — Traefik, Gitea, cAdvisor und Runner unter IaC gebracht · erledigt 2026-07-30
hosts/cfgmon.md 238 component-ref;path-claim no 2026-08-09 0 Liefen ursprünglich im Compose-Projekt `thread-net-git` aus `/data/compose/8`, einem von
hosts/cfgmon.md 239 component-ref;path-claim no 2026-08-09 0 Portainer verwalteten Stack ohne Repo dazu. Jetzt in `sorb/thread-net-git`: `:latest`-Tags
hosts/cfgmon.md 240 component-ref;version;mirror-topology no 2026-08-09 0 gepinnt (Gitea `1.27.0`, cAdvisor `v0.49.1`), Projektname `thread-net-git` beibehalten
hosts/cfgmon.md 242 mirror-topology no 2026-08-09 0 Volume-Namen, Downgrade-Verbot für Gitea), nächtliches Backup-Script. Zusätzlich neu: ein
hosts/cfgmon.md 243 version;path-claim;mirror-topology no 2026-08-09 0 `runner`-Service (`gitea/act_runner:0.6.1`, Container `gitea-runner`, Labels
hosts/cfgmon.md 244 path-claim no 2026-08-09 0 `ubuntu-latest`/`linux-build`/`win-wine` — die letzten beiden gezielt für Electron-Builds)
hosts/cfgmon.md 245 issue-ref no 2026-08-09 0 — ursprünglich unter [CFGMON-08](#cfgmon-08) als offene Frage gelistet, siehe dort.
hosts/cfgmon.md 247 status;path-claim no 2026-08-09 0 Entstanden auf Branch `rework/stack`, zunächst nicht gemergt (produktiv aber schon aktiv).
hosts/cfgmon.md 248 path-claim no 2026-08-09 0 **2026-07-30 nach `main` gemergt** (`origin/main` == `origin/rework/stack` auf `02b3224`,
hosts/cfgmon.md 249 status no 2026-08-09 0 verifiziert) — damit spiegelt die Standardansicht des Repos jetzt den Live-Stand.
hosts/cfgmon.md 250 status;date-claim no 2026-08-09 0 Verifiziert am 2026-07-30 über die Compose-Labels der laufenden Container
hosts/cfgmon.md 251 component-ref;path-claim;mirror-topology no 2026-08-09 0 (`working_dir: /opt/thread-net-git`) und `docker compose ls`. `gitea-data` ist als
hosts/cfgmon.md 255 mirror-topology no 2026-08-09 0 Zum Bootstrapping-Problem (Definition von Gitea liegt in Gitea): mitigiert,
hosts/cfgmon.md 256 mirror-topology no 2026-08-09 0 weil das Deploy-Verzeichnis selbst der Checkout ist — fällt Gitea aus, liegt
hosts/cfgmon.md 259 mirror-topology;issue-ref no 2026-08-09 0 [CFGMON-09](#cfgmon-09--gitea-backups-off-host-in-die-storage-box-eigenes-borg-repo).
hosts/cfgmon.md 261 status;issue-ref no 2026-08-09 0 ### CFGMON-05 — Monitoring-Stack unter IaC bringen · erledigt 2026-07-30
hosts/cfgmon.md 263 path-claim no 2026-08-09 0 Der Stack lief aus `/opt/monitoring` ohne Versionierung und mit `:latest`-Tags. Jetzt
hosts/cfgmon.md 264 component-ref;path-claim no 2026-08-09 0 in `sorb/threadnet-operating` unter `monitoring/`, Images gepinnt,
hosts/cfgmon.md 268 status;issue-ref no 2026-08-09 0 ### CFGMON-06 — Grafana-Certresolver zeigte ins Leere · erledigt 2026-07-30
hosts/cfgmon.md 273 path-claim no 2026-08-09 0 aus. Aus dem Altbestand in `/opt/monitoring` unverändert übernommen und dort
hosts/cfgmon.md 276 component-ref no 2026-08-09 0 Behoben in `threadnet-operating`, Commit `a400f8a`. Cert von Let's Encrypt (YR2)
hosts/cfgmon.md 277 date-claim no 2026-08-09 0 ausgestellt, gültig bis 2026-10-28 — die Nachfolge davon ist
hosts/cfgmon.md 278 issue-ref no 2026-08-09 0 [CFGMON-01](#cfgmon-01--zertifikatserneuerung-braucht-offene-ports-ipv4-und-ipv6).
hosts/cfgmon.md 280 status;issue-ref no 2026-08-09 0 ### CFGMON-07 — Alloy verlor seine Positions-Datei bei jedem Deploy · erledigt 2026-07-30
hosts/cfgmon.md 282 path-claim no 2026-08-09 0 `--storage.path=/var/lib/alloy/data` war gesetzt, aber ohne Volume: die
hosts/cfgmon.md 288 status no 2026-08-09 0 Behoben durch ein `alloy_data`-Volume, Commit `edac97e`. Verifiziert: Positions
hosts/cfgmon.md 291 status;mirror-topology;issue-ref no 2026-08-09 0 ### CFGMON-08 — Kein Gitea-Actions-Runner registriert, Standort noch offen · erledigt 2026-07-30
hosts/cfgmon.md 294 status no 2026-08-09 0 existiert und wo einer laufen sollte, noch offen sei. Beides falsch — ein Runner
hosts/cfgmon.md 295 component-ref;path-claim no 2026-08-09 0 (`builder-1`) läuft bereits, auf CFGMON, als Teil von `thread-net-git`s `rework/stack`-
hosts/cfgmon.md 297 status;mirror-topology;issue-ref no 2026-08-09 0 [CFGMON-02](#cfgmon-02--traefik-gitea-cadvisor-und-runner-unter-iac-gebracht--erledigt-2026-07-30) — hier
hosts/cfgmon.md 298 component-ref;mirror-topology;issue-ref no 2026-08-09 0 nicht dupliziert. [gitops#33](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/33)
hosts/cfgmon.md 299 status no 2026-08-09 0 (dieselbe falsche Prämisse) entsprechend korrigiert/geschlossen.
hosts/game.md 3 component-ref no 2026-08-02 7 Pterodactyl- / Gameserver-Host.
hosts/game.md 7 version no 2026-08-02 7 | **IPv4** | `157.90.155.206` |
hosts/game.md 10 version;date-claim no 2026-08-02 7 | **Privat** | `10.0.0.4` (im vSwitch seit 2026-08-02) |
hosts/game.md 20 component-ref no 2026-08-02 7 [axion1337.chat/game-operating](https://git.lab/axion1337.chat/game-operating)
hosts/game.md 25 status no 2026-08-02 7 Deployment ist gewollt, aber bewusst **zurückgestellt, bis das Matrix-Projekt
hosts/game.md 31 component-ref no 2026-08-02 7 **Pterodactyl** (Gameserver-Verwaltung, in Benutzung durch Bekannte des Betreibers
hosts/game.md 36 version;path-claim no 2026-08-02 7 | `pterodactyl` (Panel) | `ghcr.io/pterodactyl/panel:v1.12.0` |
hosts/game.md 37 component-ref;version;path-claim no 2026-08-02 7 | `wings` (Daemon, fährt die Gameserver als Docker-Container) | `ghcr.io/pterodactyl/wings:v1.12.0` |
hosts/game.md 41 version no 2026-08-02 7 **Eigener Monitoring-Stack** (grafana-oss, prometheus v3.0.0 mit 15 d Retention,
hosts/game.md 42 version no 2026-08-02 7 loki 3.1.1, promtail 3.1.1, node-exporter v1.8.1, cadvisor v0.49.2). Wird
hosts/game.md 43 status no 2026-08-02 7 perspektivisch von CFGMON abgelöst — siehe unten.
hosts/game.md 47 issue-ref no 2026-08-02 7 GAME-01: Auf 9100/8080 des Hosts lauscht nichts, CFGMONs Scrape-Ziele auf der
hosts/game.md 55 version no 2026-08-02 7 | Port | von CFGMON (`188.245.193.243`, 2026-08-01) | vom Hausanschluss (`178.25.213.70`, 2026-08-02) |
hosts/game.md 57 status no 2026-08-02 7 | 80 / 443 | offen | offen (HTTP 404 bzw. 503) |
hosts/game.md 58 status no 2026-08-02 7 | **22** | **Timeout** | **offen** |
hosts/game.md 67 date-claim no 2026-08-02 7 Es fehlte also keine Ausnahme für CFGMON. Seit 2026-08-02 liegt der Host im
hosts/game.md 68 version no 2026-08-02 7 vSwitch (`10.0.0.4`); die Monitoring-Anbindung läuft künftig **per Push über das
hosts/game.md 69 version no 2026-08-02 7 private Netz** — Alloy sammelt lokal ein und schiebt nach `10.0.0.3`, wodurch der
hosts/game.md 71 component-ref;issue-ref no 2026-08-02 7 k3s-Cluster. Details: [GAME-01](https://git.lab/axion1337.chat/management/-/issues/2).
hosts/game.md 80 component-ref no 2026-08-02 7 [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
hosts/game.md 83 component-ref;date-claim;issue-ref no 2026-08-02 7 - [GAME-01 — Host von CFGMON aus nicht erreichbar, 2 Targets down (⚠️ Silences bis 2026-08-04)](https://git.lab/axion1337.chat/management/-/issues/2)
hosts/game.md 84 component-ref;issue-ref no 2026-08-02 7 - [GAME-02 — `www.game.axion1337.de` ist überflüssig](https://git.lab/axion1337.chat/management/-/issues/3)
hosts/matrix.md 8 version no 2026-08-09 0 | **IPv4** | `49.13.132.245` |
hosts/matrix.md 10 version no 2026-08-09 0 | **Privat** | `10.0.0.2` (`enp7s0`, dasselbe Hetzner-Netz wie CFGMON `10.0.0.3`) |
hosts/matrix.md 12 path-claim no 2026-08-09 0 | **DNS** | `matrix.axion1337.de` **und** `matrix.axion1337.chat` zeigen auf dieselbe IP — ebenso `axion1337.chat` (Apex) und `account.axion1337.chat` (MAS). `axion1337.de` ist die ältere/Registrar-Domain (IONOS-Mail läuft dort), `axion1337.chat` die eigentliche Matrix-Service-Domain. |
hosts/matrix.md 15 path-claim no 2026-08-09 0 **Inventarisiert** (direkter SSH-Zugriff, `~/.ssh/config`-Alias `axion1337`, Port 2248):
hosts/matrix.md 18 component-ref;path-claim;mirror-topology no 2026-08-09 0 [`sorb/axion1337.chat-gitops`](https://rohana.axion1337.de/sorb/axion1337.chat-gitops) - dieser
hosts/matrix.md 20 component-ref;path-claim no 2026-08-09 0 `sorb/ThreadNet-Web` (Element Web), `sorb/threadnet-call` (Element Call/LiveKit-Widget).
hosts/matrix.md 21 path-claim no 2026-08-09 0 `sorb/element-web` und `sorb/ThreadNet-Stack` sind **veraltete/abgelöste** Vorgänger-Repos
hosts/matrix.md 24 status no 2026-08-09 0 `ufw`: aktiv, Default Deny Incoming / Allow Outgoing, explizite Allow-Regeln für
hosts/matrix.md 25 status no 2026-08-09 0 2248/tcp (SSH), 80/443, TURN/RTC-Ports. `unattended-upgrades` aktiv (Debian-Security +
hosts/matrix.md 26 status;issue-ref no 2026-08-09 0 Debian-Origin), siehe [MATRIX-04](#matrix-04--host-level-pre-update-benachrichtigung-erledigt).
hosts/matrix.md 31 component-ref no 2026-08-09 0 [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
hosts/matrix.md 34 component-ref;issue-ref no 2026-08-09 0 - [MATRIX-03 — `www.matrix.axion1337.de` ist überflüssig](https://git.lab/axion1337.chat/management/-/issues/1)
hosts/matrix.md 36 date-claim;issue-ref no 2026-08-09 0 ## MATRIX-05 — node-exporter-DaemonSet in CrashLoopBackOff, Cluster-Scrape seit 2026-08-01 tot
hosts/matrix.md 38 status no 2026-08-09 0 **Status:** erledigt (2026-08-01 ~04:10, vom Mac aus mit kubectl/SSH)
hosts/matrix.md 41 version no 2026-08-09 0 Teil 1 bestätigt per Pod-Log: `listen tcp 0.0.0.0:9100: bind: address already in use`;
hosts/matrix.md 43 version no 2026-08-09 0 via `10.0.0.2:9100` scrapt). Teil 2 erklärt: der Cluster-Service "funktionierte" nur in
hosts/matrix.md 49 issue-ref no 2026-08-09 0 **Fix (gitops `228807f`, Weg A aus gitops#45):** HelmRelease + Alloy-Scrape entfernt,
hosts/matrix.md 52 component-ref;mirror-topology;issue-ref no 2026-08-09 0 [gitops#45](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/45).
hosts/matrix.md 61 date-claim no 2026-08-09 0 | Messwert | Stand 2026-08-01 |
hosts/matrix.md 67 path-claim no 2026-08-09 0 | `waiting_reason` / `ready` | `CrashLoopBackOff` / `0` |
hosts/matrix.md 73 status no 2026-08-09 0 **Vermutete Ursache, nicht verifiziert:** Der Pod läuft mit `hostNetwork: true` und will
hosts/matrix.md 75 version no 2026-08-09 0 derselbe, den CFGMON als Job `k3s_host_node` direkt auf `10.0.0.2:9100` scrapt und der
hosts/matrix.md 86 date-claim no 2026-08-09 0 ### Teil 2 — der Cluster-Scrape ist am 2026-08-01 01:19 UTC ausgefallen (akut)
hosts/matrix.md 96 version no 2026-08-09 0 `hostNetwork`, sein Pod-IP ist die öffentliche `49.13.132.245`, dorthin zeigt der
hosts/matrix.md 103 status;version no 2026-08-09 0 | `10.0.0.2:9100` (privat) | offen, 2706 Metriken |
hosts/matrix.md 104 version no 2026-08-09 0 | `49.13.132.245:9100` (öffentlich) | **keine Antwort** |
hosts/matrix.md 105 status;version;path-claim no 2026-08-09 0 | `49.13.132.245:80` / `:443` | offen — Host lebt |
hosts/matrix.md 110 version no 2026-08-09 0 1. Der Exporter bindet jetzt `10.0.0.2:9100` statt `0.0.0.0:9100`.
hosts/matrix.md 123 version no 2026-08-09 0 auf `10.0.0.2:9100` zeigen lassen. Beendet den Crashloop und erhält die enge Bindung ans
hosts/matrix.md 127 version no 2026-08-09 0 Ebenfalls sauber, aber er bindet dann wieder `0.0.0.0` — also auch die öffentliche IP,
hosts/matrix.md 131 count no 2026-08-09 0 ### Nebenbefund — Job-Label kollidiert zwischen zwei Hosts
hosts/matrix.md 137 version yes 2026-08-09 0 up=1 instance=node-exporter:9100 -> CFGMON (Kernel 6.8.0-136-generic)
hosts/matrix.md 152 status;issue-ref no 2026-08-09 0 ### MATRIX-01 — Klären, ob der Server Mail als `@matrix.axion1337.de` verschickt · erledigt 2026-07-30
hosts/matrix.md 154 path-claim no 2026-08-09 0 Für `matrix.axion1337.de` existiert der komplette IONOS-Mail-Satz: `MX mx00/mx01`,
hosts/matrix.md 157 status no 2026-08-09 0 offen, weil Matrix-Homeserver typischerweise Mail für Registrierung/Passwort-Reset
hosts/matrix.md 160 status no 2026-08-09 0 **Antwort, verifiziert per Config** (nicht nur vermutet) — direkt im IaC-Repo
hosts/matrix.md 161 component-ref;path-claim no 2026-08-09 0 `sorb/axion1337.chat-gitops`, dem tatsächlich hier deployten Stand geprüft:
hosts/matrix.md 163 path-claim no 2026-08-09 0 - `apps/production/custom-configs/synapse-values.yaml` — kein `email:`/`smtp_host`/
hosts/matrix.md 165 path-claim no 2026-08-09 0 - `apps/production/custom-configs/mas-secret.yaml` (SOPS-entschlüsselt geprüft) — kein
hosts/matrix.md 166 path-claim no 2026-08-09 0 `email`/`smtp`/`mailer`-Eintrag.
hosts/matrix.md 167 path-claim no 2026-08-09 0 - `apps/production/element-server-suite.yaml` (HelmRelease values) — dito, nichts.
hosts/matrix.md 174 issue-ref no 2026-08-09 0 [ZONE-02](../shared/zone-axion1337.md) an dieser Stelle entblockt.
hosts/matrix.md 179 issue-ref no 2026-08-09 0 MATRIX-04 unten. Nutzt die ohnehin am Apex laufende echte IONOS-Mail-Infrastruktur,
hosts/matrix.md 182 status;issue-ref no 2026-08-09 0 ### MATRIX-02 — Pusht per Remote-Write auf einen offenen Prometheus · erledigt 2026-07-30
hosts/matrix.md 185 version no 2026-08-09 0 getrennten Absendern aus - "CFGMON (`10.0.0.3`) und der k3s-Host (`10.0.0.2`)" - als wären
hosts/matrix.md 187 status;version no 2026-08-09 0 selbst die private IP `10.0.0.2` (verifiziert per `ip -4 addr show` auf dem Host).
hosts/matrix.md 189 status;path-claim no 2026-08-09 0 Verifiziert in `apps/monitoring/alloy-config.yaml` (diesem Cluster): Der Remote-Write-Push
hosts/matrix.md 190 version;path-claim no 2026-08-09 0 geht bereits an `http://10.0.0.3:9090/api/v1/write` und Loki an `http://10.0.0.3:3100/...` -
hosts/matrix.md 191 version no 2026-08-09 0 **private IP, nicht die öffentliche** `188.245.193.243:9090`. Von dieser Seite aus ist hier
hosts/matrix.md 194 issue-ref no 2026-08-09 0 [CFGMON-03](cfgmon.md#cfgmon-03--prometheus-remote-write-und-loki-sind-öffentlich-ohne-auth)
hosts/matrix.md 197 status;issue-ref no 2026-08-09 0 ### MATRIX-04 — Host-Level Pre-Update-Benachrichtigung · erledigt 2026-07-30
hosts/matrix.md 200 path-claim no 2026-08-09 0 `docs/deployment-guides/07-host-maintenance-notifications.md` im gitops-Repo,
hosts/matrix.md 201 component-ref;mirror-topology;issue-ref no 2026-08-09 0 [Issue #24](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/24)):
hosts/matrix.md 202 status no 2026-08-09 0 `unattended-upgrades` war bereits aktiv, neu ergänzt ist ein systemd-Timer
hosts/overmind.md 10 version no 2026-08-09 0 | **DNS (Lab)** | `git.lab` → `10.58.73.17` (TLS via Dokploy-Proxy, Zertifikate von der aXionLabs-CA: step-ca, 24h-Leaf, Intermediate bis 2035) |
hosts/overmind.md 11 date-claim no 2026-08-09 0 | **CPU/RAM** | 14 Kerne, 30 Gi (Stand 2026-07-31: ~11 Gi verfügbar) |
hosts/overmind.md 12 date-claim no 2026-08-09 0 | **Disk** | 444 G NVMe (~278 G frei, Stand 2026-07-31) |
hosts/overmind.md 13 path-claim no 2026-08-09 0 | **KVM** | `/dev/kvm` vorhanden — Basis für die Windows-Build-VM |
hosts/overmind.md 20 component-ref;version;path-claim no 2026-08-09 0 | GitLab CE 18.7.1 + Postgres 16 + Redis 7 | Dokploy-Stack `management-gitlabce` | `external_url https://git.lab`, SSH 2224; TLS terminiert der Dokploy-Proxy (GitLab-nginx lauscht nur :80) |
hosts/overmind.md 21 status;version;path-claim no 2026-08-09 0 | gitlab-runner `lab-builder-1` (v18.7.0) | gleicher Stack, Service `gitlab-runner` | Docker-Executor + Socket, `concurrent = 1`. **Stolpersteine, live gefunden**: (1) Docker-interner DNS löst `git.lab` auf den GitLab-Container auf, wo 443 zu ist → `extra_hosts: git.lab:10.58.73.17` nötig; (2) Lab-CA muss nach `/etc/gitlab-runner/certs/git.lab.crt` (Config-Volume, übersteht Redeploys) |
hosts/overmind.md 23 status;path-claim;date-claim no 2026-08-09 0 | Windows-Build-VM | Dokploy-Stack `windows-runner` (live seit 2026-07-31) | Image `registry.git.lab/axion1337.chat/vendor/windows:stable` (Eigenbau aus reviewtem Pin `7645a2b`, Vendor-Repo `git.lab/axion1337.chat/vendor/windows`), **on-demand** (`restart: "no"`, Start/Stop über CI-Jobs), 8G/6 Kerne/96G. Runbook: `docs/axion-runner.md` im Vendor-Repo. Gast-Uhr geht falsch (Traces stempeln ~+7h) —
hosts/overmind.md 27 status;date-claim;mirror-topology no 2026-08-09 0 git.lab ist seit 2026-07-31 **kanonisch** für die gespiegelten Repos der Gruppe
hosts/overmind.md 28 component-ref;count;date-claim no 2026-08-09 0 `axion1337.chat` — Stand 2026-08-09 **sieben**: die sechs Produkt-Repos (ThreadNet-Web,
hosts/overmind.md 29 component-ref no 2026-08-09 0 threadnet-call, thread-net-git, threadnet-operating, axion1337.chat-gitops, seit heute auch
hosts/overmind.md 30 component-ref;mirror-topology no 2026-08-09 0 `game-operating`) **und `management`, also dieses Repo**. Push-Mirrors nach rohana/Gitea,
hosts/overmind.md 31 status;mirror-topology no 2026-08-09 0 direkte Gitea-Pushes tabu.
hosts/overmind.md 33 component-ref;status;mirror-topology no 2026-08-09 0 ⚠️ `gameserver` (achtes Projekt der Gruppe) hat **keinen** Mirror — offen in
hosts/overmind.md 34 component-ref;mirror-topology;issue-ref no 2026-08-09 0 [management#32](https://git.lab/axion1337.chat/management/-/issues/32), dort liegt auf Gitea
hosts/overmind.md 37 mirror-topology no 2026-08-09 0 Gitea bleibt: Flux-Source (via Mirror beliefert), Registry, Packages.
hosts/overmind.md 38 date-claim no 2026-08-09 0 **Issues nicht mehr** — die sind am 2026-08-01/02 nach git.lab gewandert
hosts/overmind.md 39 component-ref no 2026-08-09 0 ([ADR-0002](../decisions/0002-issues-und-management-ins-lab.md)). Die letzte Ausnahme,
hosts/overmind.md 40 component-ref;path-claim;date-claim;mirror-topology no 2026-08-09 0 die Deploy-Übergabe-Issues auf dem Gitea-Tracker `sorb/management`, ist am 2026-08-02
hosts/overmind.md 41 status;issue-ref no 2026-08-09 0 mit LABNET-03 zurückgebaut: beide umgezogen (#25, #26), der Tracker ist leer.
hosts/overmind.md 44 date-claim no 2026-08-09 0 *(Bis 2026-08-01 stand hier „Backlogs (dieses Repo, ungespiegelt)" — das Repo heißt
hosts/overmind.md 45 component-ref;mirror-topology no 2026-08-09 0 seit der Umwidmung zum Management-Repo `management` und wird seither gespiegelt,
hosts/overmind.md 48 issue-ref no 2026-08-09 0 ## OVERMIND-01 — GitLab-Container-Registry aktivieren, Images nach Konsument sortieren
hosts/overmind.md 50 status no 2026-08-09 0 **Status:** erledigt (2026-08-01)
hosts/overmind.md 53 component-ref;status;path-claim no 2026-08-09 0 `registry.git.lab/axion1337.chat/threadnet-web/desktop-build:bullseye` (Job 386 grün,
hosts/overmind.md 55 status no 2026-08-09 0 damit grün durch (Job 398 - beweist auch den anonymen Pull des public Projekts durch
hosts/overmind.md 56 mirror-topology no 2026-08-09 0 den Runner-Daemon). Die rohana-`REGISTRY_*`-Variablen bleiben nur noch für den
hosts/overmind.md 61 mirror-topology no 2026-08-09 0 Lab-CI → rohana (Prod, Internet) → zurück ins Lab — koppelt Lab-Infrastruktur unnötig an
hosts/overmind.md 65 component-ref;path-claim;mirror-topology no 2026-08-09 0 - **rohana (Gitea) behält**: `sorb/threadnet-web` (App-Image — Flux/Prod pullt es),
hosts/overmind.md 71 path-claim no 2026-08-09 0 1. Omnibus-Config: `registry_external_url 'https://registry.git.lab'`,
hosts/overmind.md 74 version no 2026-08-09 0 2. Lab-DNS: `registry.git.lab` → `10.58.73.17`
hosts/overmind.md 78 path-claim no 2026-08-09 0 `/etc/docker/certs.d/registry.git.lab/ca.crt` (Datei liegt schon als
hosts/overmind.md 79 path-claim no 2026-08-09 0 `/tmp/git.lab.crt` vom Runner-Setup — kopieren reicht; kein Daemon-Restart nötig)
hosts/overmind.md 80 path-claim no 2026-08-09 0 5. CI-Umstellung: `vendor/windows` pusht nach `registry.git.lab` (Bonus: GitLabs
hosts/overmind.md 81 path-claim no 2026-08-09 0 eingebaute `$CI_REGISTRY`/`$CI_JOB_TOKEN`-Auth statt Gruppen-Secrets),
hosts/overmind.md 82 component-ref;path-claim no 2026-08-09 0 `desktop_image`/`desktop_linux` in ThreadNet-Web folgen; Registry-Speicher liegt im
hosts/overmind.md 85 status no 2026-08-09 0 **Fortschritt 2026-07-31**: Punkte 14 umgesetzt (Registry live auf
hosts/overmind.md 86 path-claim no 2026-08-09 0 `registry.git.lab`, 401/Bearer-Auth korrekt, CA-Trust auf dem Host); `vendor/windows`
hosts/overmind.md 87 status no 2026-08-09 0 pusht per `CI_JOB_TOKEN` in die Lab-Registry — verifiziert, Tags `5bc25447` + `stable`
hosts/overmind.md 90 mirror-topology no 2026-08-09 0 **Nächster Schritt:** `element-desktop-build` von rohana in die Lab-Registry umziehen
hosts/overmind.md 91 component-ref no 2026-08-09 0 (ThreadNet-Web-CI: `desktop_image`-Push-Ziel + `desktop_linux`-Image-Referenz) — bewusst
hosts/overmind.md 92 status no 2026-08-09 0 zurückgestellt, bis kein Auto-Job das alte Image parallel referenziert (Reihenfolge:
hosts/overmind.md 95 status;issue-ref no 2026-08-09 0 ## OVERMIND-02 — Host-Ausfall 2026-07-31 ~19:15 lokal (NIC-Hang, Fix aktiv)
hosts/overmind.md 97 component-ref;status;issue-ref no 2026-08-09 0 **Status:** Fix aktiv — die Beobachtung läuft als [Issue #4](https://git.lab/axion1337.chat/management/-/issues/4)
hosts/overmind.md 107 status no 2026-08-09 0 **Fix (2026-07-31, Overmind-Session):** `ethtool --set-eee eno1 eee off` live gesetzt
hosts/overmind.md 108 path-claim no 2026-08-09 0 + persistente udev-Regel `/etc/udev/rules.d/71-disable-eee-eno1.rules` (greift bei
hosts/overmind.md 112 status;version no 2026-08-09 0 - ~~NIC-/BIOS-Firmware-Update 2.4.0.0 → 2.5.2.0~~ **erledigt** (Wartungsfenster
hosts/overmind.md 121 status;version no 2026-08-09 0 - 19:0519:12 — Provision-Job 409 grün (Rust 1.97.1 maschinenweit, Strawberry Perl,
hosts/overmind.md 137 status no 2026-08-09 0 8G. Nach dem NIC-Fix lief die Kette durch: **desktop_windows Job 438 grün**
hosts/overmind.md 138 version no 2026-08-09 0 (2026-07-31 ~21:50 lokal, `Element Setup 1.12.17.exe`, 141 MB, unsigniert) —
hosts/overmind.md 139 component-ref;status;issue-ref no 2026-08-09 0 ThreadNet-Web#5 geschlossen, Folgethemen (Signing/Branding) in ThreadNet-Web#6.
hosts/overmind.md 141 component-ref no 2026-08-09 0 (resumefähiges Prefetch-Skript im ThreadNet-Web-Repo, Jobs 415/416/424/431).
hosts/overmind.md 145 component-ref;issue-ref no 2026-08-09 0 Weitere CI-Betriebsthemen laufen über die Projekt-Issues (ThreadNet-Web#5
hosts/overmind.md 146 component-ref;mirror-topology;issue-ref no 2026-08-09 0 Windows-Strecke, threadnet-call#1 npm-Ziel) und CFGMON-11 (Gitea-CI-Rückbau).
roadmap.md 3 date-claim no 2026-08-09 0 > Stand 2026-08-06. Diese Datei hält die **Linien und die Reihenfolge**,
roadmap.md 6 date-claim no 2026-08-09 0 > Die Gruppen-Milestones M1M4 sind angelegt, und seit 2026-08-06 hängt **jedes
roadmap.md 13 status no 2026-08-09 0 > „Härtung" werden soll oder M1 bewusst breit bleibt, ist **offen** — zu
roadmap.md 20 status no 2026-08-09 0 1. **CVE-Meldeweg v2 live** — aggregierte Alarme deployen
roadmap.md 21 component-ref;issue-ref no 2026-08-09 0 ([Übergabe-Issue #25](https://git.lab/axion1337.chat/management/-/issues/25)),
roadmap.md 23 component-ref;issue-ref no 2026-08-09 0 (Follow-up-Wunsch sorb). [gitops#45](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/45),
roadmap.md 24 component-ref;issue-ref no 2026-08-09 0 [#49](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/49)
roadmap.md 26 component-ref;issue-ref no 2026-08-09 0 [CFGMON-01 (#7)](https://git.lab/axion1337.chat/management/-/issues/7) ⏰
roadmap.md 27 component-ref;issue-ref no 2026-08-09 0 3. **Backups wiederherstellen** — [CFGMON-09 (#10)](https://git.lab/axion1337.chat/management/-/issues/10)
roadmap.md 29 issue-ref no 2026-08-09 0 4. K3s-API-Härtung (gitops#25, gemeinsame Session), CFGMON-03-Konsolen-Klärung.
roadmap.md 33 status no 2026-08-09 0 1. ✅ **Site-to-Site-VPN** Hetzner ↔ Lab — erledigt 2026-08-01
roadmap.md 34 component-ref;issue-ref no 2026-08-09 0 ([#12](https://git.lab/axion1337.chat/management/-/issues/12), ADR-0004 akzeptiert,
roadmap.md 35 issue-ref no 2026-08-09 0 zwei AARs). Ernte daraus: ✅ **LABNET-03 (#13)** — Übergabe-Issues sind am
roadmap.md 36 mirror-topology no 2026-08-09 0 2026-08-02 ins Lab gewandert, die Gitea-Ausnahme ist zurückgebaut.
roadmap.md 37 issue-ref no 2026-08-09 0 2. GAME-01-Erreichbarkeit + vSwitch-Aufnahme —
roadmap.md 38 component-ref;date-claim;issue-ref no 2026-08-09 0 [#2](https://git.lab/axion1337.chat/management/-/issues/2) (Silences bis 2026-08-04!)
roadmap.md 39 issue-ref no 2026-08-09 0 3. Roadmap-/Board-Ausbau in GitLab (Rest von gitops#46: Milestones, Boards).
roadmap.md 40 component-ref;issue-ref no 2026-08-09 0 4. **Wiki-Oberfläche entscheiden** — [DOC-03 (#20)](https://git.lab/axion1337.chat/management/-/issues/20):
roadmap.md 45 component-ref;issue-ref no 2026-08-09 0 [CFGMON-14 (#14)](https://git.lab/axion1337.chat/management/-/issues/14) docker-Gruppe
roadmap.md 47 component-ref;issue-ref no 2026-08-09 0 [CFGMON-15 (#15)](https://git.lab/axion1337.chat/management/-/issues/15) Token-Hygiene,
roadmap.md 48 component-ref;issue-ref no 2026-08-09 0 [LABNET-04 (#16)](https://git.lab/axion1337.chat/management/-/issues/16) Nacharbeiten.
roadmap.md 52 date-claim no 2026-08-09 0 1. **Rebrand fortsetzen** — Desktop-Client heißt seit 2026-08-02 **ThreadNet** und
roadmap.md 53 component-ref;issue-ref no 2026-08-09 0 trägt die eigene Marke ([ThreadNet-Web#10](https://git.lab/axion1337.chat/ThreadNet-Web/-/issues/10),
roadmap.md 54 status;path-claim no 2026-08-09 0 Commit `6b0261d`). Offen: Web-Client-Icons/`brand`, About-Attribution.
roadmap.md 55 component-ref;issue-ref no 2026-08-09 0 2. Signing/Notarisierung (ThreadNet-Web#6) — ohne Signatur muss jeder Nutzer auf
roadmap.md 57 component-ref;issue-ref no 2026-08-09 0 3. **macOS reproduzierbar bauen** — [BUILD-01 (#22)](https://git.lab/axion1337.chat/management/-/issues/22):
roadmap.md 59 issue-ref no 2026-08-09 0 4. **Raidplaner** (gitops#47) — Lean-Experiment: HumHub-Kandidat evaluieren.
roadmap.md 60 issue-ref no 2026-08-09 0 5. **Gäste-Invite-Workflow** (gitops#48) — Design steht (@concierge,
roadmap.md 62 component-ref;issue-ref no 2026-08-09 0 6. Zammad-artiges Feedback-Tool als spätere Ergänzung (ThreadNet-Web#9).
roadmap.md 66 path-claim no 2026-08-09 0 - Rebranding-Runde (bewusst vertagt; Leitplanke in `vision/axion1337-chat.md`).
roadmap.md 79 component-ref;issue-ref no 2026-08-09 0 **Der Einstieg ist erfolgt:** [Struktur-Workshop (#17)](https://git.lab/axion1337.chat/management/-/issues/17)
roadmap.md 80 date-claim no 2026-08-09 0 am 2026-08-06 — Visionen geschärft, M1M4 angelegt, Board gesichtet, Kadenz und
roadmap.md 88 date-claim;mirror-topology no 2026-08-09 0 Titel-Präfixe aus der Gitea-Migration sind am 2026-08-06 entfernt; zwei davon
roadmap.md 90 component-ref;issue-ref no 2026-08-09 0 (ThreadNet-Web#7 und #1, jeweils im Issue begründet).
shared/branding.md 8 component-ref no 2026-08-09 0 Hier im `management`-Repo, weil es als einziges der beteiligten Repos
shared/branding.md 9 mirror-topology no 2026-08-09 0 **gespiegelt** ist und jede Werkzeugentscheidung überlebt: Wird das
shared/branding.md 16 path-claim no 2026-08-09 0 Schriftzug), erstellt von sorb. Sie liegen im Wiki-Repo unter `static/img/` und
shared/branding.md 28 date-claim no 2026-08-09 0 Icon-Slots fällt das sofort auf. Korrigiert am 2026-08-06 auf 21 % oben wie unten.
shared/branding.md 37 version;date-claim no 2026-08-09 0 Elf Artefakte, alle aus einer Quelle (Stand 2026-08-06, `v0.4.0`):
shared/branding.md 41 path-claim no 2026-08-09 0 | `apps/web/res/vector-icons/` | 1024, 512, 180, 152, 144, 120, 24 px |
shared/branding.md 42 path-claim no 2026-08-09 0 | `apps/desktop/build/icon.png` | App-/Installer-Icon |
shared/branding.md 43 path-claim no 2026-08-09 0 | `apps/desktop/build/icon.ico` | Windows, 7 Größen von 16 bis 256 |
shared/branding.md 44 path-claim no 2026-08-09 0 | `apps/desktop/build/icon.icns` | macOS, via `iconutil` aus einem `.iconset` |
shared/branding.md 45 path-claim no 2026-08-09 0 | `apps/desktop/build/icon.icon/Assets/element.png` | Layer des macOS-Icon-Composers |
shared/branding.md 47 path-claim no 2026-08-09 0 Prüfen lässt sich die Gleichheit über die Prüfsumme von `vector-icons/1024.png`
shared/branding.md 48 path-claim no 2026-08-09 0 gegen `build/icon.png` — weichen sie ab, ist eine Seite nachgezogen worden und die
shared/branding.md 55 path-claim;issue-ref no 2026-08-09 0 Gruvbox Dark. Grundtöne `#282828` / `#1d2021`, Text `#ebdbb2`, Akzent `#bd93f9`,
shared/branding.md 63 date-claim no 2026-08-09 0 Am 2026-08-02 in der BookStack-Oberfläche eingestellt und von dort extrahiert
shared/branding.md 65 issue-ref no 2026-08-09 0 der Coolors-Satz `#264653 · #2A9D8F · #E9C46A · #F4A261 · #E76F51`:
shared/branding.md 69 issue-ref no 2026-08-09 0 | Primäre Farbe | `#264653` | Charcoal |
shared/branding.md 74 status no 2026-08-09 0 | Seitenfarbe | `#77bb41` | Grün |
shared/branding.md 75 status no 2026-08-09 0 | Seitenentwurfsfarbe | `#e32400` | Rot |
shared/branding.md 86 date-claim no 2026-08-09 0 je Theme vier Farben plus ein Schriftpaar. Sie sind seit 2026-08-02 **wörtlich
shared/branding.md 93 issue-ref no 2026-08-09 0 | Sunset Boulevard | `#264653` | dunkel | `#e76f51` · `#f4a261` · `#e9c46a` |
shared/branding.md 95 issue-ref no 2026-08-09 0 | Modern Minimalist | `#ffffff` | hell | `#36454f` · `#708090` · `#d3d3d3` |
shared/branding.md 103 count no 2026-08-09 0 ⚠️ **Ob ein Theme hell oder dunkel gemeint ist, steht nicht verlässlich in den
shared/branding.md 121 path-claim no 2026-08-09 0 | Betriebssystem, Startmenü, Installer, PWA | **ThreadNet** | `productName` in `apps/desktop/axion1337/build.json`, `name` in `apps/web/res/manifest.json` |
shared/branding.md 122 path-claim no 2026-08-09 0 | in der Anwendung | **aXion1337.Chat** | `brand` in `element-values.yaml` (Prod) und `apps/desktop/axion1337/config.json` |
shared/branding.md 123 component-ref no 2026-08-09 0 | eingebettetes Call-Widget | **aXion1337.Chat** | `VITE_PRODUCT_NAME` in `.env.production` (threadnet-call) |
shared/branding.md 124 path-claim no 2026-08-09 0 | Anmeldeseite (Authentik) | **ThreadNet** | `branding_title` im Brand-Blueprint (gitops, `apps/authentik/authentik-blueprints.yaml`) |
shared/branding.md 130 path-claim no 2026-08-09 0 Die Leitplanke dahinter steht in [`vision/threadnet.md`](../vision/threadnet.md):
shared/branding.md 138 version no 2026-08-09 0 **Attribution:** „ThreadNet — powered by Element" steht seit `v0.4.0` in
shared/branding.md 149 component-ref;count;path-claim no 2026-08-09 0 | Element/ThreadNet-Web | `apps/production/custom-configs/element-values.yaml` (gitops), `setting_defaults.custom_themes` | 17 Themes; Änderungen chirurgisch, **nie die YAML neu serialisieren** |
shared/branding.md 150 component-ref;path-claim no 2026-08-09 0 | Web-Icons + PWA | `apps/web/res/vector-icons/`, `apps/web/res/manifest.json` (ThreadNet-Web) | `theme_color` = `#ed4f4c`, die Markenfarbe — nicht Elements `#76CFA6` |
shared/branding.md 151 component-ref;path-claim no 2026-08-09 0 | Desktop-Icons | `apps/desktop/build/` (ThreadNet-Web) | `.png`, `.ico`, `.icns`, Layer-Asset — alle aus derselben Quelle |
shared/branding.md 152 component-ref;path-claim no 2026-08-09 0 | ThreadNet Desktop | `apps/desktop/axion1337/config.json` (ThreadNet-Web) | eigene Kopie derselben Themes — beim Ändern beide mitziehen |
shared/branding.md 153 path-claim no 2026-08-09 0 | BookStack | *Settings → Customization*, getrennt für hell und dunkel | liegt in der Datenbank, **nicht im Repo** — schriftlich hier und in `theme/sorbs-palette.md` |
shared/branding.md 154 path-claim no 2026-08-09 0 | BookStack (Feinschliff) | `theme/*.css` im Wiki-BookStack-Repo | nur Flächen, Text, Ränder — die sieben Farben oben gehören in die Oberfläche |
shared/branding.md 155 path-claim no 2026-08-09 0 | Docusaurus-Wiki | `src/css/custom.css` (homelab/wiki) | bislang nur Akzentfarbe |
shared/branding.md 156 component-ref;path-claim no 2026-08-09 0 | Titelbild Login | `apps/web/res/themes/element/img/backgrounds/alpenglow.jpg` (ThreadNet-Web), gesetzt in `SdkConfig.ts` | siehe unten — Bilddatei kommt nur über einen Build in den Container |
shared/branding.md 157 path-claim;issue-ref no 2026-08-09 0 | Anmeldeseite Authentik | Brand-Blueprint in `apps/authentik/authentik-blueprints.yaml` (gitops) | Favicon und Hintergrund werden **von axion1337.chat referenziert**, nicht hochgeladen. **Logo ist noch Authentiks eigenes** → gitops#55 |
shared/branding.md 161 date-claim no 2026-08-09 0 Seit 2026-08-06 zeigt die Login-Seite ein Alpenglühen über einer Bergkette statt
shared/branding.md 173 path-claim no 2026-08-09 0 Fotografen namentlich. Nur `en`/`de` anzupassen hätte in 29 Sprachen eine **falsche
shared/branding.md 179 path-claim no 2026-08-09 0 `https://axion1337.chat/themes/element/img/backgrounds/alpenglow.jpg`. Wer das Bild im
shared/branding.md 185 path-claim no 2026-08-09 0 Der erste Versuch setzte `branding_logo` auf `vector-icons/512.png`. Ergebnis: das
shared/branding.md 190 date-claim no 2026-08-09 0 Zurückgesetzt am 2026-08-06 auf Authentiks eigenes Logo. Ein Ersatz braucht eine
shared/branding.md 192 status no 2026-08-09 0 auch `threadnet-logo-wortmarke.png` (Bildmarke *über* Schriftzug). Offen in
shared/branding.md 204 path-claim no 2026-08-09 0 `theme/sorbs-palette.md` im BookStack-Repo ist die betriebsnahe Kopie mit den
shared/branding.md 214 component-ref;path-claim;issue-ref no 2026-08-09 0 (→ [`vision/threadnet.md`](../vision/threadnet.md), ThreadNet-Web#10).
shared/commit-zuordnung-2026-08-07.md 3 date-claim no 2026-08-09 0 Am 2026-08-07 wurden die Zeitstempel aller Commits aus dieser Zusammenarbeit auf
shared/commit-zuordnung-2026-08-07.md 14 status no 2026-08-09 0 `backup-vor-rewrite`-Branches rekonstruiert und **paarweise verifiziert**: Für jedes
shared/commit-zuordnung-2026-08-07.md 26 component-ref no 2026-08-09 0 Das Force-Push der umgezogenen Tags hat in ThreadNet-Web **drei Release-Pipelines
shared/commit-zuordnung-2026-08-07.md 27 version no 2026-08-09 0 neu gestartet** (`v0.3.0`, `v0.4.0`, `desktop-v1.12.17-clientscan`). Ein Tag ist
shared/commit-zuordnung-2026-08-07.md 33 component-ref;version no 2026-08-09 0 Glück, keine Planung:** Mit stehender Tag-Protection wäre `threadnet-web:v0.4.0`
shared/commit-zuordnung-2026-08-07.md 37 component-ref;issue-ref no 2026-08-09 0 ThreadNet-Web#14.
shared/commit-zuordnung-2026-08-07.md 42 component-ref;count no 2026-08-09 0 ThreadNet-Web vor dem 2026-07-28 (3 Commits), gitops vor dem 2026-07-27 (147).
shared/commit-zuordnung-2026-08-07.md 47 count no 2026-08-09 0 ## gitops — 117 Commits
shared/commit-zuordnung-2026-08-07.md 169 component-ref;count no 2026-08-09 0 ## management — 78 Commits
shared/commit-zuordnung-2026-08-07.md 252 component-ref;count no 2026-08-09 0 ## ThreadNet-Web — 47 Commits
shared/commit-zuordnung-2026-08-07.md 304 component-ref;count no 2026-08-09 0 ## threadnet-call — 9 Commits
shared/lab-netzwerk.md 10 component-ref;issue-ref no 2026-08-02 7 > (Testreihe 17 in [#12](https://git.lab/axion1337.chat/management/-/issues/12)).
shared/lab-netzwerk.md 11 issue-ref no 2026-08-02 7 > Es gibt dazu **keine offenen Issues mehr** — auch die Restpunkte #11
shared/lab-netzwerk.md 12 issue-ref no 2026-08-02 7 > (MacBook-Profil) und #16 (LABNET-04, Feinschliff an den UniFi-Regeln) sind
shared/lab-netzwerk.md 13 status no 2026-08-02 7 > geschlossen. Alles Folgende ist **Bestand und Historie**, keine offene Arbeit.
shared/lab-netzwerk.md 15 date-claim no 2026-08-02 7 **Zwei WireGuard-Zugänge (Stand 2026-08-01, beide gelöst/abgenommen):**
shared/lab-netzwerk.md 19 version;issue-ref no 2026-08-02 7 | Roadwarrior „Thore" | UDM | 51840 | 10.58.74.0/24 | Handy/MacBook ins Lab (LABNET-01) |
shared/lab-netzwerk.md 20 version;issue-ref no 2026-08-02 7 | Site-to-Site „Matrix" | UDM | 51841 | 10.58.75.0/24 | Hetzner-Netz 10.0.0.0/24 ↔ Lab (LABNET-02, [ADR-0004](../decisions/0004-site-to-site-vpn-hetzner-lab.md)) |
shared/lab-netzwerk.md 22 path-claim no 2026-08-02 7 ### Verhältnis zu `homelab/docs`
shared/lab-netzwerk.md 30 mirror-topology no 2026-08-02 7 Der Grund für die Doppelung ist der Mirror-Geltungsbereich aus der
shared/lab-netzwerk.md 35 path-claim no 2026-08-02 7 darüber hinaus. **Bei Widerspruch gilt `homelab/docs`.**
shared/lab-netzwerk.md 39 issue-ref no 2026-08-02 7 ## LABNET-01 — WireGuard-Roadwarrior ins Lab kaputt (seit einigen Monaten)
shared/lab-netzwerk.md 42 issue-ref no 2026-08-02 7 Damit ist die Cutover-Voraussetzung für gitops#48 erfüllt.
shared/lab-netzwerk.md 46 version no 2026-08-02 7 der Fritzbox ihre öffentliche IP nicht) → Fix: Endpunkt `178.25.213.70`;
shared/lab-netzwerk.md 52 version;path-claim no 2026-08-02 7 /20-Blöcke in 192.168.0.0/16; `192.168.0.0/20` verschluckte das VPN-Subnetz
shared/lab-netzwerk.md 53 version no 2026-08-02 7 192.168.5.0/24 → Antworten an VPN-Clients endeten in der Bridge (SYN kam an,
shared/lab-netzwerk.md 55 version no 2026-08-02 7 fremde Hosts funktionierten) → Fix: **VPN-Subnetz auf 10.58.74.0/24** (Docker
shared/lab-netzwerk.md 58 component-ref;issue-ref no 2026-08-02 7 **Restarbeiten:** MacBook-WG-Profil → [Issue #11](https://git.lab/axion1337.chat/management/-/issues/11). ⚠️ Latente Wiederholungsgefahr
shared/lab-netzwerk.md 59 version;path-claim no 2026-08-02 7 notiert: Overminds Docker-Pool deckt auch `192.168.176.0/20` ab = kollidiert mit
shared/lab-netzwerk.md 60 version no 2026-08-02 7 dem Fritzbox-Netz 192.168.178.x — aktuell folgenlos, aber bei künftigen Subnetz-
shared/lab-netzwerk.md 66 version no 2026-08-02 7 (192.168.178.20) als Endpunkt — die UDM kennt hinter der Fritzbox ihre
shared/lab-netzwerk.md 69 version no 2026-08-02 7 178.25.213.70 ändern!).
shared/lab-netzwerk.md 73 status no 2026-08-02 7 einem Port). Fix: UDM-WG auf **51840** umgezogen + Freigabe angepasst.
shared/lab-netzwerk.md 77 issue-ref no 2026-08-02 7 blockierte gitops#48 (Erreichbarkeits-Entscheidung „WireGuard statt exponieren")
shared/lab-netzwerk.md 85 status no 2026-08-02 7 **Diagnose-Plan von VOR der Lösung** — ⚠️ abgearbeitet und überholt, steht hier
shared/lab-netzwerk.md 102 issue-ref no 2026-08-02 7 **Verwandt:** gitops#48 (Cutover erst nach Lösung), perspektivisch ersetzt ein
shared/lab-netzwerk.md 105 status no 2026-08-02 7 ## Zugehörige Issues — alle geschlossen
shared/lab-netzwerk.md 108 component-ref no 2026-08-02 7 [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
shared/lab-netzwerk.md 111 status;date-claim no 2026-08-02 7 Zum Netz/VPN ist **nichts mehr offen** (Stand 2026-08-02):
shared/lab-netzwerk.md 115 component-ref;status;issue-ref no 2026-08-02 7 | [#11](https://git.lab/axion1337.chat/management/-/issues/11) | LABNET-01-Rest — MacBook-WireGuard-Profil | geschlossen |
shared/lab-netzwerk.md 116 component-ref;status;issue-ref no 2026-08-02 7 | [#12](https://git.lab/axion1337.chat/management/-/issues/12) | LABNET-02 — Site-to-Site-VPN (Design: [ADR-0004](../decisions/0004-site-to-site-vpn-hetzner-lab.md)) | geschlossen, Testreihe 17 protokolliert |
shared/lab-netzwerk.md 117 component-ref;status;issue-ref no 2026-08-02 7 | [#16](https://git.lab/axion1337.chat/management/-/issues/16) | LABNET-04 — Feinschliff UniFi-Regeln | geschlossen |
shared/lab-netzwerk.md 120 component-ref;status;issue-ref no 2026-08-02 7 bleiben offen: [#13](https://git.lab/axion1337.chat/management/-/issues/13)
shared/lab-netzwerk.md 121 mirror-topology;issue-ref no 2026-08-02 7 (LABNET-03, Rückbau der Gitea-Ausnahme für Übergabe-Issues — durch den Tunnel
shared/lab-netzwerk.md 123 component-ref;issue-ref no 2026-08-02 7 [#15](https://git.lab/axion1337.chat/management/-/issues/15) (CFGMON-15,
shared/lab-netzwerk.md 124 issue-ref no 2026-08-02 7 Widerruf der Einmal-Tokens aus der LABNET-02-Nacht — Credential-Hygiene, und der
shared/lab-netzwerk.md 125 mirror-topology no 2026-08-02 7 Widerruf kann still einen Push-Mirror brechen, solange dessen hinterlegtes Token
shared/zone-axion1337.md 9 version;path-claim no 2026-08-06 3 | **Apex** | `217.160.0.140` / `2001:8d8:100f:f000::2e9` — IONOS-Hosting, nicht eigene Infrastruktur |
shared/zone-axion1337.md 18 mirror-topology no 2026-08-06 3 | `rohana` | löst auf ❌ | gelöscht | **gelöscht** ⚠️ | fehlt | ⚠️ schwächer als vorher |
shared/zone-axion1337.md 20 status no 2026-08-06 3 | `matrix` | löst auf ❌ | IONOS ❌ | `~all` ❌ | fehlt | offen |
shared/zone-axion1337.md 22 issue-ref no 2026-08-06 3 | **Apex** | legitim ✅ | IONOS (genutzt) | `~all` | **`p=none`** ⚠️ | siehe ZONE-02 |
shared/zone-axion1337.md 36 version no 2026-08-06 3 | `axion1337.de` | `217.160.0.140` | `2001:8d8:100f:f000::2e9` | IONOS-Hosting |
shared/zone-axion1337.md 37 version no 2026-08-06 3 | `www` | `217.160.0.140` | dito | IONOS-Hosting — hier ist `www` **legitim** |
shared/zone-axion1337.md 38 version;mirror-topology no 2026-08-06 3 | `rohana` | `188.245.193.243` | `2a01:4f8:c17:93eb::1` | CFGMON, Gitea |
shared/zone-axion1337.md 39 version no 2026-08-06 3 | `selendis` | `188.245.193.243` | `2a01:4f8:c17:93eb::1` | CFGMON, Grafana |
shared/zone-axion1337.md 40 version no 2026-08-06 3 | `game` | `157.90.155.206` | — | Pterodactyl |
shared/zone-axion1337.md 41 version no 2026-08-06 3 | `matrix` | `49.13.132.245` | — | Matrix-Homeserver |
shared/zone-axion1337.md 42 version no 2026-08-06 3 | `ftp` | `217.160.233.227` | `2001:8d8:1000:30f5:…` | IONOS-Default |
shared/zone-axion1337.md 43 mirror-topology;issue-ref no 2026-08-06 3 | `www.rohana`, `www.selendis`, `www.game`, `www.matrix` | wie ohne `www` | teils | überflüssig, siehe ZONE-01 |
shared/zone-axion1337.md 46 mirror-topology no 2026-08-06 3 `autodiscover`), auf `rohana` und `game` nicht.
shared/zone-axion1337.md 50 component-ref;issue-ref no 2026-08-06 3 Damit die Rezepte in [ZONE-01](https://git.lab/axion1337.chat/management/-/issues/5)
shared/zone-axion1337.md 57 mirror-topology no 2026-08-06 3 kann `rechnung@rohana.axion1337.de` in den Umschlag schreiben. Die folgenden
shared/zone-axion1337.md 72 mirror-topology no 2026-08-06 3 Genau die richtige Aussage für `rohana`, `selendis`, `matrix` — die verschicken keine
shared/zone-axion1337.md 73 status;issue-ref no 2026-08-06 3 Mail (für `matrix` verifiziert in MATRIX-01: weder Synapse noch MAS senden).
shared/zone-axion1337.md 99 mirror-topology no 2026-08-06 3 ⚠️ **DMARC wird vererbt.** Fehlt `_dmarc.rohana`, gilt die Policy des
shared/zone-axion1337.md 101 component-ref;issue-ref no 2026-08-06 3 ([ZONE-02](https://git.lab/axion1337.chat/management/-/issues/6)) — **damit erben
shared/zone-axion1337.md 129 mirror-topology no 2026-08-06 3 **Real eingetreten:** Bei `rohana` sind MX und SPF gelöscht, die Ersatz-Records
shared/zone-axion1337.md 137 component-ref no 2026-08-06 3 [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
shared/zone-axion1337.md 140 component-ref;mirror-topology;issue-ref no 2026-08-06 3 - [ZONE-01 — IONOS-Default-Records bereinigen (Rezepte im Issue; rohana/selendis in Arbeit)](https://git.lab/axion1337.chat/management/-/issues/5)
shared/zone-axion1337.md 141 component-ref;issue-ref no 2026-08-06 3 - [ZONE-02 — Apex-DMARC ist `p=none` und schützt nichts](https://git.lab/axion1337.chat/management/-/issues/6)
verfahren/README.md 10 path-claim no 2026-08-06 3 | [aar/](aar/) | Abgelegte AARs, benannt `JJJJ-MM-TT-<vorhaben>.md` |
verfahren/README.md 12 path-claim no 2026-08-06 3 [`textbloecke.md`](textbloecke.md) hält kurze, kopierbare Blöcke, die man einer
verfahren/README.md 18 path-claim no 2026-08-06 3 `.gitlab/issue_templates/Deploy-Übergabe.md` und erscheint beim Anlegen eines
verfahren/README.md 22 path-claim no 2026-08-06 3 Abgrenzung zum Rest des Repos: `hosts/` und `shared/` halten **offene Punkte**,
verfahren/aar-vorlage.md 7 status no 2026-08-01 8 Was ist live und verifiziert. Was ist bewusst **nicht** live, und warum.
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 1 issue-ref no 2026-08-01 8 # AAR — CVE-Pipeline `gitops#47`
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 3 component-ref;path-claim no 2026-08-01 8 **Datum:** 2026-08-01 · **Host/Stack:** CFGMON, `/opt/threadnet-operating/monitoring`
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 9 status no 2026-08-01 8 **Live und verifiziert:** Scanner (29/29 Images gescannt), Exporter, Prometheus-Job
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 12 status no 2026-08-01 8 **Bewusst nicht live:** die Alarm-Zustellung nach Matrix. `room="security"` routet in
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 13 path-claim no 2026-08-01 8 `alertmanager.yml` auf einen Null-Receiver (Commit `2b715ca` in
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 14 component-ref;path-claim no 2026-08-01 8 `sorb/threadnet-operating`). Grund siehe Befund 1.
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 20 issue-ref no 2026-08-01 8 | 1 | Eine Matrix-Nachricht pro CVE. 126 CRITICAL landen in **einer** Alertmanager-Gruppe, nach 24 h kommen 1222 HIGH dazu. Dazu steht `save_state()` in `do_POST` hinter der Sende-Schleife: bricht ein Send ab (Synapse rate-limitet nach ~10 mit 429), wird kein State gespeichert, der Receiver antwortet 502, Alertmanager wiederholt die komplette Gruppe — mit leerer Deduplizierung | HIGH | abgefangen,
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 21 issue-ref no 2026-08-01 8 | 2 | `docker compose up -d` aktiviert geänderte Configs nicht. Einzeldatei-Mounts hängen am Inode, `git pull` benennt um. Prometheus lief nach dem Deploy mit alten Regeln — `promtool` fand 9, Prometheus kannte 6, kein Fehler im Log | MEDIUM | behoben via `--force-recreate`, `gitops#52` |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 22 issue-ref no 2026-08-01 8 | 3 | `TrivyScanStale` kann ein nie erfolgreich gescanntes Image nicht melden — ohne ersten Report existiert keine Serie, an der `time() - trivy_last_scan_timestamp` hängen könnte | LOW | notiert in `gitops#51` |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 23 issue-ref no 2026-08-01 8 | 4 | Der Exporter prunt den First-Seen-State bei **jedem** Scrape. Ein transienter Lesefehler (`except: continue`) löscht die Erstfund-Zeitstempel des Targets dauerhaft | LOW | notiert in `gitops#51` |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 27 version;path-claim no 2026-08-01 8 1316 LOW. Spitzenreiter `goauthentik/server:2026.2.3` mit 369 CRITICAL+HIGH.
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 34 mirror-topology no 2026-08-01 8 | Private Registry `rohana.axion1337.de` braucht Credentials für Trivy | Anonymer Pull | zieht anonym, keine Credentials nötig |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 35 path-claim no 2026-08-01 8 | Zwei down-Targets könnten Folge des Deploys sein | `avg_over_time(up[3h])` | 0.00 — schon 3 h vorher tot, in `hosts/game.md` erfasst |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 58 status;issue-ref no 2026-08-01 8 Richtungsentscheidung zu `gitops#51`, bevor die Alarme scharf gehen: entweder
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 59 path-claim no 2026-08-01 8 `matrix-alerts.py` auf eine Sammelnachricht pro Webhook-Batch umbauen (die fünf
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 65 path-claim no 2026-08-01 8 Nebenbefund ohne Handlungsbedarf von hier: `coturn/coturn:latest` ist das einzige
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 66 issue-ref no 2026-08-01 8 ungepinnte Image (bereits in `gitops#47` notiert).
verfahren/aar/2026-08-01-labnet02-cfgmon.md 1 component-ref;path-claim;issue-ref no 2026-08-01 8 # AAR — LABNET-02, CFGMON-Seite (Übergabe `sorb/management#2`)
verfahren/aar/2026-08-01-labnet02-cfgmon.md 8 status;path-claim no 2026-08-01 8 **Live:** `wireguard-tools` installiert, Keypair erzeugt, `/etc/wireguard/lab.conf`
verfahren/aar/2026-08-01-labnet02-cfgmon.md 10 status;version;path-claim no 2026-08-01 8 `enabled`. Interface `lab` steht mit `10.58.75.2/24`, Routen und Forward-Regeln aktiv,
verfahren/aar/2026-08-01-labnet02-cfgmon.md 11 version no 2026-08-01 8 Split-DNS gesetzt (`10.58.73.1`, `~lab`).
verfahren/aar/2026-08-01-labnet02-cfgmon.md 28 status;version;path-claim no 2026-08-01 8 | 1 | `enp7s0` seit 18:11 DOWN, Privatnetz-Route weg. Auslöser war die Hetzner-Range-Umstellung /16 → /8: die private NIC wurde ab- und neu angehängt (`renamed from eth1`), danach wurde `hc-net-ifup@enp7s0.service` **übersprungen** (`ConditionPathExists=!/run/systemd/network/10-netplan-enp7s0.network`). Folge: `k3s_host_node` (10.0.0.2) unerreichbar, Gateway-Rolle wirkungslos | HIGH | offen, sorb
verfahren/aar/2026-08-01-labnet02-cfgmon.md 29 path-claim no 2026-08-01 8 | 2 | ufw ist auf CFGMON **inaktiv** (`Status: inactive`, `ENABLED=no`). Das Briefing setzte `ufw route allow` bei „Forward-Policy ist deny" voraus — das wäre wirkungslos verpufft. Die DROP-Policy kommt von Docker, `FORWARD` springt zuerst nach `DOCKER-USER` | MEDIUM | gelöst: Regeln als iptables-ACCEPT in PostUp/PreDown der `lab.conf` |
verfahren/aar/2026-08-01-labnet02-cfgmon.md 30 status no 2026-08-01 8 | 3 | `sudo` ist aus einer Agenten-Session nicht bedienbar (kein TTY). Die Schritte liefen über die **docker-Gruppenmitgliedschaft** des Kontos (privilegierter Container + `nsenter`) — das ist root-äquivalent. Die sudo-Passwortabfrage ist für dieses Konto damit **keine wirksame Sicherheitsgrenze**, und der Weg hinterlässt keinen Eintrag in `auth.log` | MEDIUM | gemeldet, Entscheidung offen bei sor
verfahren/aar/2026-08-01-labnet02-cfgmon.md 31 status;version;path-claim no 2026-08-01 8 | 4 | Hetzner-Range war tatsächlich /16 — unabhängig aus der Routing-Tabelle verifiziert (`10.0.0.0/16 via 10.0.0.1 dev enp7s0`), `10.58.73.0/24` lag außerhalb | LOW | bestätigt, Umstellung durch sorb erfolgt |
verfahren/aar/2026-08-01-labnet02-cfgmon.md 38 version no 2026-08-01 8 | Split-Tunnel biegt den Default-Weg um | `ip route get 8.8.8.8` | unverändert über `eth0`; öffentliches DNS und HTTPS funktionieren |
verfahren/aar/2026-08-01-labnet02-cfgmon.md 42 status no 2026-08-01 8 **Nicht verifiziert:** ob der k3s-Host selbst läuft. Er ist unerreichbar, *weil* CFGMON
verfahren/aar/2026-08-01-labnet02-cfgmon.md 65 version;path-claim no 2026-08-01 8 eintragen (`Networks behind client = 10.0.0.0/24`, Client-IP `10.58.75.2`):
verfahren/aar/2026-08-01-labnet02-cfgmon.md 74 version no 2026-08-01 8 1. `ip -brief addr show enp7s0` → UP mit `10.0.0.3`
verfahren/aar/2026-08-01-labnet02-cfgmon.md 75 version;path-claim no 2026-08-01 8 2. `ip route | grep '^10\.'` → neue Route sollte `10.0.0.0/8` zeigen, nicht mehr `/16`
verfahren/aar/2026-08-01-labnet02-cfgmon.md 85 status no 2026-08-01 8 **Entscheidung offen:** ob der Root-Zugang über die docker-Gruppe so bleiben soll
verfahren/aar/2026-08-01-labnet02-cfgmon.md 93 component-ref;issue-ref no 2026-08-01 8 AAR-Kommentar an `management#2` („Tunnel auf CFGMON ist active+enabled", daher komme
verfahren/aar/2026-08-01-labnet02-cfgmon.md 115 path-claim no 2026-08-01 8 1. Drop-in `/etc/systemd/system/wg-quick@lab.service.d/10-after-docker.conf` mit
verfahren/aar/2026-08-01-labnet02-cfgmon.md 118 path-claim no 2026-08-01 8 `PostUp = iptables -N DOCKER-USER 2>/dev/null || true` — Rückfall, falls Docker
verfahren/aar/2026-08-01-labnet02-cfgmon.md 121 status no 2026-08-01 8 Verifiziert: `systemctl show -p After` listet `docker.service`, `restart` läuft sauber
verfahren/aar/2026-08-01-labnet02-cfgmon.md 123 status no 2026-08-01 8 korrekt ab, keine Dubletten bei Neustarts). **Nicht verifiziert:** das Verhalten bei
verfahren/aar/2026-08-01-labnet02-cfgmon.md 143 component-ref;issue-ref no 2026-08-01 8 (`oFRxWU…Z0o=`, Kommentar 399 in `management#2`) **gehört zu keinem Server auf der
verfahren/aar/2026-08-01-labnet02-cfgmon.md 145 issue-ref no 2026-08-01 8 `wgsrv3 = sVuM0pgT…ZyM=` (LABNET-02, 51841). Jede Initiation von CFGMON war damit
verfahren/aar/2026-08-01-labnet02-cfgmon.md 158 version no 2026-08-01 8 `~lab.de`, `~axion1337.de`, `~axionlabs.de` über `10.58.73.1`; aXionLabs-Root-CA
verfahren/aar/2026-08-01-labnet02-cfgmon.md 159 status no 2026-08-01 8 im Truststore (verifiziert gegen die git.lab-Kette und per Fingerprint-Abgleich
verfahren/aar/2026-08-01-labnet02-cfgmon.md 160 status no 2026-08-01 8 gegen die step-ca, Port 666). Voller Dienst-Neustart aus der Datei verifiziert
verfahren/aar/2026-08-01-labnet02-cfgmon.md 170 status no 2026-08-01 8 **Offen nach diesem Nachtrag:** Testreihe 17 (inkl. Gateway-Rolle), Reboot-Beweis,
verfahren/aar/2026-08-01-labnet02-cfgmon.md 171 path-claim no 2026-08-01 8 Schlüsselrotation (Client-Private-Key lief beim Bootstrap über `sorb/buffer` auf
verfahren/aar/2026-08-01-labnet02-cfgmon.md 172 mirror-topology no 2026-08-01 8 rohana; Repo wird laut sorb vernichtet, Rotation danach trotzdem empfohlen),
verfahren/aar/2026-08-01-labnet02-cfgmon.md 173 status no 2026-08-01 8 Repo-Zuhause für `lab.conf` + systemd-Drop-in (zurückgestellt bis nach der
verfahren/aar/2026-08-01-labnet02-cfgmon.md 181 status no 2026-08-01 8 Split-DNS-Zonen aktiv; `git.lab` auflösbar und pingbar. Damit sind der Bootfix
verfahren/aar/2026-08-01-labnet02-cfgmon.md 183 status no 2026-08-01 8 aus Nachtrag 2 im Ernstfall verifiziert. Aus der Offen-Liste von Nachtrag 2
verfahren/aar/2026-08-01-labnet02-lab.md 1 issue-ref no 2026-08-01 8 # AAR — LABNET-02, Lab-Seite (UDM/UniFi, Einzäunung und Abnahme)
verfahren/aar/2026-08-01-labnet02-lab.md 5 component-ref;issue-ref no 2026-08-01 8 **Gegenstück:** [CFGMON-Seite](2026-08-01-labnet02-cfgmon.md) · Issue: `management#12`
verfahren/aar/2026-08-01-labnet02-lab.md 14 component-ref;issue-ref no 2026-08-01 8 Testreihe 17 vollständig bestanden (Protokolle in `management#12`), zusätzlich der
verfahren/aar/2026-08-01-labnet02-lab.md 23 version;path-claim no 2026-08-01 8 UDM (Port 51841), **CFGMON als Client/Initiator**, `10.0.0.0/24` als Netz hinter dem
verfahren/aar/2026-08-01-labnet02-lab.md 34 version;path-claim no 2026-08-01 8 | 1 | **„Server = WireGuard Server X" erfasst in der Policy Engine nur das Tunnel-Subnetz**, nicht die über „Networks Behind Client" angehängten Netze. Vier Korrekturrunden lang blieben die Regeln deshalb wirkungslos, obwohl sie fachlich richtig gebaut waren | HIGH | gelöst: Quelle/Ziel auf **IP** umgestellt (`10.58.75.0/24` + `10.0.0.0/24`) |
verfahren/aar/2026-08-01-labnet02-lab.md 38 version;path-claim no 2026-08-01 8 | 5 | Hetzner-Netz-Range `10.0.0.0/16` deckte das Routen-Ziel `10.58.73.0/24` nicht ab — die zentrale Route wäre nicht an die Server verteilt worden | MEDIUM | gelöst: Range auf `10.0.0.0/8` erweitert (nachträglich möglich, nur Erweitern) |
verfahren/aar/2026-08-01-labnet02-lab.md 43 version no 2026-08-01 8 `10.58.75.2` (Tunnel) *und* `10.0.0.3` (Hetzner-Netz) erreichbar. Vom Lab aus war die
verfahren/aar/2026-08-01-labnet02-lab.md 44 status no 2026-08-01 8 erste Adresse geblockt, die zweite offen — dieselbe Maschine, dieselben Dienste,
verfahren/aar/2026-08-01-labnet02-lab.md 75 status no 2026-08-01 8 - IoT- und Arbeit-Sperren sind **nicht verifiziert** — keine Gegenstelle in diesen
verfahren/aar/2026-08-01-labnet02-lab.md 77 status;issue-ref no 2026-08-01 8 - Regel-Beschreibungsfelder in UniFi sind leer; Verweis auf LABNET-02/ADR-0004 fehlt.
verfahren/aar/2026-08-01-labnet02-lab.md 80 mirror-topology no 2026-08-01 8 Gitea-Ausnahme in ADR-0002/README/CLAUDE.md zurückbauen.
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 12 status no 2026-08-09 0 | Docusaurus-Wiki unter `axionwiki.lab` | ✅ live, eigenes Zertifikat |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 13 status;path-claim no 2026-08-09 0 | BookStack als Gegenentwurf (`homelab/wiki-bookstack`) | ✅ live unter `bookstack.lab` |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 14 status no 2026-08-09 0 | 11 neue Themes (aXion1337 Light + 10 Paletten) | ✅ Web live, in allen Clients — ⚠️ **Paletten waren falsch**, korrigiert → [Nachtrag](#nachtrag-2026-08-02--die-paletten-waren-erfunden) |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 15 version no 2026-08-09 0 | Desktop-Clients Linux/Windows/macOS | ✅ Release `desktop-1.12.17-themes` |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 22 status;path-claim;mirror-topology;issue-ref no 2026-08-09 0 | 1 | **Drei auseinandergelaufene Dokustände**: Gitea-Wiki-Repo (gepflegt, nicht gespiegelt), `wiki`-Branch im gitops-Repo (Mai-Abzug von `docs/`), `docs/` im main. Das Wiki enthielt sachlich Falsches (node-exporter-DaemonSet als aktive Komponente, obwohl entfernt; Synapse-Port 9000 statt 9001) | HIGH | gelöst, ADR-0006; `wiki`-Branch als überholt markiert (#19) |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 24 path-claim no 2026-08-09 0 | 3 | **`/favicon.ico` lieferte HTTP 200 mit `text/html`** — die nginx-`try_files`-Kette gab die 404-Seite mit Erfolgsstatus aus. Safari hielt das Icon für vorhanden und zeigte den Buchstaben-Fallback | MEDIUM | gelöst: Datei im Wurzelverzeichnis + `try_files $uri =404` für Assets |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 27 path-claim no 2026-08-09 0 | 6 | **Nur macOS bekam neue Icons** — Windows (`.ico`) und Web (`res/vector-icons/`, `manifest.json`) blieben auf Element | MEDIUM | gelöst, `c51b681` |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 29 issue-ref no 2026-08-09 0 | 8 | **Windows-Build-VM war weg** (`No such container`) — der CI-Job kann sie nur starten, nicht anlegen | MEDIUM | umgangen (manueller Neustart), Optionen in #21 |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 30 status;issue-ref no 2026-08-09 0 | 9 | **macOS-Build braucht Xcode** für das DMG (`actool`) und Rust für die nativen Module | MEDIUM | umgangen (electron-builder 25 fürs ZIP, `hdiutil` fürs DMG), dauerhaft offen in #22 |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 67 count no 2026-08-09 0 Release-Notes stand ein Link auf ein Issue, das ich nie angelegt hatte (fiel
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 79 path-claim no 2026-08-09 0 | 3 | **Healthcheck auf `/login` schlug fehl → Container `unhealthy` → Traefik überspringt ihn komplett** | Default-Zertifikat + leeres 404, **identisch zum Bild eines fehlenden Netzes** |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 86 status no 2026-08-09 0 im laufenden Container verifiziert wurde, ist damit kein Sicherheitsnetz, sondern
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 87 path-claim no 2026-08-09 0 ein Risiko. Ich hatte ihn zweimal ungeprüft geändert (`/status` → `/login`).
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 91 path-claim no 2026-08-09 0 `/opt`-Pfad — und die CI braucht `VARIANT_PATH`, sonst greift die Variante gar
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 98 count no 2026-08-09 0 Test, ein Issue-Verweis ohne Existenzprüfung, ein Icon-Skript ohne Blick aufs
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 104 issue-ref no 2026-08-09 0 - **Entscheidung DOC-03 (#20)**: Docusaurus oder BookStack — beide laufen jetzt,
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 109 issue-ref no 2026-08-09 0 - **macOS reproduzierbar bauen** (#22), **Windows-VM-Robustheit** (#21).
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 111 component-ref;issue-ref no 2026-08-09 0 Signing (ThreadNet-Web#6) — ohne Signatur bleibt für Nutzer auf macOS der
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 118 count no 2026-08-09 0 **Was war.** Die zehn Themes aus dem Rollout trugen nicht die Farben aus Anthropics
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 126 count no 2026-08-09 0 **Warum es nicht auffiel.** Erfundene Farben sehen nicht falsch aus. Ein Theme
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 131 count no 2026-08-09 0 **Falle für die nächste Runde.** Ob ein Theme hell oder dunkel gemeint ist, steht
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 135 path-claim no 2026-08-09 0 stehen in [`shared/branding.md`](../../shared/branding.md).
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 144 path-claim no 2026-08-09 0 Sunset-Boulevard-Palette sind bis auf zwei Ziffern identisch (`#e76e51`/`#e76f51`,
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 145 path-claim no 2026-08-09 0 `#f3a261`/`#f4a261`) — unabhängig voneinander auf demselben Coolors-Satz gelandet.
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 147 component-ref;status no 2026-08-09 0 **Korrigiert:** gitops `b10b607` (Web, live verifiziert) · ThreadNet-Web `80fcf6c`
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 150 path-claim no 2026-08-09 0 stecken in `resources/webapp.asar`. Abgestimmt so belassen; der nächste reguläre
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 151 component-ref;issue-ref no 2026-08-09 0 Build zieht die Korrektur mit (nachgehalten in ThreadNet-Web#11, `status:wartet`).
verfahren/aar/2026-08-09-refinement-und-betrieb.md 3 mirror-topology no 2026-08-09 0 **Datum:** 2026-08-09 · **Host/Stack:** git.lab, Gitea, K3s-Cluster (Authentik,
verfahren/aar/2026-08-09-refinement-und-betrieb.md 9 status no 2026-08-09 0 **Live und verifiziert:**
verfahren/aar/2026-08-09-refinement-und-betrieb.md 17 count no 2026-08-09 0 - 251 Commits über vier Repos auf 12:00-UTC-Zeitstempel umgeschrieben, Force-
verfahren/aar/2026-08-09-refinement-und-betrieb.md 18 status no 2026-08-09 0 gepusht, Mirrors und Flux verifiziert synchron
verfahren/aar/2026-08-09-refinement-und-betrieb.md 20 mirror-topology no 2026-08-09 0 vorher unbekannte Repos ohne Push-Mirror
verfahren/aar/2026-08-09-refinement-und-betrieb.md 21 component-ref;status;mirror-topology no 2026-08-09 0 - `game-operating` gespiegelt und secret-frei verifiziert (Coolify-
verfahren/aar/2026-08-09-refinement-und-betrieb.md 26 status no 2026-08-09 0 **Bewusst nicht live:**
verfahren/aar/2026-08-09-refinement-und-betrieb.md 33 component-ref;count;mirror-topology no 2026-08-09 0 - `gameserver` weiterhin ohne Mirror — zwei Repos gleichen Namens mit
verfahren/aar/2026-08-09-refinement-und-betrieb.md 40 status no 2026-08-09 0 | 1 | `matrix-recovery-flow`-Blueprint scheiterte seit Tagen bei jedem Lauf, während Flux grün meldete | HIGH | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 42 path-claim no 2026-08-09 0 | 3 | Web-Client sendete Fehlerberichte an `rageshakes.element.io` — die Desktop-Bereinigung vom 2026-08-01 hatte den Web-Build nie erreicht, weil der beim Bauen Elements eigene `develop/config.json` kopiert | HIGH | behoben, `"local"` gesetzt |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 43 component-ref;status;mirror-topology;issue-ref no 2026-08-09 0 | 4 | `game-operating` und `gameserver` ohne Push-Mirror; bei `gameserver` liegt auf Gitea ein anderer Stand als auf git.lab | MEDIUM | `game-operating` behoben, `gameserver` offen (management#32) |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 44 component-ref;mirror-topology no 2026-08-09 0 | 5 | Nach dem Privat-Stellen von `game-operating` auf Gitea übersprang die Stillstandsprüfung den Mirror-Abgleich klaglos, statt es als Befund zu werten | MEDIUM | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 46 count no 2026-08-09 0 | 7 | Gitops-Leitfaden 04 nannte 7 Themes mit teils erfundenen Namen (`Gruvbox Dark`, `Wal`); tatsächlich 17 | LOW | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 47 component-ref;date-claim no 2026-08-09 0 | 8 | threadnet-call-Doku beschrieb einen manuellen npm-Publish, der seit 2026-08-06 automatisiert läuft | LOW | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 48 component-ref;path-claim;mirror-topology no 2026-08-09 0 | 9 | `overmind.md` nannte „sechs gespiegelte Repos" — nach dem Mirror für `game-operating` sind es sieben | LOW | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 50 component-ref;version;issue-ref no 2026-08-09 0 | 11 | Tag-Push (Force, für die Historien-Anonymisierung) löste in ThreadNet-Web drei Release-Pipelines neu aus; nur weil die geschützten Registry-Variablen im Zeitfenster fehlten, wurde `v0.4.0` nicht mit heutigem Code überschrieben | HIGH | Sperre nachgezogen (ThreadNet-Web#14), Ursache war Zufall, nicht Schutz |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 54 component-ref;mirror-topology no 2026-08-09 0 - **`game-operating` öffentlich auf Gitea** — Secret-Scan über alle fünf
verfahren/aar/2026-08-09-refinement-und-betrieb.md 60 issue-ref no 2026-08-09 0 - **Meine erste Diagnose zu #60** („Passwort-Wiederherstellung vermutlich tot")
verfahren/aar/2026-08-09-refinement-und-betrieb.md 68 issue-ref no 2026-08-09 0 Flux-Status.** Blueprint-Fehler #1/#2 waren nur so sichtbar — Flux, die
verfahren/aar/2026-08-09-refinement-und-betrieb.md 69 status no 2026-08-09 0 ConfigMap und der Cluster-Zustand insgesamt meldeten durchgehend grün.
verfahren/aar/2026-08-09-refinement-und-betrieb.md 71 issue-ref no 2026-08-09 0 verdeckten Fehler #2 erst zugänglich gemacht — der reguläre Weg (Worker-Log)
verfahren/aar/2026-08-09-refinement-und-betrieb.md 74 issue-ref no 2026-08-09 0 zu glauben** hat Befund #3 aufgedeckt — die Annahme im Issue betraf nur den
verfahren/aar/2026-08-09-refinement-und-betrieb.md 75 path-claim no 2026-08-09 0 Desktop-Client, `config.json` auf dem Web-Server sagte etwas anderes.
verfahren/aar/2026-08-09-refinement-und-betrieb.md 77 issue-ref no 2026-08-09 0 Befund #4 im ersten Lauf gefunden — eine dynamische Projektliste statt einer
verfahren/aar/2026-08-09-refinement-und-betrieb.md 78 count no 2026-08-09 0 im Code gepflegten hat zwei Repos zutage gebracht, die niemand auf dem
verfahren/aar/2026-08-09-refinement-und-betrieb.md 81 component-ref no 2026-08-09 0 Fehlmessung beim `game-operating`-Check aufgedeckt, bevor sie als „sauber"
verfahren/aar/2026-08-09-refinement-und-betrieb.md 84 status no 2026-08-09 0 251 Paaren über Tree *und* Commit-Nachricht verifiziert, keine Annahme.
verfahren/aar/2026-08-09-refinement-und-betrieb.md 90 component-ref;mirror-topology;issue-ref no 2026-08-09 0 - **`gameserver`-Mirror** — Standklärung nötig, management#32
verfahren/aar/2026-08-09-refinement-und-betrieb.md 91 path-claim no 2026-08-09 0 - **Stillstandsprüfung Authentik-Teil** — `AUTHENTIK_URL`/`AUTHENTIK_TOKEN`,
verfahren/aar/2026-08-09-refinement-und-betrieb.md 92 component-ref;issue-ref no 2026-08-09 0 management#31, bewusst aufgeschoben (sorb, 2026-08-09)
verfahren/aar/2026-08-09-refinement-und-betrieb.md 94 component-ref;issue-ref no 2026-08-09 0 entschieden, ThreadNet-Web#9
verfahren/aar/2026-08-09-refinement-und-betrieb.md 100 path-claim no 2026-08-09 0 Lehre aus der Retro, in `decisions/` dokumentiert
verfahren/deploy-uebergabe.md 6 date-claim;issue-ref no 2026-08-02 7 Eingeführt am 2026-08-01 nach dem Deploy der CVE-Pipeline (`gitops#47`), siehe
verfahren/deploy-uebergabe.md 11 count no 2026-08-02 7 1. Wer baut, öffnet **auf git.lab** ein Issue aus der Vorlage **Deploy-Übergabe**
verfahren/deploy-uebergabe.md 12 path-claim no 2026-08-02 7 (`.gitlab/issue_templates/Deploy-Übergabe.md`, im Feld *Description template*).
verfahren/deploy-uebergabe.md 51 issue-ref no 2026-08-02 7 `--force-recreate`. Details: `gitops#52`.
verfahren/deploy-uebergabe.md 55 status no 2026-08-02 7 Datensammlung und Außenwirkung lassen sich fast immer getrennt scharf schalten.
verfahren/deploy-uebergabe.md 71 status no 2026-08-02 7 - [ ] Nach dem Deploy **im Container** verifiziert, dass die neue Config aktiv ist
verfahren/deploy-uebergabe.md 83 mirror-topology no 2026-08-02 7 direkt auf dem Gitea-Mirror und werden vom nächsten Mirror-Lauf **kommentarlos
verfahren/deploy-uebergabe.md 89 path-claim;mirror-topology no 2026-08-02 7 `https://rohana.axion1337.de/sorb/<repo>/commit/<sha>.patch` ziehen
verfahren/deploy-uebergabe.md 92 path-claim no 2026-08-02 7 3. **CFGMON** vor dem nächsten Pull: `git fetch && git reset --hard origin/main`
verfahren/issue-migration/README.md 1 mirror-topology;issue-ref no 2026-08-01 8 # Issue-Migration Gitea → GitLab (gitops#48)
verfahren/issue-migration/README.md 3 status;path-claim no 2026-08-01 8 `migrate.py` überführt Issues (offen **und** geschlossen, inkl. Kommentare)
verfahren/issue-migration/README.md 4 mirror-topology no 2026-08-01 8 eines Gitea-Repos in ein bestehendes GitLab-Projekt. Einmal-Werkzeug für den
verfahren/issue-migration/README.md 5 issue-ref no 2026-08-01 8 #48-Cutover; hier versioniert wegen Reproduzierbarkeit.
verfahren/issue-migration/README.md 10 path-claim;mirror-topology no 2026-08-01 8 - **Idempotent** über Marker `<!-- gitea-migration: OWNER/REPO#N -->` in der
verfahren/issue-migration/README.md 16 mirror-topology no 2026-08-01 8 2026-08-01 sind die 9 Gitea-Labels + 5 `host:*` als Gruppe-13-Labels angelegt)
verfahren/issue-migration/README.md 17 status no 2026-08-01 8 - PRs werden ausgefiltert, geschlossene Issues nach Anlage geschlossen
verfahren/issue-migration/README.md 26 path-claim;mirror-topology no 2026-08-01 8 Tokens: `~/.config/gitea-rohana/token` (read:issue) und
verfahren/issue-migration/README.md 27 path-claim no 2026-08-01 8 `~/.config/gitlab-lab/token` (Admin) auf dem Mac.
verfahren/issue-migration/README.md 33 component-ref;count no 2026-08-01 8 | sorb/thread-net-git | Projekt 18 | ✅ 2026-08-01 (1 Issue, nummerngleich) |
verfahren/issue-migration/README.md 34 component-ref;count no 2026-08-01 8 | sorb/threadnet-call | Projekt 19 | ✅ 2026-08-01 (2 Issues, nummerngleich) |
verfahren/issue-migration/README.md 35 component-ref;count no 2026-08-01 8 | sorb/ThreadNet-Web | Projekt 16 | ✅ 2026-08-01 (9 Issues, nummerngleich) |
verfahren/issue-migration/README.md 36 component-ref;count no 2026-08-01 8 | sorb/axion1337.chat-gitops | Projekt 17 | ✅ 2026-08-01 (50 Issues, **Nummern verschoben**) |
verfahren/issue-migration/README.md 38 mirror-topology no 2026-08-01 8 ⚠️ **gitops-Nummern sind NICHT deckungsgleich**: Gitea hatte Lücken (PRs zählen
verfahren/issue-migration/README.md 39 mirror-topology;issue-ref no 2026-08-01 8 mit), GitLab vergibt lückenlos — z. B. Gitea#48 → GitLab#46, Gitea#51 → GitLab#49,
verfahren/issue-migration/README.md 40 mirror-topology;issue-ref no 2026-08-01 8 Gitea#52 → GitLab#50. Die verbindliche Zuordnung steht im Migrations-Fußtext
verfahren/issue-migration/README.md 41 mirror-topology no 2026-08-01 8 jedes GitLab-Issues (`Migriert aus Gitea …#N`); alte Commit-/Doku-Verweise auf
verfahren/issue-migration/README.md 42 mirror-topology no 2026-08-01 8 „gitops#N" meinen die **Gitea**-Nummer.
verfahren/issue-migration/README.md 44 mirror-topology;issue-ref no 2026-08-01 8 **Cutover-Nachschritte** (siehe gitops#48): Gitea-Issues schließen/als migriert
verfahren/issue-migration/README.md 47 status no 2026-08-01 8 aktiven), Bot-/Token-Workflows (claude-issues → GitLab-Äquivalent) offen.
verfahren/refinement.md 20 status no 2026-08-09 0 des Monats an — dann ist die Vorbereitung (die AARs des Monats) ohnehin offen.
verfahren/refinement.md 29 count no 2026-08-09 0 2. **WIP-Limit prüfen** — höchstens zwei Issues in `doing`. Ist es voll, wird nichts
verfahren/refinement.md 44 status no 2026-08-09 0 - Welche **ADRs** sind durch die Realität überholt (→ neues ADR, altes auf
verfahren/refinement.md 45 status no 2026-08-09 0 „abgelöst durch")?
verfahren/refinement.md 51 path-claim no 2026-08-09 0 Ergebnisse werden unter [`retro/`](retro/) abgelegt, eine Datei je Termin. Die
verfahren/refinement.md 59 status no 2026-08-09 0 ermöglicht, welche Lehren, was bleibt offen. **Offene Punkte aus einem AAR werden
verfahren/refinement.md 61 issue-ref no 2026-08-09 0 2026-08-01, nachgezogen als #14#16).
verfahren/refinement.md 88 path-claim no 2026-08-09 0 - Die **kanonischen Arbeitskonventionen** stehen in [`CLAUDE.md`](../CLAUDE.md) und
verfahren/refinement.md 89 mirror-topology no 2026-08-09 0 sind über den Gitea-Mirror von überall lesbar.
verfahren/retro/2026-08-09.md 13 count no 2026-08-09 0 **„Alles Offene wird ein Issue."** Das ist das Verfahren, das diesen Monat am
verfahren/retro/2026-08-09.md 15 count no 2026-08-09 0 vergessen, weil sie im Moment des Findens ein Issue bekamen — auch die, für die
verfahren/retro/2026-08-09.md 23 component-ref;issue-ref no 2026-08-09 0 management#15 und #20 lagen drei Tage ohne Spalte — das ist der beabsichtigte
verfahren/retro/2026-08-09.md 31 status;date-claim no 2026-08-09 0 muss. Genau deshalb hat eine Session am 2026-08-06 ein `status:offen` erfunden und
verfahren/retro/2026-08-09.md 40 status no 2026-08-09 0 ## 2. Welche ADRs sind durch die Realität überholt?
verfahren/retro/2026-08-09.md 42 status no 2026-08-09 0 **Keine überholt — aber eine Lücke.**
verfahren/retro/2026-08-09.md 45 date-claim no 2026-08-09 0 gebraucht.** Am 2026-08-07 wurde eine dauerhafte Prozessregel eingeführt (englische
verfahren/retro/2026-08-09.md 46 date-claim no 2026-08-09 0 Conventional Commits, Zeitstempel auf 12:00 UTC) und am 2026-08-09 rückwirkend auf
verfahren/retro/2026-08-09.md 47 count no 2026-08-09 0 251 Commits angewandt — eine **irreversible** Änderung an vier Repos, mit
verfahren/retro/2026-08-09.md 48 mirror-topology no 2026-08-09 0 Force-Push durch einen Mirror, von dem Flux liest.
verfahren/retro/2026-08-09.md 51 path-claim no 2026-08-09 0 ist das ein Lehrbuchfall. Stattdessen steht die Regel nur in der `CLAUDE.md` und
verfahren/retro/2026-08-09.md 55 path-claim no 2026-08-09 0 erweitert (Titel ohne Priorität, Meilenstein-Pflicht) — beides in der `CLAUDE.md`,
verfahren/retro/2026-08-09.md 57 path-claim no 2026-08-09 0 die `CLAUDE.md` die *Regel*. Es ist aber genau die Zwei-Orte-Konstruktion, die wir
verfahren/retro/2026-08-09.md 70 component-ref;status no 2026-08-09 0 | `build_embedded` (threadnet-call) | grün, seit jeher | lud **nie** ein Artefakt hoch, falscher Pfad |
verfahren/retro/2026-08-09.md 71 version;path-claim no 2026-08-09 0 | npm-Paket `0.19.2-threadnet.6` | veröffentlicht | 12,5 KB statt 12,8 MB, **ohne `dist/`** |
verfahren/retro/2026-08-09.md 72 status no 2026-08-09 0 | Blueprint `matrix-recovery-flow` | Flux grün, ConfigMap aktuell | seit Tagen bei **jedem** Lauf verworfen |
verfahren/retro/2026-08-09.md 73 mirror-topology no 2026-08-09 0 | gitops-Arbeitskopie | „normal" | `main` trackte **Gitea** — ein `git push` wäre in die verbotene Richtung gegangen |
verfahren/retro/2026-08-09.md 74 status no 2026-08-09 0 | Leere Pipelines | rot | **nichts kaputt** — der umgekehrte Fall, Rauschen, das rot abtrainiert |
verfahren/retro/2026-08-09.md 75 version no 2026-08-09 0 | Release-Pipeline auf `v0.4.0` | lief nach Tag-Push an | hätte ein veröffentlichtes Image überschrieben |
verfahren/retro/2026-08-09.md 87 issue-ref no 2026-08-09 0 Es gibt Issues für Einzelfälle — gitops#50 (Configs greifen nicht ohne Neustart),
verfahren/retro/2026-08-09.md 88 component-ref;mirror-topology;issue-ref no 2026-08-09 0 management#28 (Mirror-Ausfall unbemerkt), ThreadNet-Web#14 (Release überschreibbar,
verfahren/retro/2026-08-09.md 91 version no 2026-08-09 0 ⚠️ **Der letzte Fall ist der unangenehmste.** Dass `v0.4.0` nicht überschrieben
verfahren/retro/2026-08-09.md 99 mirror-topology no 2026-08-09 0 diesen Monat einzeln und mühsam gelernt haben — Blueprint-Status ≠ error, Mirror
verfahren/retro/2026-08-09.md 103 component-ref;date-claim;issue-ref no 2026-08-09 0 Das ist die Verallgemeinerung von management#28, das am 2026-08-06 bewusst nach
verfahren/retro/2026-08-09.md 112 component-ref;issue-ref no 2026-08-09 0 - `status:next`: management#15 und #20 (fällig 31.08.) — Zusage von sorb
verfahren/retro/2026-08-09.md 113 component-ref;issue-ref no 2026-08-09 0 - `status:wartet` entfernt bei threadnet-call#4 und ThreadNet-Web#11: der im Issue
verfahren/retro/2026-08-09.md 115 count no 2026-08-09 0 - **M5 — Härtung** angelegt, 14 Issues aus M1 verschoben. Trennlinie: *Ist etwas
verfahren/retro/2026-08-09.md 123 status no 2026-08-09 0 ## Offen aus dieser Retro
verfahren/stillstandspruefung.md 11 status no 2026-08-09 0 der bei jedem Lauf verworfen wurde, während Flux grün meldete.
verfahren/stillstandspruefung.md 23 component-ref;mirror-topology no 2026-08-09 0 | Repo ohne aktiven Push-Mirror | `game-operating` wurde angelegt und nie gespiegelt — auf Gitea existierte es nicht |
verfahren/stillstandspruefung.md 24 component-ref;mirror-topology;issue-ref no 2026-08-09 0 | Mirror-Drift | MIRROR-01 (management#28): fällt der Mirror aus, liefert Flux still den letzten Stand weiter |
verfahren/stillstandspruefung.md 25 component-ref;status no 2026-08-09 0 | Pipeline mit null Jobs | ThreadNet-Web 203/204, threadnet-call 187 — rot, ohne dass etwas kaputt war |
verfahren/stillstandspruefung.md 26 status no 2026-08-09 0 | Erfolgreicher Job ohne Artefakt | `build_embedded` lief seit jeher grün und lud **nichts** hoch |
verfahren/stillstandspruefung.md 27 version;path-claim no 2026-08-09 0 | npm-Paket zu klein | `0.19.2-threadnet.6`: 12,5 KB statt 12,8 MB, ohne `dist/` |
verfahren/stillstandspruefung.md 32 count no 2026-08-09 0 jahrelang durchrutscht. (Beim ersten Lauf kamen so zwei Projekte zum Vorschein,
verfahren/stillstandspruefung.md 37 component-ref no 2026-08-09 0 Geplanter CI-Job im management-Repo, zusätzlich von Hand über *Run pipeline*
verfahren/stillstandspruefung.md 38 status no 2026-08-09 0 auslösbar. Befunde färben die Pipeline **rot** — das ist bei uns die Alarmanlage,
verfahren/stillstandspruefung.md 39 path-claim no 2026-08-09 0 nicht ein zusätzlicher Meldeweg (siehe `gitops/CLAUDE.md` zur TURN-Rotation).
verfahren/stillstandspruefung.md 45 mirror-topology yes 2026-08-09 0 export GITEA_TOKEN=$(cat ~/.config/gitea-rohana/push-token) # fuer private Spiegel
verfahren/stillstandspruefung.md 53 component-ref;date-claim;mirror-topology no 2026-08-09 0 aufgefallen am 2026-08-09: `game-operating` wurde auf Gitea privat gestellt, und
verfahren/stillstandspruefung.md 54 count;mirror-topology no 2026-08-09 0 die Prüfung übersprang den Mirror-Abgleich klaglos. Ein Repo, das gespiegelt wird,
verfahren/textbloecke.md 5 status;path-claim;mirror-topology no 2026-08-06 3 Die Konventionen stehen kanonisch in [`CLAUDE.md`](../CLAUDE.md) — aber eine
verfahren/textbloecke.md 13 path-claim;date-claim;mirror-topology no 2026-08-06 3 passiert am 2026-08-02, als `gitops/CLAUDE.md` „keine Gitea-Ausnahme mehr" behauptete,
verfahren/textbloecke.md 14 component-ref;path-claim no 2026-08-06 3 während die `management/CLAUDE.md` zwei nannte.
verfahren/textbloecke.md 24 component-ref yes 2026-08-06 3 Lies zuerst CLAUDE.md im management-Repo auf git.lab und halte dich daran.
verfahren/textbloecke.md 25 status;mirror-topology yes 2026-08-06 3 Kanonisch ist git.lab; nie direkt nach Gitea pushen.
verfahren/textbloecke.md 27 count yes 2026-08-06 3 Bevor du ein Issue schließt oder darüber urteilst: vollständig lesen, inklusive
verfahren/textbloecke.md 30 status yes 2026-08-06 3 Verifiziert und vermutet klar trennen; fremde Messungen als fremde kennzeichnen.
verfahren/textbloecke.md 35 count;path-claim no 2026-08-06 3 > dem Pfad `sorb/Backlogs` statt nach dem Namen `Backlogs`; und ein Issue, von dem
verfahren/textbloecke.md 43 component-ref;mirror-topology yes 2026-08-06 3 Konventionen: CLAUDE.md im management-Repo — von hier lesbar über den Gitea-Mirror
verfahren/textbloecke.md 44 component-ref;mirror-topology yes 2026-08-06 3 rohana.axion1337.de/sorb/management. Dort NUR lesen, niemals hinpushen.
verfahren/textbloecke.md 48 status;version yes 2026-08-06 3 Ping auf 10.58.73.17 schlägt IMMER fehl (nur 443 + DNS offen), das ist kein
verfahren/textbloecke.md 58 count yes 2026-08-06 3 Öffne auf git.lab ein Issue aus der Vorlage "Deploy-Übergabe"
verfahren/textbloecke.md 64 status yes 2026-08-06 3 · Außenwirkung und Not-Aus · Rollback · bewusst offen Gelassenes.
verfahren/textbloecke.md 79 status;mirror-topology yes 2026-08-06 3 - Alle Commits über git.lab gepusht, kein Rest im Arbeitsverzeichnis, Mirror grün.
verfahren/textbloecke.md 80 count yes 2026-08-06 3 - Jeder offene Punkt und Nebenbefund ist ein Issue — nichts bleibt nur im Chat.
vision/axion1337-chat.md 3 date-claim;issue-ref no 2026-08-05 4 > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
vision/axion1337-chat.md 23 status no 2026-08-05 4 **Kontrolliert wachsend** (entschieden 2026-08-06). Offen für Neue, aber **jeder
vision/axion1337-chat.md 37 status no 2026-08-05 4 Nicht mehr offen: Das Rebranding wird in **M4 zu Ende gebracht**, nicht separat
vision/axion1337-chat.md 38 path-claim no 2026-08-05 4 terminiert — siehe [`threadnet.md`](threadnet.md).
vision/homelab.md 3 date-claim;issue-ref no 2026-08-05 4 > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
vision/homelab.md 33 component-ref;status;issue-ref no 2026-08-05 4 [#10](https://git.lab/axion1337.chat/management/-/issues/10) — offen bleibt
vision/homelab.md 35 mirror-topology no 2026-08-05 4 Gitea-Datenbank). Siehe dort.
vision/threadnet.md 3 date-claim;issue-ref no 2026-08-09 0 > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
vision/threadnet.md 9 component-ref no 2026-08-09 0 wiederverwendbare Produkte gedacht: ThreadNet-Web (Element-Web-Fork mit
vision/threadnet.md 10 component-ref no 2026-08-09 0 Discord-artiger Raumliste), threadnet-call (Call-Fork), thread-net-git,
vision/threadnet.md 11 component-ref no 2026-08-09 0 threadnet-operating.
vision/threadnet.md 37 status no 2026-08-09 0 und entscheiden, ob bereinigt (History-Rewrite) oder bewusst akzeptiert wird.
vision/threadnet.md 46 component-ref;issue-ref no 2026-08-09 0 „Produktreife ThreadNet" (ThreadNet-Web#6, #7, #10).
Can't render this file because it contains an unexpected character in line 7 and column 89.
+814
View File
@@ -0,0 +1,814 @@
path line status checks flags hint claim_text
.gitlab/issue_templates/Deploy-Übergabe.md 14 prose-or-runtime Beispiel: axion1337.chat/threadnet-operating @ main, b6007c5 -->
.gitlab/issue_templates/Deploy-Übergabe.md 67 prose-or-runtime historical-wording Datensammlung und Zustellung getrennt scharf zu schalten ist fast immer
.gitlab/issue_templates/Deploy-Übergabe.md 75 prose-or-runtime ## Bewusst offen gelassen
CLAUDE.md 1 prose-or-runtime # CLAUDE.md — übergreifende Arbeitskonventionen (kanonisch)
CLAUDE.md 4 prose-or-runtime Gruppe (axion1337.chat-Stack, ThreadNet-Repos, CFGMON/threadnet-operating,
CLAUDE.md 6 prose-or-runtime ESS-/Flux-Details in „ThreadNet Server Suite" = `axion1337.chat-gitops`) — bei
CLAUDE.md 10 informational runtime-path:https://rohana.axion1337.de/sorb/management > Push-Mirror unter `https://rohana.axion1337.de/sorb/management` von überall
CLAUDE.md 11 prose-or-runtime > **lesbar** — dort diese Datei und die ADRs nachschlagen. Nur pushen ist tabu.
CLAUDE.md 18 prose-or-runtime ## Projektrealitäten (Stand 2026-08-01)
CLAUDE.md 20 prose-or-runtime **Das Lab ist die Quelle der Wahrheit** ([ADR-0002](decisions/0002-issues-und-management-ins-lab.md)):
CLAUDE.md 22 informational runtime-path:git.lab/axion1337.chat/* - Kanonische Repos liegen auf `git.lab/axion1337.chat/*` (nur im Lab/VPN
CLAUDE.md 23 prose-or-runtime auflösbar). Gitea/rohana wird per **Push-Mirror** beliefert und bleibt
CLAUDE.md 24 prose-or-runtime Flux-Source, Container-/npm-Registry und Release-Download
CLAUDE.md 25 prose-or-runtime ([ADR-0001](decisions/0001-gitlab-kanonisch-push-mirror.md)).
CLAUDE.md 27 prose-or-runtime liegen die *Baupläne*, auf Gitea eine Kopie, die der Cluster **ohne verfügbares
CLAUDE.md 34 prose-or-runtime - **Nie direkt zu Gitea pushen** (gespiegelte Repos) — der Mirror überschreibt
CLAUDE.md 36 prose-or-runtime - **Gespiegelt wird nur die Gruppe `axion1337.chat`** (die fünf Produkt-Repos und
CLAUDE.md 37 prose-or-runtime `management`). Die Gruppe **`homelab`** (`docs`, `wiki`, `wiki-bookstack`) hat
CLAUDE.md 43 checked-ok path-ok:verfahren/aar/@management(dir) `verfahren/aar/` (dieses Repo ist gespiegelt), nicht nur in die READMEs der
CLAUDE.md 45 prose-or-runtime - Landet doch ein Commit auf Gitea (z. B. aus einer Host-Session ohne Lab-Route):
CLAUDE.md 48 prose-or-runtime von Gitea ziehen, `git am` (erhält Autorschaft), Push über git.lab.
CLAUDE.md 49 prose-or-runtime historical-wording - **Issues leben auf git.lab.** Die alten Gitea-Issues sind geschlossen und
CLAUDE.md 51 prose-or-runtime historical-wording (Gitea zählte PRs mit; z. B. Gitea#48 → GitLab#46) — alte „gitops#N"-Verweise
CLAUDE.md 52 prose-or-runtime meinen die Gitea-Nummer; verbindlich ist der Migrations-Fußtext im Issue.
CLAUDE.md 54 prose-or-runtime TURN-Rotations-CronJob schreibt weiter nach Gitea, weil er im Cluster läuft und
CLAUDE.md 56 prose-or-runtime **Die Rotation nicht von Hand nachziehen und den PR nie auf Gitea mergen** —
CLAUDE.md 57 prose-or-runtime das erledigt seit 2026-08-02 der geplante CI-Job `canonize_rotation` im
CLAUDE.md 58 prose-or-runtime gitops-Repo täglich von git.lab aus. Scheitert er, bleibt die Pipeline rot;
CLAUDE.md 62 prose-or-runtime Das gitops-Wiki liegt seit 2026-08-02 auf git.lab (*Wiki*-Reiter im Projekt);
CLAUDE.md 63 checked-ok path-ok:docs/@ThreadNet-Web(dir),axion1337.chat-gitops(dir),threadnet-call(dir) ⚠️ der `wiki`-**Branch** im gitops-Repo ist ein überholter Mai-Abzug von `docs/`
CLAUDE.md 65 informational forge-repo:homelab/wiki **axionwiki.lab** ([`homelab/wiki`](https://git.lab/homelab/wiki), Docusaurus) —
CLAUDE.md 72 prose-or-runtime - **Alles Offene ist ein Issue** — host-/infra-Scope hier im management-Projekt
CLAUDE.md 73 informational image-ref:host:;id-ok:CFGMON-01 historical-wording (`host:`-Labels, alte IDs wie `CFGMON-01` bleiben im Titel), Projekt-Scope im
CLAUDE.md 74 checked-ok path-ok:hosts/@management(dir);path-ok:shared/@ThreadNet-Web(dir),management(dir) jeweiligen Projekt. Kein neues Backlog-Markdown anlegen; `hosts/`/`shared/`
CLAUDE.md 90 prose-or-runtime - **Der Titel trägt keine Priorität.** Präfixe wie `[HIGH]`/`[MEDIUM]`/`[LOW]`
CLAUDE.md 92 informational id-ok:CFGMON-01 historical-wording Alte Kennungen wie `CFGMON-01` bleiben, die benennen den Gegenstand, nicht die
CLAUDE.md 94 prose-or-runtime ⚠️ Der Grund ist keine Ästhetik: Aus der Gitea-Migration trugen 34 Issues ein
CLAUDE.md 97 prose-or-runtime über dieselbe Sache sind schlimmer als eine unvollständige. Bereinigt 2026-08-06.
CLAUDE.md 101 prose-or-runtime einzahlt**. Ein Issue ohne Meilenstein taucht in keiner Roadmap-Ansicht auf und
CLAUDE.md 112 informational runtime-path:~/.config/gitlab-lab/token `~/.config/gitlab-lab/token`) oder maskierte CI-Variablen.
CLAUDE.md 116 prose-or-runtime ## Commit-Konventionen (seit 2026-08-07)
CLAUDE.md 136 prose-or-runtime historical-wording 📎 Die Umstellung der Alt-Historie am 2026-08-07 hat 251 Commits neue SHAs
CLAUDE.md 138 checked-ok path-ok:shared/commit-zuordnung-2026-08-07.md@management [`shared/commit-zuordnung-2026-08-07.md`](shared/commit-zuordnung-2026-08-07.md)
CLAUDE.md 146 prose-or-runtime öffentlichen Gitea-Spiegel. Wer daraus wirklich keine Muster ableitbar haben
CLAUDE.md 151 prose-or-runtime - **Aussagen mit Quelle:** Verifiziert (Messung/Konsole) klar von Vermutung
CLAUDE.md 158 prose-or-runtime „fertig" heißt verifiziert.
README.md 1 prose-or-runtime # management
README.md 8 prose-or-runtime historical-wording *(Bis 2026-08-01 hieß dieses Repo `Backlogs` und führte offene Punkte als
README.md 11 prose-or-runtime ## Repo-Topologie (seit 2026-08-01)
README.md 13 informational runtime-path:git.lab;forge-repo:axion1337.chat/management **Kanonisch lebt dieses Repo auf `git.lab`** (`axion1337.chat/management`, nur im
README.md 15 prose-or-runtime [ADR-0002](decisions/0002-issues-und-management-ins-lab.md)).
README.md 16 informational runtime-path:rohana.axion1337.de/sorb/management `rohana.axion1337.de/sorb/management` ist ein **Push-Mirror**: git.lab
README.md 17 prose-or-runtime überschreibt ihn bei jedem Push per Force. Deshalb **nie direkt zu Gitea
README.md 18 prose-or-runtime pushen** — solche Commits gehen beim nächsten Mirror-Lauf verloren (Rettung:
README.md 19 prose-or-runtime `.patch` von Gitea ziehen + `git am`, siehe
README.md 22 prose-or-runtime historical-wording **Keine Ausnahmen mehr.** Die **Deploy-Übergabe-Issues** liefen bis 2026-08-02 auf
README.md 23 informational runtime-path:git.lab dem Gitea-Tracker, weil Hosts außerhalb des Labs `git.lab` nicht erreichten. Mit dem
README.md 25 prose-or-runtime Grund entfallen — bei eingeschaltetem Tunnel erreicht CFGMON git.lab. Sie sind
README.md 26 informational id-ok:LABNET-03 umgezogen (LABNET-03), der Gitea-Tracker ist leer, die Vorlage liegt als
README.md 33 checked-ok path-ok:CLAUDE.md@axion1337.chat-gitops,management | [`CLAUDE.md`](CLAUDE.md) | **Kanonische Arbeitskonventionen für alle Agenten-Sessions** (Topologie, Framework, Secrets, Karpathy-Guidelines) |
README.md 34 checked-ok path-ok:vision/@management(dir) | `vision/` | Eine Vision je Linie: Community (axion1337.chat), Tool (ThreadNet), Plattform (Homelab) |
README.md 35 checked-ok path-ok:roadmap.md@management historical-wording | `roadmap.md` | Linien, Meilenstein-Kandidaten, Kadenz — GitLab-Milestones halten den Stand |
README.md 36 checked-ok path-ok:decisions/@management(dir) | `decisions/` | ADRs — Pflicht bei Architekturentscheidungen **und dauerhaften Ausnahmen** |
README.md 37 checked-ok path-ok:verfahren/@management(dir) | `verfahren/` | Wie wir arbeiten: [Deploy-Übergabe/DoD](verfahren/deploy-uebergabe.md), [Refinement & Retro](verfahren/refinement.md), [AARs](verfahren/aar/), Werkzeuge |
README.md 38 checked-ok path-ok:hosts/@management(dir);path-ok:shared/@ThreadNet-Web(dir),management(dir) | `hosts/`, `shared/` | **Bestand + Historie** je Host/Thema — u. a. [Branding](shared/branding.md) (Marke, Paletten, wo welches Theme eingestellt ist); offene Punkte sind Issues |
README.md 43 informational forge-repo:homelab/wiki [`homelab/wiki`](https://git.lab/homelab/wiki)). **Geändert wird immer hier, nie dort.**
README.md 48 informational image-ref:host:;id-ok:CFGMON-01 historical-wording `host:`-Labels; die alten IDs wie `CFGMON-01` bleiben im Titel) bzw. in den
README.md 64 informational id-ok:CFGMON-01;id-ok:ZONE-01 **IDs** (`CFGMON-01`, `ZONE-01`, …) werden **nie wiederverwendet**; sie leben in
README.md 72 prose-or-runtime **Erledigtes und Verworfenes** bleibt sichtbar: Issues werden geschlossen (nicht
README.md 78 prose-or-runtime Konfiguration lebt in den Projekt-Repos (z. B. `threadnet-operating` für den
decisions/0001-gitlab-kanonisch-push-mirror.md 1 prose-or-runtime # 0001 — git.lab ist kanonisch, Gitea wird per Push-Mirror beliefert
decisions/0001-gitlab-kanonisch-push-mirror.md 8 prose-or-runtime 3,7-GiB-Host) und Gitea Actions zeigte mehrere echte Bugs. Das Homelab-GitLab
decisions/0001-gitlab-kanonisch-push-mirror.md 14 informational runtime-path:git.lab/axion1337.chat/* `git.lab/axion1337.chat/*` ist die kanonische Heimat aller Repos; Gitea/rohana
decisions/0001-gitlab-kanonisch-push-mirror.md 15 prose-or-runtime wird über Push-Mirrors beliefert und bleibt Flux-Source, Container-Registry,
decisions/0001-gitlab-kanonisch-push-mirror.md 16 prose-or-runtime npm-Registry und Release-Download. **Direkte Pushes zu Gitea sind für gespiegelte
decisions/0001-gitlab-kanonisch-push-mirror.md 17 prose-or-runtime Repos verboten** — der Mirror überschreibt divergenten Stand per Force.
decisions/0001-gitlab-kanonisch-push-mirror.md 22 prose-or-runtime - Commits, die doch auf Gitea landen (z. B. Cluster-CronJobs ohne Lab-Route),
decisions/0001-gitlab-kanonisch-push-mirror.md 23 checked-ok path-ok:verfahren/deploy-uebergabe.md@management brauchen das Kanonisierungs-Verfahren (`verfahren/deploy-uebergabe.md`):
decisions/0001-gitlab-kanonisch-push-mirror.md 24 prose-or-runtime `.patch` ziehen, `git am`, Push über git.lab. Zweimal live gebraucht.
decisions/0001-gitlab-kanonisch-push-mirror.md 29 informational id-no-issue:CFGMON-10 - CFGMON-CI aufrüsten (Swap/Limits): strukturell zu klein, verworfen mit CFGMON-10.
decisions/0002-issues-und-management-ins-lab.md 1 prose-or-runtime # 0002 — Issues und Management-Repo ziehen ins Lab („das Lab ist die Quelle der Wahrheit")
decisions/0002-issues-und-management-ins-lab.md 8 prose-or-runtime weiter auf Gitea — zwei Wahrheiten, driftgefährdet. Erreichbarkeits-Blocker
decisions/0002-issues-und-management-ins-lab.md 9 informational id-ok:LABNET-01 LABNET-01 (WireGuard-Roadwarrior) wurde am 2026-08-01 gelöst.
decisions/0002-issues-und-management-ins-lab.md 13 prose-or-runtime Alle Projekt-Issues leben auf git.lab (62 migriert, Gitea-Issues geschlossen mit
decisions/0002-issues-und-management-ins-lab.md 14 informational forge-repo:axion1337.chat/management Verweis); das Backlogs-Repo zieht als `axion1337.chat/management` ins Lab
decisions/0002-issues-und-management-ins-lab.md 15 informational forge-repo:sorb/management (Push-Mirror → `sorb/management` auf Gitea). Das Lab ist die Quelle der Wahrheit.
decisions/0002-issues-und-management-ins-lab.md 19 prose-or-runtime - ⚠️ gitops-Issue-Nummern haben sich verschoben (Gitea zählte PRs mit); die
decisions/0002-issues-und-management-ins-lab.md 21 prose-or-runtime - ~~**Befristete Ausnahme:** Deploy-Übergabe-Issues laufen auf dem Gitea-Tracker
decisions/0002-issues-und-management-ins-lab.md 22 informational forge-repo:sorb/management von `sorb/management`, weil CFGMON git.lab (noch) nicht erreicht.~~
decisions/0002-issues-und-management-ins-lab.md 23 checked-ok issue-ok:management#13(closed);id-ok:LABNET-03 ✅ **Zurückgebaut am 2026-08-02** (LABNET-03, [#13](https://git.lab/axion1337.chat/management/-/issues/13)):
decisions/0002-issues-und-management-ins-lab.md 25 checked-ok issue-ok:management#25(opened) sind nach git.lab gewandert ([#25](https://git.lab/axion1337.chat/management/-/issues/25),
decisions/0002-issues-und-management-ins-lab.md 26 checked-ok issue-ok:management#26(closed) [#26](https://git.lab/axion1337.chat/management/-/issues/26)), der Gitea-Tracker ist
decisions/0002-issues-und-management-ins-lab.md 27 checked-ok path-ok:.gitlab/issue_templates/@management(dir) leer, die Vorlage liegt als `.gitlab/issue_templates/`. **Damit gilt diese ADR
decisions/0002-issues-und-management-ins-lab.md 29 checked-ok path-ok:README.md@ThreadNet-Web,axion1337.chat-gitops,management historical-wording Ausnahmen (siehe `README.md`) — dass sie befristet war und die Frist gehalten hat,
decisions/0002-issues-und-management-ins-lab.md 31 prose-or-runtime - Releases bleiben auf Gitea (öffentlicher Download-Pfad), ebenso das gitops-Wiki.
decisions/0002-issues-und-management-ins-lab.md 35 prose-or-runtime - Issues auf Gitea belassen: dauerhafte Doppelführung, Roadmap/Boards unmöglich.
decisions/0003-cve-meldeweg-aggregiert.md 8 checked-ok path-ok:verfahren/aar/@management(dir);issue-ok:axion1337.chat-gitops#51(opened) Nachrichten und musste stummgeschaltet werden (gitops#51, AAR in `verfahren/aar/`).
decisions/0003-cve-meldeweg-aggregiert.md 9 informational id-no-issue:CFGMON-13 historical-wording Gleichzeitig war entschieden (CFGMON-13), Release-/Security-Meldungen von
decisions/0004-site-to-site-vpn-hetzner-lab.md 3 checked-ok issue-ok:management#12(closed);issue-ok:management#12(closed) **Status:** akzeptiert (umgesetzt und abgenommen 2026-08-01, Testreihe 17 in [management#12](https://git.lab/axion1337.chat/management/-/issues/12)) · **Datum:** 2026-08-01 · **Entscheider:** sorb
decisions/0004-site-to-site-vpn-hetzner-lab.md 14 informational net-ref:10.0.0.0/24;net-ref:10.58.73.0/24 historical-wording Hetzner-Projektnetz `10.0.0.0/24` mit dem Lab-VLAN `10.58.73.0/24`. Der An/Aus-Schalter
decisions/0004-site-to-site-vpn-hetzner-lab.md 27 informational net-ref:178.25.213.70 | **UDM** | zweiter WG-**Server** „Matrix", UDP **51841**, Tunnelnetz **10.58.75.0/24**, „Alternate Address for Clients" = `178.25.213.70` |
decisions/0004-site-to-site-vpn-hetzner-lab.md 28 informational net-ref:10.58.75.2;net-ref:10.0.0.0/24 | **Client „Hetzner"** | `10.58.75.2`, **Networks Behind Client = `10.0.0.0/24`** |
decisions/0004-site-to-site-vpn-hetzner-lab.md 29 informational runtime-path:~lab;net-ref:10.58.73.1 | **CFGMON** | WG-**Client/Initiator**, dauerhaft aktiv (`enable`) + `PersistentKeepalive 25`; AllowedIPs nur `10.58.73.0/24, 10.58.75.1/32`; Split-DNS nur `~lab` → `10.58.73.1`; `ip_forward` + iptabl
decisions/0004-site-to-site-vpn-hetzner-lab.md 30 informational net-ref:192.168.178.20 | **Fritzbox** | Portfreigabe UDP **51841** → `192.168.178.20` |
decisions/0004-site-to-site-vpn-hetzner-lab.md 31 informational net-ref:10.0.0.0/8 | **Hetzner** | Netz-Range auf **`10.0.0.0/8`** erweitert, Route `10.58.73.0/24 → 10.0.0.3` — damit erreichen alle Server im Netz das Lab **ohne eigene Konfiguration** |
decisions/0004-site-to-site-vpn-hetzner-lab.md 32 informational net-ref:10.58.75.0/24;net-ref:10.0.0.0/24;image-ref:10.58.73.17:443;image-ref:10.58.73.1:53 | **UniFi-Firewall** | Trennung vom Roadwarrior über **Quell-/Ziel-IP** (`10.58.75.0/24` + `10.0.0.0/24`), nicht über eine eigene Zone: erlaubt sind nur `10.58.73.17:443` (git.lab/Registry) und `10.58
decisions/0004-site-to-site-vpn-hetzner-lab.md 36 checked-ok issue-ok:management#13(closed);id-ok:LABNET-03 - ✅ **Eingelöst am 2026-08-02 (LABNET-03, [#13](https://git.lab/axion1337.chat/management/-/issues/13)):**
decisions/0004-site-to-site-vpn-hetzner-lab.md 37 prose-or-runtime Übergabe-Issues können nicht nur umziehen — sie sind umgezogen
decisions/0004-site-to-site-vpn-hetzner-lab.md 38 checked-ok issue-ok:management#25(opened) ([#25](https://git.lab/axion1337.chat/management/-/issues/25),
decisions/0004-site-to-site-vpn-hetzner-lab.md 39 checked-ok issue-ok:management#26(closed) [#26](https://git.lab/axion1337.chat/management/-/issues/26)), der Gitea-Tracker ist
decisions/0004-site-to-site-vpn-hetzner-lab.md 40 prose-or-runtime leer, die Vorlage liegt als GitLab-Issue-Template, und die Ausnahme aus ADR-0002 ist
decisions/0004-site-to-site-vpn-hetzner-lab.md 50 prose-or-runtime Gitea-PR-Ausnahme bleibt bewusst bestehen.
decisions/0004-site-to-site-vpn-hetzner-lab.md 54 prose-or-runtime historical-wording Job läuft im Lab und erreicht Gitea öffentlich. Das war der eigentliche Grund für
decisions/0004-site-to-site-vpn-hetzner-lab.md 56 informational id-ok:GAME-01 - game.axion1337.de profitiert erst nach Aufnahme in den vSwitch (GAME-01).
decisions/0005-pm-framework-kanban.md 1 prose-or-runtime # 0005 — Projektmanagement: Kanban-Rückgrat mit leichten Scrum-Elementen
decisions/0005-pm-framework-kanban.md 22 checked-ok path-ok:vision/@management(dir) | Product Goal / Vision | `vision/` (eine Datei je Linie) |
decisions/0005-pm-framework-kanban.md 24 checked-ok path-ok:verfahren/aar/@management(dir) | Review/Retro | AARs (`verfahren/aar/`) nach Deploys/Incidents |
decisions/0005-pm-framework-kanban.md 25 checked-ok path-ok:verfahren/deploy-uebergabe.md@management | Definition of Done | Deploy-Übergabe-Verfahren (`verfahren/deploy-uebergabe.md`) |
decisions/0005-pm-framework-kanban.md 26 checked-ok path-ok:roadmap.md@management | Roadmap/Meilensteine | Gruppen-Milestones + `roadmap.md` (CE: keine Epics/Roadmap-View) |
decisions/0005-pm-framework-kanban.md 27 checked-ok path-ok:decisions/@management(dir) | Entscheidungen | ADRs in `decisions/` |
decisions/0005-pm-framework-kanban.md 32 informational forge-repo:axion1337.chat/management - Das Backlogs-Repo wird zum Management-Repo `axion1337.chat/management`;
decisions/0005-pm-framework-kanban.md 33 checked-ok path-ok:hosts/@management(dir);path-ok:shared/@ThreadNet-Web(dir),management(dir);image-ref:host: offene Punkte aus `hosts/`/`shared/` sind Issues mit `host:`-Labels,
decisions/0006-wikis-konsolidieren-docusaurus.md 9 prose-or-runtime historical-wording 1. **Gitea-Wiki-Repo** `…gitops.wiki.git` — 15 Seiten, gepflegt bis 2026-07-31.
decisions/0006-wikis-konsolidieren-docusaurus.md 10 prose-or-runtime Vom Push-Mirror **nicht** erfasst: ein Wiki ist ein eigenes Repo, kein Branch.
decisions/0006-wikis-konsolidieren-docusaurus.md 11 prose-or-runtime 2. **`wiki`-Branch im gitops-Repo** — Stand 2026-05-14, mitgezogen, weil der Mirror
decisions/0006-wikis-konsolidieren-docusaurus.md 12 checked-ok path-ok:docs/@ThreadNet-Web(dir),axion1337.chat-gitops(dir),threadnet-call(dir) historical-wording alle Branches trägt. Inhalt: ein damaliger Abzug von `docs/`, kein gepflegtes Wiki.
decisions/0006-wikis-konsolidieren-docusaurus.md 13 checked-ok path-ok:docs/@ThreadNet-Web(dir),axion1337.chat-gitops(dir),threadnet-call(dir) 3. **`docs/` im main-Branch** — die eigentliche, laufend gepflegte Repo-Doku.
decisions/0006-wikis-konsolidieren-docusaurus.md 15 prose-or-runtime historical-wording Dazu waren die GitLab-Wikis aller Projekte **leer**, und die Wiki-Inhalte enthielten
decisions/0006-wikis-konsolidieren-docusaurus.md 17 prose-or-runtime historical-wording 2026-08-01 entfernt; Issues „in Gitea", obwohl migriert).
decisions/0006-wikis-konsolidieren-docusaurus.md 23 prose-or-runtime „direkt-zu-Gitea"-Ausnahme aus [ADR-0001](0001-gitlab-kanonisch-push-mirror.md).
decisions/0006-wikis-konsolidieren-docusaurus.md 26 informational forge-repo:homelab/wiki [`homelab/wiki`](https://git.lab/homelab/wiki) baut mit Docusaurus eine Seite unter
decisions/0006-wikis-konsolidieren-docusaurus.md 28 informational forge-repo:homelab/docs historical-wording Homelab (`homelab/docs`), Arbeitsweise (`management`). Die Inhalte werden beim Bau
decisions/0006-wikis-konsolidieren-docusaurus.md 33 FLAG path-miss:content/ path-miss:content/ - **Änderungen gehören ins Quell-Repo**, nie ins Wiki-Repo — was dort in `content/`
decisions/0006-wikis-konsolidieren-docusaurus.md 43 prose-or-runtime `.md` wird als CommonMark statt MDX geparst.
decisions/0006-wikis-konsolidieren-docusaurus.md 44 prose-or-runtime - **Der `wiki`-Branch im gitops-Repo ist überholt.** Er bleibt vorerst als Historie
decisions/0006-wikis-konsolidieren-docusaurus.md 47 checked-ok issue-ok:management#19(opened) ([Issue #19](https://git.lab/axion1337.chat/management/-/issues/19)).
decisions/0006-wikis-konsolidieren-docusaurus.md 51 prose-or-runtime - **Alles in ein Repo verschmelzen:** Die Quellen haben unterschiedliche Leser und
decisions/0006-wikis-konsolidieren-docusaurus.md 53 prose-or-runtime - **Wiki auf Gitea belassen:** widerspricht ADR-0002 und hielt eine Ausnahme am
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 3 checked-ok issue-ok:management#20(opened) **Status:** vorgeschlagen (Entscheidung offen → [Issue #20](https://git.lab/axion1337.chat/management/-/issues/20)) · **Datum:** 2026-08-02 · **Entscheider:** sorb
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 8 informational runtime-path:axionwiki.lab Docusaurus als Lesefläche gebaut — läuft seit 2026-08-02 unter `axionwiki.lab`.
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 42 prose-or-runtime Wahrheit neben git.lab — genau das, was [ADR-0002](0002-issues-und-management-ins-lab.md)
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 52 informational id-ok:CFGMON-09 Datenbank ohne Sicherung ist eine Zeitbombe (vgl. CFGMON-09, wo genau das seit
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 53 prose-or-runtime 2026-07-30 offen ist).
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 54 FLAG path-miss:import/ path-miss:import/ - **Ein Einweg-Import zum Befüllen, aber keine Synchronisation** (`import/` im
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 56 FLAG path-miss:provision.py path-miss:provision.py vergleichen, deshalb legt `provision.py` dieselben drei Bereiche an wie das
decisions/0008-agenten-sessions-root-aequivalent.md 3 checked-ok issue-ok:management#17(closed) **Status:** akzeptiert · **Datum:** 2026-08-06 (Struktur-Workshop [#17](https://git.lab/axion1337.chat/management/-/issues/17)) · **Entscheider:** sorb
decisions/0008-agenten-sessions-root-aequivalent.md 9 informational id-ok:LABNET-02 LABNET-02-Nacht lief deshalb über die **docker-Gruppenmitgliedschaft** des Kontos
decisions/0008-agenten-sessions-root-aequivalent.md 24 checked-ok issue-ok:management#14(opened) [#14](https://git.lab/axion1337.chat/management/-/issues/14).
decisions/0008-agenten-sessions-root-aequivalent.md 46 informational id-ok:LABNET-02 ohne diese Entscheidung wäre LABNET-02 gar nicht durchführbar gewesen.
decisions/0008-agenten-sessions-root-aequivalent.md 50 prose-or-runtime AAR-Pflicht und „alles Offene wird ein Issue" auf diesem Host besonders zählen —
decisions/0008-agenten-sessions-root-aequivalent.md 55 prose-or-runtime Kommt einer dazu, wird diese ADR abgelöst.
decisions/0008-agenten-sessions-root-aequivalent.md 57 prose-or-runtime ## Offen, bewusst nicht vor der Entscheidung geklärt
decisions/0008-agenten-sessions-root-aequivalent.md 66 checked-ok issue-ok:management#14(opened) historical-wording nächsten Host-Session, festgehalten in #14.
decisions/0008-agenten-sessions-root-aequivalent.md 80 checked-ok path-ok:hosts/cfgmon.md@management und nicht bloß ein Absatz in `hosts/cfgmon.md`.
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 5 prose-or-runtime > Nachgetragen am 2026-08-09 in der [Retro](../verfahren/retro/2026-08-09.md). Die
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 13 prose-or-runtime öffentlichem Gitea-Spiegel heißt das: Jeder, der die Repos liest, kann ablesen, an
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 23 prose-or-runtime **Regel ab 2026-08-07**, gültig für alle Repos der Gruppe `axion1337.chat` und die
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 29 prose-or-runtime **Rückwirkend angewandt am 2026-08-09** auf **251 Commits** — alles aus dieser
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 34 prose-or-runtime | gitops | 117 von 264 | ab 2026-07-27 |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 35 prose-or-runtime | management | 78 von 78 | vollständig |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 36 prose-or-runtime | ThreadNet-Web | 47 von 50 | ab 2026-07-28 |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 37 prose-or-runtime | threadnet-call | 9 von 9 | vollständig |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 39 prose-or-runtime Dabei wurden 17 Tags mit umgezogen und die Autoren-Identitäten vereinheitlicht —
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 54 checked-ok path-ok:shared/commit-zuordnung-2026-08-07.md@management [`shared/commit-zuordnung-2026-08-07.md`](../shared/commit-zuordnung-2026-08-07.md).
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 61 prose-or-runtime wieder aktiv.
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 66 prose-or-runtime liegen im selben GitLab und teilweise auf dem öffentlichen Spiegel — und sind
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 72 prose-or-runtime Das Force-Push der umgezogenen Tags hat in ThreadNet-Web **drei Release-Pipelines
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 74 informational tag-ok:v0.4.0 `v0.4.0` aus altem Quellcode gegen heutige Basis-Images neu gebaut und
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 77 checked-ok issue-ok:ThreadNet-Web#14(closed) ThreadNet-Web#14; die Sperre ist seit `3cb43f5` scharf.
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 86 prose-or-runtime angefasst (`Scrublord@Mac.Bad`, 135 Commits aus der Zeit vor dieser
decisions/README.md 6 prose-or-runtime auf `abgelöst durch NNNN` gesetzt.
decisions/README.md 13 prose-or-runtime git.lab-Cutover 2026-08-01: die „Übergabe-Issues bleiben auf Gitea"-Ausnahme
decisions/template.md 3 prose-or-runtime **Status:** vorgeschlagen | akzeptiert | abgelöst durch NNNN · **Datum:** JJJJ-MM-TT · **Entscheider:** sorb
hosts/cfgmon.md 3 prose-or-runtime Monitoring-Stack, Gitea und der Reverse Proxy für alles Öffentliche.
hosts/cfgmon.md 8 prose-or-runtime | **OS** | Ubuntu 24.04.4 LTS |
hosts/cfgmon.md 9 informational net-ref:188.245.193.243 | **IPv4** | `188.245.193.243` |
hosts/cfgmon.md 11 informational net-ref:10.0.0.3;net-ref:10.0.0.2 | **Privat** | `10.0.0.3` (`enp7s0`, Hetzner-Netz — dort liegt auch k3s auf `10.0.0.2`) |
hosts/cfgmon.md 12 informational runtime-path:rohana.axion1337.de | **DNS** | `rohana.axion1337.de` → Gitea, `selendis.axion1337.de` → Grafana |
hosts/cfgmon.md 19 checked-ok image-ref:prom/prometheus:v3.3.1;forge-repo:sorb/threadnet-operating;path-ok:monitoring/@axion1337.chat-gitops(dir),threadnet-operating(dir) | prometheus | `prom/prometheus:v3.3.1` | `monitoring` | `sorb/threadnet-operating`, `monitoring/` |
hosts/cfgmon.md 20 informational image-ref:grafana/loki:3.7.1 | loki | `grafana/loki:3.7.1` | `monitoring` | dito |
hosts/cfgmon.md 21 informational image-ref:grafana/grafana:12.0.0 | grafana | `grafana/grafana:12.0.0` | `monitoring` | dito |
hosts/cfgmon.md 22 informational image-ref:grafana/alloy:v1.16.0 | alloy | `grafana/alloy:v1.16.0` | `monitoring` | dito |
hosts/cfgmon.md 23 informational image-ref:prom/node-exporter:v1.9.1 | node-exporter | `prom/node-exporter:v1.9.1` | `monitoring` | dito |
hosts/cfgmon.md 24 informational image-ref:traefik:v3.7.9;forge-repo:sorb/thread-net-git;id-no-issue:CFGMON-02 | traefik | `traefik:v3.7.9` | `thread-net-git` | `sorb/thread-net-git`, seit 2026-07-30 in `main` (siehe [CFGMON-02](#cfgmon-02--traefik-gitea-cadvisor-und-runner-unter-iac-gebracht--erledigt-2026-07
hosts/cfgmon.md 25 informational image-ref:gitea/gitea:1.27.0;image-ref::latest historical-wording | gitea | `gitea/gitea:1.27.0` | `thread-net-git` | dito, gepinnt (war `:latest`) |
hosts/cfgmon.md 26 informational runtime-path:gcr.io/cadvisor/cadvisor:v0.49.1;image-ref::latest historical-wording | cadvisor | `gcr.io/cadvisor/cadvisor:v0.49.1` | `thread-net-git` | dito, gepinnt (war `:latest`) |
hosts/cfgmon.md 27 informational image-ref:gitea/act_runner:0.6.1;id-no-issue:CFGMON-02 | runner | `gitea/act_runner:0.6.1` | `thread-net-git` | dito, Container `gitea-runner`, siehe CFGMON-02 |
hosts/cfgmon.md 28 informational image-ref:portainer/agent:2.27.5 | portainer_agent | `portainer/agent:2.27.5` | — | standalone, kein Compose |
hosts/cfgmon.md 32 informational image-ref:10.0.0.2:9100 (`10.0.0.2:9100`), `pterodactyl_host_node` und `gameserver_cadvisor`
hosts/cfgmon.md 33 informational net-ref:157.90.155.206 (beide `157.90.155.206`, siehe [game](game.md)).
hosts/cfgmon.md 38 prose-or-runtime historical-wording [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
hosts/cfgmon.md 41 checked-ok issue-ok:management#7(opened);id-ok:CFGMON-01 - [CFGMON-01 — Zertifikatserneuerung braucht offene Ports (zeitkritisch ab 2026-09-28)](https://git.lab/axion1337.chat/management/-/issues/7)
hosts/cfgmon.md 42 checked-ok issue-ok:management#8(opened);id-ok:CFGMON-03 - [CFGMON-03 — Prometheus-Remote-Write/Loki öffentlich ohne Auth (Weg A, nachgelagerte Prüfung)](https://git.lab/axion1337.chat/management/-/issues/8)
hosts/cfgmon.md 43 checked-ok issue-ok:management#9(opened);id-ok:CFGMON-04 - [CFGMON-04 — Grafana-Admin-Credentials aus `.env` gelten nicht für die API](https://git.lab/axion1337.chat/management/-/issues/9)
hosts/cfgmon.md 44 checked-ok issue-ok:management#10(opened);id-ok:CFGMON-09 - [CFGMON-09 — Gitea-Backups off-host (⚠️ Backup-Cron deaktiviert)](https://git.lab/axion1337.chat/management/-/issues/10)
hosts/cfgmon.md 46 informational id-no-issue:CFGMON-11 ## CFGMON-11 — Gitea-CI-Rückbau nach GitLab-Umzug
hosts/cfgmon.md 48 prose-or-runtime **Status:** erledigt (2026-07-31 spätabends) — bis auf einen kosmetischen Handgriff:
hosts/cfgmon.md 49 prose-or-runtime auf CFGMON `cd /opt/thread-net-git && git checkout main && git pull` (Checkout parkt
hosts/cfgmon.md 52 informational runtime-path:/opt/threadnet-operating **Dazu neu (2026-08-01 ~05:00):** Auch `/opt/threadnet-operating` braucht einmal
hosts/cfgmon.md 53 prose-or-runtime `git fetch && git reset --hard origin/main` — der State-Persistenz-Commit wurde
hosts/cfgmon.md 54 prose-or-runtime dort direkt nach Gitea gepusht (dfe04c4a), vom Mirror überschrieben, vom Mac aus
hosts/cfgmon.md 55 prose-or-runtime per Patch gerettet und kanonisch als `6ffab68` neu aufgelegt (inhaltsgleich,
hosts/cfgmon.md 58 prose-or-runtime **Erledigt (2026-08-01, autonom):**
hosts/cfgmon.md 59 prose-or-runtime - Actions-Toggles deaktiviert: `ThreadNet-Web`, `threadnet-call`, `axion1337.chat-gitops`
hosts/cfgmon.md 60 checked-ok path-ok:.github/workflows/@threadnet-call(dir) historical-wording - `ThreadNet-Web`: alle `.github/workflows/`-Dateien entfernt (Commit `a876758`)
hosts/cfgmon.md 61 FLAG path-miss:.gitea/workflows/ path-miss:.gitea/workflows/ historical-wording - gitops: Verifikations-Job nach GitLab portiert + `.gitea/workflows/` entfernt
hosts/cfgmon.md 62 FLAG path-miss:milestone-release.yml path-miss:milestone-release.yml (Commit `5e46a24`, Pipeline grün, Mirror→Gitea verifiziert; `milestone-release.yml`
hosts/cfgmon.md 63 FLAG issue-miss:management#33 issue-miss:management#33 historical-wording war toter Code, siehe #33). Flux unberührt.
hosts/cfgmon.md 64 checked-ok path-ok:.env.example@threadnet-call,threadnet-operating historical-wording - `thread-net-git`: Runner-Service/Config/`.env.example` per Commit `d904734` entfernt
hosts/cfgmon.md 65 prose-or-runtime (auf git.lab; Mirror trägt nach Gitea) — **noch nicht deployt**, siehe unten.
hosts/cfgmon.md 66 informational package-ref:@sorb/threadnet-call-embedded - Registry-Entscheidung npm final (Evidenz: `@sorb/threadnet-call-embedded` ist
hosts/cfgmon.md 67 checked-ok path-ok:apps/web@ThreadNet-Web(dir) pnpm-Dependency von `apps/web`, Lockfile pinnt Tarball-URL auf rohana): **bleibt Gitea**.
hosts/cfgmon.md 70 prose-or-runtime 1. ~~`thread-net-git`-Stand deployen~~ **erledigt (2026-07-31 spätabends, via
hosts/cfgmon.md 71 FLAG path-miss:runner-data/ path-miss:runner-data/ historical-wording CFGMON-Session)**: Runner-Container/Netz/`runner-data/`/`.env`-Zeile entfernt,
hosts/cfgmon.md 72 prose-or-runtime historical-wording `builder-1` aus der Gitea-Admin-UI gelöscht, Actions-Registrierungstoken rotiert.
hosts/cfgmon.md 75 checked-ok issue-ok:thread-net-git#1(closed) Mac→git.lab→Mirror (`15c8f2d`), Hergang in thread-net-git#1 (geschlossen).
hosts/cfgmon.md 77 prose-or-runtime historical-wording getippte Token (`a89bfb…`) war der Gitea-**Actions-Runner-Registrierungstoken**
hosts/cfgmon.md 82 prose-or-runtime 3. ~~Token-Rotation b~~ **erledigt (2026-07-31 abends)**: Generalschlüssel
hosts/cfgmon.md 87 informational runtime-path:~/.config/gitea-rohana/token `~/.config/gitea-rohana/token` auf dem Mac), `claude-push` (write:repository,
hosts/cfgmon.md 88 informational runtime-path:~/.config/gitea-rohana/push-token `~/.config/gitea-rohana/push-token`). Erster CI-Publish `0.19.2-threadnet.6`
hosts/cfgmon.md 89 checked-ok issue-ok:threadnet-call#1(closed) historical-wording verifiziert → threadnet-call#1 geschlossen. Alle Klartext-Reste entfernt
hosts/cfgmon.md 94 informational runtime-path:git.lab/axion1337.chat (`git.lab/axion1337.chat`, Gruppe mit importierten Projekten angelegt; die Domain ist
hosts/cfgmon.md 97 prose-or-runtime pausieren). Der am 2026-07-30 auf Gitea-Seite aufgebaute CI-Unterbau wird damit teilweise
hosts/cfgmon.md 102 prose-or-runtime - **Actions-Toggle** `has_actions` bei `ThreadNet-Web` (am 2026-07-30 per API aktiviert)
hosts/cfgmon.md 103 prose-or-runtime wieder deaktivieren, ebenso bei `threadnet-call` (stoppt die fehlschlagende
hosts/cfgmon.md 105 checked-ok path-ok:.github/workflows/@threadnet-call(dir) - **`.github/workflows/` in `ThreadNet-Web`** (der kuratierte 6-Dateien-Satz) — wird durch
hosts/cfgmon.md 106 checked-ok path-ok:.gitlab-ci.yml@ThreadNet-Web,axion1337.chat-gitops,management `.gitlab-ci.yml` ersetzt. Die Erkenntnisse aus den Läufen vom 2026-07-30 mitnehmen:
hosts/cfgmon.md 110 prose-or-runtime - **Geerbte Upstream-Workflows in `threadnet-call`** (build/publish/test/translations/
hosts/cfgmon.md 113 FLAG path-miss:runner-data/.runner path-miss:runner-data/.runner der Gitea-Admin-UI deregistrieren und `runner-data/.runner` auf dem Host entfernen.
hosts/cfgmon.md 114 FLAG path-miss:embedded/web/.npmrc path-miss:embedded/web/.npmrc - **Token: npm-Token in `threadnet-call`s untracked `embedded/web/.npmrc`** (Klartext im
hosts/cfgmon.md 121 prose-or-runtime - **Runner-Service in `thread-net-git` ganz entfernen?** Hängt daran, ob das gitops-Repo
hosts/cfgmon.md 122 FLAG path-miss:deploy-on-push.yml path-miss:deploy-on-push.yml seinen leichten `deploy-on-push.yml` (YAML-Validierung/Notification, läuft sauber)
hosts/cfgmon.md 124 FLAG path-miss:runner/config.yaml path-miss:runner/config.yaml Revert-Commit in `thread-net-git`: Compose-Service `runner`, `runner/config.yaml`,
hosts/cfgmon.md 125 FLAG path-ok:.env.example@threadnet-call,threadnet-operating;path-miss:runner-data/ path-miss:runner-data/ `.env.example` (RUNNER_TOKEN), Cache-Port-Bindung 8088, `runner-data/`.
hosts/cfgmon.md 126 informational package-ref:@sorb/threadnet-call-embedded - **Registry-Ziel für `@sorb/threadnet-call-embedded`**: bleibt die Gitea-npm-Registry
hosts/cfgmon.md 128 prose-or-runtime GitLab-Package-Registry (dann läuft die Gitea-Package-Seite leer).
hosts/cfgmon.md 129 prose-or-runtime - **Container-Images bleiben in der rohana-Registry** (Flux/k8s pullt von dort — spricht
hosts/cfgmon.md 131 prose-or-runtime **neuen** Deploy-/Push-Token für die rohana-Registry (Neuanlage, kein Rückbau).
hosts/cfgmon.md 135 prose-or-runtime Gitea selbst, gitops-Repo als Flux-Source, Issues/Wiki/dieses Repo, der
hosts/cfgmon.md 136 informational id-ok:CFGMON-09 API-Token für Issue-Verwaltung, das Gitea-Backup-Script (CFGMON-09).
hosts/cfgmon.md 139 prose-or-runtime umgezogen — [ADR-0002](../decisions/0002-issues-und-management-ins-lab.md) —,
hosts/cfgmon.md 140 prose-or-runtime das Repo dabei von `Backlogs` zu `management` umgewidmet
hosts/cfgmon.md 142 prose-or-runtime den damaligen Rückbau der Gitea-CI, nicht auf Dauer.)*
hosts/cfgmon.md 145 checked-ok issue-ok:ThreadNet-Web#2(closed) [ThreadNet-Web#2](https://rohana.axion1337.de/sorb/ThreadNet-Web/issues/2),
hosts/cfgmon.md 146 checked-ok issue-ok:threadnet-call#1(closed) [threadnet-call#1](https://rohana.axion1337.de/sorb/threadnet-call/issues/1).
hosts/cfgmon.md 148 prose-or-runtime **Nächster Schritt:** die drei manuellen Schritte oben, dann → erledigt.
hosts/cfgmon.md 150 informational id-no-issue:CFGMON-13 ## CFGMON-13 — Absender-Design für Release-/CVE-Meldungen: eigener Bot?
hosts/cfgmon.md 154 checked-ok issue-ok:axion1337.chat-gitops#47(opened) Alertmanager-Routing: [gitops#47](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/47).
hosts/cfgmon.md 160 checked-ok issue-ok:axion1337.chat-gitops#22(opened) 1. **release-watch** (gitops#22, deploybereit): Upstream-Releases/Security-Releases
hosts/cfgmon.md 162 checked-ok issue-ok:axion1337.chat-gitops#31(opened) 2. **Trivy-CVE-Scans** (gitops#31, läuft wöchentlich in der Lab-CI): Funde landen
hosts/cfgmon.md 168 informational package-ref:@alerts scharf/stumm schaltbar bleibt? Oder bewusst alles über `@alerts` bündeln?
hosts/cfgmon.md 174 informational id-no-issue:CFGMON-12 ## CFGMON-12 — Gitea-Projektmetadaten nach GitLab umziehen/integrieren
hosts/cfgmon.md 176 checked-ok issue-ok:axion1337.chat-gitops#48(opened) **Status:** abgelöst durch [gitops#48](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/48) (2026-08-01, sorb: HOHE Priorität — vollständige Issue-Migration + zentrale Gruppen-Roadmap; Pl
hosts/cfgmon.md 178 prose-or-runtime ✅ **Umgesetzt am 2026-08-01/02**: Die Migration ist durch — 62 Issues liegen auf
hosts/cfgmon.md 179 prose-or-runtime git.lab, die Gitea-Issues sind geschlossen und tragen einen Migrations-Fußtext.
hosts/cfgmon.md 181 prose-or-runtime die Aufzählung „Noch auf Gitea" gilt nicht mehr. Die zunächst verbliebene Ausnahme
hosts/cfgmon.md 182 informational id-ok:LABNET-03 für Deploy-Übergabe-Issues ist am 2026-08-02 mit LABNET-03 ebenfalls zurückgebaut.
hosts/cfgmon.md 187 prose-or-runtime Projektmetadaten liegen weiterhin auf Gitea/rohana. Verifiziert per API am
hosts/cfgmon.md 190 prose-or-runtime Noch auf Gitea:
hosts/cfgmon.md 192 checked-ok issue-ok:management#2(opened);issue-ok:management#5(opened);issue-ok:management#1(opened) - **Issues** inkl. Kommentare/Labels: ThreadNet-Web (#2, #5, …), threadnet-call (#1),
hosts/cfgmon.md 193 checked-ok issue-ok:management#24(opened);issue-ok:management#25(opened);issue-ok:management#32(opened) gitops (#24, #25, #32, …)
hosts/cfgmon.md 195 FLAG path-miss:00-TASKS.md path-miss:00-TASKS.md - **Wiki** (gitops-Wiki mit `00-TASKS.md`-Log — bisher bewusst direkt-Gitea)
hosts/cfgmon.md 197 informational id-no-issue:CFGMON-11 [CFGMON-11](#cfgmon-11--gitea-ci-rückbau-nach-gitlab-umzug) auf rohana — bei
hosts/cfgmon.md 202 prose-or-runtime 1. **GitLab-Gitea-Importer vs. API-Skript** — der Importer verliert Autorenschaft
hosts/cfgmon.md 205 prose-or-runtime 2. **Erreichbarkeit**: rohana ist von überall erreichbar, git.lab nur im Homelab —
hosts/cfgmon.md 208 prose-or-runtime direkt-Gitea).
hosts/cfgmon.md 213 prose-or-runtime auf Gitea" als geltende Regel.
hosts/cfgmon.md 219 informational id-no-issue:CFGMON-10 ### CFGMON-10 — threadnet-call-CI schlägt am Artifact-Schritt fehl · verworfen 2026-07-30
hosts/cfgmon.md 221 prose-or-runtime Ausgelöst durch einen Push nach `threadnet-call` am 2026-07-30: der Runner (`builder-1`)
hosts/cfgmon.md 226 prose-or-runtime **Hypothese inzwischen im Kern bestätigt** — beim parallelen ThreadNet-Web-CI-Versuch
hosts/cfgmon.md 229 prose-or-runtime ohne Swap, trägt daneben Gitea/Traefik/Monitoring) kann das strukturell nicht liefern.
hosts/cfgmon.md 233 informational id-no-issue:CFGMON-11 [CFGMON-11](#cfgmon-11--gitea-ci-rückbau-nach-gitlab-umzug)), CFGMON bleibt bei leichten
hosts/cfgmon.md 234 checked-ok issue-ok:threadnet-call#1(closed) Jobs. Issue-Seite: [threadnet-call#1](https://rohana.axion1337.de/sorb/threadnet-call/issues/1).
hosts/cfgmon.md 236 informational id-no-issue:CFGMON-02 ### CFGMON-02 — Traefik, Gitea, cAdvisor und Runner unter IaC gebracht · erledigt 2026-07-30
hosts/cfgmon.md 238 informational runtime-path:/data/compose/8 Liefen ursprünglich im Compose-Projekt `thread-net-git` aus `/data/compose/8`, einem von
hosts/cfgmon.md 239 informational forge-repo:sorb/thread-net-git;image-ref::latest Portainer verwalteten Stack ohne Repo dazu. Jetzt in `sorb/thread-net-git`: `:latest`-Tags
hosts/cfgmon.md 240 prose-or-runtime historical-wording gepinnt (Gitea `1.27.0`, cAdvisor `v0.49.1`), Projektname `thread-net-git` beibehalten
hosts/cfgmon.md 242 prose-or-runtime Volume-Namen, Downgrade-Verbot für Gitea), nächtliches Backup-Script. Zusätzlich neu: ein
hosts/cfgmon.md 243 informational image-ref:gitea/act_runner:0.6.1 `runner`-Service (`gitea/act_runner:0.6.1`, Container `gitea-runner`, Labels
hosts/cfgmon.md 244 prose-or-runtime `ubuntu-latest`/`linux-build`/`win-wine` — die letzten beiden gezielt für Electron-Builds)
hosts/cfgmon.md 245 informational id-no-issue:CFGMON-08 — ursprünglich unter [CFGMON-08](#cfgmon-08) als offene Frage gelistet, siehe dort.
hosts/cfgmon.md 247 informational branch-ok:rework/stack Entstanden auf Branch `rework/stack`, zunächst nicht gemergt (produktiv aber schon aktiv).
hosts/cfgmon.md 248 informational branch-ok:origin/main;branch-ok:origin/rework/stack **2026-07-30 nach `main` gemergt** (`origin/main` == `origin/rework/stack` auf `02b3224`,
hosts/cfgmon.md 249 prose-or-runtime verifiziert) — damit spiegelt die Standardansicht des Repos jetzt den Live-Stand.
hosts/cfgmon.md 250 prose-or-runtime Verifiziert am 2026-07-30 über die Compose-Labels der laufenden Container
hosts/cfgmon.md 251 informational image-ref:working_dir: /opt/thread-net-git (`working_dir: /opt/thread-net-git`) und `docker compose ls`. `gitea-data` ist als
hosts/cfgmon.md 255 prose-or-runtime Zum Bootstrapping-Problem (Definition von Gitea liegt in Gitea): mitigiert,
hosts/cfgmon.md 256 prose-or-runtime weil das Deploy-Verzeichnis selbst der Checkout ist — fällt Gitea aus, liegt
hosts/cfgmon.md 259 informational id-ok:CFGMON-09 [CFGMON-09](#cfgmon-09--gitea-backups-off-host-in-die-storage-box-eigenes-borg-repo).
hosts/cfgmon.md 261 informational id-no-issue:CFGMON-05 ### CFGMON-05 — Monitoring-Stack unter IaC bringen · erledigt 2026-07-30
hosts/cfgmon.md 263 informational runtime-path:/opt/monitoring;image-ref::latest Der Stack lief aus `/opt/monitoring` ohne Versionierung und mit `:latest`-Tags. Jetzt
hosts/cfgmon.md 264 checked-ok forge-repo:sorb/threadnet-operating;path-ok:monitoring/@axion1337.chat-gitops(dir),threadnet-operating(dir) in `sorb/threadnet-operating` unter `monitoring/`, Images gepinnt,
hosts/cfgmon.md 268 informational id-no-issue:CFGMON-06 ### CFGMON-06 — Grafana-Certresolver zeigte ins Leere · erledigt 2026-07-30
hosts/cfgmon.md 273 informational runtime-path:/opt/monitoring aus. Aus dem Altbestand in `/opt/monitoring` unverändert übernommen und dort
hosts/cfgmon.md 276 prose-or-runtime Behoben in `threadnet-operating`, Commit `a400f8a`. Cert von Let's Encrypt (YR2)
hosts/cfgmon.md 277 prose-or-runtime historical-wording ausgestellt, gültig bis 2026-10-28 — die Nachfolge davon ist
hosts/cfgmon.md 278 informational id-ok:CFGMON-01 [CFGMON-01](#cfgmon-01--zertifikatserneuerung-braucht-offene-ports-ipv4-und-ipv6).
hosts/cfgmon.md 280 informational id-no-issue:CFGMON-07 ### CFGMON-07 — Alloy verlor seine Positions-Datei bei jedem Deploy · erledigt 2026-07-30
hosts/cfgmon.md 282 prose-or-runtime historical-wording `--storage.path=/var/lib/alloy/data` war gesetzt, aber ohne Volume: die
hosts/cfgmon.md 288 prose-or-runtime Behoben durch ein `alloy_data`-Volume, Commit `edac97e`. Verifiziert: Positions
hosts/cfgmon.md 291 informational id-no-issue:CFGMON-08 ### CFGMON-08 — Kein Gitea-Actions-Runner registriert, Standort noch offen · erledigt 2026-07-30
hosts/cfgmon.md 294 prose-or-runtime existiert und wo einer laufen sollte, noch offen sei. Beides falsch — ein Runner
hosts/cfgmon.md 295 informational branch-ok:rework/stack (`builder-1`) läuft bereits, auf CFGMON, als Teil von `thread-net-git`s `rework/stack`-
hosts/cfgmon.md 297 informational id-no-issue:CFGMON-02 [CFGMON-02](#cfgmon-02--traefik-gitea-cadvisor-und-runner-unter-iac-gebracht--erledigt-2026-07-30) — hier
hosts/cfgmon.md 298 checked-ok issue-ok:axion1337.chat-gitops#33(closed) nicht dupliziert. [gitops#33](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/33)
hosts/cfgmon.md 299 prose-or-runtime (dieselbe falsche Prämisse) entsprechend korrigiert/geschlossen.
hosts/game.md 3 prose-or-runtime Pterodactyl- / Gameserver-Host.
hosts/game.md 7 informational net-ref:157.90.155.206 | **IPv4** | `157.90.155.206` |
hosts/game.md 10 informational net-ref:10.0.0.4 | **Privat** | `10.0.0.4` (im vSwitch seit 2026-08-02) |
hosts/game.md 20 prose-or-runtime [axion1337.chat/game-operating](https://git.lab/axion1337.chat/game-operating)
hosts/game.md 25 prose-or-runtime Deployment ist gewollt, aber bewusst **zurückgestellt, bis das Matrix-Projekt
hosts/game.md 31 prose-or-runtime **Pterodactyl** (Gameserver-Verwaltung, in Benutzung durch Bekannte des Betreibers
hosts/game.md 36 informational runtime-path:ghcr.io/pterodactyl/panel:v1.12.0 | `pterodactyl` (Panel) | `ghcr.io/pterodactyl/panel:v1.12.0` |
hosts/game.md 37 informational runtime-path:ghcr.io/pterodactyl/wings:v1.12.0 | `wings` (Daemon, fährt die Gameserver als Docker-Container) | `ghcr.io/pterodactyl/wings:v1.12.0` |
hosts/game.md 41 prose-or-runtime **Eigener Monitoring-Stack** (grafana-oss, prometheus v3.0.0 mit 15 d Retention,
hosts/game.md 42 prose-or-runtime loki 3.1.1, promtail 3.1.1, node-exporter v1.8.1, cadvisor v0.49.2). Wird
hosts/game.md 43 prose-or-runtime perspektivisch von CFGMON abgelöst — siehe unten.
hosts/game.md 47 informational id-ok:GAME-01 GAME-01: Auf 9100/8080 des Hosts lauscht nichts, CFGMONs Scrape-Ziele auf der
hosts/game.md 55 informational net-ref:188.245.193.243;net-ref:178.25.213.70 | Port | von CFGMON (`188.245.193.243`, 2026-08-01) | vom Hausanschluss (`178.25.213.70`, 2026-08-02) |
hosts/game.md 57 prose-or-runtime | 80 / 443 | offen | offen (HTTP 404 bzw. 503) |
hosts/game.md 58 prose-or-runtime | **22** | **Timeout** | **offen** |
hosts/game.md 67 prose-or-runtime Es fehlte also keine Ausnahme für CFGMON. Seit 2026-08-02 liegt der Host im
hosts/game.md 68 informational net-ref:10.0.0.4 vSwitch (`10.0.0.4`); die Monitoring-Anbindung läuft künftig **per Push über das
hosts/game.md 69 informational net-ref:10.0.0.3 private Netz** — Alloy sammelt lokal ein und schiebt nach `10.0.0.3`, wodurch der
hosts/game.md 71 checked-ok issue-ok:management#2(opened);id-ok:GAME-01 k3s-Cluster. Details: [GAME-01](https://git.lab/axion1337.chat/management/-/issues/2).
hosts/game.md 80 prose-or-runtime historical-wording [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
hosts/game.md 83 checked-ok issue-ok:management#2(opened);id-ok:GAME-01 historical-wording - [GAME-01 — Host von CFGMON aus nicht erreichbar, 2 Targets down (⚠️ Silences bis 2026-08-04)](https://git.lab/axion1337.chat/management/-/issues/2)
hosts/game.md 84 checked-ok issue-ok:management#3(opened);id-ok:GAME-02 - [GAME-02 — `www.game.axion1337.de` ist überflüssig](https://git.lab/axion1337.chat/management/-/issues/3)
hosts/matrix.md 8 informational net-ref:49.13.132.245 | **IPv4** | `49.13.132.245` |
hosts/matrix.md 10 informational net-ref:10.0.0.2;net-ref:10.0.0.3 | **Privat** | `10.0.0.2` (`enp7s0`, dasselbe Hetzner-Netz wie CFGMON `10.0.0.3`) |
hosts/matrix.md 12 prose-or-runtime | **DNS** | `matrix.axion1337.de` **und** `matrix.axion1337.chat` zeigen auf dieselbe IP — ebenso `axion1337.chat` (Apex) und `account.axion1337.chat` (MAS). `axion1337.de` ist die ältere/Registrar-Do
hosts/matrix.md 15 informational runtime-path:~/.ssh/config **Inventarisiert** (direkter SSH-Zugriff, `~/.ssh/config`-Alias `axion1337`, Port 2248):
hosts/matrix.md 18 informational forge-repo:sorb/axion1337.chat-gitops [`sorb/axion1337.chat-gitops`](https://rohana.axion1337.de/sorb/axion1337.chat-gitops) - dieser
hosts/matrix.md 20 informational forge-repo:sorb/ThreadNet-Web;forge-repo:sorb/threadnet-call `sorb/ThreadNet-Web` (Element Web), `sorb/threadnet-call` (Element Call/LiveKit-Widget).
hosts/matrix.md 21 informational forge-repo:sorb/element-web;forge-repo:sorb/ThreadNet-Stack historical-wording `sorb/element-web` und `sorb/ThreadNet-Stack` sind **veraltete/abgelöste** Vorgänger-Repos
hosts/matrix.md 24 prose-or-runtime `ufw`: aktiv, Default Deny Incoming / Allow Outgoing, explizite Allow-Regeln für
hosts/matrix.md 25 prose-or-runtime 2248/tcp (SSH), 80/443, TURN/RTC-Ports. `unattended-upgrades` aktiv (Debian-Security +
hosts/matrix.md 26 informational id-no-issue:MATRIX-04 Debian-Origin), siehe [MATRIX-04](#matrix-04--host-level-pre-update-benachrichtigung-erledigt).
hosts/matrix.md 31 prose-or-runtime historical-wording [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
hosts/matrix.md 34 checked-ok issue-ok:management#1(opened);id-ok:MATRIX-03 - [MATRIX-03 — `www.matrix.axion1337.de` ist überflüssig](https://git.lab/axion1337.chat/management/-/issues/1)
hosts/matrix.md 36 informational id-no-issue:MATRIX-05 ## MATRIX-05 — node-exporter-DaemonSet in CrashLoopBackOff, Cluster-Scrape seit 2026-08-01 tot
hosts/matrix.md 38 prose-or-runtime **Status:** erledigt (2026-08-01 ~04:10, vom Mac aus mit kubectl/SSH)
hosts/matrix.md 41 informational image-ref:listen tcp 0.0.0.0:9100: bind: address already in use Teil 1 bestätigt per Pod-Log: `listen tcp 0.0.0.0:9100: bind: address already in use`;
hosts/matrix.md 43 informational image-ref:10.0.0.2:9100 via `10.0.0.2:9100` scrapt). Teil 2 erklärt: der Cluster-Service "funktionierte" nur in
hosts/matrix.md 49 checked-ok issue-ok:axion1337.chat-gitops#45(opened) historical-wording **Fix (gitops `228807f`, Weg A aus gitops#45):** HelmRelease + Alloy-Scrape entfernt,
hosts/matrix.md 52 checked-ok issue-ok:axion1337.chat-gitops#45(opened) [gitops#45](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/45).
hosts/matrix.md 61 prose-or-runtime | Messwert | Stand 2026-08-01 |
hosts/matrix.md 67 prose-or-runtime | `waiting_reason` / `ready` | `CrashLoopBackOff` / `0` |
hosts/matrix.md 73 informational image-ref:hostNetwork: true **Vermutete Ursache, nicht verifiziert:** Der Pod läuft mit `hostNetwork: true` und will
hosts/matrix.md 75 informational image-ref:10.0.0.2:9100 derselbe, den CFGMON als Job `k3s_host_node` direkt auf `10.0.0.2:9100` scrapt und der
hosts/matrix.md 86 prose-or-runtime ### Teil 2 — der Cluster-Scrape ist am 2026-08-01 01:19 UTC ausgefallen (akut)
hosts/matrix.md 96 informational net-ref:49.13.132.245 `hostNetwork`, sein Pod-IP ist die öffentliche `49.13.132.245`, dorthin zeigt der
hosts/matrix.md 103 informational image-ref:10.0.0.2:9100 | `10.0.0.2:9100` (privat) | offen, 2706 Metriken |
hosts/matrix.md 104 informational image-ref:49.13.132.245:9100 | `49.13.132.245:9100` (öffentlich) | **keine Antwort** |
hosts/matrix.md 105 informational image-ref:49.13.132.245:80;image-ref::443 | `49.13.132.245:80` / `:443` | offen — Host lebt |
hosts/matrix.md 110 informational image-ref:10.0.0.2:9100;image-ref:0.0.0.0:9100 1. Der Exporter bindet jetzt `10.0.0.2:9100` statt `0.0.0.0:9100`.
hosts/matrix.md 123 informational image-ref:10.0.0.2:9100 auf `10.0.0.2:9100` zeigen lassen. Beendet den Crashloop und erhält die enge Bindung ans
hosts/matrix.md 127 informational net-ref:0.0.0.0 Ebenfalls sauber, aber er bindet dann wieder `0.0.0.0` — also auch die öffentliche IP,
hosts/matrix.md 131 prose-or-runtime ### Nebenbefund — Job-Label kollidiert zwischen zwei Hosts
hosts/matrix.md 137 code-block up=1 instance=node-exporter:9100 -> CFGMON (Kernel 6.8.0-136-generic)
hosts/matrix.md 152 informational package-ref:@matrix.axion1337.de;id-no-issue:MATRIX-01 ### MATRIX-01 — Klären, ob der Server Mail als `@matrix.axion1337.de` verschickt · erledigt 2026-07-30
hosts/matrix.md 154 prose-or-runtime Für `matrix.axion1337.de` existiert der komplette IONOS-Mail-Satz: `MX mx00/mx01`,
hosts/matrix.md 157 prose-or-runtime offen, weil Matrix-Homeserver typischerweise Mail für Registrierung/Passwort-Reset
hosts/matrix.md 160 prose-or-runtime **Antwort, verifiziert per Config** (nicht nur vermutet) — direkt im IaC-Repo
hosts/matrix.md 161 informational forge-repo:sorb/axion1337.chat-gitops `sorb/axion1337.chat-gitops`, dem tatsächlich hier deployten Stand geprüft:
hosts/matrix.md 163 checked-ok path-ok:apps/production/custom-configs/synapse-values.yaml@axion1337.chat-gitops;image-ref:email: - `apps/production/custom-configs/synapse-values.yaml` — kein `email:`/`smtp_host`/
hosts/matrix.md 165 checked-ok path-ok:apps/production/custom-configs/mas-secret.yaml@axion1337.chat-gitops - `apps/production/custom-configs/mas-secret.yaml` (SOPS-entschlüsselt geprüft) — kein
hosts/matrix.md 166 prose-or-runtime `email`/`smtp`/`mailer`-Eintrag.
hosts/matrix.md 167 checked-ok path-ok:apps/production/element-server-suite.yaml@axion1337.chat-gitops - `apps/production/element-server-suite.yaml` (HelmRelease values) — dito, nichts.
hosts/matrix.md 174 informational id-ok:ZONE-02 [ZONE-02](../shared/zone-axion1337.md) an dieser Stelle entblockt.
hosts/matrix.md 179 informational id-no-issue:MATRIX-04 MATRIX-04 unten. Nutzt die ohnehin am Apex laufende echte IONOS-Mail-Infrastruktur,
hosts/matrix.md 182 informational id-no-issue:MATRIX-02 ### MATRIX-02 — Pusht per Remote-Write auf einen offenen Prometheus · erledigt 2026-07-30
hosts/matrix.md 185 informational net-ref:10.0.0.3;net-ref:10.0.0.2 getrennten Absendern aus - "CFGMON (`10.0.0.3`) und der k3s-Host (`10.0.0.2`)" - als wären
hosts/matrix.md 187 informational net-ref:10.0.0.2 selbst die private IP `10.0.0.2` (verifiziert per `ip -4 addr show` auf dem Host).
hosts/matrix.md 189 checked-ok path-ok:apps/monitoring/alloy-config.yaml@axion1337.chat-gitops Verifiziert in `apps/monitoring/alloy-config.yaml` (diesem Cluster): Der Remote-Write-Push
hosts/matrix.md 190 informational runtime-path:http://10.0.0.3:9090/api/v1/write;runtime-path:http://10.0.0.3:3100/... geht bereits an `http://10.0.0.3:9090/api/v1/write` und Loki an `http://10.0.0.3:3100/...` -
hosts/matrix.md 191 informational image-ref:188.245.193.243:9090 **private IP, nicht die öffentliche** `188.245.193.243:9090`. Von dieser Seite aus ist hier
hosts/matrix.md 194 informational id-ok:CFGMON-03 [CFGMON-03](cfgmon.md#cfgmon-03--prometheus-remote-write-und-loki-sind-öffentlich-ohne-auth)
hosts/matrix.md 197 informational id-no-issue:MATRIX-04 ### MATRIX-04 — Host-Level Pre-Update-Benachrichtigung · erledigt 2026-07-30
hosts/matrix.md 200 checked-ok path-ok:docs/deployment-guides/07-host-maintenance-notifications.md@axion1337.chat-gitops `docs/deployment-guides/07-host-maintenance-notifications.md` im gitops-Repo,
hosts/matrix.md 201 checked-ok issue-ok:management#24(opened) [Issue #24](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/24)):
hosts/matrix.md 202 prose-or-runtime historical-wording `unattended-upgrades` war bereits aktiv, neu ergänzt ist ein systemd-Timer
hosts/overmind.md 10 informational runtime-path:git.lab;net-ref:10.58.73.17 | **DNS (Lab)** | `git.lab` → `10.58.73.17` (TLS via Dokploy-Proxy, Zertifikate von der aXionLabs-CA: step-ca, 24h-Leaf, Intermediate bis 2035) |
hosts/overmind.md 11 prose-or-runtime | **CPU/RAM** | 14 Kerne, 30 Gi (Stand 2026-07-31: ~11 Gi verfügbar) |
hosts/overmind.md 12 prose-or-runtime | **Disk** | 444 G NVMe (~278 G frei, Stand 2026-07-31) |
hosts/overmind.md 13 informational runtime-path:/dev/kvm | **KVM** | `/dev/kvm` vorhanden — Basis für die Windows-Build-VM |
hosts/overmind.md 20 informational image-ref:external_url https://git.lab | GitLab CE 18.7.1 + Postgres 16 + Redis 7 | Dokploy-Stack `management-gitlabce` | `external_url https://git.lab`, SSH 2224; TLS terminiert der Dokploy-Proxy (GitLab-nginx lauscht nur :80) |
hosts/overmind.md 21 informational runtime-path:git.lab;image-ref:extra_hosts: git.lab:10.58.73.17;runtime-path:/etc/gitlab-runner/certs/git.lab.crt | gitlab-runner `lab-builder-1` (v18.7.0) | gleicher Stack, Service `gitlab-runner` | Docker-Executor + Socket, `concurrent = 1`. **Stolpersteine, live gefunden**: (1) Docker-interner DNS löst `git.la
hosts/overmind.md 23 FLAG runtime-path:registry.git.lab/axion1337.chat/vendor/windows:stable;runtime-path:git.lab/axion1337.chat/vendor/windows;image-ref:restart: "no";path-miss:docs/axion-runner.md path-miss:docs/axion-runner.md | Windows-Build-VM | Dokploy-Stack `windows-runner` (live seit 2026-07-31) | Image `registry.git.lab/axion1337.chat/vendor/windows:stable` (Eigenbau aus reviewtem Pin `7645a2b`, Vendor-Repo `git.lab/a
hosts/overmind.md 27 prose-or-runtime git.lab ist seit 2026-07-31 **kanonisch** für die gespiegelten Repos der Gruppe
hosts/overmind.md 28 prose-or-runtime `axion1337.chat` — Stand 2026-08-09 **sieben**: die sechs Produkt-Repos (ThreadNet-Web,
hosts/overmind.md 29 prose-or-runtime threadnet-call, thread-net-git, threadnet-operating, axion1337.chat-gitops, seit heute auch
hosts/overmind.md 30 prose-or-runtime `game-operating`) **und `management`, also dieses Repo**. Push-Mirrors nach rohana/Gitea,
hosts/overmind.md 31 prose-or-runtime direkte Gitea-Pushes tabu.
hosts/overmind.md 33 prose-or-runtime ⚠️ `gameserver` (achtes Projekt der Gruppe) hat **keinen** Mirror — offen in
hosts/overmind.md 34 checked-ok issue-ok:management#32(opened);issue-ok:management#32(opened) [management#32](https://git.lab/axion1337.chat/management/-/issues/32), dort liegt auf Gitea
hosts/overmind.md 37 prose-or-runtime Gitea bleibt: Flux-Source (via Mirror beliefert), Registry, Packages.
hosts/overmind.md 38 prose-or-runtime **Issues nicht mehr** — die sind am 2026-08-01/02 nach git.lab gewandert
hosts/overmind.md 39 prose-or-runtime ([ADR-0002](../decisions/0002-issues-und-management-ins-lab.md)). Die letzte Ausnahme,
hosts/overmind.md 40 informational forge-repo:sorb/management die Deploy-Übergabe-Issues auf dem Gitea-Tracker `sorb/management`, ist am 2026-08-02
hosts/overmind.md 41 checked-ok issue-ok:management#25(opened);issue-ok:management#26(closed);id-ok:LABNET-03 mit LABNET-03 zurückgebaut: beide umgezogen (#25, #26), der Tracker ist leer.
hosts/overmind.md 44 prose-or-runtime historical-wording *(Bis 2026-08-01 stand hier „Backlogs (dieses Repo, ungespiegelt)" — das Repo heißt
hosts/overmind.md 45 prose-or-runtime seit der Umwidmung zum Management-Repo `management` und wird seither gespiegelt,
hosts/overmind.md 48 informational id-no-issue:OVERMIND-01 ## OVERMIND-01 — GitLab-Container-Registry aktivieren, Images nach Konsument sortieren
hosts/overmind.md 50 prose-or-runtime **Status:** erledigt (2026-08-01)
hosts/overmind.md 53 informational runtime-path:registry.git.lab/axion1337.chat/threadnet-web/desktop-build:bullseye `registry.git.lab/axion1337.chat/threadnet-web/desktop-build:bullseye` (Job 386 grün,
hosts/overmind.md 55 prose-or-runtime damit grün durch (Job 398 - beweist auch den anonymen Pull des public Projekts durch
hosts/overmind.md 56 prose-or-runtime den Runner-Daemon). Die rohana-`REGISTRY_*`-Variablen bleiben nur noch für den
hosts/overmind.md 61 prose-or-runtime Lab-CI → rohana (Prod, Internet) → zurück ins Lab — koppelt Lab-Infrastruktur unnötig an
hosts/overmind.md 65 informational forge-repo:sorb/threadnet-web - **rohana (Gitea) behält**: `sorb/threadnet-web` (App-Image — Flux/Prod pullt es),
hosts/overmind.md 71 informational image-ref:registry_external_url 'https://registry.git.lab' 1. Omnibus-Config: `registry_external_url 'https://registry.git.lab'`,
hosts/overmind.md 74 informational runtime-path:registry.git.lab;net-ref:10.58.73.17 2. Lab-DNS: `registry.git.lab` → `10.58.73.17`
hosts/overmind.md 78 informational runtime-path:/etc/docker/certs.d/registry.git.lab/ca.crt `/etc/docker/certs.d/registry.git.lab/ca.crt` (Datei liegt schon als
hosts/overmind.md 79 informational runtime-path:/tmp/git.lab.crt `/tmp/git.lab.crt` vom Runner-Setup — kopieren reicht; kein Daemon-Restart nötig)
hosts/overmind.md 80 informational forge-repo:vendor/windows;runtime-path:registry.git.lab 5. CI-Umstellung: `vendor/windows` pusht nach `registry.git.lab` (Bonus: GitLabs
hosts/overmind.md 81 informational runtime-path:$CI_REGISTRY;runtime-path:$CI_JOB_TOKEN eingebaute `$CI_REGISTRY`/`$CI_JOB_TOKEN`-Auth statt Gruppen-Secrets),
hosts/overmind.md 82 prose-or-runtime `desktop_image`/`desktop_linux` in ThreadNet-Web folgen; Registry-Speicher liegt im
hosts/overmind.md 85 prose-or-runtime **Fortschritt 2026-07-31**: Punkte 14 umgesetzt (Registry live auf
hosts/overmind.md 86 informational runtime-path:registry.git.lab;forge-repo:vendor/windows `registry.git.lab`, 401/Bearer-Auth korrekt, CA-Trust auf dem Host); `vendor/windows`
hosts/overmind.md 87 prose-or-runtime pusht per `CI_JOB_TOKEN` in die Lab-Registry — verifiziert, Tags `5bc25447` + `stable`
hosts/overmind.md 90 prose-or-runtime **Nächster Schritt:** `element-desktop-build` von rohana in die Lab-Registry umziehen
hosts/overmind.md 91 prose-or-runtime (ThreadNet-Web-CI: `desktop_image`-Push-Ziel + `desktop_linux`-Image-Referenz) — bewusst
hosts/overmind.md 92 prose-or-runtime historical-wording zurückgestellt, bis kein Auto-Job das alte Image parallel referenziert (Reihenfolge:
hosts/overmind.md 95 informational id-ok:OVERMIND-02 ## OVERMIND-02 — Host-Ausfall 2026-07-31 ~19:15 lokal (NIC-Hang, Fix aktiv)
hosts/overmind.md 97 checked-ok issue-ok:management#4(opened) **Status:** Fix aktiv — die Beobachtung läuft als [Issue #4](https://git.lab/axion1337.chat/management/-/issues/4)
hosts/overmind.md 107 prose-or-runtime **Fix (2026-07-31, Overmind-Session):** `ethtool --set-eee eno1 eee off` live gesetzt
hosts/overmind.md 108 informational runtime-path:/etc/udev/rules.d/71-disable-eee-eno1.rules + persistente udev-Regel `/etc/udev/rules.d/71-disable-eee-eno1.rules` (greift bei
hosts/overmind.md 112 prose-or-runtime - ~~NIC-/BIOS-Firmware-Update 2.4.0.0 → 2.5.2.0~~ **erledigt** (Wartungsfenster
hosts/overmind.md 121 prose-or-runtime - 19:0519:12 — Provision-Job 409 grün (Rust 1.97.1 maschinenweit, Strawberry Perl,
hosts/overmind.md 137 prose-or-runtime 8G. Nach dem NIC-Fix lief die Kette durch: **desktop_windows Job 438 grün**
hosts/overmind.md 138 prose-or-runtime (2026-07-31 ~21:50 lokal, `Element Setup 1.12.17.exe`, 141 MB, unsigniert) —
hosts/overmind.md 139 checked-ok issue-ok:ThreadNet-Web#5(closed);issue-ok:ThreadNet-Web#6(opened) ThreadNet-Web#5 geschlossen, Folgethemen (Signing/Branding) in ThreadNet-Web#6.
hosts/overmind.md 141 prose-or-runtime (resumefähiges Prefetch-Skript im ThreadNet-Web-Repo, Jobs 415/416/424/431).
hosts/overmind.md 145 checked-ok issue-ok:ThreadNet-Web#5(closed) Weitere CI-Betriebsthemen laufen über die Projekt-Issues (ThreadNet-Web#5
hosts/overmind.md 146 checked-ok issue-ok:threadnet-call#1(closed);id-no-issue:CFGMON-11 Windows-Strecke, threadnet-call#1 npm-Ziel) und CFGMON-11 (Gitea-CI-Rückbau).
roadmap.md 3 prose-or-runtime > Stand 2026-08-06. Diese Datei hält die **Linien und die Reihenfolge**,
roadmap.md 6 prose-or-runtime > Die Gruppen-Milestones M1M4 sind angelegt, und seit 2026-08-06 hängt **jedes
roadmap.md 13 prose-or-runtime > „Härtung" werden soll oder M1 bewusst breit bleibt, ist **offen** — zu
roadmap.md 20 prose-or-runtime 1. **CVE-Meldeweg v2 live** — aggregierte Alarme deployen
roadmap.md 21 checked-ok issue-ok:management#25(opened) ([Übergabe-Issue #25](https://git.lab/axion1337.chat/management/-/issues/25)),
roadmap.md 23 checked-ok issue-ok:axion1337.chat-gitops#45(opened);issue-ok:axion1337.chat-gitops#45(opened) (Follow-up-Wunsch sorb). [gitops#45](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/45),
roadmap.md 24 checked-ok issue-ok:axion1337.chat-gitops#49(opened) [#49](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/49)
roadmap.md 26 checked-ok issue-ok:management#7(opened);id-ok:CFGMON-01 [CFGMON-01 (#7)](https://git.lab/axion1337.chat/management/-/issues/7) ⏰
roadmap.md 27 checked-ok issue-ok:management#10(opened);id-ok:CFGMON-09 3. **Backups wiederherstellen** — [CFGMON-09 (#10)](https://git.lab/axion1337.chat/management/-/issues/10)
roadmap.md 29 checked-ok issue-ok:axion1337.chat-gitops#25(opened);id-ok:CFGMON-03 4. K3s-API-Härtung (gitops#25, gemeinsame Session), CFGMON-03-Konsolen-Klärung.
roadmap.md 33 prose-or-runtime 1. ✅ **Site-to-Site-VPN** Hetzner ↔ Lab — erledigt 2026-08-01
roadmap.md 34 checked-ok issue-ok:management#12(closed) ([#12](https://git.lab/axion1337.chat/management/-/issues/12), ADR-0004 akzeptiert,
roadmap.md 35 checked-ok issue-ok:management#13(closed);id-ok:LABNET-03 zwei AARs). Ernte daraus: ✅ **LABNET-03 (#13)** — Übergabe-Issues sind am
roadmap.md 36 prose-or-runtime 2026-08-02 ins Lab gewandert, die Gitea-Ausnahme ist zurückgebaut.
roadmap.md 37 informational id-ok:GAME-01 2. GAME-01-Erreichbarkeit + vSwitch-Aufnahme —
roadmap.md 38 checked-ok issue-ok:management#2(opened) historical-wording [#2](https://git.lab/axion1337.chat/management/-/issues/2) (Silences bis 2026-08-04!)
roadmap.md 39 checked-ok issue-ok:axion1337.chat-gitops#46(opened) 3. Roadmap-/Board-Ausbau in GitLab (Rest von gitops#46: Milestones, Boards).
roadmap.md 40 checked-ok issue-ok:management#20(opened);id-ok:DOC-03 4. **Wiki-Oberfläche entscheiden** — [DOC-03 (#20)](https://git.lab/axion1337.chat/management/-/issues/20):
roadmap.md 45 checked-ok issue-ok:management#14(opened);id-ok:CFGMON-14 [CFGMON-14 (#14)](https://git.lab/axion1337.chat/management/-/issues/14) docker-Gruppe
roadmap.md 47 checked-ok issue-ok:management#15(opened);id-ok:CFGMON-15 [CFGMON-15 (#15)](https://git.lab/axion1337.chat/management/-/issues/15) Token-Hygiene,
roadmap.md 48 checked-ok issue-ok:management#16(closed);id-ok:LABNET-04 [LABNET-04 (#16)](https://git.lab/axion1337.chat/management/-/issues/16) Nacharbeiten.
roadmap.md 52 prose-or-runtime 1. **Rebrand fortsetzen** — Desktop-Client heißt seit 2026-08-02 **ThreadNet** und
roadmap.md 53 checked-ok issue-ok:ThreadNet-Web#10(closed);issue-ok:ThreadNet-Web#10(closed) trägt die eigene Marke ([ThreadNet-Web#10](https://git.lab/axion1337.chat/ThreadNet-Web/-/issues/10),
roadmap.md 54 prose-or-runtime Commit `6b0261d`). Offen: Web-Client-Icons/`brand`, About-Attribution.
roadmap.md 55 checked-ok issue-ok:ThreadNet-Web#6(opened) 2. Signing/Notarisierung (ThreadNet-Web#6) — ohne Signatur muss jeder Nutzer auf
roadmap.md 57 checked-ok issue-ok:management#22(opened);id-ok:BUILD-01 3. **macOS reproduzierbar bauen** — [BUILD-01 (#22)](https://git.lab/axion1337.chat/management/-/issues/22):
roadmap.md 59 checked-ok issue-ok:axion1337.chat-gitops#47(opened) 4. **Raidplaner** (gitops#47) — Lean-Experiment: HumHub-Kandidat evaluieren.
roadmap.md 60 checked-ok issue-ok:axion1337.chat-gitops#48(opened) 5. **Gäste-Invite-Workflow** (gitops#48) — Design steht (@concierge,
roadmap.md 62 checked-ok issue-ok:ThreadNet-Web#9(opened) 6. Zammad-artiges Feedback-Tool als spätere Ergänzung (ThreadNet-Web#9).
roadmap.md 66 checked-ok path-ok:vision/axion1337-chat.md@management - Rebranding-Runde (bewusst vertagt; Leitplanke in `vision/axion1337-chat.md`).
roadmap.md 79 checked-ok issue-ok:management#17(closed) **Der Einstieg ist erfolgt:** [Struktur-Workshop (#17)](https://git.lab/axion1337.chat/management/-/issues/17)
roadmap.md 80 prose-or-runtime am 2026-08-06 — Visionen geschärft, M1M4 angelegt, Board gesichtet, Kadenz und
roadmap.md 88 prose-or-runtime historical-wording Titel-Präfixe aus der Gitea-Migration sind am 2026-08-06 entfernt; zwei davon
roadmap.md 90 checked-ok issue-ok:ThreadNet-Web#7(opened);issue-ok:management#1(opened) (ThreadNet-Web#7 und #1, jeweils im Issue begründet).
shared/branding.md 8 prose-or-runtime Hier im `management`-Repo, weil es als einziges der beteiligten Repos
shared/branding.md 9 prose-or-runtime **gespiegelt** ist und jede Werkzeugentscheidung überlebt: Wird das
shared/branding.md 16 FLAG path-miss:static/img/ path-miss:static/img/ Schriftzug), erstellt von sorb. Sie liegen im Wiki-Repo unter `static/img/` und
shared/branding.md 28 prose-or-runtime Icon-Slots fällt das sofort auf. Korrigiert am 2026-08-06 auf 21 % oben wie unten.
shared/branding.md 37 informational tag-ok:v0.4.0 Elf Artefakte, alle aus einer Quelle (Stand 2026-08-06, `v0.4.0`):
shared/branding.md 41 checked-ok path-ok:apps/web/res/vector-icons/@ThreadNet-Web(dir) | `apps/web/res/vector-icons/` | 1024, 512, 180, 152, 144, 120, 24 px |
shared/branding.md 42 checked-ok path-ok:apps/desktop/build/icon.png@ThreadNet-Web | `apps/desktop/build/icon.png` | App-/Installer-Icon |
shared/branding.md 43 checked-ok path-ok:apps/desktop/build/icon.ico@ThreadNet-Web | `apps/desktop/build/icon.ico` | Windows, 7 Größen von 16 bis 256 |
shared/branding.md 44 checked-ok path-ok:apps/desktop/build/icon.icns@ThreadNet-Web | `apps/desktop/build/icon.icns` | macOS, via `iconutil` aus einem `.iconset` |
shared/branding.md 45 checked-ok path-ok:apps/desktop/build/icon.icon/Assets/element.png@ThreadNet-Web | `apps/desktop/build/icon.icon/Assets/element.png` | Layer des macOS-Icon-Composers |
shared/branding.md 47 checked-ok path-ok:vector-icons/1024.png@ThreadNet-Web Prüfen lässt sich die Gleichheit über die Prüfsumme von `vector-icons/1024.png`
shared/branding.md 48 checked-ok path-ok:build/icon.png@ThreadNet-Web gegen `build/icon.png` — weichen sie ab, ist eine Seite nachgezogen worden und die
shared/branding.md 55 prose-or-runtime Gruvbox Dark. Grundtöne `#282828` / `#1d2021`, Text `#ebdbb2`, Akzent `#bd93f9`,
shared/branding.md 63 prose-or-runtime Am 2026-08-02 in der BookStack-Oberfläche eingestellt und von dort extrahiert
shared/branding.md 65 prose-or-runtime der Coolors-Satz `#264653 · #2A9D8F · #E9C46A · #F4A261 · #E76F51`:
shared/branding.md 69 prose-or-runtime | Primäre Farbe | `#264653` | Charcoal |
shared/branding.md 74 prose-or-runtime | Seitenfarbe | `#77bb41` | Grün |
shared/branding.md 75 prose-or-runtime | Seitenentwurfsfarbe | `#e32400` | Rot |
shared/branding.md 86 prose-or-runtime je Theme vier Farben plus ein Schriftpaar. Sie sind seit 2026-08-02 **wörtlich
shared/branding.md 93 prose-or-runtime | Sunset Boulevard | `#264653` | dunkel | `#e76f51` · `#f4a261` · `#e9c46a` |
shared/branding.md 95 prose-or-runtime | Modern Minimalist | `#ffffff` | hell | `#36454f` · `#708090` · `#d3d3d3` |
shared/branding.md 103 prose-or-runtime ⚠️ **Ob ein Theme hell oder dunkel gemeint ist, steht nicht verlässlich in den
shared/branding.md 121 checked-ok path-ok:apps/desktop/axion1337/build.json@ThreadNet-Web;path-ok:apps/web/res/manifest.json@ThreadNet-Web | Betriebssystem, Startmenü, Installer, PWA | **ThreadNet** | `productName` in `apps/desktop/axion1337/build.json`, `name` in `apps/web/res/manifest.json` |
shared/branding.md 122 checked-ok path-ok:element-values.yaml@axion1337.chat-gitops;path-ok:apps/desktop/axion1337/config.json@ThreadNet-Web | in der Anwendung | **aXion1337.Chat** | `brand` in `element-values.yaml` (Prod) und `apps/desktop/axion1337/config.json` |
shared/branding.md 123 checked-ok path-ok:.env.production@threadnet-call | eingebettetes Call-Widget | **aXion1337.Chat** | `VITE_PRODUCT_NAME` in `.env.production` (threadnet-call) |
shared/branding.md 124 checked-ok path-ok:apps/authentik/authentik-blueprints.yaml@axion1337.chat-gitops | Anmeldeseite (Authentik) | **ThreadNet** | `branding_title` im Brand-Blueprint (gitops, `apps/authentik/authentik-blueprints.yaml`) |
shared/branding.md 130 checked-ok path-ok:vision/threadnet.md@management Die Leitplanke dahinter steht in [`vision/threadnet.md`](../vision/threadnet.md):
shared/branding.md 138 informational tag-ok:v0.4.0 **Attribution:** „ThreadNet — powered by Element" steht seit `v0.4.0` in
shared/branding.md 149 checked-ok path-ok:apps/production/custom-configs/element-values.yaml@axion1337.chat-gitops | Element/ThreadNet-Web | `apps/production/custom-configs/element-values.yaml` (gitops), `setting_defaults.custom_themes` | 17 Themes; Änderungen chirurgisch, **nie die YAML neu serialisieren** |
shared/branding.md 150 checked-ok path-ok:apps/web/res/vector-icons/@ThreadNet-Web(dir);path-ok:apps/web/res/manifest.json@ThreadNet-Web | Web-Icons + PWA | `apps/web/res/vector-icons/`, `apps/web/res/manifest.json` (ThreadNet-Web) | `theme_color` = `#ed4f4c`, die Markenfarbe — nicht Elements `#76CFA6` |
shared/branding.md 151 checked-ok path-ok:apps/desktop/build/@ThreadNet-Web(dir) | Desktop-Icons | `apps/desktop/build/` (ThreadNet-Web) | `.png`, `.ico`, `.icns`, Layer-Asset — alle aus derselben Quelle |
shared/branding.md 152 checked-ok path-ok:apps/desktop/axion1337/config.json@ThreadNet-Web | ThreadNet Desktop | `apps/desktop/axion1337/config.json` (ThreadNet-Web) | eigene Kopie derselben Themes — beim Ändern beide mitziehen |
shared/branding.md 153 FLAG path-miss:theme/sorbs-palette.md path-miss:theme/sorbs-palette.md | BookStack | *Settings → Customization*, getrennt für hell und dunkel | liegt in der Datenbank, **nicht im Repo** — schriftlich hier und in `theme/sorbs-palette.md` |
shared/branding.md 154 prose-or-runtime | BookStack (Feinschliff) | `theme/*.css` im Wiki-BookStack-Repo | nur Flächen, Text, Ränder — die sieben Farben oben gehören in die Oberfläche |
shared/branding.md 155 FLAG path-miss:src/css/custom.css path-miss:src/css/custom.css | Docusaurus-Wiki | `src/css/custom.css` (homelab/wiki) | bislang nur Akzentfarbe |
shared/branding.md 156 checked-ok path-ok:apps/web/res/themes/element/img/backgrounds/alpenglow.jpg@ThreadNet-Web;path-ok:SdkConfig.ts@ThreadNet-Web | Titelbild Login | `apps/web/res/themes/element/img/backgrounds/alpenglow.jpg` (ThreadNet-Web), gesetzt in `SdkConfig.ts` | siehe unten — Bilddatei kommt nur über einen Build in den Container |
shared/branding.md 157 checked-ok path-ok:apps/authentik/authentik-blueprints.yaml@axion1337.chat-gitops;issue-ok:axion1337.chat-gitops#55(opened) | Anmeldeseite Authentik | Brand-Blueprint in `apps/authentik/authentik-blueprints.yaml` (gitops) | Favicon und Hintergrund werden **von axion1337.chat referenziert**, nicht hochgeladen. **Logo ist no
shared/branding.md 161 prose-or-runtime Seit 2026-08-06 zeigt die Login-Seite ein Alpenglühen über einer Bergkette statt
shared/branding.md 173 prose-or-runtime Fotografen namentlich. Nur `en`/`de` anzupassen hätte in 29 Sprachen eine **falsche
shared/branding.md 179 informational runtime-path:https://axion1337.chat/themes/element/img/backgrounds/alpenglow.jpg `https://axion1337.chat/themes/element/img/backgrounds/alpenglow.jpg`. Wer das Bild im
shared/branding.md 185 checked-ok path-ok:vector-icons/512.png@ThreadNet-Web Der erste Versuch setzte `branding_logo` auf `vector-icons/512.png`. Ergebnis: das
shared/branding.md 190 prose-or-runtime Zurückgesetzt am 2026-08-06 auf Authentiks eigenes Logo. Ein Ersatz braucht eine
shared/branding.md 192 FLAG path-miss:threadnet-logo-wortmarke.png path-miss:threadnet-logo-wortmarke.png auch `threadnet-logo-wortmarke.png` (Bildmarke *über* Schriftzug). Offen in
shared/branding.md 204 FLAG path-miss:theme/sorbs-palette.md path-miss:theme/sorbs-palette.md `theme/sorbs-palette.md` im BookStack-Repo ist die betriebsnahe Kopie mit den
shared/branding.md 214 checked-ok path-ok:vision/threadnet.md@management;issue-ok:ThreadNet-Web#10(closed) (→ [`vision/threadnet.md`](../vision/threadnet.md), ThreadNet-Web#10).
shared/commit-zuordnung-2026-08-07.md 3 prose-or-runtime Am 2026-08-07 wurden die Zeitstempel aller Commits aus dieser Zusammenarbeit auf
shared/commit-zuordnung-2026-08-07.md 14 prose-or-runtime `backup-vor-rewrite`-Branches rekonstruiert und **paarweise verifiziert**: Für jedes
shared/commit-zuordnung-2026-08-07.md 26 prose-or-runtime Das Force-Push der umgezogenen Tags hat in ThreadNet-Web **drei Release-Pipelines
shared/commit-zuordnung-2026-08-07.md 27 informational tag-ok:v0.3.0;tag-ok:v0.4.0 neu gestartet** (`v0.3.0`, `v0.4.0`, `desktop-v1.12.17-clientscan`). Ein Tag ist
shared/commit-zuordnung-2026-08-07.md 33 informational image-ref:threadnet-web:v0.4.0;tag-ok:v0.4.0 Glück, keine Planung:** Mit stehender Tag-Protection wäre `threadnet-web:v0.4.0`
shared/commit-zuordnung-2026-08-07.md 37 checked-ok issue-ok:ThreadNet-Web#14(closed) ThreadNet-Web#14.
shared/commit-zuordnung-2026-08-07.md 42 prose-or-runtime ThreadNet-Web vor dem 2026-07-28 (3 Commits), gitops vor dem 2026-07-27 (147).
shared/commit-zuordnung-2026-08-07.md 47 prose-or-runtime ## gitops — 117 Commits
shared/commit-zuordnung-2026-08-07.md 169 prose-or-runtime ## management — 78 Commits
shared/commit-zuordnung-2026-08-07.md 252 prose-or-runtime ## ThreadNet-Web — 47 Commits
shared/commit-zuordnung-2026-08-07.md 304 prose-or-runtime ## threadnet-call — 9 Commits
shared/lab-netzwerk.md 10 checked-ok issue-ok:management#12(closed) > (Testreihe 17 in [#12](https://git.lab/axion1337.chat/management/-/issues/12)).
shared/lab-netzwerk.md 11 checked-ok issue-ok:management#11(closed) > Es gibt dazu **keine offenen Issues mehr** — auch die Restpunkte #11
shared/lab-netzwerk.md 12 checked-ok issue-ok:management#16(closed);id-ok:LABNET-04 > (MacBook-Profil) und #16 (LABNET-04, Feinschliff an den UniFi-Regeln) sind
shared/lab-netzwerk.md 13 prose-or-runtime > geschlossen. Alles Folgende ist **Bestand und Historie**, keine offene Arbeit.
shared/lab-netzwerk.md 15 prose-or-runtime **Zwei WireGuard-Zugänge (Stand 2026-08-01, beide gelöst/abgenommen):**
shared/lab-netzwerk.md 19 informational id-ok:LABNET-01 | Roadwarrior „Thore" | UDM | 51840 | 10.58.74.0/24 | Handy/MacBook ins Lab (LABNET-01) |
shared/lab-netzwerk.md 20 informational id-ok:LABNET-02 | Site-to-Site „Matrix" | UDM | 51841 | 10.58.75.0/24 | Hetzner-Netz 10.0.0.0/24 ↔ Lab (LABNET-02, [ADR-0004](../decisions/0004-site-to-site-vpn-hetzner-lab.md)) |
shared/lab-netzwerk.md 22 informational forge-repo:homelab/docs ### Verhältnis zu `homelab/docs`
shared/lab-netzwerk.md 30 prose-or-runtime Der Grund für die Doppelung ist der Mirror-Geltungsbereich aus der
shared/lab-netzwerk.md 35 informational forge-repo:homelab/docs darüber hinaus. **Bei Widerspruch gilt `homelab/docs`.**
shared/lab-netzwerk.md 39 informational id-ok:LABNET-01 ## LABNET-01 — WireGuard-Roadwarrior ins Lab kaputt (seit einigen Monaten)
shared/lab-netzwerk.md 42 checked-ok issue-ok:axion1337.chat-gitops#48(opened) Damit ist die Cutover-Voraussetzung für gitops#48 erfüllt.
shared/lab-netzwerk.md 46 informational net-ref:178.25.213.70 der Fritzbox ihre öffentliche IP nicht) → Fix: Endpunkt `178.25.213.70`;
shared/lab-netzwerk.md 52 informational net-ref:192.168.0.0/20 /20-Blöcke in 192.168.0.0/16; `192.168.0.0/20` verschluckte das VPN-Subnetz
shared/lab-netzwerk.md 53 prose-or-runtime 192.168.5.0/24 → Antworten an VPN-Clients endeten in der Bridge (SYN kam an,
shared/lab-netzwerk.md 55 prose-or-runtime fremde Hosts funktionierten) → Fix: **VPN-Subnetz auf 10.58.74.0/24** (Docker
shared/lab-netzwerk.md 58 checked-ok issue-ok:management#11(closed) **Restarbeiten:** MacBook-WG-Profil → [Issue #11](https://git.lab/axion1337.chat/management/-/issues/11). ⚠️ Latente Wiederholungsgefahr
shared/lab-netzwerk.md 59 informational net-ref:192.168.176.0/20 notiert: Overminds Docker-Pool deckt auch `192.168.176.0/20` ab = kollidiert mit
shared/lab-netzwerk.md 60 prose-or-runtime dem Fritzbox-Netz 192.168.178.x — aktuell folgenlos, aber bei künftigen Subnetz-
shared/lab-netzwerk.md 66 prose-or-runtime (192.168.178.20) als Endpunkt — die UDM kennt hinter der Fritzbox ihre
shared/lab-netzwerk.md 69 prose-or-runtime 178.25.213.70 ändern!).
shared/lab-netzwerk.md 73 prose-or-runtime einem Port). Fix: UDM-WG auf **51840** umgezogen + Freigabe angepasst.
shared/lab-netzwerk.md 77 checked-ok issue-ok:axion1337.chat-gitops#48(opened) blockierte gitops#48 (Erreichbarkeits-Entscheidung „WireGuard statt exponieren")
shared/lab-netzwerk.md 85 prose-or-runtime **Diagnose-Plan von VOR der Lösung** — ⚠️ abgearbeitet und überholt, steht hier
shared/lab-netzwerk.md 102 checked-ok issue-ok:axion1337.chat-gitops#48(opened) **Verwandt:** gitops#48 (Cutover erst nach Lösung), perspektivisch ersetzt ein
shared/lab-netzwerk.md 105 prose-or-runtime ## Zugehörige Issues — alle geschlossen
shared/lab-netzwerk.md 108 prose-or-runtime historical-wording [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
shared/lab-netzwerk.md 111 prose-or-runtime Zum Netz/VPN ist **nichts mehr offen** (Stand 2026-08-02):
shared/lab-netzwerk.md 115 checked-ok issue-ok:management#11(closed);id-ok:LABNET-01 | [#11](https://git.lab/axion1337.chat/management/-/issues/11) | LABNET-01-Rest — MacBook-WireGuard-Profil | geschlossen |
shared/lab-netzwerk.md 116 checked-ok issue-ok:management#12(closed);id-ok:LABNET-02 | [#12](https://git.lab/axion1337.chat/management/-/issues/12) | LABNET-02 — Site-to-Site-VPN (Design: [ADR-0004](../decisions/0004-site-to-site-vpn-hetzner-lab.md)) | geschlossen, Testreihe 17 proto
shared/lab-netzwerk.md 117 checked-ok issue-ok:management#16(closed);id-ok:LABNET-04 | [#16](https://git.lab/axion1337.chat/management/-/issues/16) | LABNET-04 — Feinschliff UniFi-Regeln | geschlossen |
shared/lab-netzwerk.md 120 FLAG issue-state:management#13=closed,text-says-opened issue-state:management#13 bleiben offen: [#13](https://git.lab/axion1337.chat/management/-/issues/13)
shared/lab-netzwerk.md 121 informational id-ok:LABNET-03 (LABNET-03, Rückbau der Gitea-Ausnahme für Übergabe-Issues — durch den Tunnel
shared/lab-netzwerk.md 123 checked-ok issue-ok:management#15(opened);id-ok:CFGMON-15 [#15](https://git.lab/axion1337.chat/management/-/issues/15) (CFGMON-15,
shared/lab-netzwerk.md 124 informational id-ok:LABNET-02 Widerruf der Einmal-Tokens aus der LABNET-02-Nacht — Credential-Hygiene, und der
shared/lab-netzwerk.md 125 prose-or-runtime Widerruf kann still einen Push-Mirror brechen, solange dessen hinterlegtes Token
shared/zone-axion1337.md 9 informational net-ref:217.160.0.140;image-ref:2001:8d8:100f:f000::2e9 | **Apex** | `217.160.0.140` / `2001:8d8:100f:f000::2e9` — IONOS-Hosting, nicht eigene Infrastruktur |
shared/zone-axion1337.md 18 informational runtime-path:rohana historical-wording | `rohana` | löst auf ❌ | gelöscht | **gelöscht** ⚠️ | fehlt | ⚠️ schwächer als vorher |
shared/zone-axion1337.md 20 informational runtime-path:~all | `matrix` | löst auf ❌ | IONOS ❌ | `~all` ❌ | fehlt | offen |
shared/zone-axion1337.md 22 informational runtime-path:~all;id-ok:ZONE-02 | **Apex** | legitim ✅ | IONOS (genutzt) | `~all` | **`p=none`** ⚠️ | siehe ZONE-02 |
shared/zone-axion1337.md 36 informational net-ref:217.160.0.140;image-ref:2001:8d8:100f:f000::2e9 | `axion1337.de` | `217.160.0.140` | `2001:8d8:100f:f000::2e9` | IONOS-Hosting |
shared/zone-axion1337.md 37 informational net-ref:217.160.0.140 | `www` | `217.160.0.140` | dito | IONOS-Hosting — hier ist `www` **legitim** |
shared/zone-axion1337.md 38 informational runtime-path:rohana;net-ref:188.245.193.243;image-ref:2a01:4f8:c17:93eb::1 | `rohana` | `188.245.193.243` | `2a01:4f8:c17:93eb::1` | CFGMON, Gitea |
shared/zone-axion1337.md 39 informational net-ref:188.245.193.243;image-ref:2a01:4f8:c17:93eb::1 | `selendis` | `188.245.193.243` | `2a01:4f8:c17:93eb::1` | CFGMON, Grafana |
shared/zone-axion1337.md 40 informational net-ref:157.90.155.206 | `game` | `157.90.155.206` | — | Pterodactyl |
shared/zone-axion1337.md 41 informational net-ref:49.13.132.245 | `matrix` | `49.13.132.245` | — | Matrix-Homeserver |
shared/zone-axion1337.md 42 informational net-ref:217.160.233.227;image-ref:2001:8d8:1000:30f5:… | `ftp` | `217.160.233.227` | `2001:8d8:1000:30f5:…` | IONOS-Default |
shared/zone-axion1337.md 43 informational id-ok:ZONE-01 | `www.rohana`, `www.selendis`, `www.game`, `www.matrix` | wie ohne `www` | teils | überflüssig, siehe ZONE-01 |
shared/zone-axion1337.md 46 informational runtime-path:rohana `autodiscover`), auf `rohana` und `game` nicht.
shared/zone-axion1337.md 50 checked-ok issue-ok:management#5(opened);id-ok:ZONE-01 Damit die Rezepte in [ZONE-01](https://git.lab/axion1337.chat/management/-/issues/5)
shared/zone-axion1337.md 57 prose-or-runtime kann `rechnung@rohana.axion1337.de` in den Umschlag schreiben. Die folgenden
shared/zone-axion1337.md 72 informational runtime-path:rohana Genau die richtige Aussage für `rohana`, `selendis`, `matrix` — die verschicken keine
shared/zone-axion1337.md 73 informational id-no-issue:MATRIX-01 Mail (für `matrix` verifiziert in MATRIX-01: weder Synapse noch MAS senden).
shared/zone-axion1337.md 99 prose-or-runtime ⚠️ **DMARC wird vererbt.** Fehlt `_dmarc.rohana`, gilt die Policy des
shared/zone-axion1337.md 101 checked-ok issue-ok:management#6(opened);id-ok:ZONE-02 ([ZONE-02](https://git.lab/axion1337.chat/management/-/issues/6)) — **damit erben
shared/zone-axion1337.md 129 informational runtime-path:rohana historical-wording **Real eingetreten:** Bei `rohana` sind MX und SPF gelöscht, die Ersatz-Records
shared/zone-axion1337.md 137 prose-or-runtime historical-wording [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
shared/zone-axion1337.md 140 checked-ok issue-ok:management#5(opened);id-ok:ZONE-01 - [ZONE-01 — IONOS-Default-Records bereinigen (Rezepte im Issue; rohana/selendis in Arbeit)](https://git.lab/axion1337.chat/management/-/issues/5)
shared/zone-axion1337.md 141 checked-ok issue-ok:management#6(opened);id-ok:ZONE-02 - [ZONE-02 — Apex-DMARC ist `p=none` und schützt nichts](https://git.lab/axion1337.chat/management/-/issues/6)
verfahren/README.md 10 prose-or-runtime | [aar/](aar/) | Abgelegte AARs, benannt `JJJJ-MM-TT-<vorhaben>.md` |
verfahren/README.md 12 checked-ok path-ok:textbloecke.md@management [`textbloecke.md`](textbloecke.md) hält kurze, kopierbare Blöcke, die man einer
verfahren/README.md 18 checked-ok path-ok:.gitlab/issue_templates/Deploy-Übergabe.md@management `.gitlab/issue_templates/Deploy-Übergabe.md` und erscheint beim Anlegen eines
verfahren/README.md 22 checked-ok path-ok:hosts/@management(dir);path-ok:shared/@ThreadNet-Web(dir),management(dir) historical-wording Abgrenzung zum Rest des Repos: `hosts/` und `shared/` halten **offene Punkte**,
verfahren/aar-vorlage.md 7 prose-or-runtime Was ist live und verifiziert. Was ist bewusst **nicht** live, und warum.
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 1 checked-ok issue-ok:axion1337.chat-gitops#47(opened) # AAR — CVE-Pipeline `gitops#47`
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 3 informational runtime-path:/opt/threadnet-operating/monitoring **Datum:** 2026-08-01 · **Host/Stack:** CFGMON, `/opt/threadnet-operating/monitoring`
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 9 prose-or-runtime **Live und verifiziert:** Scanner (29/29 Images gescannt), Exporter, Prometheus-Job
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 12 prose-or-runtime **Bewusst nicht live:** die Alarm-Zustellung nach Matrix. `room="security"` routet in
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 13 checked-ok path-ok:alertmanager.yml@threadnet-operating `alertmanager.yml` auf einen Null-Receiver (Commit `2b715ca` in
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 14 informational forge-repo:sorb/threadnet-operating `sorb/threadnet-operating`). Grund siehe Befund 1.
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 20 prose-or-runtime | 1 | Eine Matrix-Nachricht pro CVE. 126 CRITICAL landen in **einer** Alertmanager-Gruppe, nach 24 h kommen 1222 HIGH dazu. Dazu steht `save_state()` in `do_POST` hinter der Sende-Schleife: bricht ein
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 21 checked-ok issue-ok:axion1337.chat-gitops#52(opened) historical-wording | 2 | `docker compose up -d` aktiviert geänderte Configs nicht. Einzeldatei-Mounts hängen am Inode, `git pull` benennt um. Prometheus lief nach dem Deploy mit alten Regeln — `promtool` fand 9, Prometh
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 22 checked-ok issue-ok:axion1337.chat-gitops#51(opened) | 3 | `TrivyScanStale` kann ein nie erfolgreich gescanntes Image nicht melden — ohne ersten Report existiert keine Serie, an der `time() - trivy_last_scan_timestamp` hängen könnte | LOW | notiert in `
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 23 checked-ok image-ref:except: continue;issue-ok:axion1337.chat-gitops#51(opened) | 4 | Der Exporter prunt den First-Seen-State bei **jedem** Scrape. Ein transienter Lesefehler (`except: continue`) löscht die Erstfund-Zeitstempel des Targets dauerhaft | LOW | notiert in `gitops#51`
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 27 informational image-ref:goauthentik/server:2026.2.3 1316 LOW. Spitzenreiter `goauthentik/server:2026.2.3` mit 369 CRITICAL+HIGH.
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 34 informational runtime-path:rohana.axion1337.de | Private Registry `rohana.axion1337.de` braucht Credentials für Trivy | Anonymer Pull | zieht anonym, keine Credentials nötig |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 35 checked-ok path-ok:hosts/game.md@management | Zwei down-Targets könnten Folge des Deploys sein | `avg_over_time(up[3h])` | 0.00 — schon 3 h vorher tot, in `hosts/game.md` erfasst |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 58 checked-ok issue-ok:axion1337.chat-gitops#51(opened) Richtungsentscheidung zu `gitops#51`, bevor die Alarme scharf gehen: entweder
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 59 checked-ok path-ok:matrix-alerts.py@threadnet-operating `matrix-alerts.py` auf eine Sammelnachricht pro Webhook-Batch umbauen (die fünf
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 65 informational image-ref:coturn/coturn:latest Nebenbefund ohne Handlungsbedarf von hier: `coturn/coturn:latest` ist das einzige
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 66 checked-ok issue-ok:axion1337.chat-gitops#47(opened) ungepinnte Image (bereits in `gitops#47` notiert).
verfahren/aar/2026-08-01-labnet02-cfgmon.md 1 checked-ok forge-repo:sorb/management#2;issue-ok:management#2(opened);id-ok:LABNET-02 # AAR — LABNET-02, CFGMON-Seite (Übergabe `sorb/management#2`)
verfahren/aar/2026-08-01-labnet02-cfgmon.md 8 informational runtime-path:/etc/wireguard/lab.conf **Live:** `wireguard-tools` installiert, Keypair erzeugt, `/etc/wireguard/lab.conf`
verfahren/aar/2026-08-01-labnet02-cfgmon.md 10 informational net-ref:10.58.75.2/24 `enabled`. Interface `lab` steht mit `10.58.75.2/24`, Routen und Forward-Regeln aktiv,
verfahren/aar/2026-08-01-labnet02-cfgmon.md 11 informational net-ref:10.58.73.1;runtime-path:~lab Split-DNS gesetzt (`10.58.73.1`, `~lab`).
verfahren/aar/2026-08-01-labnet02-cfgmon.md 28 prose-or-runtime historical-wording | 1 | `enp7s0` seit 18:11 DOWN, Privatnetz-Route weg. Auslöser war die Hetzner-Range-Umstellung /16 → /8: die private NIC wurde ab- und neu angehängt (`renamed from eth1`), danach wurde `hc-net-ifup@e
verfahren/aar/2026-08-01-labnet02-cfgmon.md 29 FLAG image-ref:Status: inactive;path-miss:lab.conf path-miss:lab.conf | 2 | ufw ist auf CFGMON **inaktiv** (`Status: inactive`, `ENABLED=no`). Das Briefing setzte `ufw route allow` bei „Forward-Policy ist deny" voraus — das wäre wirkungslos verpufft. Die DROP-Policy kom
verfahren/aar/2026-08-01-labnet02-cfgmon.md 30 prose-or-runtime | 3 | `sudo` ist aus einer Agenten-Session nicht bedienbar (kein TTY). Die Schritte liefen über die **docker-Gruppenmitgliedschaft** des Kontos (privilegierter Container + `nsenter`) — das ist root-äq
verfahren/aar/2026-08-01-labnet02-cfgmon.md 31 informational net-ref:10.58.73.0/24 historical-wording | 4 | Hetzner-Range war tatsächlich /16 — unabhängig aus der Routing-Tabelle verifiziert (`10.0.0.0/16 via 10.0.0.1 dev enp7s0`), `10.58.73.0/24` lag außerhalb | LOW | bestätigt, Umstellung durch sorb
verfahren/aar/2026-08-01-labnet02-cfgmon.md 38 prose-or-runtime | Split-Tunnel biegt den Default-Weg um | `ip route get 8.8.8.8` | unverändert über `eth0`; öffentliches DNS und HTTPS funktionieren |
verfahren/aar/2026-08-01-labnet02-cfgmon.md 42 prose-or-runtime **Nicht verifiziert:** ob der k3s-Host selbst läuft. Er ist unerreichbar, *weil* CFGMON
verfahren/aar/2026-08-01-labnet02-cfgmon.md 65 informational net-ref:10.58.75.2 eintragen (`Networks behind client = 10.0.0.0/24`, Client-IP `10.58.75.2`):
verfahren/aar/2026-08-01-labnet02-cfgmon.md 74 informational net-ref:10.0.0.3 1. `ip -brief addr show enp7s0` → UP mit `10.0.0.3`
verfahren/aar/2026-08-01-labnet02-cfgmon.md 75 informational net-ref:10.0.0.0/8;runtime-path:/16 2. `ip route | grep '^10\.'` → neue Route sollte `10.0.0.0/8` zeigen, nicht mehr `/16`
verfahren/aar/2026-08-01-labnet02-cfgmon.md 85 prose-or-runtime **Entscheidung offen:** ob der Root-Zugang über die docker-Gruppe so bleiben soll
verfahren/aar/2026-08-01-labnet02-cfgmon.md 93 checked-ok issue-ok:management#2(opened) AAR-Kommentar an `management#2` („Tunnel auf CFGMON ist active+enabled", daher komme
verfahren/aar/2026-08-01-labnet02-cfgmon.md 115 informational runtime-path:/etc/systemd/system/wg-quick@lab.service.d/10-after-docker.conf 1. Drop-in `/etc/systemd/system/wg-quick@lab.service.d/10-after-docker.conf` mit
verfahren/aar/2026-08-01-labnet02-cfgmon.md 118 prose-or-runtime `PostUp = iptables -N DOCKER-USER 2>/dev/null || true` — Rückfall, falls Docker
verfahren/aar/2026-08-01-labnet02-cfgmon.md 121 prose-or-runtime Verifiziert: `systemctl show -p After` listet `docker.service`, `restart` läuft sauber
verfahren/aar/2026-08-01-labnet02-cfgmon.md 123 prose-or-runtime historical-wording korrekt ab, keine Dubletten bei Neustarts). **Nicht verifiziert:** das Verhalten bei
verfahren/aar/2026-08-01-labnet02-cfgmon.md 143 checked-ok issue-ok:management#2(opened) (`oFRxWU…Z0o=`, Kommentar 399 in `management#2`) **gehört zu keinem Server auf der
verfahren/aar/2026-08-01-labnet02-cfgmon.md 145 informational id-ok:LABNET-02 historical-wording `wgsrv3 = sVuM0pgT…ZyM=` (LABNET-02, 51841). Jede Initiation von CFGMON war damit
verfahren/aar/2026-08-01-labnet02-cfgmon.md 158 informational runtime-path:~lab.de;runtime-path:~axion1337.de;runtime-path:~axionlabs.de;net-ref:10.58.73.1 `~lab.de`, `~axion1337.de`, `~axionlabs.de` über `10.58.73.1`; aXionLabs-Root-CA
verfahren/aar/2026-08-01-labnet02-cfgmon.md 159 prose-or-runtime im Truststore (verifiziert gegen die git.lab-Kette und per Fingerprint-Abgleich
verfahren/aar/2026-08-01-labnet02-cfgmon.md 160 prose-or-runtime gegen die step-ca, Port 666). Voller Dienst-Neustart aus der Datei verifiziert
verfahren/aar/2026-08-01-labnet02-cfgmon.md 170 prose-or-runtime **Offen nach diesem Nachtrag:** Testreihe 17 (inkl. Gateway-Rolle), Reboot-Beweis,
verfahren/aar/2026-08-01-labnet02-cfgmon.md 171 informational forge-repo:sorb/buffer Schlüsselrotation (Client-Private-Key lief beim Bootstrap über `sorb/buffer` auf
verfahren/aar/2026-08-01-labnet02-cfgmon.md 172 prose-or-runtime rohana; Repo wird laut sorb vernichtet, Rotation danach trotzdem empfohlen),
verfahren/aar/2026-08-01-labnet02-cfgmon.md 173 FLAG path-miss:lab.conf path-miss:lab.conf Repo-Zuhause für `lab.conf` + systemd-Drop-in (zurückgestellt bis nach der
verfahren/aar/2026-08-01-labnet02-cfgmon.md 181 informational runtime-path:git.lab Split-DNS-Zonen aktiv; `git.lab` auflösbar und pingbar. Damit sind der Bootfix
verfahren/aar/2026-08-01-labnet02-cfgmon.md 183 prose-or-runtime aus Nachtrag 2 im Ernstfall verifiziert. Aus der Offen-Liste von Nachtrag 2
verfahren/aar/2026-08-01-labnet02-lab.md 1 informational id-ok:LABNET-02 # AAR — LABNET-02, Lab-Seite (UDM/UniFi, Einzäunung und Abnahme)
verfahren/aar/2026-08-01-labnet02-lab.md 5 checked-ok issue-ok:management#12(closed) **Gegenstück:** [CFGMON-Seite](2026-08-01-labnet02-cfgmon.md) · Issue: `management#12`
verfahren/aar/2026-08-01-labnet02-lab.md 14 checked-ok issue-ok:management#12(closed) Testreihe 17 vollständig bestanden (Protokolle in `management#12`), zusätzlich der
verfahren/aar/2026-08-01-labnet02-lab.md 23 informational net-ref:10.0.0.0/24 UDM (Port 51841), **CFGMON als Client/Initiator**, `10.0.0.0/24` als Netz hinter dem
verfahren/aar/2026-08-01-labnet02-lab.md 34 informational net-ref:10.58.75.0/24;net-ref:10.0.0.0/24 | 1 | **„Server = WireGuard Server X" erfasst in der Policy Engine nur das Tunnel-Subnetz**, nicht die über „Networks Behind Client" angehängten Netze. Vier Korrekturrunden lang blieben die Regeln des
verfahren/aar/2026-08-01-labnet02-lab.md 38 informational net-ref:10.0.0.0/16;net-ref:10.58.73.0/24;net-ref:10.0.0.0/8 | 5 | Hetzner-Netz-Range `10.0.0.0/16` deckte das Routen-Ziel `10.58.73.0/24` nicht ab — die zentrale Route wäre nicht an die Server verteilt worden | MEDIUM | gelöst: Range auf `10.0.0.0/8` erweitert
verfahren/aar/2026-08-01-labnet02-lab.md 43 informational net-ref:10.58.75.2;net-ref:10.0.0.3 historical-wording `10.58.75.2` (Tunnel) *und* `10.0.0.3` (Hetzner-Netz) erreichbar. Vom Lab aus war die
verfahren/aar/2026-08-01-labnet02-lab.md 44 prose-or-runtime erste Adresse geblockt, die zweite offen — dieselbe Maschine, dieselben Dienste,
verfahren/aar/2026-08-01-labnet02-lab.md 75 prose-or-runtime - IoT- und Arbeit-Sperren sind **nicht verifiziert** — keine Gegenstelle in diesen
verfahren/aar/2026-08-01-labnet02-lab.md 77 informational id-ok:LABNET-02 - Regel-Beschreibungsfelder in UniFi sind leer; Verweis auf LABNET-02/ADR-0004 fehlt.
verfahren/aar/2026-08-01-labnet02-lab.md 80 prose-or-runtime Gitea-Ausnahme in ADR-0002/README/CLAUDE.md zurückbauen.
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 12 informational runtime-path:axionwiki.lab | Docusaurus-Wiki unter `axionwiki.lab` | ✅ live, eigenes Zertifikat |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 13 informational forge-repo:homelab/wiki-bookstack | BookStack als Gegenentwurf (`homelab/wiki-bookstack`) | ✅ live unter `bookstack.lab` |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 14 prose-or-runtime | 11 neue Themes (aXion1337 Light + 10 Paletten) | ✅ Web live, in allen Clients — ⚠️ **Paletten waren falsch**, korrigiert → [Nachtrag](#nachtrag-2026-08-02--die-paletten-waren-erfunden) |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 15 prose-or-runtime | Desktop-Clients Linux/Windows/macOS | ✅ Release `desktop-1.12.17-themes` |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 22 checked-ok path-ok:docs/@ThreadNet-Web(dir),axion1337.chat-gitops(dir),threadnet-call(dir);path-ok:docs/@ThreadNet-Web(dir),axion1337.chat-gitops(dir),threadnet-call(dir);issue-ok:management#19(opened) historical-wording | 1 | **Drei auseinandergelaufene Dokustände**: Gitea-Wiki-Repo (gepflegt, nicht gespiegelt), `wiki`-Branch im gitops-Repo (Mai-Abzug von `docs/`), `docs/` im main. Das Wiki enthielt sachlich Falsches
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 24 FLAG runtime-path:/favicon.ico;path-miss:text/html path-miss:text/html | 3 | **`/favicon.ico` lieferte HTTP 200 mit `text/html`** — die nginx-`try_files`-Kette gab die 404-Seite mit Erfolgsstatus aus. Safari hielt das Icon für vorhanden und zeigte den Buchstaben-Fallback
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 27 checked-ok path-ok:res/vector-icons/@ThreadNet-Web(dir);path-ok:manifest.json@ThreadNet-Web | 6 | **Nur macOS bekam neue Icons** — Windows (`.ico`) und Web (`res/vector-icons/`, `manifest.json`) blieben auf Element | MEDIUM | gelöst, `c51b681` |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 29 checked-ok issue-ok:management#21(opened) historical-wording | 8 | **Windows-Build-VM war weg** (`No such container`) — der CI-Job kann sie nur starten, nicht anlegen | MEDIUM | umgangen (manueller Neustart), Optionen in #21 |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 30 checked-ok issue-ok:management#22(opened) | 9 | **macOS-Build braucht Xcode** für das DMG (`actool`) und Rust für die nativen Module | MEDIUM | umgangen (electron-builder 25 fürs ZIP, `hdiutil` fürs DMG), dauerhaft offen in #22 |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 67 prose-or-runtime Release-Notes stand ein Link auf ein Issue, das ich nie angelegt hatte (fiel
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 79 informational runtime-path:/login | 3 | **Healthcheck auf `/login` schlug fehl → Container `unhealthy` → Traefik überspringt ihn komplett** | Default-Zertifikat + leeres 404, **identisch zum Bild eines fehlenden Netzes** |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 86 prose-or-runtime im laufenden Container verifiziert wurde, ist damit kein Sicherheitsnetz, sondern
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 87 informational runtime-path:/status;runtime-path:/login ein Risiko. Ich hatte ihn zweimal ungeprüft geändert (`/status` → `/login`).
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 91 informational runtime-path:/opt `/opt`-Pfad — und die CI braucht `VARIANT_PATH`, sonst greift die Variante gar
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 98 prose-or-runtime Test, ein Issue-Verweis ohne Existenzprüfung, ein Icon-Skript ohne Blick aufs
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 104 checked-ok issue-ok:management#20(opened);id-ok:DOC-03 - **Entscheidung DOC-03 (#20)**: Docusaurus oder BookStack — beide laufen jetzt,
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 109 checked-ok issue-ok:management#22(opened);issue-ok:management#21(opened) - **macOS reproduzierbar bauen** (#22), **Windows-VM-Robustheit** (#21).
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 111 checked-ok issue-ok:ThreadNet-Web#6(opened) Signing (ThreadNet-Web#6) — ohne Signatur bleibt für Nutzer auf macOS der
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 118 prose-or-runtime historical-wording **Was war.** Die zehn Themes aus dem Rollout trugen nicht die Farben aus Anthropics
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 126 prose-or-runtime **Warum es nicht auffiel.** Erfundene Farben sehen nicht falsch aus. Ein Theme
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 131 prose-or-runtime **Falle für die nächste Runde.** Ob ein Theme hell oder dunkel gemeint ist, steht
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 135 checked-ok path-ok:shared/branding.md@management stehen in [`shared/branding.md`](../../shared/branding.md).
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 144 prose-or-runtime Sunset-Boulevard-Palette sind bis auf zwei Ziffern identisch (`#e76e51`/`#e76f51`,
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 145 prose-or-runtime `#f3a261`/`#f4a261`) — unabhängig voneinander auf demselben Coolors-Satz gelandet.
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 147 prose-or-runtime **Korrigiert:** gitops `b10b607` (Web, live verifiziert) · ThreadNet-Web `80fcf6c`
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 150 FLAG path-miss:resources/webapp.asar path-miss:resources/webapp.asar stecken in `resources/webapp.asar`. Abgestimmt so belassen; der nächste reguläre
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 151 checked-ok image-ref:status:wartet;issue-ok:ThreadNet-Web#11(opened) historical-wording Build zieht die Korrektur mit (nachgehalten in ThreadNet-Web#11, `status:wartet`).
verfahren/aar/2026-08-09-refinement-und-betrieb.md 3 prose-or-runtime **Datum:** 2026-08-09 · **Host/Stack:** git.lab, Gitea, K3s-Cluster (Authentik,
verfahren/aar/2026-08-09-refinement-und-betrieb.md 9 prose-or-runtime **Live und verifiziert:**
verfahren/aar/2026-08-09-refinement-und-betrieb.md 17 prose-or-runtime - 251 Commits über vier Repos auf 12:00-UTC-Zeitstempel umgeschrieben, Force-
verfahren/aar/2026-08-09-refinement-und-betrieb.md 18 prose-or-runtime gepusht, Mirrors und Flux verifiziert synchron
verfahren/aar/2026-08-09-refinement-und-betrieb.md 20 prose-or-runtime vorher unbekannte Repos ohne Push-Mirror
verfahren/aar/2026-08-09-refinement-und-betrieb.md 21 prose-or-runtime - `game-operating` gespiegelt und secret-frei verifiziert (Coolify-
verfahren/aar/2026-08-09-refinement-und-betrieb.md 26 prose-or-runtime **Bewusst nicht live:**
verfahren/aar/2026-08-09-refinement-und-betrieb.md 33 prose-or-runtime - `gameserver` weiterhin ohne Mirror — zwei Repos gleichen Namens mit
verfahren/aar/2026-08-09-refinement-und-betrieb.md 40 prose-or-runtime | 1 | `matrix-recovery-flow`-Blueprint scheiterte seit Tagen bei jedem Lauf, während Flux grün meldete | HIGH | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 42 checked-ok path-ok:develop/config.json@ThreadNet-Web | 3 | Web-Client sendete Fehlerberichte an `rageshakes.element.io` — die Desktop-Bereinigung vom 2026-08-01 hatte den Web-Build nie erreicht, weil der beim Bauen Elements eigene `develop/config.json`
verfahren/aar/2026-08-09-refinement-und-betrieb.md 43 checked-ok issue-ok:management#32(opened) | 4 | `game-operating` und `gameserver` ohne Push-Mirror; bei `gameserver` liegt auf Gitea ein anderer Stand als auf git.lab | MEDIUM | `game-operating` behoben, `gameserver` offen (management#32) |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 44 prose-or-runtime | 5 | Nach dem Privat-Stellen von `game-operating` auf Gitea übersprang die Stillstandsprüfung den Mirror-Abgleich klaglos, statt es als Befund zu werten | MEDIUM | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 46 prose-or-runtime | 7 | Gitops-Leitfaden 04 nannte 7 Themes mit teils erfundenen Namen (`Gruvbox Dark`, `Wal`); tatsächlich 17 | LOW | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 47 prose-or-runtime | 8 | threadnet-call-Doku beschrieb einen manuellen npm-Publish, der seit 2026-08-06 automatisiert läuft | LOW | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 48 checked-ok path-ok:overmind.md@management | 9 | `overmind.md` nannte „sechs gespiegelte Repos" — nach dem Mirror für `game-operating` sind es sieben | LOW | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 50 checked-ok issue-ok:ThreadNet-Web#14(closed);tag-ok:v0.4.0 historical-wording | 11 | Tag-Push (Force, für die Historien-Anonymisierung) löste in ThreadNet-Web drei Release-Pipelines neu aus; nur weil die geschützten Registry-Variablen im Zeitfenster fehlten, wurde `v0.4.0` nich
verfahren/aar/2026-08-09-refinement-und-betrieb.md 54 prose-or-runtime - **`game-operating` öffentlich auf Gitea** — Secret-Scan über alle fünf
verfahren/aar/2026-08-09-refinement-und-betrieb.md 60 FLAG issue-miss:management#60 issue-miss:management#60 - **Meine erste Diagnose zu #60** („Passwort-Wiederherstellung vermutlich tot")
verfahren/aar/2026-08-09-refinement-und-betrieb.md 68 checked-ok issue-ok:management#1(opened) Flux-Status.** Blueprint-Fehler #1/#2 waren nur so sichtbar — Flux, die
verfahren/aar/2026-08-09-refinement-und-betrieb.md 69 prose-or-runtime ConfigMap und der Cluster-Zustand insgesamt meldeten durchgehend grün.
verfahren/aar/2026-08-09-refinement-und-betrieb.md 71 checked-ok issue-ok:management#2(opened) verdeckten Fehler #2 erst zugänglich gemacht — der reguläre Weg (Worker-Log)
verfahren/aar/2026-08-09-refinement-und-betrieb.md 74 checked-ok issue-ok:management#3(opened) zu glauben** hat Befund #3 aufgedeckt — die Annahme im Issue betraf nur den
verfahren/aar/2026-08-09-refinement-und-betrieb.md 75 checked-ok path-ok:config.json@ThreadNet-Web Desktop-Client, `config.json` auf dem Web-Server sagte etwas anderes.
verfahren/aar/2026-08-09-refinement-und-betrieb.md 77 checked-ok issue-ok:management#4(opened) Befund #4 im ersten Lauf gefunden — eine dynamische Projektliste statt einer
verfahren/aar/2026-08-09-refinement-und-betrieb.md 78 prose-or-runtime im Code gepflegten hat zwei Repos zutage gebracht, die niemand auf dem
verfahren/aar/2026-08-09-refinement-und-betrieb.md 81 prose-or-runtime Fehlmessung beim `game-operating`-Check aufgedeckt, bevor sie als „sauber"
verfahren/aar/2026-08-09-refinement-und-betrieb.md 84 prose-or-runtime 251 Paaren über Tree *und* Commit-Nachricht verifiziert, keine Annahme.
verfahren/aar/2026-08-09-refinement-und-betrieb.md 90 checked-ok issue-ok:management#32(opened) - **`gameserver`-Mirror** — Standklärung nötig, management#32
verfahren/aar/2026-08-09-refinement-und-betrieb.md 91 prose-or-runtime - **Stillstandsprüfung Authentik-Teil** — `AUTHENTIK_URL`/`AUTHENTIK_TOKEN`,
verfahren/aar/2026-08-09-refinement-und-betrieb.md 92 checked-ok issue-ok:management#31(opened) management#31, bewusst aufgeschoben (sorb, 2026-08-09)
verfahren/aar/2026-08-09-refinement-und-betrieb.md 94 checked-ok issue-ok:ThreadNet-Web#9(opened) entschieden, ThreadNet-Web#9
verfahren/aar/2026-08-09-refinement-und-betrieb.md 100 checked-ok path-ok:decisions/@management(dir) Lehre aus der Retro, in `decisions/` dokumentiert
verfahren/deploy-uebergabe.md 6 checked-ok issue-ok:axion1337.chat-gitops#47(opened) Eingeführt am 2026-08-01 nach dem Deploy der CVE-Pipeline (`gitops#47`), siehe
verfahren/deploy-uebergabe.md 11 prose-or-runtime 1. Wer baut, öffnet **auf git.lab** ein Issue aus der Vorlage **Deploy-Übergabe**
verfahren/deploy-uebergabe.md 12 checked-ok path-ok:.gitlab/issue_templates/Deploy-Übergabe.md@management (`.gitlab/issue_templates/Deploy-Übergabe.md`, im Feld *Description template*).
verfahren/deploy-uebergabe.md 51 checked-ok issue-ok:axion1337.chat-gitops#52(opened) `--force-recreate`. Details: `gitops#52`.
verfahren/deploy-uebergabe.md 55 prose-or-runtime historical-wording Datensammlung und Außenwirkung lassen sich fast immer getrennt scharf schalten.
verfahren/deploy-uebergabe.md 71 prose-or-runtime - [ ] Nach dem Deploy **im Container** verifiziert, dass die neue Config aktiv ist
verfahren/deploy-uebergabe.md 83 prose-or-runtime direkt auf dem Gitea-Mirror und werden vom nächsten Mirror-Lauf **kommentarlos
verfahren/deploy-uebergabe.md 89 informational runtime-path:https://rohana.axion1337.de/sorb/<repo>/commit/<sha>.patch `https://rohana.axion1337.de/sorb/<repo>/commit/<sha>.patch` ziehen
verfahren/deploy-uebergabe.md 92 prose-or-runtime 3. **CFGMON** vor dem nächsten Pull: `git fetch && git reset --hard origin/main`
verfahren/issue-migration/README.md 1 checked-ok issue-ok:axion1337.chat-gitops#48(opened) # Issue-Migration Gitea → GitLab (gitops#48)
verfahren/issue-migration/README.md 3 checked-ok path-ok:migrate.py@management `migrate.py` überführt Issues (offen **und** geschlossen, inkl. Kommentare)
verfahren/issue-migration/README.md 4 prose-or-runtime eines Gitea-Repos in ein bestehendes GitLab-Projekt. Einmal-Werkzeug für den
verfahren/issue-migration/README.md 5 FLAG issue-miss:management#48 issue-miss:management#48 #48-Cutover; hier versioniert wegen Reproduzierbarkeit.
verfahren/issue-migration/README.md 10 informational image-ref:<!-- gitea-migration: OWNER/REPO#N --> - **Idempotent** über Marker `<!-- gitea-migration: OWNER/REPO#N -->` in der
verfahren/issue-migration/README.md 16 informational image-ref:host:* 2026-08-01 sind die 9 Gitea-Labels + 5 `host:*` als Gruppe-13-Labels angelegt)
verfahren/issue-migration/README.md 17 prose-or-runtime - PRs werden ausgefiltert, geschlossene Issues nach Anlage geschlossen
verfahren/issue-migration/README.md 26 informational runtime-path:~/.config/gitea-rohana/token Tokens: `~/.config/gitea-rohana/token` (read:issue) und
verfahren/issue-migration/README.md 27 informational runtime-path:~/.config/gitlab-lab/token `~/.config/gitlab-lab/token` (Admin) auf dem Mac.
verfahren/issue-migration/README.md 33 prose-or-runtime | sorb/thread-net-git | Projekt 18 | ✅ 2026-08-01 (1 Issue, nummerngleich) |
verfahren/issue-migration/README.md 34 prose-or-runtime | sorb/threadnet-call | Projekt 19 | ✅ 2026-08-01 (2 Issues, nummerngleich) |
verfahren/issue-migration/README.md 35 prose-or-runtime | sorb/ThreadNet-Web | Projekt 16 | ✅ 2026-08-01 (9 Issues, nummerngleich) |
verfahren/issue-migration/README.md 36 prose-or-runtime | sorb/axion1337.chat-gitops | Projekt 17 | ✅ 2026-08-01 (50 Issues, **Nummern verschoben**) |
verfahren/issue-migration/README.md 38 prose-or-runtime ⚠️ **gitops-Nummern sind NICHT deckungsgleich**: Gitea hatte Lücken (PRs zählen
verfahren/issue-migration/README.md 39 prose-or-runtime mit), GitLab vergibt lückenlos — z. B. Gitea#48 → GitLab#46, Gitea#51 → GitLab#49,
verfahren/issue-migration/README.md 40 prose-or-runtime Gitea#52 → GitLab#50. Die verbindliche Zuordnung steht im Migrations-Fußtext
verfahren/issue-migration/README.md 41 prose-or-runtime historical-wording jedes GitLab-Issues (`Migriert aus Gitea …#N`); alte Commit-/Doku-Verweise auf
verfahren/issue-migration/README.md 42 prose-or-runtime „gitops#N" meinen die **Gitea**-Nummer.
verfahren/issue-migration/README.md 44 checked-ok issue-ok:axion1337.chat-gitops#48(opened) **Cutover-Nachschritte** (siehe gitops#48): Gitea-Issues schließen/als migriert
verfahren/issue-migration/README.md 47 prose-or-runtime aktiven), Bot-/Token-Workflows (claude-issues → GitLab-Äquivalent) offen.
verfahren/refinement.md 20 prose-or-runtime des Monats an — dann ist die Vorbereitung (die AARs des Monats) ohnehin offen.
verfahren/refinement.md 29 prose-or-runtime 2. **WIP-Limit prüfen** — höchstens zwei Issues in `doing`. Ist es voll, wird nichts
verfahren/refinement.md 44 prose-or-runtime - Welche **ADRs** sind durch die Realität überholt (→ neues ADR, altes auf
verfahren/refinement.md 45 prose-or-runtime „abgelöst durch")?
verfahren/refinement.md 51 checked-ok path-ok:retro/@management(dir) Ergebnisse werden unter [`retro/`](retro/) abgelegt, eine Datei je Termin. Die
verfahren/refinement.md 59 prose-or-runtime ermöglicht, welche Lehren, was bleibt offen. **Offene Punkte aus einem AAR werden
verfahren/refinement.md 61 checked-ok issue-ok:management#14(opened);issue-ok:management#16(closed) 2026-08-01, nachgezogen als #14#16).
verfahren/refinement.md 88 checked-ok path-ok:CLAUDE.md@axion1337.chat-gitops,management - Die **kanonischen Arbeitskonventionen** stehen in [`CLAUDE.md`](../CLAUDE.md) und
verfahren/refinement.md 89 prose-or-runtime sind über den Gitea-Mirror von überall lesbar.
verfahren/retro/2026-08-09.md 13 prose-or-runtime **„Alles Offene wird ein Issue."** Das ist das Verfahren, das diesen Monat am
verfahren/retro/2026-08-09.md 15 prose-or-runtime vergessen, weil sie im Moment des Findens ein Issue bekamen — auch die, für die
verfahren/retro/2026-08-09.md 23 checked-ok issue-ok:management#15(opened);issue-ok:management#20(opened) historical-wording management#15 und #20 lagen drei Tage ohne Spalte — das ist der beabsichtigte
verfahren/retro/2026-08-09.md 31 informational image-ref:status:offen muss. Genau deshalb hat eine Session am 2026-08-06 ein `status:offen` erfunden und
verfahren/retro/2026-08-09.md 40 prose-or-runtime ## 2. Welche ADRs sind durch die Realität überholt?
verfahren/retro/2026-08-09.md 42 prose-or-runtime **Keine überholt — aber eine Lücke.**
verfahren/retro/2026-08-09.md 45 prose-or-runtime gebraucht.** Am 2026-08-07 wurde eine dauerhafte Prozessregel eingeführt (englische
verfahren/retro/2026-08-09.md 46 prose-or-runtime Conventional Commits, Zeitstempel auf 12:00 UTC) und am 2026-08-09 rückwirkend auf
verfahren/retro/2026-08-09.md 47 prose-or-runtime 251 Commits angewandt — eine **irreversible** Änderung an vier Repos, mit
verfahren/retro/2026-08-09.md 48 prose-or-runtime Force-Push durch einen Mirror, von dem Flux liest.
verfahren/retro/2026-08-09.md 51 checked-ok path-ok:CLAUDE.md@axion1337.chat-gitops,management ist das ein Lehrbuchfall. Stattdessen steht die Regel nur in der `CLAUDE.md` und
verfahren/retro/2026-08-09.md 55 checked-ok path-ok:CLAUDE.md@axion1337.chat-gitops,management erweitert (Titel ohne Priorität, Meilenstein-Pflicht) — beides in der `CLAUDE.md`,
verfahren/retro/2026-08-09.md 57 checked-ok path-ok:CLAUDE.md@axion1337.chat-gitops,management die `CLAUDE.md` die *Regel*. Es ist aber genau die Zwei-Orte-Konstruktion, die wir
verfahren/retro/2026-08-09.md 70 prose-or-runtime | `build_embedded` (threadnet-call) | grün, seit jeher | lud **nie** ein Artefakt hoch, falscher Pfad |
verfahren/retro/2026-08-09.md 71 FLAG path-miss:dist/ path-miss:dist/ | npm-Paket `0.19.2-threadnet.6` | veröffentlicht | 12,5 KB statt 12,8 MB, **ohne `dist/`** |
verfahren/retro/2026-08-09.md 72 prose-or-runtime | Blueprint `matrix-recovery-flow` | Flux grün, ConfigMap aktuell | seit Tagen bei **jedem** Lauf verworfen |
verfahren/retro/2026-08-09.md 73 prose-or-runtime | gitops-Arbeitskopie | „normal" | `main` trackte **Gitea** — ein `git push` wäre in die verbotene Richtung gegangen |
verfahren/retro/2026-08-09.md 74 prose-or-runtime | Leere Pipelines | rot | **nichts kaputt** — der umgekehrte Fall, Rauschen, das rot abtrainiert |
verfahren/retro/2026-08-09.md 75 informational tag-ok:v0.4.0 | Release-Pipeline auf `v0.4.0` | lief nach Tag-Push an | hätte ein veröffentlichtes Image überschrieben |
verfahren/retro/2026-08-09.md 87 checked-ok issue-ok:axion1337.chat-gitops#50(opened) Es gibt Issues für Einzelfälle — gitops#50 (Configs greifen nicht ohne Neustart),
verfahren/retro/2026-08-09.md 88 checked-ok issue-ok:management#28(opened);issue-ok:ThreadNet-Web#14(closed) management#28 (Mirror-Ausfall unbemerkt), ThreadNet-Web#14 (Release überschreibbar,
verfahren/retro/2026-08-09.md 91 informational tag-ok:v0.4.0 ⚠️ **Der letzte Fall ist der unangenehmste.** Dass `v0.4.0` nicht überschrieben
verfahren/retro/2026-08-09.md 99 prose-or-runtime diesen Monat einzeln und mühsam gelernt haben — Blueprint-Status ≠ error, Mirror
verfahren/retro/2026-08-09.md 103 checked-ok issue-ok:management#28(opened) Das ist die Verallgemeinerung von management#28, das am 2026-08-06 bewusst nach
verfahren/retro/2026-08-09.md 112 checked-ok image-ref:status:next;issue-ok:management#15(opened);issue-ok:management#20(opened) - `status:next`: management#15 und #20 (fällig 31.08.) — Zusage von sorb
verfahren/retro/2026-08-09.md 113 checked-ok image-ref:status:wartet;issue-ok:threadnet-call#4(opened);issue-ok:ThreadNet-Web#11(opened) historical-wording - `status:wartet` entfernt bei threadnet-call#4 und ThreadNet-Web#11: der im Issue
verfahren/retro/2026-08-09.md 115 prose-or-runtime - **M5 — Härtung** angelegt, 14 Issues aus M1 verschoben. Trennlinie: *Ist etwas
verfahren/retro/2026-08-09.md 123 prose-or-runtime ## Offen aus dieser Retro
verfahren/stillstandspruefung.md 11 prose-or-runtime der bei jedem Lauf verworfen wurde, während Flux grün meldete.
verfahren/stillstandspruefung.md 23 prose-or-runtime | Repo ohne aktiven Push-Mirror | `game-operating` wurde angelegt und nie gespiegelt — auf Gitea existierte es nicht |
verfahren/stillstandspruefung.md 24 checked-ok issue-ok:management#28(opened);id-ok:MIRROR-01 | Mirror-Drift | MIRROR-01 (management#28): fällt der Mirror aus, liefert Flux still den letzten Stand weiter |
verfahren/stillstandspruefung.md 25 prose-or-runtime historical-wording | Pipeline mit null Jobs | ThreadNet-Web 203/204, threadnet-call 187 — rot, ohne dass etwas kaputt war |
verfahren/stillstandspruefung.md 26 prose-or-runtime | Erfolgreicher Job ohne Artefakt | `build_embedded` lief seit jeher grün und lud **nichts** hoch |
verfahren/stillstandspruefung.md 27 FLAG path-miss:dist/ path-miss:dist/ | npm-Paket zu klein | `0.19.2-threadnet.6`: 12,5 KB statt 12,8 MB, ohne `dist/` |
verfahren/stillstandspruefung.md 32 prose-or-runtime jahrelang durchrutscht. (Beim ersten Lauf kamen so zwei Projekte zum Vorschein,
verfahren/stillstandspruefung.md 37 prose-or-runtime Geplanter CI-Job im management-Repo, zusätzlich von Hand über *Run pipeline*
verfahren/stillstandspruefung.md 38 prose-or-runtime auslösbar. Befunde färben die Pipeline **rot** — das ist bei uns die Alarmanlage,
verfahren/stillstandspruefung.md 39 checked-ok path-ok:CLAUDE.md@axion1337.chat-gitops nicht ein zusätzlicher Meldeweg (siehe `gitops/CLAUDE.md` zur TURN-Rotation).
verfahren/stillstandspruefung.md 45 code-block export GITEA_TOKEN=$(cat ~/.config/gitea-rohana/push-token) # fuer private Spiegel
verfahren/stillstandspruefung.md 53 prose-or-runtime aufgefallen am 2026-08-09: `game-operating` wurde auf Gitea privat gestellt, und
verfahren/stillstandspruefung.md 54 prose-or-runtime die Prüfung übersprang den Mirror-Abgleich klaglos. Ein Repo, das gespiegelt wird,
verfahren/textbloecke.md 5 checked-ok path-ok:CLAUDE.md@axion1337.chat-gitops,management Die Konventionen stehen kanonisch in [`CLAUDE.md`](../CLAUDE.md) — aber eine
verfahren/textbloecke.md 13 checked-ok path-ok:CLAUDE.md@axion1337.chat-gitops passiert am 2026-08-02, als `gitops/CLAUDE.md` „keine Gitea-Ausnahme mehr" behauptete,
verfahren/textbloecke.md 14 checked-ok path-ok:CLAUDE.md@management während die `management/CLAUDE.md` zwei nannte.
verfahren/textbloecke.md 24 code-block historical-wording Lies zuerst CLAUDE.md im management-Repo auf git.lab und halte dich daran.
verfahren/textbloecke.md 25 code-block Kanonisch ist git.lab; nie direkt nach Gitea pushen.
verfahren/textbloecke.md 27 code-block Bevor du ein Issue schließt oder darüber urteilst: vollständig lesen, inklusive
verfahren/textbloecke.md 30 code-block Verifiziert und vermutet klar trennen; fremde Messungen als fremde kennzeichnen.
verfahren/textbloecke.md 35 informational forge-repo:sorb/Backlogs > dem Pfad `sorb/Backlogs` statt nach dem Namen `Backlogs`; und ein Issue, von dem
verfahren/textbloecke.md 43 code-block Konventionen: CLAUDE.md im management-Repo — von hier lesbar über den Gitea-Mirror
verfahren/textbloecke.md 44 code-block rohana.axion1337.de/sorb/management. Dort NUR lesen, niemals hinpushen.
verfahren/textbloecke.md 48 code-block Ping auf 10.58.73.17 schlägt IMMER fehl (nur 443 + DNS offen), das ist kein
verfahren/textbloecke.md 58 code-block Öffne auf git.lab ein Issue aus der Vorlage "Deploy-Übergabe"
verfahren/textbloecke.md 64 code-block · Außenwirkung und Not-Aus · Rollback · bewusst offen Gelassenes.
verfahren/textbloecke.md 79 code-block - Alle Commits über git.lab gepusht, kein Rest im Arbeitsverzeichnis, Mirror grün.
verfahren/textbloecke.md 80 code-block - Jeder offene Punkt und Nebenbefund ist ein Issue — nichts bleibt nur im Chat.
vision/axion1337-chat.md 3 checked-ok issue-ok:management#17(closed) > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
vision/axion1337-chat.md 23 prose-or-runtime **Kontrolliert wachsend** (entschieden 2026-08-06). Offen für Neue, aber **jeder
vision/axion1337-chat.md 37 prose-or-runtime Nicht mehr offen: Das Rebranding wird in **M4 zu Ende gebracht**, nicht separat
vision/axion1337-chat.md 38 checked-ok path-ok:threadnet.md@management terminiert — siehe [`threadnet.md`](threadnet.md).
vision/homelab.md 3 checked-ok issue-ok:management#17(closed) > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
vision/homelab.md 33 checked-ok issue-ok:management#10(opened) [#10](https://git.lab/axion1337.chat/management/-/issues/10) — offen bleibt
vision/homelab.md 35 prose-or-runtime Gitea-Datenbank). Siehe dort.
vision/threadnet.md 3 checked-ok issue-ok:management#17(closed) > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
vision/threadnet.md 9 prose-or-runtime wiederverwendbare Produkte gedacht: ThreadNet-Web (Element-Web-Fork mit
vision/threadnet.md 10 prose-or-runtime Discord-artiger Raumliste), threadnet-call (Call-Fork), thread-net-git,
vision/threadnet.md 11 prose-or-runtime threadnet-operating.
vision/threadnet.md 37 prose-or-runtime und entscheiden, ob bereinigt (History-Rewrite) oder bewusst akzeptiert wird.
vision/threadnet.md 46 checked-ok issue-ok:ThreadNet-Web#6(opened);issue-ok:management#7(opened);issue-ok:management#10(opened) „Produktreife ThreadNet" (ThreadNet-Web#6, #7, #10).
Can't render this file because it contains an unexpected character in line 7 and column 79.
+162
View File
@@ -0,0 +1,162 @@
repo path bytes last_commit_date last_author days_since_change last_commit
ThreadNet-Web .github/PULL_REQUEST_TEMPLATE.md 703 2026-05-10 sorB 91 3da3635
ThreadNet-Web AUTHORS.rst 851 2026-05-10 sorB 91 3da3635
ThreadNet-Web CHANGELOG.md 182546 2026-05-10 sorB 91 3da3635
ThreadNet-Web CONTRIBUTING.md 13373 2026-05-10 sorB 91 3da3635
ThreadNet-Web README.md 6711 2026-07-29 Thore Cimbal 11 45fb329
ThreadNet-Web apps/desktop/CHANGELOG.md 644932 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/desktop/README.md 7216 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/desktop/scripts/hak/README.md 3662 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/README.md 5820 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/playwright/e2e/crypto/test_indexeddb_cryptostore_dump/README.md 2202 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/playwright/e2e/read-receipts/readme.md 815 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/playwright/plugins/oauth_server/README.md 1046 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/src/customisations/README.md 28 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/test/unit-tests/README.md 156 2026-05-10 sorB 91 3da3635
ThreadNet-Web code_style.md 21876 2026-05-10 sorB 91 3da3635
ThreadNet-Web developer_guide.md 4827 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/MVVM-v1.md 2827 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/MVVM.md 12199 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/app-load.md 2415 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/axion1337-fork.md 8709 2026-08-06 Thore Cimbal 3 965c456
ThreadNet-Web docs/betas.md 1600 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/changelogs/CHANGELOG-2022.md 235803 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/changelogs/CHANGELOG-2023.md 121310 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/changelogs/CHANGELOG-pre-2022.md 391016 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/choosing-an-issue.md 3431 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/ciderEditor.md 4201 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/config.md 32308 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/custom-home.md 1602 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/customisations.md 3519 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/debugging.md 1210 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/deprecated-modules.md 3341 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/e2ee.md 1963 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/feature-flags.md 4719 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/features/README.md 335 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/features/composer.md 2166 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/features/keyboardShortcuts.md 2113 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/gdb.md 2053 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/generated/[id].md 18 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/icons.md 1531 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/index.md 30 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/install.md 4864 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/jitsi-dev.md 5546 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/jitsi.md 5028 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/kubernetes.md 5307 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/labs.md 7029 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/local-echo-dev.md 2182 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/media-handling.md 1246 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/memory-profiles-and-leaks.md 2463 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/monorepo.md 3036 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/native-node-modules.md 6055 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/oidc.md 1018 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/packaging.md 2402 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/playwright.md 12304 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/pr-previews.md 1376 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/readme-element-desktop.md 43 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/readme-element-web.md 39 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/readme-shared-components.md 57 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/release.md 12112 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/review.md 5674 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/room-list-store.md 10033 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/scrolling.md 4499 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/settings.md 12478 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/skinning.md 1329 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/theming.md 4287 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/translating-dev.md 7460 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/translating.md 1895 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/updates.md 821 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/usercontent.md 1585 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/widget-layouts.md 2911 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/windows-requirements.md 1870 2026-05-10 sorB 91 3da3635
ThreadNet-Web packages/module-api/README.md 2710 2026-05-10 sorB 91 3da3635
ThreadNet-Web packages/module-api/element-web-module-api.api.md 16996 2026-05-10 sorB 91 3da3635
ThreadNet-Web packages/playwright-common/README.md 1591 2026-05-10 sorB 91 3da3635
ThreadNet-Web packages/shared-components/README.md 10820 2026-05-10 sorB 91 3da3635
ThreadNet-Web packages/shared-components/static/README.md 143 2026-05-10 sorB 91 3da3635
axion1337.chat-gitops .devcontainer/README.md 9057 2026-07-28 Thore Cimbal 12 4a3d7c7
axion1337.chat-gitops CLAUDE.md 24219 2026-08-09 Thore Cimbal 0 c341faf
axion1337.chat-gitops README.md 15564 2026-08-01 Thore Cimbal 8 cdecb00
axion1337.chat-gitops docs/TASKS.md 27770 2026-07-31 Thore Cimbal 9 8ad9215
axion1337.chat-gitops docs/deployment-guides/01-turn-server-setup.md 1412 2026-05-14 Scrublord MacBad 87 aee9a34
axion1337.chat-gitops docs/deployment-guides/02-authentik-identity-provider.md 5116 2026-08-06 Thore Cimbal 3 a81ea0d
axion1337.chat-gitops docs/deployment-guides/03-monitoring-integration.md 1466 2026-05-14 Scrublord MacBad 87 aee9a34
axion1337.chat-gitops docs/deployment-guides/04-element-customization.md 6138 2026-08-09 Thore Cimbal 0 9d9a87b
axion1337.chat-gitops docs/deployment-guides/05-room-policies.md 1956 2026-05-14 Scrublord MacBad 87 aee9a34
axion1337.chat-gitops docs/deployment-guides/06-moderation-content-scanning.md 12934 2026-07-29 Thore Cimbal 11 11a079d
axion1337.chat-gitops docs/deployment-guides/07-host-maintenance-notifications.md 8516 2026-07-29 Thore Cimbal 11 3767720
axion1337.chat-gitops docs/deployment-guides/08-concierge-gaeste-einladungen.md 4629 2026-08-09 Thore Cimbal 0 f6d2761
axion1337.chat-gitops docs/deployment-guides/README.md 5330 2026-08-09 Thore Cimbal 0 151ef3c
axion1337.chat-gitops docs/install.md 5531 2026-07-28 Thore Cimbal 12 9607687
axion1337.chat-gitops docs/oldwiki/authentik.md 13683 2026-05-14 Scrublord MacBad 87 b1247b4
axion1337.chat-gitops docs/oldwiki/fix report mrtc.md 17869 2026-05-14 Scrublord MacBad 87 b1247b4
axion1337.chat-gitops docs/oldwiki/home.md 428825 2026-05-14 Scrublord MacBad 87 b1247b4
axion1337.chat-gitops docs/oldwiki/invitereg.md 32278 2026-05-14 Scrublord MacBad 87 b1247b4
axion1337.chat-gitops docs/ops-configmap-sync.md 10560 2026-05-14 Scrublord MacBad 87 5f50a60
axion1337.chat-gitops docs/setup/README-Element-Setup.md 4391 2026-04-23 Scrublord MacBad 108 659acdf
axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-CREATE-INVITATION-FLOW.md 5769 2026-05-18 Scrublord MacBad 83 5bbb03b
axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-FIX-TEMPLATE.md 8163 2026-05-18 Scrublord MacBad 83 5bbb03b
axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-INVITATION-FLOW-FIX.md 6492 2026-05-18 Scrublord MacBad 83 5bbb03b
axion1337.chat-gitops docs/troubleshooting/DIAGNOSTIK-AUTHENTIK-FLOW.md 7598 2026-05-18 Scrublord MacBad 83 5bbb03b
axion1337.chat-gitops docs/troubleshooting/README.md 4634 2026-07-29 Thore Cimbal 11 932443d
management .gitlab/issue_templates/Deploy-Übergabe.md 2623 2026-08-02 Thore Cimbal 7 3fe05e7
management CLAUDE.md 12223 2026-08-09 Thore Cimbal 0 2b20f65
management README.md 4516 2026-08-02 Thore Cimbal 7 3fe05e7
management decisions/0001-gitlab-kanonisch-push-mirror.md 1398 2026-08-01 Thore Cimbal 8 fdf30d4
management decisions/0002-issues-und-management-ins-lab.md 1903 2026-08-02 Thore Cimbal 7 3fe05e7
management decisions/0003-cve-meldeweg-aggregiert.md 1303 2026-08-01 Thore Cimbal 8 fdf30d4
management decisions/0004-site-to-site-vpn-hetzner-lab.md 4421 2026-08-02 Thore Cimbal 7 3fe05e7
management decisions/0005-pm-framework-kanban.md 2255 2026-08-01 Thore Cimbal 8 fdf30d4
management decisions/0006-wikis-konsolidieren-docusaurus.md 3340 2026-08-02 Thore Cimbal 7 9c3d252
management decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 3990 2026-08-02 Thore Cimbal 7 b6aaad7
management decisions/0008-agenten-sessions-root-aequivalent.md 4397 2026-08-06 Thore Cimbal 3 ae62727
management decisions/0009-commit-konventionen-und-historien-anonymisierung.md 4759 2026-08-09 Thore Cimbal 0 0fde69a
management decisions/README.md 965 2026-08-01 Thore Cimbal 8 fdf30d4
management decisions/template.md 504 2026-08-01 Thore Cimbal 8 fdf30d4
management hosts/cfgmon.md 18064 2026-08-09 Thore Cimbal 0 d7db111
management hosts/game.md 4019 2026-08-02 Thore Cimbal 7 9e0af13
management hosts/matrix.md 11581 2026-08-09 Thore Cimbal 0 d7db111
management hosts/overmind.md 9039 2026-08-09 Thore Cimbal 0 87f8ba3
management roadmap.md 5161 2026-08-09 Thore Cimbal 0 d7db111
management shared/branding.md 12156 2026-08-09 Thore Cimbal 0 d7db111
management shared/commit-zuordnung-2026-08-07.md 13852 2026-08-09 Thore Cimbal 0 46c61e1
management shared/lab-netzwerk.md 7592 2026-08-02 Thore Cimbal 7 164d96d
management shared/zone-axion1337.md 6720 2026-08-06 Thore Cimbal 3 d019bfe
management verfahren/README.md 1282 2026-08-06 Thore Cimbal 3 ae62727
management verfahren/aar-vorlage.md 1507 2026-08-01 Thore Cimbal 8 3e81f40
management verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 4354 2026-08-01 Thore Cimbal 8 3e81f40
management verfahren/aar/2026-08-01-labnet02-cfgmon.md 11181 2026-08-01 Thore Cimbal 8 97fe9e0
management verfahren/aar/2026-08-01-labnet02-lab.md 5519 2026-08-01 Thore Cimbal 8 830c740
management verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 10569 2026-08-09 Thore Cimbal 0 d7db111
management verfahren/aar/2026-08-09-refinement-und-betrieb.md 6674 2026-08-09 Thore Cimbal 0 2f012a6
management verfahren/deploy-uebergabe.md 4557 2026-08-02 Thore Cimbal 7 3fe05e7
management verfahren/issue-migration/README.md 2276 2026-08-01 Thore Cimbal 8 0f3f155
management verfahren/refinement.md 4432 2026-08-09 Thore Cimbal 0 0fde69a
management verfahren/retro/2026-08-09.md 5944 2026-08-09 Thore Cimbal 0 0fde69a
management verfahren/stillstandspruefung.md 3316 2026-08-09 Thore Cimbal 0 d4004ee
management verfahren/textbloecke.md 5035 2026-08-06 Thore Cimbal 3 ae62727
management vision/axion1337-chat.md 1701 2026-08-05 Thore Cimbal 4 d31fef4
management vision/homelab.md 1538 2026-08-05 Thore Cimbal 4 d31fef4
management vision/threadnet.md 2180 2026-08-09 Thore Cimbal 0 d7db111
thread-net-git README.md 4336 2026-08-02 Thore Cimbal 7 2f4a15c
threadnet-call .github/PULL_REQUEST_TEMPLATE.md 1473 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call CONTRIBUTING.md 4110 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call README.md 14981 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call WIDGET_TEST.md 972 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call config/otel_dev/README.md 1265 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/README.md 338 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/_developer.md 4082 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/axion1337-fork.md 7851 2026-08-09 Thore Cimbal 0 d13cce73
threadnet-call docs/controls.md 2646 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/embedded_standalone.md 6544 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/linking.md 2484 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/linking_concept_reasoning.md 2027 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/self_hosting.md 12374 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/url_params.md 27605 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call embedded/ios/README.md 931 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call embedded/web/README.md 925 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call sdk/README.md 2371 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call src/mediapipe/imageSegmenter/README.md 385 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call src/sound/LICENCE.md 536 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-operating README.md 2026 2026-08-02 Thore Cimbal 7 32f89af
threadnet-operating monitoring/README.md 6555 2026-08-01 sorb 8 0bd77e2
1 repo path bytes last_commit_date last_author days_since_change last_commit
2 ThreadNet-Web .github/PULL_REQUEST_TEMPLATE.md 703 2026-05-10 sorB 91 3da3635
3 ThreadNet-Web AUTHORS.rst 851 2026-05-10 sorB 91 3da3635
4 ThreadNet-Web CHANGELOG.md 182546 2026-05-10 sorB 91 3da3635
5 ThreadNet-Web CONTRIBUTING.md 13373 2026-05-10 sorB 91 3da3635
6 ThreadNet-Web README.md 6711 2026-07-29 Thore Cimbal 11 45fb329
7 ThreadNet-Web apps/desktop/CHANGELOG.md 644932 2026-05-10 sorB 91 3da3635
8 ThreadNet-Web apps/desktop/README.md 7216 2026-05-10 sorB 91 3da3635
9 ThreadNet-Web apps/desktop/scripts/hak/README.md 3662 2026-05-10 sorB 91 3da3635
10 ThreadNet-Web apps/web/README.md 5820 2026-05-10 sorB 91 3da3635
11 ThreadNet-Web apps/web/playwright/e2e/crypto/test_indexeddb_cryptostore_dump/README.md 2202 2026-05-10 sorB 91 3da3635
12 ThreadNet-Web apps/web/playwright/e2e/read-receipts/readme.md 815 2026-05-10 sorB 91 3da3635
13 ThreadNet-Web apps/web/playwright/plugins/oauth_server/README.md 1046 2026-05-10 sorB 91 3da3635
14 ThreadNet-Web apps/web/src/customisations/README.md 28 2026-05-10 sorB 91 3da3635
15 ThreadNet-Web apps/web/test/unit-tests/README.md 156 2026-05-10 sorB 91 3da3635
16 ThreadNet-Web code_style.md 21876 2026-05-10 sorB 91 3da3635
17 ThreadNet-Web developer_guide.md 4827 2026-05-10 sorB 91 3da3635
18 ThreadNet-Web docs/MVVM-v1.md 2827 2026-05-10 sorB 91 3da3635
19 ThreadNet-Web docs/MVVM.md 12199 2026-05-10 sorB 91 3da3635
20 ThreadNet-Web docs/app-load.md 2415 2026-05-10 sorB 91 3da3635
21 ThreadNet-Web docs/axion1337-fork.md 8709 2026-08-06 Thore Cimbal 3 965c456
22 ThreadNet-Web docs/betas.md 1600 2026-05-10 sorB 91 3da3635
23 ThreadNet-Web docs/changelogs/CHANGELOG-2022.md 235803 2026-05-10 sorB 91 3da3635
24 ThreadNet-Web docs/changelogs/CHANGELOG-2023.md 121310 2026-05-10 sorB 91 3da3635
25 ThreadNet-Web docs/changelogs/CHANGELOG-pre-2022.md 391016 2026-05-10 sorB 91 3da3635
26 ThreadNet-Web docs/choosing-an-issue.md 3431 2026-05-10 sorB 91 3da3635
27 ThreadNet-Web docs/ciderEditor.md 4201 2026-05-10 sorB 91 3da3635
28 ThreadNet-Web docs/config.md 32308 2026-05-10 sorB 91 3da3635
29 ThreadNet-Web docs/custom-home.md 1602 2026-05-10 sorB 91 3da3635
30 ThreadNet-Web docs/customisations.md 3519 2026-05-10 sorB 91 3da3635
31 ThreadNet-Web docs/debugging.md 1210 2026-05-10 sorB 91 3da3635
32 ThreadNet-Web docs/deprecated-modules.md 3341 2026-05-10 sorB 91 3da3635
33 ThreadNet-Web docs/e2ee.md 1963 2026-05-10 sorB 91 3da3635
34 ThreadNet-Web docs/feature-flags.md 4719 2026-05-10 sorB 91 3da3635
35 ThreadNet-Web docs/features/README.md 335 2026-05-10 sorB 91 3da3635
36 ThreadNet-Web docs/features/composer.md 2166 2026-05-10 sorB 91 3da3635
37 ThreadNet-Web docs/features/keyboardShortcuts.md 2113 2026-05-10 sorB 91 3da3635
38 ThreadNet-Web docs/gdb.md 2053 2026-05-10 sorB 91 3da3635
39 ThreadNet-Web docs/generated/[id].md 18 2026-05-10 sorB 91 3da3635
40 ThreadNet-Web docs/icons.md 1531 2026-05-10 sorB 91 3da3635
41 ThreadNet-Web docs/index.md 30 2026-05-10 sorB 91 3da3635
42 ThreadNet-Web docs/install.md 4864 2026-05-10 sorB 91 3da3635
43 ThreadNet-Web docs/jitsi-dev.md 5546 2026-05-10 sorB 91 3da3635
44 ThreadNet-Web docs/jitsi.md 5028 2026-05-10 sorB 91 3da3635
45 ThreadNet-Web docs/kubernetes.md 5307 2026-05-10 sorB 91 3da3635
46 ThreadNet-Web docs/labs.md 7029 2026-05-10 sorB 91 3da3635
47 ThreadNet-Web docs/local-echo-dev.md 2182 2026-05-10 sorB 91 3da3635
48 ThreadNet-Web docs/media-handling.md 1246 2026-05-10 sorB 91 3da3635
49 ThreadNet-Web docs/memory-profiles-and-leaks.md 2463 2026-05-10 sorB 91 3da3635
50 ThreadNet-Web docs/monorepo.md 3036 2026-05-10 sorB 91 3da3635
51 ThreadNet-Web docs/native-node-modules.md 6055 2026-05-10 sorB 91 3da3635
52 ThreadNet-Web docs/oidc.md 1018 2026-05-10 sorB 91 3da3635
53 ThreadNet-Web docs/packaging.md 2402 2026-05-10 sorB 91 3da3635
54 ThreadNet-Web docs/playwright.md 12304 2026-05-10 sorB 91 3da3635
55 ThreadNet-Web docs/pr-previews.md 1376 2026-05-10 sorB 91 3da3635
56 ThreadNet-Web docs/readme-element-desktop.md 43 2026-05-10 sorB 91 3da3635
57 ThreadNet-Web docs/readme-element-web.md 39 2026-05-10 sorB 91 3da3635
58 ThreadNet-Web docs/readme-shared-components.md 57 2026-05-10 sorB 91 3da3635
59 ThreadNet-Web docs/release.md 12112 2026-05-10 sorB 91 3da3635
60 ThreadNet-Web docs/review.md 5674 2026-05-10 sorB 91 3da3635
61 ThreadNet-Web docs/room-list-store.md 10033 2026-05-10 sorB 91 3da3635
62 ThreadNet-Web docs/scrolling.md 4499 2026-05-10 sorB 91 3da3635
63 ThreadNet-Web docs/settings.md 12478 2026-05-10 sorB 91 3da3635
64 ThreadNet-Web docs/skinning.md 1329 2026-05-10 sorB 91 3da3635
65 ThreadNet-Web docs/theming.md 4287 2026-05-10 sorB 91 3da3635
66 ThreadNet-Web docs/translating-dev.md 7460 2026-05-10 sorB 91 3da3635
67 ThreadNet-Web docs/translating.md 1895 2026-05-10 sorB 91 3da3635
68 ThreadNet-Web docs/updates.md 821 2026-05-10 sorB 91 3da3635
69 ThreadNet-Web docs/usercontent.md 1585 2026-05-10 sorB 91 3da3635
70 ThreadNet-Web docs/widget-layouts.md 2911 2026-05-10 sorB 91 3da3635
71 ThreadNet-Web docs/windows-requirements.md 1870 2026-05-10 sorB 91 3da3635
72 ThreadNet-Web packages/module-api/README.md 2710 2026-05-10 sorB 91 3da3635
73 ThreadNet-Web packages/module-api/element-web-module-api.api.md 16996 2026-05-10 sorB 91 3da3635
74 ThreadNet-Web packages/playwright-common/README.md 1591 2026-05-10 sorB 91 3da3635
75 ThreadNet-Web packages/shared-components/README.md 10820 2026-05-10 sorB 91 3da3635
76 ThreadNet-Web packages/shared-components/static/README.md 143 2026-05-10 sorB 91 3da3635
77 axion1337.chat-gitops .devcontainer/README.md 9057 2026-07-28 Thore Cimbal 12 4a3d7c7
78 axion1337.chat-gitops CLAUDE.md 24219 2026-08-09 Thore Cimbal 0 c341faf
79 axion1337.chat-gitops README.md 15564 2026-08-01 Thore Cimbal 8 cdecb00
80 axion1337.chat-gitops docs/TASKS.md 27770 2026-07-31 Thore Cimbal 9 8ad9215
81 axion1337.chat-gitops docs/deployment-guides/01-turn-server-setup.md 1412 2026-05-14 Scrublord MacBad 87 aee9a34
82 axion1337.chat-gitops docs/deployment-guides/02-authentik-identity-provider.md 5116 2026-08-06 Thore Cimbal 3 a81ea0d
83 axion1337.chat-gitops docs/deployment-guides/03-monitoring-integration.md 1466 2026-05-14 Scrublord MacBad 87 aee9a34
84 axion1337.chat-gitops docs/deployment-guides/04-element-customization.md 6138 2026-08-09 Thore Cimbal 0 9d9a87b
85 axion1337.chat-gitops docs/deployment-guides/05-room-policies.md 1956 2026-05-14 Scrublord MacBad 87 aee9a34
86 axion1337.chat-gitops docs/deployment-guides/06-moderation-content-scanning.md 12934 2026-07-29 Thore Cimbal 11 11a079d
87 axion1337.chat-gitops docs/deployment-guides/07-host-maintenance-notifications.md 8516 2026-07-29 Thore Cimbal 11 3767720
88 axion1337.chat-gitops docs/deployment-guides/08-concierge-gaeste-einladungen.md 4629 2026-08-09 Thore Cimbal 0 f6d2761
89 axion1337.chat-gitops docs/deployment-guides/README.md 5330 2026-08-09 Thore Cimbal 0 151ef3c
90 axion1337.chat-gitops docs/install.md 5531 2026-07-28 Thore Cimbal 12 9607687
91 axion1337.chat-gitops docs/oldwiki/authentik.md 13683 2026-05-14 Scrublord MacBad 87 b1247b4
92 axion1337.chat-gitops docs/oldwiki/fix report mrtc.md 17869 2026-05-14 Scrublord MacBad 87 b1247b4
93 axion1337.chat-gitops docs/oldwiki/home.md 428825 2026-05-14 Scrublord MacBad 87 b1247b4
94 axion1337.chat-gitops docs/oldwiki/invitereg.md 32278 2026-05-14 Scrublord MacBad 87 b1247b4
95 axion1337.chat-gitops docs/ops-configmap-sync.md 10560 2026-05-14 Scrublord MacBad 87 5f50a60
96 axion1337.chat-gitops docs/setup/README-Element-Setup.md 4391 2026-04-23 Scrublord MacBad 108 659acdf
97 axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-CREATE-INVITATION-FLOW.md 5769 2026-05-18 Scrublord MacBad 83 5bbb03b
98 axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-FIX-TEMPLATE.md 8163 2026-05-18 Scrublord MacBad 83 5bbb03b
99 axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-INVITATION-FLOW-FIX.md 6492 2026-05-18 Scrublord MacBad 83 5bbb03b
100 axion1337.chat-gitops docs/troubleshooting/DIAGNOSTIK-AUTHENTIK-FLOW.md 7598 2026-05-18 Scrublord MacBad 83 5bbb03b
101 axion1337.chat-gitops docs/troubleshooting/README.md 4634 2026-07-29 Thore Cimbal 11 932443d
102 management .gitlab/issue_templates/Deploy-Übergabe.md 2623 2026-08-02 Thore Cimbal 7 3fe05e7
103 management CLAUDE.md 12223 2026-08-09 Thore Cimbal 0 2b20f65
104 management README.md 4516 2026-08-02 Thore Cimbal 7 3fe05e7
105 management decisions/0001-gitlab-kanonisch-push-mirror.md 1398 2026-08-01 Thore Cimbal 8 fdf30d4
106 management decisions/0002-issues-und-management-ins-lab.md 1903 2026-08-02 Thore Cimbal 7 3fe05e7
107 management decisions/0003-cve-meldeweg-aggregiert.md 1303 2026-08-01 Thore Cimbal 8 fdf30d4
108 management decisions/0004-site-to-site-vpn-hetzner-lab.md 4421 2026-08-02 Thore Cimbal 7 3fe05e7
109 management decisions/0005-pm-framework-kanban.md 2255 2026-08-01 Thore Cimbal 8 fdf30d4
110 management decisions/0006-wikis-konsolidieren-docusaurus.md 3340 2026-08-02 Thore Cimbal 7 9c3d252
111 management decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 3990 2026-08-02 Thore Cimbal 7 b6aaad7
112 management decisions/0008-agenten-sessions-root-aequivalent.md 4397 2026-08-06 Thore Cimbal 3 ae62727
113 management decisions/0009-commit-konventionen-und-historien-anonymisierung.md 4759 2026-08-09 Thore Cimbal 0 0fde69a
114 management decisions/README.md 965 2026-08-01 Thore Cimbal 8 fdf30d4
115 management decisions/template.md 504 2026-08-01 Thore Cimbal 8 fdf30d4
116 management hosts/cfgmon.md 18064 2026-08-09 Thore Cimbal 0 d7db111
117 management hosts/game.md 4019 2026-08-02 Thore Cimbal 7 9e0af13
118 management hosts/matrix.md 11581 2026-08-09 Thore Cimbal 0 d7db111
119 management hosts/overmind.md 9039 2026-08-09 Thore Cimbal 0 87f8ba3
120 management roadmap.md 5161 2026-08-09 Thore Cimbal 0 d7db111
121 management shared/branding.md 12156 2026-08-09 Thore Cimbal 0 d7db111
122 management shared/commit-zuordnung-2026-08-07.md 13852 2026-08-09 Thore Cimbal 0 46c61e1
123 management shared/lab-netzwerk.md 7592 2026-08-02 Thore Cimbal 7 164d96d
124 management shared/zone-axion1337.md 6720 2026-08-06 Thore Cimbal 3 d019bfe
125 management verfahren/README.md 1282 2026-08-06 Thore Cimbal 3 ae62727
126 management verfahren/aar-vorlage.md 1507 2026-08-01 Thore Cimbal 8 3e81f40
127 management verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 4354 2026-08-01 Thore Cimbal 8 3e81f40
128 management verfahren/aar/2026-08-01-labnet02-cfgmon.md 11181 2026-08-01 Thore Cimbal 8 97fe9e0
129 management verfahren/aar/2026-08-01-labnet02-lab.md 5519 2026-08-01 Thore Cimbal 8 830c740
130 management verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 10569 2026-08-09 Thore Cimbal 0 d7db111
131 management verfahren/aar/2026-08-09-refinement-und-betrieb.md 6674 2026-08-09 Thore Cimbal 0 2f012a6
132 management verfahren/deploy-uebergabe.md 4557 2026-08-02 Thore Cimbal 7 3fe05e7
133 management verfahren/issue-migration/README.md 2276 2026-08-01 Thore Cimbal 8 0f3f155
134 management verfahren/refinement.md 4432 2026-08-09 Thore Cimbal 0 0fde69a
135 management verfahren/retro/2026-08-09.md 5944 2026-08-09 Thore Cimbal 0 0fde69a
136 management verfahren/stillstandspruefung.md 3316 2026-08-09 Thore Cimbal 0 d4004ee
137 management verfahren/textbloecke.md 5035 2026-08-06 Thore Cimbal 3 ae62727
138 management vision/axion1337-chat.md 1701 2026-08-05 Thore Cimbal 4 d31fef4
139 management vision/homelab.md 1538 2026-08-05 Thore Cimbal 4 d31fef4
140 management vision/threadnet.md 2180 2026-08-09 Thore Cimbal 0 d7db111
141 thread-net-git README.md 4336 2026-08-02 Thore Cimbal 7 2f4a15c
142 threadnet-call .github/PULL_REQUEST_TEMPLATE.md 1473 2026-07-31 Thore Cimbal 9 8fb630cf
143 threadnet-call CONTRIBUTING.md 4110 2026-07-31 Thore Cimbal 9 8fb630cf
144 threadnet-call README.md 14981 2026-07-31 Thore Cimbal 9 8fb630cf
145 threadnet-call WIDGET_TEST.md 972 2026-07-31 Thore Cimbal 9 8fb630cf
146 threadnet-call config/otel_dev/README.md 1265 2026-07-31 Thore Cimbal 9 8fb630cf
147 threadnet-call docs/README.md 338 2026-07-31 Thore Cimbal 9 8fb630cf
148 threadnet-call docs/_developer.md 4082 2026-07-31 Thore Cimbal 9 8fb630cf
149 threadnet-call docs/axion1337-fork.md 7851 2026-08-09 Thore Cimbal 0 d13cce73
150 threadnet-call docs/controls.md 2646 2026-07-31 Thore Cimbal 9 8fb630cf
151 threadnet-call docs/embedded_standalone.md 6544 2026-07-31 Thore Cimbal 9 8fb630cf
152 threadnet-call docs/linking.md 2484 2026-07-31 Thore Cimbal 9 8fb630cf
153 threadnet-call docs/linking_concept_reasoning.md 2027 2026-07-31 Thore Cimbal 9 8fb630cf
154 threadnet-call docs/self_hosting.md 12374 2026-07-31 Thore Cimbal 9 8fb630cf
155 threadnet-call docs/url_params.md 27605 2026-07-31 Thore Cimbal 9 8fb630cf
156 threadnet-call embedded/ios/README.md 931 2026-07-31 Thore Cimbal 9 8fb630cf
157 threadnet-call embedded/web/README.md 925 2026-07-31 Thore Cimbal 9 8fb630cf
158 threadnet-call sdk/README.md 2371 2026-07-31 Thore Cimbal 9 8fb630cf
159 threadnet-call src/mediapipe/imageSegmenter/README.md 385 2026-07-31 Thore Cimbal 9 8fb630cf
160 threadnet-call src/sound/LICENCE.md 536 2026-07-31 Thore Cimbal 9 8fb630cf
161 threadnet-operating README.md 2026 2026-08-02 Thore Cimbal 7 32f89af
162 threadnet-operating monitoring/README.md 6555 2026-08-01 sorb 8 0bd77e2
+127
View File
@@ -0,0 +1,127 @@
repo scope metric value
ThreadNet-Web 2026-05 commits 3
ThreadNet-Web 2026-05 commits_docs_only 0
ThreadNet-Web 2026-05 commits_touching_code 3
ThreadNet-Web 2026-05 commits_touching_docs 2
ThreadNet-Web 2026-07 commits 28
ThreadNet-Web 2026-07 commits_docs_only 3
ThreadNet-Web 2026-07 commits_touching_code 23
ThreadNet-Web 2026-07 commits_touching_docs 4
ThreadNet-Web 2026-08 commits 21
ThreadNet-Web 2026-08 commits_docs_only 2
ThreadNet-Web 2026-08 commits_touching_code 19
ThreadNet-Web 2026-08 commits_touching_docs 2
ThreadNet-Web ALL active_days 10
ThreadNet-Web ALL commits 52
ThreadNet-Web ALL commits_docs_only 5
ThreadNet-Web ALL commits_touching_code 45
ThreadNet-Web ALL commits_touching_docs 8
ThreadNet-Web ALL days_since_last_commit 0
ThreadNet-Web ALL first_commit 2026-05-10
ThreadNet-Web ALL last_commit 2026-08-09
ThreadNet-Web ALL max_gap_days 79
ThreadNet-Web ALL max_gap_from 2026-05-10
ThreadNet-Web ALL max_gap_to 2026-07-28
axion1337.chat-gitops 2026-04 commits 107
axion1337.chat-gitops 2026-04 commits_docs_only 4
axion1337.chat-gitops 2026-04 commits_touching_code 103
axion1337.chat-gitops 2026-04 commits_touching_docs 5
axion1337.chat-gitops 2026-05 commits 40
axion1337.chat-gitops 2026-05 commits_docs_only 9
axion1337.chat-gitops 2026-05 commits_touching_code 31
axion1337.chat-gitops 2026-05 commits_touching_docs 12
axion1337.chat-gitops 2026-07 commits 74
axion1337.chat-gitops 2026-07 commits_docs_only 21
axion1337.chat-gitops 2026-07 commits_touching_code 51
axion1337.chat-gitops 2026-07 commits_touching_docs 27
axion1337.chat-gitops 2026-08 commits 48
axion1337.chat-gitops 2026-08 commits_docs_only 11
axion1337.chat-gitops 2026-08 commits_touching_code 32
axion1337.chat-gitops 2026-08 commits_touching_docs 13
axion1337.chat-gitops ALL active_days 23
axion1337.chat-gitops ALL commits 269
axion1337.chat-gitops ALL commits_docs_only 45
axion1337.chat-gitops ALL commits_touching_code 217
axion1337.chat-gitops ALL commits_touching_docs 57
axion1337.chat-gitops ALL days_since_last_commit 0
axion1337.chat-gitops ALL first_commit 2026-04-21
axion1337.chat-gitops ALL last_commit 2026-08-09
axion1337.chat-gitops ALL max_gap_days 70
axion1337.chat-gitops ALL max_gap_from 2026-05-18
axion1337.chat-gitops ALL max_gap_to 2026-07-27
management 2026-07 commits 23
management 2026-07 commits_docs_only 22
management 2026-07 commits_touching_code 1
management 2026-07 commits_touching_docs 23
management 2026-08 commits 63
management 2026-08 commits_docs_only 58
management 2026-08 commits_touching_code 5
management 2026-08 commits_touching_docs 63
management ALL active_days 8
management ALL commits 86
management ALL commits_docs_only 80
management ALL commits_touching_code 6
management ALL commits_touching_docs 86
management ALL days_since_last_commit 0
management ALL first_commit 2026-07-30
management ALL last_commit 2026-08-09
management ALL max_gap_days 3
management ALL max_gap_from 2026-08-02
management ALL max_gap_to 2026-08-05
thread-net-git 2026-07 commits 10
thread-net-git 2026-07 commits_docs_only 1
thread-net-git 2026-07 commits_touching_code 9
thread-net-git 2026-07 commits_touching_docs 3
thread-net-git 2026-08 commits 1
thread-net-git 2026-08 commits_docs_only 1
thread-net-git 2026-08 commits_touching_code 0
thread-net-git 2026-08 commits_touching_docs 1
thread-net-git ALL active_days 3
thread-net-git ALL commits 11
thread-net-git ALL commits_docs_only 2
thread-net-git ALL commits_touching_code 9
thread-net-git ALL commits_touching_docs 4
thread-net-git ALL days_since_last_commit 7
thread-net-git ALL first_commit 2026-07-30
thread-net-git ALL last_commit 2026-08-02
thread-net-git ALL max_gap_days 2
thread-net-git ALL max_gap_from 2026-07-31
thread-net-git ALL max_gap_to 2026-08-02
threadnet-call 2026-07 commits 1
threadnet-call 2026-07 commits_docs_only 0
threadnet-call 2026-07 commits_touching_code 1
threadnet-call 2026-07 commits_touching_docs 1
threadnet-call 2026-08 commits 11
threadnet-call 2026-08 commits_docs_only 3
threadnet-call 2026-08 commits_touching_code 8
threadnet-call 2026-08 commits_touching_docs 4
threadnet-call ALL active_days 4
threadnet-call ALL commits 12
threadnet-call ALL commits_docs_only 3
threadnet-call ALL commits_touching_code 9
threadnet-call ALL commits_touching_docs 5
threadnet-call ALL days_since_last_commit 0
threadnet-call ALL first_commit 2026-07-31
threadnet-call ALL last_commit 2026-08-09
threadnet-call ALL max_gap_days 6
threadnet-call ALL max_gap_from 2026-07-31
threadnet-call ALL max_gap_to 2026-08-06
threadnet-operating 2026-07 commits 12
threadnet-operating 2026-07 commits_docs_only 4
threadnet-operating 2026-07 commits_touching_code 7
threadnet-operating 2026-07 commits_touching_docs 5
threadnet-operating 2026-08 commits 9
threadnet-operating 2026-08 commits_docs_only 1
threadnet-operating 2026-08 commits_touching_code 8
threadnet-operating 2026-08 commits_touching_docs 2
threadnet-operating ALL active_days 4
threadnet-operating ALL commits 21
threadnet-operating ALL commits_docs_only 5
threadnet-operating ALL commits_touching_code 15
threadnet-operating ALL commits_touching_docs 7
threadnet-operating ALL days_since_last_commit 7
threadnet-operating ALL first_commit 2026-07-30
threadnet-operating ALL last_commit 2026-08-02
threadnet-operating ALL max_gap_days 1
threadnet-operating ALL max_gap_from 2026-07-30
threadnet-operating ALL max_gap_to 2026-07-31
1 repo scope metric value
2 ThreadNet-Web 2026-05 commits 3
3 ThreadNet-Web 2026-05 commits_docs_only 0
4 ThreadNet-Web 2026-05 commits_touching_code 3
5 ThreadNet-Web 2026-05 commits_touching_docs 2
6 ThreadNet-Web 2026-07 commits 28
7 ThreadNet-Web 2026-07 commits_docs_only 3
8 ThreadNet-Web 2026-07 commits_touching_code 23
9 ThreadNet-Web 2026-07 commits_touching_docs 4
10 ThreadNet-Web 2026-08 commits 21
11 ThreadNet-Web 2026-08 commits_docs_only 2
12 ThreadNet-Web 2026-08 commits_touching_code 19
13 ThreadNet-Web 2026-08 commits_touching_docs 2
14 ThreadNet-Web ALL active_days 10
15 ThreadNet-Web ALL commits 52
16 ThreadNet-Web ALL commits_docs_only 5
17 ThreadNet-Web ALL commits_touching_code 45
18 ThreadNet-Web ALL commits_touching_docs 8
19 ThreadNet-Web ALL days_since_last_commit 0
20 ThreadNet-Web ALL first_commit 2026-05-10
21 ThreadNet-Web ALL last_commit 2026-08-09
22 ThreadNet-Web ALL max_gap_days 79
23 ThreadNet-Web ALL max_gap_from 2026-05-10
24 ThreadNet-Web ALL max_gap_to 2026-07-28
25 axion1337.chat-gitops 2026-04 commits 107
26 axion1337.chat-gitops 2026-04 commits_docs_only 4
27 axion1337.chat-gitops 2026-04 commits_touching_code 103
28 axion1337.chat-gitops 2026-04 commits_touching_docs 5
29 axion1337.chat-gitops 2026-05 commits 40
30 axion1337.chat-gitops 2026-05 commits_docs_only 9
31 axion1337.chat-gitops 2026-05 commits_touching_code 31
32 axion1337.chat-gitops 2026-05 commits_touching_docs 12
33 axion1337.chat-gitops 2026-07 commits 74
34 axion1337.chat-gitops 2026-07 commits_docs_only 21
35 axion1337.chat-gitops 2026-07 commits_touching_code 51
36 axion1337.chat-gitops 2026-07 commits_touching_docs 27
37 axion1337.chat-gitops 2026-08 commits 48
38 axion1337.chat-gitops 2026-08 commits_docs_only 11
39 axion1337.chat-gitops 2026-08 commits_touching_code 32
40 axion1337.chat-gitops 2026-08 commits_touching_docs 13
41 axion1337.chat-gitops ALL active_days 23
42 axion1337.chat-gitops ALL commits 269
43 axion1337.chat-gitops ALL commits_docs_only 45
44 axion1337.chat-gitops ALL commits_touching_code 217
45 axion1337.chat-gitops ALL commits_touching_docs 57
46 axion1337.chat-gitops ALL days_since_last_commit 0
47 axion1337.chat-gitops ALL first_commit 2026-04-21
48 axion1337.chat-gitops ALL last_commit 2026-08-09
49 axion1337.chat-gitops ALL max_gap_days 70
50 axion1337.chat-gitops ALL max_gap_from 2026-05-18
51 axion1337.chat-gitops ALL max_gap_to 2026-07-27
52 management 2026-07 commits 23
53 management 2026-07 commits_docs_only 22
54 management 2026-07 commits_touching_code 1
55 management 2026-07 commits_touching_docs 23
56 management 2026-08 commits 63
57 management 2026-08 commits_docs_only 58
58 management 2026-08 commits_touching_code 5
59 management 2026-08 commits_touching_docs 63
60 management ALL active_days 8
61 management ALL commits 86
62 management ALL commits_docs_only 80
63 management ALL commits_touching_code 6
64 management ALL commits_touching_docs 86
65 management ALL days_since_last_commit 0
66 management ALL first_commit 2026-07-30
67 management ALL last_commit 2026-08-09
68 management ALL max_gap_days 3
69 management ALL max_gap_from 2026-08-02
70 management ALL max_gap_to 2026-08-05
71 thread-net-git 2026-07 commits 10
72 thread-net-git 2026-07 commits_docs_only 1
73 thread-net-git 2026-07 commits_touching_code 9
74 thread-net-git 2026-07 commits_touching_docs 3
75 thread-net-git 2026-08 commits 1
76 thread-net-git 2026-08 commits_docs_only 1
77 thread-net-git 2026-08 commits_touching_code 0
78 thread-net-git 2026-08 commits_touching_docs 1
79 thread-net-git ALL active_days 3
80 thread-net-git ALL commits 11
81 thread-net-git ALL commits_docs_only 2
82 thread-net-git ALL commits_touching_code 9
83 thread-net-git ALL commits_touching_docs 4
84 thread-net-git ALL days_since_last_commit 7
85 thread-net-git ALL first_commit 2026-07-30
86 thread-net-git ALL last_commit 2026-08-02
87 thread-net-git ALL max_gap_days 2
88 thread-net-git ALL max_gap_from 2026-07-31
89 thread-net-git ALL max_gap_to 2026-08-02
90 threadnet-call 2026-07 commits 1
91 threadnet-call 2026-07 commits_docs_only 0
92 threadnet-call 2026-07 commits_touching_code 1
93 threadnet-call 2026-07 commits_touching_docs 1
94 threadnet-call 2026-08 commits 11
95 threadnet-call 2026-08 commits_docs_only 3
96 threadnet-call 2026-08 commits_touching_code 8
97 threadnet-call 2026-08 commits_touching_docs 4
98 threadnet-call ALL active_days 4
99 threadnet-call ALL commits 12
100 threadnet-call ALL commits_docs_only 3
101 threadnet-call ALL commits_touching_code 9
102 threadnet-call ALL commits_touching_docs 5
103 threadnet-call ALL days_since_last_commit 0
104 threadnet-call ALL first_commit 2026-07-31
105 threadnet-call ALL last_commit 2026-08-09
106 threadnet-call ALL max_gap_days 6
107 threadnet-call ALL max_gap_from 2026-07-31
108 threadnet-call ALL max_gap_to 2026-08-06
109 threadnet-operating 2026-07 commits 12
110 threadnet-operating 2026-07 commits_docs_only 4
111 threadnet-operating 2026-07 commits_touching_code 7
112 threadnet-operating 2026-07 commits_touching_docs 5
113 threadnet-operating 2026-08 commits 9
114 threadnet-operating 2026-08 commits_docs_only 1
115 threadnet-operating 2026-08 commits_touching_code 8
116 threadnet-operating 2026-08 commits_touching_docs 2
117 threadnet-operating ALL active_days 4
118 threadnet-operating ALL commits 21
119 threadnet-operating ALL commits_docs_only 5
120 threadnet-operating ALL commits_touching_code 15
121 threadnet-operating ALL commits_touching_docs 7
122 threadnet-operating ALL days_since_last_commit 7
123 threadnet-operating ALL first_commit 2026-07-30
124 threadnet-operating ALL last_commit 2026-08-02
125 threadnet-operating ALL max_gap_days 1
126 threadnet-operating ALL max_gap_from 2026-07-30
127 threadnet-operating ALL max_gap_to 2026-07-31
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+544
View File
@@ -0,0 +1,544 @@
repo path line marker text blame_date days_since_blame blame_commit blame_author
ThreadNet-Web apps/desktop/README.md 58 TODO [TODO: add support for fetching develop builds, arbitrary URLs and arbitrary paths] 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/README.md 64 TODO TODO: List native pre-requisites 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/playwright/e2e/launch/launch.spec.ts 69 XXX // XXX: this test works fine locally but in CI the app start races with the test plumbing up the stdout/stderr pipes 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/scripts/copy-res.ts 57 XXX // XXX: Use a debounce because for some reason if we read the language 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/src/protocol.ts 28 XXX // XXX: passing args to protocol handlers only works on Windows, so unpackaged deep-linking 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/src/vectormenu.ts 132 XXX // XXX: vectorConfig won't have defaults applied to it so we need to duplicate them here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/src/webcontents-handler.ts 136 XXX // XXX: We cannot easily save a blob from the main process as 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/.eslintrc.cjs 118 XXX // XXX: Temporarily allow these as they are not available via the main export 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/composer/RTE.spec.ts 36 TODO // TODO add tests for rich text mode 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/composer/RTE.spec.ts 90 TODO // TODO add tests for rich text mode 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/devtools/devtools.spec.ts 25 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/devtools/upgraderoom.spec.ts 33 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/editing/editing.spec.ts 275 XXX axe.disableRules("color-contrast"); // XXX: We have some known contrast issues here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/editing/editing.spec.ts 295 XXX await app.getComposerField().hover(); // XXX: move the hover to get rid of the "Edit" tooltip 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/invite/decline-and-block-invite-dialog.spec.ts 23 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/invite/invite-dialog.spec.ts 139 TODO // TODO: implement the test on room-header.spec.ts 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/location/location.spec.ts 81 XXX "color-contrast", // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/location/location.spec.ts 82 XXX "region", // XXX: ContextMenu managed=false does not provide a role. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/pinned-messages/index.ts 67 TODO // TODO: without this wait, some tests that send lots of messages flake 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/read-receipts/high-level.spec.ts 207 TODO // TODO: I (andyb) think this will fall in an encrypted room 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/read-receipts/high-level.spec.ts 250 TODO // TODO: I (andyb) think this will fall in an encrypted room 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/read-receipts/index.ts 354 TODO // TODO: without this wait, some tests that send lots of messages flake 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/room/create-room.spec.ts 36 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/room/create-room.spec.ts 116 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/general-room-settings-tab.spec.ts 38 XXX axe.disableRules("color-contrast"); // XXX: We have some known contrast issues here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/notifications/notifications-settings-2-tab.spec.ts 21 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/notifications/notifications-settings-tab.spec.ts 21 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts 52 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts 71 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/room-settings/room-video-tab.spec.ts 37 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spaces/spaces.spec.ts 295 XXX // XXX: We have some known contrast issues here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spaces/spaces.spec.ts 319 TODO await expect(page.locator(".mx_SpacePanel:not(.collapsed)")).toBeVisible(); // TODO: replace :not() selector 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spaces/spaces.spec.ts 363 XXX // XXX: We have some known contrast issues here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spaces/spaces.spec.ts 399 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spaces/threads-activity-centre/index.ts 204 TODO // TODO: without this wait, some tests that send lots of messages flake 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spotlight/spotlight.spec.ts 191 TODO // TODO: We currently cant test finding rooms on other homeservers/other protocols 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/threads/threads.spec.ts 107 TODO // TODO: remove this after fixing the issue of ReadReceiptGroup being hidden on the bubble layout 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/threads/threads.spec.ts 111 TODO // TODO: enable this after fixing the issue of ReadReceiptGroup being hidden on the bubble layout 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/threads/threads.spec.ts 216 XXX // XXX: one would expect this redaction to be shown in the thread the message was in, but due to redactions 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/timeline/timeline.spec.ts 104 XXX // XXX: If we send the second event too quickly, there won't be 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/timeline/timeline.spec.ts 123 XXX // XXX: If we send the second event too quickly, there won't be 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/timeline/timeline.spec.ts 1346 XXX // XXX: This test doesn't actually work because the service worker relies on IndexedDB, which Playwright forces 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/utils.ts 24 FIXME * FIXME this does not do what it is supposed to do, and I think it is unfixable. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/widgets/permissions-dialog.spec.ts 91 XXX axe.disableRules(["color-contrast", "nested-interactive"]); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/pages/ElementAppPage.ts 304 TODO * TODO: fix this so that it works correctly if, say, the member list was open instead of the room info panel. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/pages/bot.ts 243 XXX // XXX: workaround https://github.com/element-hq/element-web/issues/26755 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/plugins/oauth_server/index.ts 54 TODO // TODO: validate that the request carries an auth header which matches the access token we issued above 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/_common.pcss 189 FIXME /* FIXME THEME - Tint by CSS rather than referencing a duplicate asset */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/_common.pcss 582 XXX /* XXX: Our button style are a mess: buttons that happen to appear in dialogs get special styles applied 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/_common.pcss 741 TODO /* TODO: Review mx_GeneralButton usage to see if it can use a different class */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/_common.pcss 911 TODO /* TODO: Review mx_MessageTimestamp usage after finishing migration of timeline tiles to shared components. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/structures/_FilePanel.pcss 26 FIXME /* FIXME: rather than having EventTile's default CSS be for MessagePanel, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/structures/_SpacePanel.pcss 206 TODO transition: all 0.2s ease-in-out; /* TODO transition */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/auth/_InteractiveAuthEntryComponents.pcss 40 XXX /* XXX: This should be a common button class */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/dialogs/security/_CreateCrossSigningDialog.pcss 23 TODO /* TODO: Consider setting this for all dialog titles. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/dialogs/security/_CreateSecretStorageDialog.pcss 47 TODO /* TODO: Consider setting this for all dialog titles. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/dialogs/security/_CreateSecretStorageDialog.pcss 57 FIXME /* FIXME: plinth colour in new theme(s). background-color: $accent; */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/dialogs/security/_RestoreKeyBackupDialog.pcss 15 FIXME /* FIXME: plinth colour in new theme(s). background-color: $accent; */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/elements/_Dropdown.pcss 88 XXX /* XXX: hack to prevent text box being too big and pushing */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/elements/_Field.pcss 8 TODO /* TODO: Consider unifying with general input styles in _light.pcss */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/elements/_GenericEventListSummary.pcss 19 TODO line-height: $font-30px; /* TODO: Use a variable */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/elements/_GenericEventListSummary.pcss 52 TODO order: 9; /* TODO: Remove */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/elements/_RichText.pcss 1 XXX /* XXX: bleurgh, what is this? These classes totally break the component */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/messages/_MJitsiWidgetEvent.pcss 11 XXX color: $header-panel-text-primary-color; /* XXX: Variable abuse */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/messages/_MessageActionBar.pcss 52 TODO /* TODO: use a new class name instead */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/messages/_ThreadActionBar.pcss 43 TODO /* TODO: use a new class name instead */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_AppsDrawer.pcss 11 TODO --minWidth: 240px; /* TODO this should be 300px but that's too large */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventBubbleTile.pcss 301 TODO /* TODO: Use a common class name instead */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventTile.pcss 22 TODO clear: both; /* TODO: check if this is necessary */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventTile.pcss 152 TODO /* TODO: adjust the values for IRC layout */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventTile.pcss 209 TODO /* TODO: ultimately we probably want some transition on here. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventTile.pcss 551 TODO /* TODO: check if this would be necessary; */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventTile.pcss 563 TODO /* Reset default values. TODO: remove */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_RoomPreviewCard.pcss 75 XXX /* XXX Remove this when video rooms leave beta */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_ThreadSummary.pcss 45 XXX /* XXX: We use an HEXA `transparent` to work around a Safari <15.4 bug */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/voip/_LegacyCallView.pcss 16 XXX /* XXX: PiPContainer sets pointer-events: none - should probably be set back in a better place */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/decoder-ring/decoder.js 90 TODO // TODO: expiry/retry logic here? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/legacy-dark/css/_legacy-dark.pcss 180 TODO $button-danger-disabled-bg-color: #f5b6bb; /* TODO: Verify color */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/legacy-light/css/_legacy-light.pcss 12 TODO TODO: Consider putting all emoji fonts to the end rather than the front. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/legacy-light/css/_legacy-light.pcss 185 XXX $video-feed-secondary-background: #394049; /* XXX: Color from dark theme */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/legacy-light/css/_legacy-light.pcss 262 TODO $button-danger-disabled-bg-color: #f5b6bb; /* TODO: Verify color */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/light-custom/css/_custom.pcss 130 TODO * TODO: Add link 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/light/css/_light.pcss 12 TODO TODO: Consider putting all emoji fonts to the end rather than the front. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/light/css/_light.pcss 234 TODO $button-danger-disabled-bg-color: #f5b6bb; /* TODO: Verify color */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/light/css/_light.pcss 305 XXX $video-feed-secondary-background: #394049; /* XXX: Color from dark theme */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/@types/matrix-js-sdk.d.ts 48 XXX // XXX unspecced usages of `m.room.*` events 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Avatar.ts 106 XXX // XXX: Ideally we'd clear this cache when the theme changes 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Avatar.ts 112 XXX if (!s) return ""; // XXX: should never happen but empirically does by evidence of a rageshake 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Avatar.ts 144 XXX // XXX: We should find out what causes the name to sometimes be falsy. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/DateUtils.ts 39 XXX // XXX: Ideally we could just specify `hour12: boolean` but it has issues on Chrome in the `en` locale 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/HtmlUtils.tsx 361 XXX // XXX: We sanitize the HTML whilst also highlighting its text nodes, to avoid accidentally trying 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/HtmlUtils.tsx 365 XXX // XXX: hacky bodge to temporarily apply a textFilter to the sanitizeParams structure. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/IdentityAuthClient.tsx 40 XXX // XXX: We shouldn't have to create a whole new MatrixClient just to 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/IdentityAuthClient.tsx 170 XXX // XXX: The spec is `token`, but we used `access_token` for a Sydent release. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/LegacyCallHandler.tsx 528 XXX // XXX: this is used by the IPC into Electron to keep device awake 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/LegacyCallHandler.tsx 586 TODO // TODO: We should either do away with these or figure out a copy for each code (expect user_hangup...) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Lifecycle.ts 104 XXX // XXX we might want to fire a new event here to let the app know that the login failed ? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Lifecycle.ts 1136 XXX // XXX: Defer this so that it doesn't race with MatrixChat unmounting the world by going to /#/welcome 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Login.ts 151 XXX // XXX: Synapse historically wanted `number` and not `phone` 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Login.ts 273 TODO // TODO: should we prompt here? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/MatrixClientPeg.ts 474 XXX // XXX: what is our initial pagination token?! it somehow needs to be synchronised with /sync. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/MediaDeviceHandler.ts 18 XXX // XXX: MediaDeviceKind is a union type, so we make our own enum 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Modal.tsx 183 DEPRECATED * DEPRECATED. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Modal.tsx 279 XXX // XXX: This is destructive 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Modal.tsx 286 XXX // XXX: This is destructive 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Modal.tsx 347 XXX // XXX: This is destructive 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 176 XXX // XXX: exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 270 XXX // XXX: Exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 331 TODO // TODO: Support alternative branding in messaging 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 431 XXX // XXX: Exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 502 XXX // XXX: exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 547 TODO // TODO: Use the call_id to get the *correct* call. We assume there is only one call per room here. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 557 XXX // XXX: Should use parseCallNotificationContent once the types are exported. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Registration.tsx 25 TODO // TODO: Update as needed for https://github.com/matrix-org/matrix-doc/issues/1514 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Resend.ts 48 XXX // XXX: temporary logging to try to diagnose 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/RoomNotifs.ts 75 XXX // XXX: We have to assume the default is to notify for all messages 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarAuthClient.ts 22 TODO // TODO: Generify the name of this class and all components within - it's not just for Scalar. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarAuthClient.ts 239 XXX method: "GET", // XXX: Actions shouldn't be GET requests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarMessaging.ts 10 TODO // TODO: Generify the name of this and all components within - it's not just for scalar. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarMessaging.ts 192 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarMessaging.ts 211 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarMessaging.ts 505 XXX // XXX: This gets the raw event object (I think because we can't 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarMessaging.ts 868 TODO // TODO -- Scalar postMessage API should be namespaced with event.data.api field 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/SendHistoryManager.ts 30 TODO // TODO: Performance issues? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/SlidingSyncManager.ts 336 TODO // the request change we have sent out. TODO: this may not be true if you concurrently subscribe to a room :/ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/TextForEvent.tsx 65 FIXME // FIXME: Find a better way to determine this from the event? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/TextForEvent.tsx 112 XXX // XXX: SYJS-16 "sender is sometimes null for join messages" 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/TextForEvent.tsx 538 XXX // XXX: This is also surely broken for i18n 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/TextForEvent.tsx 904 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/UserActivity.ts 180 XXX // XXX: exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/accessibility/KeyboardShortcutUtils.ts 69 XXX // XXX: This keyboard shortcut isn't manually added to 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/accessibility/KeyboardShortcuts.ts 160 TODO // TODO: We should figure out what to do with the keyboard shortcuts that are not handled by KeybindingManager 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/accessibility/KeyboardShortcuts.ts 165 TODO // TODO: We should figure out what to do with the keyboard shortcuts that are not handled by KeybindingManager 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/accessibility/KeyboardShortcuts.ts 325 TODO // TODO: TravisR will fix this nightmare when the new version of the SettingsStore becomes a thing 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/accessibility/KeyboardShortcuts.ts 326 XXX // XXX: Exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/async-components/views/dialogs/security/ImportE2eKeysDialog.tsx 110 TODO // TODO: it would probably be nice to give some feedback about what we've imported here. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/autocomplete/UserProvider.tsx 87 TODO // TODO: lazyload if we have no ev.sender room member? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ContextMenu.tsx 176 XXX // XXX: This isn't pretty but the only way to allow opening a different context menu on right click whilst 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/EmbeddedPage.tsx 112 HACK // HACK: Workaround for the context's MatrixClient not being set up at render time. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/EmbeddedPage.tsx 119 HACK // HACK: Workaround for the context's MatrixClient not updating. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/IndicatorScrollbar.tsx 155 HACK // HACK: We increase the amount of scroll to counteract smooth scrolling browsers. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/LegacyCallEventGrouper.ts 95 FIXME // FIXME: Find a better way to determine this from the event? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/LoggedInView.tsx 228 TODO // TODO: In a future app release, remove support for legacy key. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/LoggedInView.tsx 298 TODO // TODO decrease this once Spaces launches as it'll no longer need to include the 56px Community Panel 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/LoggedInView.tsx 677 XXX // XXX: Forwarding Dead keys in this way does not work as intended but better to at least 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 176 TODO * TODO: this doesn't work well, because updates to React state are not instantaneous, meaning that if several 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 235 XXX * XXX it's unclear if this is ever cleared, so what happens if the user logs out and then logs back in? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 308 TODO // TODO: show an error screen, rather than a spinner of doom 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 548 XXX // XXX: This is a very unreliable way to detect whether or not the the devtools are open 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 684 XXX // XXX: This is a collection of several hacks to solve a minor problem. We want to 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 699 XXX localStorage.setItem("mx_is_url", fullUrl); // XXX: Do we still need this? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 1226 TODO // TODO: Immutable DMs replaces this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 1423 HACK // HACK: This is a pretty brutal way of threading the invite back through 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 1542 XXX // XXX: fix this properly by having Lifecycle not emit OnLoggedIn when it knows it is about to emit a 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 1943 TODO // TODO: Handle encoded room/event IDs: https://github.com/vector-im/element-web/issues/9149 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 1979 TODO // TODO: Replace oob_data with the threepidInvite (which has the same info). 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 2153 XXX // XXX: workaround for https://github.com/vector-im/element-web/issues/11643 causing a login-loop 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MessagePanel.tsx 481 TODO // TODO: Implement granular (per-room) hide options 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/RightPanel.tsx 126 XXX // XXX: There are three different ways of 'closing' this panel depending on what state 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/RoomSearchView.tsx 48 XXX // XXX: todo: merge overlapping results somehow? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/RoomSearchView.tsx 49 XXX // XXX: why doesn't searching on name work? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/RoomSearchView.tsx 222 XXX // XXX: can this ever happen? It will make the result count 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/RoomView.tsx 2356 XXX // XXX: in future we could give the option of a 'Preview' button which lets them view anyway. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ScrollPanel.tsx 46 XXX * XXX: It's likely this is unnecessary and can be derived from 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ScrollPanel.tsx 573 TODO // TODO: Document what magic number 0.9 is doing 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ScrollPanel.tsx 648 TODO // TODO: do a binary search here, as items are sorted by offsetTop 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ScrollPanel.tsx 933 TODO // TODO: the classnames on the div and ol could do with being updated to 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/SpaceHierarchy.tsx 405 XXX // XXX: This logic is duplicated from the JS SDK which would normally decide what the name is. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/SpaceHierarchy.tsx 619 TODO setRooms([]); // TODO 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/TimelinePanel.tsx 262 XXX // XXX: we could track RM per TimelineSet rather than per Room. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/TimelinePanel.tsx 872 XXX // XXX: roomReadMarkerTsMap not updated here so it is now inconsistent. Replace 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/TimelinePanel.tsx 894 TODO // TODO: We should restrict this to only events in our timeline, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/UserView.tsx 51 XXX // XXX: We shouldn't need to null check the userId here, but we declare 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ViewSource.tsx 44 TODO // TODO: refresh the "Event ID:" modal header 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ViewSource.tsx 61 FIXME const decryptedEventSource = mxEvent.clearEvent; // FIXME: clearEvent is private 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/auth/Login.tsx 290 TODO // TODO: instead hide the Register button if registration is disabled by checking with the server, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/viewmodels/right_panel/user_info/admin/UserInfoMuteButtonViewModel.tsx 56 FIXME // FIXME: per the spec, if `events_default` is unset, it defaults to zero. If 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/auth/CaptchaForm.tsx 68 TODO // TODO: Remove this when the "mobile_register" page is retired. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/auth/InteractiveAuthEntryComponents.tsx 346 XXX // XXX: replace with StyledCheckbox 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/auth/InteractiveAuthEntryComponents.tsx 567 TODO 1, // TODO: Multiple send attempts? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/beacon/RoomCallBanner.tsx 46 TODO // TODO matrix rtc 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/beta/BetaCard.tsx 25 XXX // XXX: Keep this around for re-use in future Betas 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/context_menus/MessageContextMenu.tsx 147 XXX private reactButtonRef = createRef<any>(); // XXX Ref to a functional component 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/context_menus/MessageContextMenu.tsx 510 XXX // XXX: Typescript signature for AccessibleButton doesn't work properly for non-inputs like `a` 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/context_menus/MessageContextMenu.tsx 545 XXX // XXX: Typescript signature for AccessibleButton doesn't work properly for non-inputs like `a` 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/context_menus/MessageContextMenu.tsx 599 XXX // XXX: Typescript signature for AccessibleButton doesn't work properly for non-inputs like `a` 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/context_menus/WidgetContextMenu.tsx 109 XXX // XXX: won't i18n well, but looks like widget api only support 'message'? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/BaseDialog.tsx 106 XXX // XXX: The contract on MatrixClientContext says it is only available within a LoggedInView subtree, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/BaseDialog.tsx 175 XXX // XXX: We can't import ModuleAPI here because it causes a dependency cycle - hack and 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/BetaFeedbackDialog.tsx 20 XXX // XXX: Keep this around for re-use in future Betas 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/DeactivateAccountDialog.tsx 118 XXX // XXX: this should be returning a promise to maintain the state inside the state machine correct 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/DeactivateAccountDialog.tsx 188 XXX // XXX: onUIAuthComplete breaches the expected method contract, it gets away with it because it 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/FeedbackDialog.tsx 48 TODO // TODO: Handle rejection. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/GenericFeatureFeedbackDialog.tsx 41 TODO // TODO: Handle rejection. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/ModalWidgetDialog.tsx 149 TODO // TODO: Replace these with proper widget params 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/ModuleUiDialog.tsx 77 XXX // XXX: we have to fudge the types here a little as the react-sdk-module-api lacks React 19 support 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/PollHistoryDialog.tsx 29 TODO // @TODO hide dialog title somehow 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/ScrollableBaseModal.tsx 40 XXX // XXX: The contract on MatrixClientContext says it is only available within a LoggedInView subtree, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/UserSettingsDialog.tsx 265 XXX // XXX: SDKContext is provided within the LoggedInView subtree. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/WidgetCapabilitiesPromptDialog.tsx 30 TODO widgetKind: WidgetKind; // TODO: Refactor into the Widget class 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/spotlight/SpotlightDialog.tsx 282 TODO // TODO we may want to put invites in their own list 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/directory/NetworkDropdown.tsx 91 XXX // XXX: This seems naff but is needed to convince TypeScript that the overload is fine 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/directory/NetworkDropdown.tsx 107 XXX // XXX: This seems naff but is needed to convince TypeScript that the overload is fine 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/AppPermission.tsx 66 HACK // HACK: We're relying on the query params when we should be relying on the widget's `data`. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/AppTile.tsx 552 XXX // XXX: This removes persistent elements from the DOM entirely, which feels like 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/AppTile.tsx 667 TODO // TODO replace with full screen interactions 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/ImageView.tsx 127 XXX // XXX: Refs to functional components 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/RoomAliasField.tsx 152 XXX // XXX: FIXME https://github.com/matrix-org/matrix-doc/issues/668 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/SSOButtons.tsx 126 TODO // TODO fallback icon 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/Spinner.tsx 17 XXX onFinished: any; // XXX: Spinner pretends to be a dialog so it must accept an onFinished, but it never calls it 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/TruncatedList.tsx 45 XXX // XXX: I'm not sure why anything would pass null into this, it seems 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/messages/IBodyProps.ts 33 TODO onMessageAllowed?: () => void; // TODO: Docs 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/messages/MImageBody.tsx 216 FIXME // FIXME: we let images grow as wide as you like, rather than capped to 800x600. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/messages/MImageBody.tsx 534 XXX // XXX: Arguably we may want a different label when the animated image is WEBP and not GIF 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/messages/MImageBody.tsx 584 HACK {/* HACK: This div fills out space while the image loads, to prevent scroll jumps */} 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/messages/MessageEvent.tsx 293 TODO // TODO: move to eventTypes when location sharing spec stabilises 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/polls/pollHistory/PollHistory.tsx 62 TODO {/* @TODO this probably needs some style */} 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/right_panel/RoomSummaryCardView.tsx 134 XXX // XXX: this name should be part of the view model 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/right_panel/UserInfo.tsx 100 FIXME // FIXME: per the spec, if `events_default` is unset, it defaults to zero. If 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/right_panel/VerificationPanel.tsx 90 HACK // HACK: This is a terrible idea. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/right_panel/VerificationPanel.tsx 186 TODO // TODO: add way to open camera to scan a QR code 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/room_settings/AliasSettings.tsx 217 TODO // TODO: Add error handling based upon server validation 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/room_settings/AliasSettings.tsx 261 TODO // TODO: In future, we should probably be making sure that the alias actually belongs 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/room_settings/RoomProfileSettings.tsx 53 TODO // TODO: Merge with ProfileSettings? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/room_settings/RoomProfileSettings.tsx 141 TODO // TODO: What do we do about errors? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/room_settings/RoomProfileSettings.tsx 162 XXX // XXX: Note that we deliberately send an empty string on an empty topic rather 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/BasicMessageComposer.tsx 417 XXX // XXX: needed when going up and down in editing messages ... not sure why yet 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/BasicMessageComposer.tsx 751 TODO // TODO: does this allow us to get rid of EditorStateTransfer? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/EmojiButton.tsx 48 TODO // TODO: replace ContextMenuTooltipButton with a unified representation of 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/ExtraTile.tsx 37 XXX // XXX: We copy classes because it's easier 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/LegacyRoomList.tsx 433 TODO // TODO: Replace with archived view: https://github.com/vector-im/element-web/issues/14038 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/MessageComposerButtons.tsx 269 XXX // XXX: recording UI does not work well in narrow mode, so hide for now 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/NewRoomIntro.tsx 100 XXX // XXX: We should be using a real member object and not assuming what the receiver wants. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/PresenceLabel.tsx 48 XXX if (presence === "unavailable") return _t("presence|idle_for", { duration: duration }); // XXX: is this actually right? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/PresenceLabel.tsx 53 XXX if (presence === "unavailable") return _t("presence|idle"); // XXX: is this actually right? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/ReadReceiptGroup.tsx 226 XXX // XXX: We should be using a real member object and not assuming what the receiver wants. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomHeader/RoomHeader.tsx 441 DEPRECATED // DEPRECATED: Buttons added by a legacy react-sdk module API module. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomPreviewCard.tsx 40 XXX // XXX This component is currently only used for spaces and video rooms, though 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomSublist.tsx 59 HACK // HACK: We really shouldn't have to do this. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomSublist.tsx 86 TODO // TODO: Use re-resizer's NumberSize when it is exposed as the type 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomSublist.tsx 278 XXX // XXX: we have to do this a tick later because we have incorrect intermediate props during a room change 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomSublist.tsx 527 HACK // HACK: We break typing here, but this 'extra tiles' property shouldn't exist. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomTile.tsx 298 TODO // TODO: [FTUE Notifications] Probably need to detect global mute state 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/Stickerpicker.tsx 78 TODO // TODO: Pick the right manager for the widget 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/Stickerpicker.tsx 242 TODO // TODO - Add support for Stickerpickers from multiple app stores. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/Stickerpicker.tsx 257 FIXME // FIXME: could this use the same code as other apps? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/components/WysiwygAutocomplete.tsx 77 TODO // TODO determine if utils in SlashCommands.tsx are required. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/components/WysiwygAutocomplete.tsx 98 TODO // TODO - handle "community" type 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/components/WysiwygAutocomplete.tsx 117 TODO // TODO - determine if we show all of the /command suggestions, there are some options in the 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/hooks/useInitialContent.ts 45 TODO // TODO local storage 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/hooks/usePlainTextListeners.ts 154 TODO // TODO use getKeyBindingsManager().getMessageComposerAction(event) like in useInputEventProcessor 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/hooks/useWysiwygSendActionHandler.ts 58 TODO // TODO insert mention - see SendMessageComposer 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/hooks/useWysiwygSendActionHandler.ts 60 TODO // TODO insert quote message - see SendMessageComposer 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/createMessageContent.ts 71 TODO // TODO markdown support 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/createMessageContent.ts 95 TODO // TODO Do we need to attach mentions here? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/createMessageContent.ts 96 TODO // TODO Handle editing? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 63 TODO // TODO thread 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 67 TODO // TODO thread 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 116 TODO // TODO replace emotion end of message ? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 118 TODO // TODO quick reaction 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 164 TODO // TODO save history 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 165 TODO // TODO save local state 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 198 TODO // TODO emoji 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 227 TODO // TODO Slash Commands 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/AddRemoveThreepids.tsx 93 XXX // XXX: Sydent will accept a number without country code if you add 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/AddRemoveThreepids.tsx 375 TODO // TODO: Inline field validation 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/ChangePassword.tsx 241 TODO // TODO: We can remove this check (but should add some Playwright tests to 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/Notifications.tsx 57 TODO // TODO: this "view" component still has far too much application logic in it, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/Notifications.tsx 341 XXX // XXX: Can this even happen? How do we safely recover? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/Notifications.tsx 481 XXX // XXX: Magic number 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/Notifications.tsx 489 XXX // XXX: Magic number 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/Notifications.tsx 602 XXX // XXX: Horrible assumption that we don't need the remaining fields 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/SetIdServer.tsx 44 XXX // XXX: duplicated logic from js-sdk but it's quite tied up in the validation logic in the 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/ThemeChoicePanel.tsx 125 XXX // XXX: The local echoed value appears to be unreliable, in particular 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/ThemeChoicePanel.tsx 251 XXX // XXX: need some schema for this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/room/BridgeSettingsTab.tsx 61 TODO // TODO: We don't have this link yet: this will prevent the translators 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/room/BridgeSettingsTab.tsx 83 TODO // TODO: We don't have this link yet: this will prevent the translators 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/room/NotificationSettingsTab.tsx 104 XXX // XXX: I've observed browsers allowing users to pick a audio/ogg files, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx 63 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx 274 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/user/AccountUserSettingsTab.tsx 151 TODO // TODO: Figure out a design that doesn't involve replacing the current dialog 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/user/AccountUserSettingsTab.tsx 160 TODO // TODO: Figure out a design that doesn't involve replacing the current dialog 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/spaces/QuickThemeSwitcher.tsx 57 XXX // XXX: The local echoed value appears to be unreliable, in particular 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/spaces/SpacePanel.tsx 369 TODO aria-selected={false} // TODO 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/device-listener/DeviceListenerOtherDevices.ts 86 TODO // TODO: maybe we don't need a full DeviceListener check? (Maybe we only 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/device-listener/DeviceListenerOtherDevices.ts 121 TODO // TODO: maybe we don't need a full DeviceListener check? (Maybe we only 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/dispatcher/actions.ts 13 TODO // TODO: Populate with actual actions 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/dispatcher/payloads/OpenToTabPayload.ts 13 TODO action: Action.ViewUserSettings | string; // TODO: Add room settings action 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/effects/effect.ts 34 TODO * animation options TODO 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/emojipicker/recent.ts 28 TODO // TODO remove this after some time 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/events/EventTileFactory.tsx 138 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/events/EventTileFactory.tsx 227 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/events/EventTileFactory.tsx 427 XXX // XXX: this'll eventually be dynamic based on the fields once we have extensible event types 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/hooks/useSettings.ts 32 XXX // XXX: This seems naff but is needed to convince TypeScript that the overload is fine 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/hooks/useSettings.ts 41 XXX // XXX: This seems naff but is needed to convince TypeScript that the overload is fine 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/indexing/EventIndex.ts 500 TODO // TODO we need to ensure to use member lazy loading with this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/indexing/EventIndex.ts 580 TODO // TODO if there are no events at this point we're missing a lot 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/integrations/IntegrationManagers.ts 84 TODO // TODO: Log out of the scalar clients 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/mjolnir/Mjolnir.ts 22 TODO // TODO: Move this and related files to the js-sdk or something once finalized. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/rageshake/submit-rageshake.ts 155 XXX // XXX: This is synapse-specific but better than nothing until MSC support for a server version endpoint 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/rageshake/submit-rageshake.ts 170 XXX // XXX: This relies on the federation listener being delegated via well-known 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/resizer/resizer.ts 36 TODO // TODO move vertical/horizontal to config option/container class 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/SettingLevel.ts 13 TODO // TODO: [TS] Follow naming convention 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/Settings.tsx 165 XXX // XXX: Keep this around for re-use in future Betas 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/Settings.tsx 736 TODO // TODO: Wire up appropriately to UI (FTUE notifications) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/Settings.tsx 1274 TODO // TODO: Rename with settings v3 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/controllers/DeviceIsolationModeController.ts 36 TODO : // TODO: As part of https://github.com/element-hq/element-meta/issues/2492, we will change 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/controllers/NotificationControllers.ts 33 TODO // TODO: [TS] Formal type that doesn't cause a cyclical reference. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/enums/Layout.ts 10 TODO /* TODO: This should be later reworked into something more generic */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/handlers/AccountSettingsHandler.ts 224 TODO // TODO: [TS] Types on return 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/handlers/DeviceSettingsHandler.ts 105 TODO // TODO: [TS] Type return 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/handlers/DeviceSettingsHandler.ts 121 XXX // XXX: This turns they key names into `mx_labs_feature_feature_x` (double feature). 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/handlers/RoomAccountSettingsHandler.ts 148 TODO // TODO: [TS] Type return 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/watchers/ThemeWatcher.ts 74 XXX // XXX forceTheme 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/watchers/ThemeWatcher.ts 79 XXX // XXX: forceTheme param added here as local echo appears to be unreliable 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/slash-commands/SlashCommands.tsx 678 XXX // XXX: We should be using a real member object and not assuming what the receiver wants. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/slash-commands/utils.ts 44 XXX // XXX: workaround for https://github.com/microsoft/TypeScript/issues/31816 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/ActiveWidgetStore.ts 52 XXX // XXX: This listens for state events in order to remove the active widget. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/ActiveWidgetStore.ts 56 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/CallStore.ts 149 XXX // XXX: This method is guarded with the flag this.inUpdateRoom because 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/MemberListStore.ts 112 XXX // XXX: this user may have no lastPresenceTs value! 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/OwnBeaconStore.ts 305 TODO // TODO check powerlevels here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/ThreepidInviteStore.ts 22 TODO // TODO: Figure out if these are ever populated 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/WidgetStore.ts 35 TODO // TODO consolidate WidgetEchoStore into this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/WidgetStore.ts 36 TODO // TODO consolidate ActiveWidgetStore into this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/WidgetStore.ts 166 TODO if (ev.getType() !== "im.vector.modular.widgets") return; // TODO: Support m.widget too 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/message-preview/MessagePreviewStore.ts 263 TODO const event = payload.event; // TODO: Type out the dispatcher 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/message-preview/previews/MessageEventPreview.ts 39 XXX // XXX: Newer relations have a getRelation() function which is not compatible with replies. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/notifications/NotificationLevel.ts 15 TODO // TODO: Remove bold with notifications: https://github.com/vector-im/element-web/issues/14227 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/notifications/RoomNotificationStateStore.ts 71 TODO // TODO: Update if/when invites move out of the room list. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 83 TODO // TODO: Maybe destroy this if this class supports destruction 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 205 TODO const roomPayload = <any>payload; // TODO: Type out the dispatcher types 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 253 TODO const eventPayload = <any>payload; // TODO: Type out the dispatcher types 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 266 TODO const eventPayload = <any>payload; // TODO: Type out the dispatcher types 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 308 TODO // TODO: Type out the dispatcher types so membershipPayload is not any 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 405 TODO // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 415 TODO // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 444 TODO // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 454 TODO // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts 253 XXX // XXX: If this ever actually gets more than one room passed to it, it'll need more index 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts 295 TODO // TODO: Regenerate index when this happens: https://github.com/vector-im/element-web/issues/14234 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/algorithms/list-ordering/NaturalAlgorithm.ts 85 TODO // TODO: Optimize this to avoid useless operations: https://github.com/vector-im/element-web/issues/14457 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts 39 TODO // TODO: We could probably improve the sorting algorithm here by finding changes. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts 45 TODO // TODO: Don't assume we're using the same client as the peg 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/filters/SpaceFilterCondition.ts 55 XXX // XXX: Room List Store has a bug where updates to the pre-filter during a local echo of a 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/spaces/SpaceStore.ts 582 TODO // TODO consider sorting by number of in-refs to favour nodes with fewer parents. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/spaces/SpaceStore.ts 1054 TODO // TODO rebuild the space parent and not the room - check permissions? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/spaces/SpaceStore.ts 1055 TODO // TODO confirm this after implementing parenting behaviour 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/spaces/SpaceTreeLevelLayoutStore.ts 31 XXX // XXX: localStorage doesn't allow booleans 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/spaces/SpaceTreeLevelLayoutStore.ts 37 XXX // XXX: localStorage doesn't allow booleans 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/ElementWidgetDriver.ts 92 TODO // TODO: Consider alternative designs for matrix-widget-api? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/ElementWidgetDriver.ts 97 TODO // TODO: Refactor widgetKind into the Widget class 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/ElementWidgetDriver.ts 278 TODO // TODO: Do something when the widget requests new capabilities not yet asked for 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/ElementWidgetDriver.ts 295 TODO // TODO: this results in an unexpected behavior when this function is called during the capabilities renegotiation of MSC2974 that will be resolved later. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 66 TODO // TODO: Purge this code of its overgrown hacks and compatibility shims. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 68 TODO // TODO: Don't use this. We should avoid overriding/mocking matrix-widget-api 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 256 TODO // TODO: Replace these with proper widget params 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 263 TODO // TODO: Stop doing this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 400 TODO // TODO: Replace this event listener with appropriate driver functionality once the API 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 432 TODO // TODO: Spec this interaction. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 474 TODO // TODO: Pick the right manager for the widget 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 496 HACK // HACK: This is a really dirty way to ensure that Jitsi cleans up 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 512 XXX // XXX is the removeAllListeners necessary here? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetPermissionStore.ts 24 TODO // TODO (all functions here): Merge widgetKind with the widget definition 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/types.ts 32 TODO // TODO: [Deferred] Maximizing (fullscreen) widgets by default. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/types.ts 40 TODO // TODO: [Deferred] Forced layout (fixed with no changes) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/DMRoomMap.ts 26 TODO // TODO: convert these to maps 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/DMRoomMap.ts 156 TODO // TODO: [Canonical DMs] Handle lookups for email addresses. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/FileDownloader.ts 48 XXX managedIframe.src = "usercontent/"; // XXX: Should come from the skin 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/FileDownloader.ts 54 TODO // TODO: If we decide to keep the download link behaviour, we should bring the style management into here. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/MediaEventHelper.ts 19 TODO // TODO: We should consider caching the blobs. https://github.com/vector-im/element-web/issues/17192 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/MessageDiffUtils.tsx 209 XXX // XXX: sometimes diffDOM says insert a newline when there shouldn't be one 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 78 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 82 TODO // TODO: Generify the name of this function. It's not just scalar. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 203 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 213 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 303 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 328 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 345 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 448 TODO // TODO: Remove URL hacks when the mobile clients eventually support v2 widgets 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 546 TODO // TODO: Pick the right manager for the widget 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/beacon/useBeacon.ts 26 TODO // TODO could this be less stupid? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/dm/startDm.ts 54 TODO // TODO: [Canonical DMs] Remove this check and instead just create the multi-person DM 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/exportUtils/HtmlExport.tsx 418 TODO // TODO: Handle callEvent errors 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/permalinks/MatrixSchemePermalinkConstructor.ts 53 TODO // TODO: Change API signature to accept the URL for checking 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/permalinks/PermalinkConstructor.ts 11 TODO * TODO: Convert this to a real TypeScript interface 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/app.tsx 92 XXX // XXX: This lives here because certain components import so many things that importing it in a sensible place (eg. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/app.tsx 118 XXX // XXX: This path matching is a bit brittle, but better to do it early instead of in the app code. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/app.tsx 201 DEPRECATED "DEPRECATED CONFIG OPTION: In the future, default_hs_url will not be accepted. Please use " + 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/app.tsx 226 DEPRECATED "DEPRECATED CONFIG OPTION: In the future, default_server_name will not be accepted. Please " + 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/index.html 56 TODO <noscript>Sorry, Element requires JavaScript to be enabled.</noscript> <!-- TODO: Translate this? --> 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/init.tsx 54 XXX // XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/jitsi/index.html 13 TODO <!-- TODO: i18n --> 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/jitsi/index.pcss 8 TODO /* TODO: Match the user's theme: https://github.com/element-hq/element-web/issues/12794 */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/jitsi/index.ts 55 XXX // XXX: It is unclear whether this is a typo of TOOLBAR_BUTTONS or if its just really undocumented, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/platform/IPCManager.ts 33 TODO // TODO this should be moved into the preload.js file. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/url_utils.ts 72 XXX // XXX: unclear where, if anywhere, this is set 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/url_utils.ts 77 XXX // XXX: Fragment params seemingly relating to 3pid invites, though the code in the area doubts they are ever specified 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/viewmodels/message-body/UrlPreviewGroupViewModel.ts 443 FIXME // FIXME: persist this somewhere smarter than local storage 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/viewmodels/message-body/UrlPreviewGroupViewModel.ts 456 FIXME // FIXME: persist this somewhere smarter than local storage 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/viewmodels/room/right-panel/WidgetContextMenuViewModel.tsx 201 XXX // XXX: won't i18n well, but looks like widget api only support 'message'? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/widgets/CapabilityText.tsx 131 TODO // TODO: Support MSC3819 (to-device capabilities) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/widgets/WidgetType.ts 9 TODO // TODO: Move to matrix-widget-api 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/setup/setupManualMocks.ts 47 TODO // TODO: Extract this to a function and have tests that need it opt into it. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/test-utils/test-utils.ts 56 TODO * TODO: once the components are updated to get their MatrixClients from 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/test-utils/utilities.ts 182 XXX // XXX: Maybe in the future with Jest 29.5.0+, we could use `runAllTimersAsync` instead. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/Lifecycle-test.ts 784 XXX // XXX: these tests are broken, Lifecycle.setLoggedIn does not work with OIDC and its token refreshers due to clearing storage 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/Notifier-test.ts 583 TODO // TODO: Once https://github.com/matrix-org/matrix-js-sdk/pull/5134 is merged this can be MembershipKind.Session 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/structures/MatrixChat-test.tsx 199 TODO // TODO: nowadays the access token lives (encrypted) in indexedDB, and localstorage is only used as a fallback. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/structures/MatrixChat-test.tsx 1250 XXX // XXX This test is strange, it was working with legacy crypto 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/structures/MatrixChat-test.tsx 1301 FIXME // FIXME: except it is *also* used as the permanent client for the rest of the test. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/structures/MessagePanel-test.tsx 104 HACK // HACK: We assume all settings want to be disabled 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/beacon/RoomCallBanner-test.tsx 152 TODO // TODO: test clicking buttons 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/beacon/RoomCallBanner-test.tsx 153 TODO // TODO: add live location share warning test (should not render if there is an active live location share) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/context_menus/MessageContextMenu-test.tsx 729 XXX // XXX: We probably shouldn't be assuming all events are going to be message events, but considering this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/dialogs/security/CreateSecretStorageDialog-test.tsx 90 XXX // XXX the error message is... misleading. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/rooms/EditMessageComposer-test.tsx 264 TODO // TODO Edits do not properly strip the double slash used to skip 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/hooks/useSuggestion-test.tsx 107 TODO // TODO refactor and expand tests when mentions become <a> tags 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/spaces/SpaceSettingsVisibilityTab-test.tsx 68 TODO // TODO case for canonical 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/models/Call-test.ts 844 TODO // TODO refactor initial device configuration to use the EW settings. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/slash-commands/utils.ts 29 TODO // TODO: if getCommand took a MatrixClient argument, we could use 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/stores/SpaceStore-test.ts 268 TODO // TODO this test should be failing right now 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/stores/SpaceStore-test.ts 620 XXX // XXX: All rooms space is forcibly enabled, as part of a future PR test Home space better 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/stores/SpaceStore-test.ts 681 XXX // XXX: All rooms space is forcibly enabled, as part of a future PR test Home space better 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/utils/MegolmExportEncryption-test.ts 123 TODO // TODO find a subtlecrypto shim which doesn't break this test 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/utils/objects-test.ts 63 XXX // XXX: inverted expectation for ease of assertion 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/config.md 145 DEPRECATED 11. `welcome_user_id`: **DEPRECATED** An optional user ID to start a DM with after creating an account. Defaults to nothing (no DM created). 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/customisations.md 3 DEPRECATED ### 🦖 DEPRECATED 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/deprecated-modules.md 4 DEPRECATED > DEPRECATED. Use [Element web module api](https://github.com/element-hq/element-modules/tree/main/packages/element-web-module-api) instead. 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/monorepo.md 30 TODO - #TODO should we just use short-lived release branches? We'd need to effectively interlace them for the various packages which feels messy 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/native-node-modules.md 43 TODO - Linux: TODO. Using the docker environment as above is recommended. 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/native-node-modules.md 44 TODO - OS X: TODO 2026-05-10 91 3da363517 sorB
ThreadNet-Web packages/shared-components/src/core/i18n/i18n.tsx 293 TODO // TODO: Cache regexps 2026-05-10 91 3da363517 sorB
ThreadNet-Web packages/shared-components/src/room/timeline/event-tile/body/DecryptionFailureBodyView/DecryptionFailureBodyView.tsx 125 TODO // TODO: event should be hidden instead of showing this error. 2026-05-10 91 3da363517 sorB
ThreadNet-Web packages/shared-components/src/room/timeline/event-tile/body/DecryptionFailureBodyView/DecryptionFailureBodyView.tsx 138 TODO // TODO: event should be hidden instead of showing this error. 2026-05-10 91 3da363517 sorB
ThreadNet-Web packages/shared-components/src/room/timeline/event-tile/body/MFileBodyView/FileBodyView.tsx 263 TODO TODO: Move iframe (and dummy link) into FileDownloader. 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/analyse_unused_exports.ts 49 TODO // TODO: This might break on Windows 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 223 TODO // TODO workflow_call reusables 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 266 TODO // TODO should we be just dropping these? 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 514 TODO // TODO separate disconnected nodes into their own graph 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 551 TODO // TODO unsure about this edge 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 557 TODO // TODO handle job.if on github.event_name 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 604 TODO // TODO validate edge case 2026-05-10 91 3da363517 sorB
axion1337.chat-gitops .devcontainer/devcontainer.json 47 TODO "TODO", 2026-05-14 87 4cf6702f8 Scrublord MacBad
axion1337.chat-gitops .devcontainer/devcontainer.json 48 FIXME "FIXME", 2026-05-14 87 4cf6702f8 Scrublord MacBad
axion1337.chat-gitops .devcontainer/devcontainer.json 50 HACK "HACK", 2026-05-14 87 4cf6702f8 Scrublord MacBad
axion1337.chat-gitops .devcontainer/devcontainer.json 52 XXX "XXX", 2026-05-14 87 4cf6702f8 Scrublord MacBad
axion1337.chat-gitops docs/oldwiki/home.md 2335 XXX age: "XXX" 2026-05-14 87 b1247b472 Scrublord MacBad
threadnet-call .eslintrc.cjs 69 XXX // XXX: We use /lib in lots of places, so allow for now. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call knip.ts 17 TODO // installed binary. TODO We should switch to Compose v2: 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call playwright/access.spec.ts 109 XXX // XXX check the display names on the video tiles 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call playwright/widget/test-helpers.ts 76 XXX // XXX This using the notification toast to join the room. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call playwright/widget/test-helpers.ts 371 XXX // XXX we need to be better at our HTML markup and accessibility, it would make 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call sdk/index.html 7 TODO // TODO use the url where the matrixrtc-sdk.js file from dist is hosted 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call sdk/main.ts 45 TODO // TODO how can this get fixed? to just be part of `livekit-client` 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/Modal.module.css 95 TODO /* TODO: Support tabs */ 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/Modal.tsx 60 TODO // TODO: Better tabs support 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/auth/LoginPage.tsx 29 TODO const homeserver = Config.defaultHomeserverUrl(); // TODO: Make this configurable 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/auth/LoginPage.tsx 37 TODO // TODO: Handle hitting login page with authenticated client 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/auth/useInteractiveLogin.ts 56 XXX // XXX: This claims to return an IAuthData which contains none of these 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/auth/useInteractiveRegistration.ts 104 XXX // XXX: This claims to return an IAuthData which contains none of these 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/components/MediaMuteAndSwitchButton.stories.tsx 65 TODO // (both are TODO placeholders in the component). The mute button is first in the DOM. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/grid/SpotlightPortraitLayout.tsx 64 TODO // TODO: We pretend that the minimum height is the width, because the 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/home/useGroupCallRooms.ts 110 TODO // TODO: check JoinRule.Restricted and return true if join condition is satisfied 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/livekit/MatrixAudioRenderer.tsx 81 TODO // TODO make sure to also skip the warn logging for the local identity 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/livekit/TrackProcessorContext.tsx 33 TODO //TODO-MULTI-SFU: This is not yet fully there. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/livekit/openIDSFU.ts 150 DEPRECATED // DEPRECATED 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/reactions/ReactionsReader.ts 76 TODO // TODO: Convert this class to the functional reactive style and get rid of 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/reactions/ReactionsReader.ts 269 TODO // TODO refactor to use memer id `membershipEvent.membershipID` (needs to happen in combination with other memberId refactors) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/reactions/index.ts 87 TODO // TODO: These need to be translated. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/CallEventAudioRenderer.test.tsx 173 TODO // TODO: What is this string supposed to be? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 8 TODO // TODO-MULTI-SFU: Restore or discard these tests. The role of GroupCallView has 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 92 TODO // // TODO: perhaps there is a more elegant way to manage the type import here? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 95 TODO // // TODO: leaveRTCSession no longer exists! Tests need adapting. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 176 TODO // TODO-MULTI-SFU: This cast isn't valid, it's likely the cause of some current test failures 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 188 TODO // TODO-MULTI-SFU: Make joined and setJoined work 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 464 XXX // XXX: Wrapping the following click in act() shouldn't be necessary (the 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 470 TODO // TODO investigate if this is a test setup issue or an actual problem. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.tsx 166 TODO // TODO move this into the callViewModel LocalMembership.ts 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.tsx 241 TODO // TODO-MULTI-SFU what to do with error handling now that we don't use this function? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.tsx 264 XXX // XXX: I think this is broken currently - LiveKit *won't* request 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.tsx 331 TODO // TODO refactor this + "joined" to just one callState 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.tsx 336 TODO // TODO split this into leave and onDisconnect 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/InCallView.tsx 103 TODO // TODO refactor those reasons into an enum 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/InCallView.tsx 140 TODO // TODO move this somewhere else once we use the callViewModel in the lobby as well! 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/InCallView.tsx 224 TODO // TODO-MULTI-SFU This is unused now?? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/InCallView.tsx 230 TODO // TODO-MULTI-SFU decide how to handle this properly 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/InCallView.tsx 648 TODO // TODO compute is local or tag it in the livekit room items already 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/LobbyView.tsx 99 TODO // TODO: Make sure that this module is resilient when it comes to camera/microphone availability! 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/LobbyView.tsx 212 TODO // TODO: Unify this component with InCallView, so we can get slick joining 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/RoomPage.tsx 243 TODO // TODO: This doesn't belong here, the app routes need to be reworked 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/useRoomState.ts 25 TODO // TODO: matrix-js-sdk says that Room.currentState is deprecated, but it's not 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/settings/settings.ts 84 TODO // TODO: This setting can be disabled. Work out an approach to disableable 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/AndroidControlledAudioOutput.ts 142 TODO // TODO: it appears that on Android the hosting application is only using the deprecated callback (onOutputDeviceSelect) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/AndroidControlledAudioOutput.ts 281 TODO // TODO only want to check from the added device, not all devices.? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/AppViewModel.ts 17 TODO // TODO: Move more application logic here. The CallViewModel, at the very 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 161 TODO //TODO 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 241 TODO * TODO: it seems more reasonable to add a leave() method (that calls requestDisconnect) that will then update leave$ and remove the hangup pattern 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 540 TODO // TODO. This might need to get called again on each change of matrixRTCMode... 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 614 TODO // TODO if we are in "unknown" state we need a loading rendering (or empty screen) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 793 TODO // TODO: Respect io.element.functional_members 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 1300 TODO // TODO: Respect io.element.functional_members (while still 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 1303 TODO // TODO: Only hide name tags in DMs, not group chats that just 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.test.ts 534 TODO // TODO add an integration test combining publisher and localMembership 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.test.ts 683 TODO // TODO add tests for matrix local matrix participation. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 83 XXX // XXX: This state is removed for now since we do not have full control over 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 91 TODO // TODO not sure how to map that correctly with the 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 96 XXX // XXX: This state is removed for now since we do not have full control over 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 132 TODO // TODO add a comment into some code style readme or file header callviewmodel 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 304 XXX // XXX We might want to give some user feedback here to let them know their media is not working. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 635 TODO // TODO Update matrixRTCSession to allow udpating the transport without leaving the session! 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 659 TODO // TODO refactor this based no livekitState$ 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 889 TODO // TODO where/how do we track errors originating from the ongoing rtcSession? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalTransport.ts 77 TODO // TODO livekit_alias-cleanup 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalTransport.ts 227 XXX // XXX: WORK AROUND due to a reconnection glitch. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/Publisher.ts 257 TODO // TODO what about screen share? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.ts 93 TODO // TODO: Workaround for an issue in the js-sdk RoomWidgetClient that 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/Connection.test.ts 572 TODO // // TODO understand what is wrong with our mocking that requires ts-expect-error 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/Connection.test.ts 608 TODO // // TODO: Refactor the code to make it testable. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/Connection.ts 139 TODO // TODO: can we just keep the ConnectionOpts object instead of spreading? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/Connection.ts 193 TODO // TODO consider an autostart pattern... 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionFactory.ts 43 TODO // TODO evaluate if this should be done like the Publisher Factory 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionFactory.ts 190 TODO // TODO test and consider this: 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionManager.ts 83 TODO // TODO - write test for scopes (do we really need to bind scope) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionManager.ts 117 TODO // TODO logger: only construct one logger from the client and make it compatible via a EC specific sing 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionManager.ts 197 TODO // TODO: This whole optional SFUConfig parameter is not particularly elegant. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionManager.ts 204 TODO // TODO subscribe to connection state to retry or log issues? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts 37 TODO // TODO decide if we can also drop the userId. Its in the matrix membership anyways. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts 142 TODO // TODO add back in the callviewmodel pauseWhen(this.pretendToBeDisconnected$) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts 144 TODO // TODO add this to the JS-SDK 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/MatrixMemberMetadata.ts 81 TODO // TODO: do we need: pauseWhen(this.pretendToBeDisconnected$), 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/integration.test.ts 85 TODO //TODO a bit annoying to have to do a http mock? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/MuteStates.test.ts 82 TODO // TODO I'd expect it to go back to previous state (enabled) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/MuteStates.test.ts 264 TODO // TODO I'd expect it to go back to previous state (enabled)?? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/MuteStates.ts 118 TODO // TODO: better error handling 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/MuteStates.ts 130 TODO // TODO: better error handling 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/media/MemberMediaViewModel.ts 44 TODO // TODO: Encryption status is kinda broken and thus unused right now. Remove? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/tile/GridTile.tsx 370 TODO {/* TODO: Figure out how to make this slider keyboard accessible */} 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/tile/MediaView.tsx 191 TODO {/* TODO: Bring this back once encryption status is less broken */} 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/tile/TileAvatar.module.css 18 TODO /* TODO: make this --cpd-color-fg-primary when available. */ 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/useCallViewKeyboardShortcuts.ts 70 TODO // TODO: Make sure that this module is resilient when it comes to camera/microphone availability! 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/utils/matrix.ts 110 XXX // XXX: we read from the URL params in RoomPage too: 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call tsconfig.json 43 TODO // TODO: Enable the following options later. 2026-07-31 9 8fb630cfb Thore Cimbal
Can't render this file because it contains an unexpected character in line 12 and column 89.
+280
View File
@@ -0,0 +1,280 @@
kind repo path line sha status resolved_in note
doc-reference management .gitlab/issue_templates/Deploy-Übergabe.md 14 b6007c5 resolves threadnet-operating Beispiel: axion1337.chat/threadnet-operating @ main, b6007c5 -->
doc-reference management decisions/0009-commit-konventionen-und-historien-anonymisierung.md 77 3cb43f5 resolves ThreadNet-Web ThreadNet-Web#14; die Sperre ist seit `3cb43f5` scharf.
doc-reference management hosts/cfgmon.md 54 dfe04c4a orphan dort direkt nach Gitea gepusht (dfe04c4a), vom Mirror überschrieben, vom Mac aus
doc-reference management hosts/cfgmon.md 55 6ffab68 resolves threadnet-operating per Patch gerettet und kanonisch als `6ffab68` neu aufgelegt (inhaltsgleich,
doc-reference management hosts/cfgmon.md 60 a876758 resolves ThreadNet-Web - `ThreadNet-Web`: alle `.github/workflows/`-Dateien entfernt (Commit `a876758`)
doc-reference management hosts/cfgmon.md 62 5e46a24 resolves axion1337.chat-gitops (Commit `5e46a24`, Pipeline grün, Mirror→Gitea verifiziert; `milestone-release.yml`
doc-reference management hosts/cfgmon.md 64 d904734 resolves thread-net-git - `thread-net-git`: Runner-Service/Config/`.env.example` per Commit `d904734` entfernt
doc-reference management hosts/cfgmon.md 73 d904734 resolves thread-net-git Stolperstein dabei: Rückbau-Commit `d904734` hinterließ ein verwaistes
doc-reference management hosts/cfgmon.md 75 15c8f2d resolves thread-net-git Mac→git.lab→Mirror (`15c8f2d`), Hergang in thread-net-git#1 (geschlossen).
doc-reference management hosts/cfgmon.md 248 02b3224 resolves thread-net-git **2026-07-30 nach `main` gemergt** (`origin/main` == `origin/rework/stack` auf `02b3224`,
doc-reference management hosts/cfgmon.md 276 a400f8a resolves threadnet-operating Behoben in `threadnet-operating`, Commit `a400f8a`. Cert von Let's Encrypt (YR2)
doc-reference management hosts/cfgmon.md 288 edac97e resolves threadnet-operating Behoben durch ein `alloy_data`-Volume, Commit `edac97e`. Verifiziert: Positions
doc-reference management hosts/matrix.md 49 228807f resolves axion1337.chat-gitops **Fix (gitops `228807f`, Weg A aus gitops#45):** HelmRelease + Alloy-Scrape entfernt,
doc-reference management hosts/overmind.md 23 7645a2b orphan | Windows-Build-VM | Dokploy-Stack `windows-runner` (live seit 2026-07-31) | Image `registry.git.lab/axion1337.chat/vendor/windows:stable` (Eigenbau aus reviewt
doc-reference management hosts/overmind.md 87 5bc25447 orphan pusht per `CI_JOB_TOKEN` in die Lab-Registry — verifiziert, Tags `5bc25447` + `stable`
doc-reference management roadmap.md 54 6b0261d resolves ThreadNet-Web Commit `6b0261d`). Offen: Web-Client-Icons/`brand`, About-Attribution.
doc-reference management shared/branding.md 87 b10b607 resolves axion1337.chat-gitops übernommen** (gitops `b10b607`), nachdem eine erste Fassung die Namen frei
doc-reference management verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 13 2b715ca orphan `alertmanager.yml` auf einen Null-Receiver (Commit `2b715ca` in
doc-reference management verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 24 cdfadc0 resolves threadnet-operating | 5 | Grafana-Provisioning für den Security-Ordner fehlte — das Dashboard wäre nie erschienen | — | vom Autor selbst behoben (`cdfadc0`), bevor ausgerollt wurde
doc-reference management verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 27 c51b681 resolves ThreadNet-Web | 6 | **Nur macOS bekam neue Icons** — Windows (`.ico`) und Web (`res/vector-icons/`, `manifest.json`) blieben auf Element | MEDIUM | gelöst, `c51b681` |
doc-reference management verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 147 80fcf6c resolves ThreadNet-Web **Korrigiert:** gitops `b10b607` (Web, live verifiziert) · ThreadNet-Web `80fcf6c`
doc-reference management verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 147 b10b607 resolves axion1337.chat-gitops **Korrigiert:** gitops `b10b607` (Web, live verifiziert) · ThreadNet-Web `80fcf6c`
doc-reference management verfahren/deploy-uebergabe.md 84 6ffab68 resolves threadnet-operating überschrieben** (zweimal passiert: dfe04c4→6ffab68 am 01.08. nachts,
doc-reference management verfahren/deploy-uebergabe.md 84 dfe04c4 orphan überschrieben** (zweimal passiert: dfe04c4→6ffab68 am 01.08. nachts,
doc-reference management verfahren/deploy-uebergabe.md 85 0bd77e2 resolves threadnet-operating 2b715ca→0bd77e2 am 01.08. nachmittags). Deshalb gehört zu jeder Übergabe:
doc-reference management verfahren/deploy-uebergabe.md 85 2b715ca orphan 2b715ca→0bd77e2 am 01.08. nachmittags). Deshalb gehört zu jeder Übergabe:
doc-reference management vision/threadnet.md 33 51ea513 resolves axion1337.chat-gitops steht Commit `51ea513` — *„remove plaintext TURN shared secret, rotate leaked
doc-reference management vision/threadnet.md 44 6b0261d resolves ThreadNet-Web seit `6b0261d` ThreadNet und trägt die eigene Marke, der Web-Client zeigt weiter
mapping-entry management shared/commit-zuordnung-2026-08-07.md 001f59fe44->97fe9e0fa8 ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 00bf0403c7->e21a895390 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 019c5cb6c9->9e0af1370b ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 01f0f9ad07->d3869e081e ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 0242238597->51ea51352b ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry management shared/commit-zuordnung-2026-08-07.md 029ee29d9c->ff21788692 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 02c60cbbe5->52573634df ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 03ddd7b1d8->fdf30d42e1 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 04d61ec6ac->cd7b2d0b75 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 05197c40aa->f687b41441 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 054fac4383->8e489415cd ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 05900602c6->44305556c3 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 077dd43af2->ac688d36f7 ok threadnet-call new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 07b5b7b17d->cb2ffa6a08 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 082817a0d7->2932ffffc3 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 09bdd94da6->f3c5603955 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 09f6e8c333->751df7dc01 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 0b27c26bec->3aa34f8635 ok management new resolves, old gone as expected
mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 0be204e6d7->3f0f55e6bd ok threadnet-call new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 0cd5a33402->aecbea0c89 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 0cfbb4a89f->42632d6b2a ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 0db7fc1573->736c39a413 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry management shared/commit-zuordnung-2026-08-07.md 10f76f2942->0b6060339e ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 1354767643->bc0769809d ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 142b24d65a->019c3e7279 ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 15fd90655c->a2bfaaec8f ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 161df3a9cc->bd83975b2f ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 163504efc6->bd8298db39 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 170d6c3538->77ffeb4514 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 18c9f1ed20->e5c78edb14 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 194d47a0ef->100b46ec91 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 1b1fa2b719->376772078a ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 1c5e21ce43->34686ee2e1 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 1cbd2001db->59025c2e15 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 1dd8f282d8->8e98a39447 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 1e5da7e630->77a9a94a7f ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 1e8ee1c4ac->4e03950d3f ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 20e4a8da48->c0cb864ca2 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 214fd5b70a->8faade6c7b ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 24ab87e398->e7f1b5d6f8 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 24cacf1000->c0774b5f58 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 282540be9f->624274f5f0 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 28cd06c13b->fa5c7a8681 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 290709a900->3fe05e7bd1 ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 29ffb88cdd->9e2f49b3dd ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 2a2575781d->bd8486960f ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 2a294f2261->d31fef4b28 ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 2a2bb3778d->6e021ee853 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 2b1f791fe6->1b8ef35e9b ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 2b7f42dc8c->932443df63 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 2ec9858a91->9c3d2529b4 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 30578abaaf->8f1d39b7a8 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 314cf6dedb->80714fe901 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 328b028c5d->6973a8dbc7 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 32e2c8e556->7b19586179 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 375259061f->f656c5d8b3 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 39037d85cc->ccf6856f42 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 3b42b220a0->22a0823b7e ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 3c30dd512f->9ac56d671b ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 3e147554eb->e094c4ab29 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 3e38955c12->9fa88bda5c ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 404a12d97c->c079ec2d7d ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 418d787f77->5091ba8f3f ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 41bf33fcfd->7d352fbf20 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 420f779711->09e4225de5 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry management shared/commit-zuordnung-2026-08-07.md 425a2645b6->71975d5d41 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 42d76cc13d->b28ef2c97a ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 44aa5a918e->79db6a8e49 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry management shared/commit-zuordnung-2026-08-07.md 4597ea1cc3->f22ede5124 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 480d80e783->c3e84c53bf ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 480e28180c->f5fe27336f ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 49441bf332->cbfbf4b36e ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 49f3f38b06->92dac0be23 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 4a8e1b6ffd->830c740a58 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 4c792172f8->bb5778e121 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 4d8fa5f06c->174c58001b ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 4dd452e0fa->49faf20243 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 50bc39c0d1->490c2b7257 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 50c2fc2889->e462980dac ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry management shared/commit-zuordnung-2026-08-07.md 5275bef15b->d019bfedda ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 52b0de1b5a->eabde3747e ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 55e1a0949f->80fcf6c227 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 574c1bf89c->a8767583da ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 57a355ac38->a85d082f10 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 58fcc4ab42->337dbe85ac ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry management shared/commit-zuordnung-2026-08-07.md 590a80f510->efbb4b9a1a ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 59e1719a10->5505b9cfc1 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 59f9c81ef8->8d46fb33d2 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 5bcbadd06a->be95bd921c ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry management shared/commit-zuordnung-2026-08-07.md 5d18924d28->8aebe3b03d ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 5e3254d8a8->1822fe80f0 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 5eeddc8a0a->1eb4968968 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 60f2cda962->45fb329577 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 6260cc4962->8fb630cfb3 ok-both-present threadnet-call old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 62b05c51c4->233b13f972 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 62d4bf6630->d742c99ba5 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 640c93480d->717638d12c ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 64670c51b6->f1b60d815b ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 6575cb942a->3c26cf2504 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 65f6aa813d->1bb1bc9610 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 686f50db8e->c8fc91ff1d ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 697e1674c0->5a8c42b5e9 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 6a628533c2->42285021cb ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 6a8a2bb1a9->71ac7c4346 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 6a90a12b2c->252b16ca71 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 6c693c9a8a->a81ea0dd2e ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 703cf1ff1c->3054037480 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7248da62bc->c7d4b6f376 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 75a319a7e3->ba9783fa08 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 760c6af264->6f94e6a8a3 ok threadnet-call new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7735c504f2->8ad921519f ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 7839b56a65->306cca041c ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 784459beed->d2bcd90291 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7871e038c7->fad91b6a05 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7972034298->2aed6e4932 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7b9d13199e->9607687e4e ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7bd67a53a6->2e53387650 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 7dc4e5bf8e->15396d53e8 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7f42a456eb->7cd177f744 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 7fb6251e1c->a6e555ac3f ok threadnet-call new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7ff3fb65e8->5f7fd8bc46 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 81f207e9c3->786ca28895 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 826fc8dbd3->e9b24a6d1f ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 82827c4857->018a4b7d83 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 83150c3d8e->9cc5ba4fe0 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 838a186c91->02946481ae ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 83d733b9f5->26b6fd8938 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 85aa8ef22d->3eb27b3a62 ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 88127d9876->1d5a136dff ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 88f9bdb8d7->f4995e5882 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 891adc6944->59df406a19 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 893fe32976->f58add72ae ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 8a3274dd33->4ca87a68c7 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 8a38224f51->846135e48d ok threadnet-call new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 8a9d778973->b10b607d70 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 8cfa7cb83e->d7aca3bd0c ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 8ec67463b1->c1a604bd19 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 8ee937e56d->5c3a7b798a ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 8fb32d9360->f2abae85dd ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 90251e4a55->e21e101004 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 93a0c9cecb->98c6483b9f ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 93ee6a3549->228807fcc8 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 94244736c9->d4f3fc4c97 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 94596c2933->3c6f3645b3 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 947eaab71c->ac7e65100d ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 95ab6db12f->5ca8f00d58 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 95d43bcade->97e18bbf2f ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 961641004f->7a1710c78d ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 977903bdf7->f47baa553a ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 99a87a2cef->4fdad89fa6 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 9aa42f96bc->11f97b935f ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 9aec29f605->09aaf1b2b5 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 9b8145540f->0f28acb626 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 9e15ba57c5->712cd430bf ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md 9f78b04419->88850809c7 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md a23a149c0d->ce62396f0b ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md a2438e1b2b->b15a9f578c ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md a29235cd54->b4b4893389 ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md a3965d2eb6->6f1dfedde2 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md a3c7fb3c17->8465457a48 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md a3d51ddf70->cf66ff018d ok ThreadNet-Web new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md a40a8665ee->a414bb8585 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md a4df631ee6->4f7500c00c ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md a5597f0f8b->0d0c1659c6 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md a64ce123c1->63fd0b460a ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md a777f973cb->316178bd51 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md a9b8ca05ca->d9db323b62 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md aa3f47d4ec->0b518bb3b1 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md aa42d0530a->235306a840 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry management shared/commit-zuordnung-2026-08-07.md aa6d5fc13a->a053fd9271 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md ac11c274e4->83cee828b8 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md ad3c956cb5->b51a07b068 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md ae982cdb4b->164d96dddd ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md b11284b844->777f8c375f ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md b13bb2381d->0274f9316c ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md b24ce732dc->0f1d31021c ok ThreadNet-Web new resolves, old gone as expected
mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md b265395e6d->84419133b3 ok threadnet-call new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md b4ee92fe9a->0abd26e416 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md b51986de9f->ae62727a50 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md b647645d2a->3e226fba40 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md b73d88729d->6f761da1a4 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md b9358d91f7->6f33c7277a ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md b96793da98->cc0d4d3e02 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md baf0863a2f->af73cf770b ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md bccd265302->49005ed325 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md bd25486e56->11a079db57 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md bdb2c766e9->0671da1040 ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md bfd72cdf3e->580827f7ca ok ThreadNet-Web new resolves, old gone as expected
mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md c01d55d517->0823c8a866 ok threadnet-call new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c0be911797->4a3d7c70a6 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c1c189d281->debf980d5f ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c262d47809->bb51047e1d ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c47b0a3312->ac0afaf3d9 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md c52b792511->0d0255cb7f ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c52ff97502->414ada956a ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c631b0a917->44d3e7dae1 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c6e72ac9bb->f1d732afbe ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md c8d458734a->6b0261d66c ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md cacb89175b->666aa9004a ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md cc3f860bf8->c51b68194a ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md cc6565e494->0213b0fe58 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md cf24a1a396->edf224e450 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d10a9285b9->60248bfd92 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md d1f9f22455->0f3f155bc5 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md d21eabb77f->a5eacfe39e ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d24dbf84f7->9fa947cc21 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d24e37619c->25d1742d61 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d31cc19fab->5e16719bfe ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md d43bb05d77->4c870854f1 ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md d4ed5e8cc0->c401f54e4d ok ThreadNet-Web new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md d5046621ca->b6aaad7abe ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d54c4aec65->2803fb384c ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md d6c98632f0->889cd47be7 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d8acc1e26c->13385b68f2 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md d967654077->e549de8247 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md da6d352902->42da25d0a6 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md db77785b6b->9db1ee6f45 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md dc856186d1->7ac584d27b ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md de2af6e199->e659242990 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e0db79a3f1->b32920c48f ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e14d1be69d->34442df75c ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md e1f508d12e->b656eefdc7 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e51142ec5b->1b35766ad3 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e53896e02c->7795f89fc9 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e54a1d57e0->ebb1d4e2a7 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e54ec10fd9->2c5f77686d ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e58b8db8fe->5e46a24e7d ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e5d74662a0->c1ee776070 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md e7675d7b9f->a55adfdd65 ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e8ba7589dd->5aca738f55 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md e8c7dfed36->e793902ae0 ok threadnet-call new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md e8e1b36224->ea026a0057 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e963203376->af63755f1e ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e9f000f87b->23c66c97b8 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md ea72f5b357->37aea0254b ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry management shared/commit-zuordnung-2026-08-07.md eab452b3d5->e4991c050f ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md eb9ada6427->3e81f40178 ok management new resolves, old gone as expected
mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md ed1c7ff5bc->965c456dee ok ThreadNet-Web new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md ed73a42772->8331bb212d ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md ee476782bb->0a07da260f ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md ee91f121b8->0f7ff1a896 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md efb25f31a2->f0174decc1 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md eff643edf6->cdecb006d4 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md f030586956->dfe7ff9fc0 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md f0b0019ee7->191981aefe ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md f30d2f582b->802e09cd9c ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md f56f8c2479->105194d450 ok axion1337.chat-gitops new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md f5e9fc5d2b->ba270bce71 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
mapping-entry management shared/commit-zuordnung-2026-08-07.md f6055ee47c->2be5fb6f60 ok management new resolves, old gone as expected
mapping-entry management shared/commit-zuordnung-2026-08-07.md fcfe3b681d->7d7c1e86b0 ok management new resolves, old gone as expected
mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md fe575808b3->027f567c8b ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
1 kind repo path line sha status resolved_in note
2 doc-reference management .gitlab/issue_templates/Deploy-Übergabe.md 14 b6007c5 resolves threadnet-operating Beispiel: axion1337.chat/threadnet-operating @ main, b6007c5 -->
3 doc-reference management decisions/0009-commit-konventionen-und-historien-anonymisierung.md 77 3cb43f5 resolves ThreadNet-Web ThreadNet-Web#14; die Sperre ist seit `3cb43f5` scharf.
4 doc-reference management hosts/cfgmon.md 54 dfe04c4a orphan dort direkt nach Gitea gepusht (dfe04c4a), vom Mirror überschrieben, vom Mac aus
5 doc-reference management hosts/cfgmon.md 55 6ffab68 resolves threadnet-operating per Patch gerettet und kanonisch als `6ffab68` neu aufgelegt (inhaltsgleich,
6 doc-reference management hosts/cfgmon.md 60 a876758 resolves ThreadNet-Web - `ThreadNet-Web`: alle `.github/workflows/`-Dateien entfernt (Commit `a876758`)
7 doc-reference management hosts/cfgmon.md 62 5e46a24 resolves axion1337.chat-gitops (Commit `5e46a24`, Pipeline grün, Mirror→Gitea verifiziert; `milestone-release.yml`
8 doc-reference management hosts/cfgmon.md 64 d904734 resolves thread-net-git - `thread-net-git`: Runner-Service/Config/`.env.example` per Commit `d904734` entfernt
9 doc-reference management hosts/cfgmon.md 73 d904734 resolves thread-net-git Stolperstein dabei: Rückbau-Commit `d904734` hinterließ ein verwaistes
10 doc-reference management hosts/cfgmon.md 75 15c8f2d resolves thread-net-git Mac→git.lab→Mirror (`15c8f2d`), Hergang in thread-net-git#1 (geschlossen).
11 doc-reference management hosts/cfgmon.md 248 02b3224 resolves thread-net-git **2026-07-30 nach `main` gemergt** (`origin/main` == `origin/rework/stack` auf `02b3224`,
12 doc-reference management hosts/cfgmon.md 276 a400f8a resolves threadnet-operating Behoben in `threadnet-operating`, Commit `a400f8a`. Cert von Let's Encrypt (YR2)
13 doc-reference management hosts/cfgmon.md 288 edac97e resolves threadnet-operating Behoben durch ein `alloy_data`-Volume, Commit `edac97e`. Verifiziert: Positions
14 doc-reference management hosts/matrix.md 49 228807f resolves axion1337.chat-gitops **Fix (gitops `228807f`, Weg A aus gitops#45):** HelmRelease + Alloy-Scrape entfernt,
15 doc-reference management hosts/overmind.md 23 7645a2b orphan | Windows-Build-VM | Dokploy-Stack `windows-runner` (live seit 2026-07-31) | Image `registry.git.lab/axion1337.chat/vendor/windows:stable` (Eigenbau aus reviewt
16 doc-reference management hosts/overmind.md 87 5bc25447 orphan pusht per `CI_JOB_TOKEN` in die Lab-Registry — verifiziert, Tags `5bc25447` + `stable`
17 doc-reference management roadmap.md 54 6b0261d resolves ThreadNet-Web Commit `6b0261d`). Offen: Web-Client-Icons/`brand`, About-Attribution.
18 doc-reference management shared/branding.md 87 b10b607 resolves axion1337.chat-gitops übernommen** (gitops `b10b607`), nachdem eine erste Fassung die Namen frei
19 doc-reference management verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 13 2b715ca orphan `alertmanager.yml` auf einen Null-Receiver (Commit `2b715ca` in
20 doc-reference management verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 24 cdfadc0 resolves threadnet-operating | 5 | Grafana-Provisioning für den Security-Ordner fehlte — das Dashboard wäre nie erschienen | — | vom Autor selbst behoben (`cdfadc0`), bevor ausgerollt wurde
21 doc-reference management verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 27 c51b681 resolves ThreadNet-Web | 6 | **Nur macOS bekam neue Icons** — Windows (`.ico`) und Web (`res/vector-icons/`, `manifest.json`) blieben auf Element | MEDIUM | gelöst, `c51b681` |
22 doc-reference management verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 147 80fcf6c resolves ThreadNet-Web **Korrigiert:** gitops `b10b607` (Web, live verifiziert) · ThreadNet-Web `80fcf6c`
23 doc-reference management verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 147 b10b607 resolves axion1337.chat-gitops **Korrigiert:** gitops `b10b607` (Web, live verifiziert) · ThreadNet-Web `80fcf6c`
24 doc-reference management verfahren/deploy-uebergabe.md 84 6ffab68 resolves threadnet-operating überschrieben** (zweimal passiert: dfe04c4→6ffab68 am 01.08. nachts,
25 doc-reference management verfahren/deploy-uebergabe.md 84 dfe04c4 orphan überschrieben** (zweimal passiert: dfe04c4→6ffab68 am 01.08. nachts,
26 doc-reference management verfahren/deploy-uebergabe.md 85 0bd77e2 resolves threadnet-operating 2b715ca→0bd77e2 am 01.08. nachmittags). Deshalb gehört zu jeder Übergabe:
27 doc-reference management verfahren/deploy-uebergabe.md 85 2b715ca orphan 2b715ca→0bd77e2 am 01.08. nachmittags). Deshalb gehört zu jeder Übergabe:
28 doc-reference management vision/threadnet.md 33 51ea513 resolves axion1337.chat-gitops steht Commit `51ea513` — *„remove plaintext TURN shared secret, rotate leaked
29 doc-reference management vision/threadnet.md 44 6b0261d resolves ThreadNet-Web seit `6b0261d` ThreadNet und trägt die eigene Marke, der Web-Client zeigt weiter
30 mapping-entry management shared/commit-zuordnung-2026-08-07.md 001f59fe44->97fe9e0fa8 ok management new resolves, old gone as expected
31 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 00bf0403c7->e21a895390 ok ThreadNet-Web new resolves, old gone as expected
32 mapping-entry management shared/commit-zuordnung-2026-08-07.md 019c5cb6c9->9e0af1370b ok management new resolves, old gone as expected
33 mapping-entry management shared/commit-zuordnung-2026-08-07.md 01f0f9ad07->d3869e081e ok management new resolves, old gone as expected
34 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 0242238597->51ea51352b ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
35 mapping-entry management shared/commit-zuordnung-2026-08-07.md 029ee29d9c->ff21788692 ok management new resolves, old gone as expected
36 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 02c60cbbe5->52573634df ok axion1337.chat-gitops new resolves, old gone as expected
37 mapping-entry management shared/commit-zuordnung-2026-08-07.md 03ddd7b1d8->fdf30d42e1 ok management new resolves, old gone as expected
38 mapping-entry management shared/commit-zuordnung-2026-08-07.md 04d61ec6ac->cd7b2d0b75 ok management new resolves, old gone as expected
39 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 05197c40aa->f687b41441 ok axion1337.chat-gitops new resolves, old gone as expected
40 mapping-entry management shared/commit-zuordnung-2026-08-07.md 054fac4383->8e489415cd ok management new resolves, old gone as expected
41 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 05900602c6->44305556c3 ok ThreadNet-Web new resolves, old gone as expected
42 mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 077dd43af2->ac688d36f7 ok threadnet-call new resolves, old gone as expected
43 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 07b5b7b17d->cb2ffa6a08 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
44 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 082817a0d7->2932ffffc3 ok axion1337.chat-gitops new resolves, old gone as expected
45 mapping-entry management shared/commit-zuordnung-2026-08-07.md 09bdd94da6->f3c5603955 ok management new resolves, old gone as expected
46 mapping-entry management shared/commit-zuordnung-2026-08-07.md 09f6e8c333->751df7dc01 ok management new resolves, old gone as expected
47 mapping-entry management shared/commit-zuordnung-2026-08-07.md 0b27c26bec->3aa34f8635 ok management new resolves, old gone as expected
48 mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 0be204e6d7->3f0f55e6bd ok threadnet-call new resolves, old gone as expected
49 mapping-entry management shared/commit-zuordnung-2026-08-07.md 0cd5a33402->aecbea0c89 ok management new resolves, old gone as expected
50 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 0cfbb4a89f->42632d6b2a ok axion1337.chat-gitops new resolves, old gone as expected
51 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 0db7fc1573->736c39a413 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
52 mapping-entry management shared/commit-zuordnung-2026-08-07.md 10f76f2942->0b6060339e ok management new resolves, old gone as expected
53 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 1354767643->bc0769809d ok ThreadNet-Web new resolves, old gone as expected
54 mapping-entry management shared/commit-zuordnung-2026-08-07.md 142b24d65a->019c3e7279 ok management new resolves, old gone as expected
55 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 15fd90655c->a2bfaaec8f ok ThreadNet-Web new resolves, old gone as expected
56 mapping-entry management shared/commit-zuordnung-2026-08-07.md 161df3a9cc->bd83975b2f ok management new resolves, old gone as expected
57 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 163504efc6->bd8298db39 ok ThreadNet-Web new resolves, old gone as expected
58 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 170d6c3538->77ffeb4514 ok ThreadNet-Web new resolves, old gone as expected
59 mapping-entry management shared/commit-zuordnung-2026-08-07.md 18c9f1ed20->e5c78edb14 ok management new resolves, old gone as expected
60 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 194d47a0ef->100b46ec91 ok axion1337.chat-gitops new resolves, old gone as expected
61 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 1b1fa2b719->376772078a ok axion1337.chat-gitops new resolves, old gone as expected
62 mapping-entry management shared/commit-zuordnung-2026-08-07.md 1c5e21ce43->34686ee2e1 ok management new resolves, old gone as expected
63 mapping-entry management shared/commit-zuordnung-2026-08-07.md 1cbd2001db->59025c2e15 ok management new resolves, old gone as expected
64 mapping-entry management shared/commit-zuordnung-2026-08-07.md 1dd8f282d8->8e98a39447 ok management new resolves, old gone as expected
65 mapping-entry management shared/commit-zuordnung-2026-08-07.md 1e5da7e630->77a9a94a7f ok management new resolves, old gone as expected
66 mapping-entry management shared/commit-zuordnung-2026-08-07.md 1e8ee1c4ac->4e03950d3f ok management new resolves, old gone as expected
67 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 20e4a8da48->c0cb864ca2 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
68 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 214fd5b70a->8faade6c7b ok ThreadNet-Web new resolves, old gone as expected
69 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 24ab87e398->e7f1b5d6f8 ok axion1337.chat-gitops new resolves, old gone as expected
70 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 24cacf1000->c0774b5f58 ok ThreadNet-Web new resolves, old gone as expected
71 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 282540be9f->624274f5f0 ok ThreadNet-Web new resolves, old gone as expected
72 mapping-entry management shared/commit-zuordnung-2026-08-07.md 28cd06c13b->fa5c7a8681 ok management new resolves, old gone as expected
73 mapping-entry management shared/commit-zuordnung-2026-08-07.md 290709a900->3fe05e7bd1 ok management new resolves, old gone as expected
74 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 29ffb88cdd->9e2f49b3dd ok ThreadNet-Web new resolves, old gone as expected
75 mapping-entry management shared/commit-zuordnung-2026-08-07.md 2a2575781d->bd8486960f ok management new resolves, old gone as expected
76 mapping-entry management shared/commit-zuordnung-2026-08-07.md 2a294f2261->d31fef4b28 ok management new resolves, old gone as expected
77 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 2a2bb3778d->6e021ee853 ok ThreadNet-Web new resolves, old gone as expected
78 mapping-entry management shared/commit-zuordnung-2026-08-07.md 2b1f791fe6->1b8ef35e9b ok management new resolves, old gone as expected
79 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 2b7f42dc8c->932443df63 ok axion1337.chat-gitops new resolves, old gone as expected
80 mapping-entry management shared/commit-zuordnung-2026-08-07.md 2ec9858a91->9c3d2529b4 ok management new resolves, old gone as expected
81 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 30578abaaf->8f1d39b7a8 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
82 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 314cf6dedb->80714fe901 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
83 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 328b028c5d->6973a8dbc7 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
84 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 32e2c8e556->7b19586179 ok axion1337.chat-gitops new resolves, old gone as expected
85 mapping-entry management shared/commit-zuordnung-2026-08-07.md 375259061f->f656c5d8b3 ok management new resolves, old gone as expected
86 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 39037d85cc->ccf6856f42 ok axion1337.chat-gitops new resolves, old gone as expected
87 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 3b42b220a0->22a0823b7e ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
88 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 3c30dd512f->9ac56d671b ok ThreadNet-Web new resolves, old gone as expected
89 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 3e147554eb->e094c4ab29 ok axion1337.chat-gitops new resolves, old gone as expected
90 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 3e38955c12->9fa88bda5c ok axion1337.chat-gitops new resolves, old gone as expected
91 mapping-entry management shared/commit-zuordnung-2026-08-07.md 404a12d97c->c079ec2d7d ok management new resolves, old gone as expected
92 mapping-entry management shared/commit-zuordnung-2026-08-07.md 418d787f77->5091ba8f3f ok management new resolves, old gone as expected
93 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 41bf33fcfd->7d352fbf20 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
94 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 420f779711->09e4225de5 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
95 mapping-entry management shared/commit-zuordnung-2026-08-07.md 425a2645b6->71975d5d41 ok management new resolves, old gone as expected
96 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 42d76cc13d->b28ef2c97a ok axion1337.chat-gitops new resolves, old gone as expected
97 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 44aa5a918e->79db6a8e49 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
98 mapping-entry management shared/commit-zuordnung-2026-08-07.md 4597ea1cc3->f22ede5124 ok management new resolves, old gone as expected
99 mapping-entry management shared/commit-zuordnung-2026-08-07.md 480d80e783->c3e84c53bf ok management new resolves, old gone as expected
100 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 480e28180c->f5fe27336f ok axion1337.chat-gitops new resolves, old gone as expected
101 mapping-entry management shared/commit-zuordnung-2026-08-07.md 49441bf332->cbfbf4b36e ok management new resolves, old gone as expected
102 mapping-entry management shared/commit-zuordnung-2026-08-07.md 49f3f38b06->92dac0be23 ok management new resolves, old gone as expected
103 mapping-entry management shared/commit-zuordnung-2026-08-07.md 4a8e1b6ffd->830c740a58 ok management new resolves, old gone as expected
104 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 4c792172f8->bb5778e121 ok axion1337.chat-gitops new resolves, old gone as expected
105 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 4d8fa5f06c->174c58001b ok axion1337.chat-gitops new resolves, old gone as expected
106 mapping-entry management shared/commit-zuordnung-2026-08-07.md 4dd452e0fa->49faf20243 ok management new resolves, old gone as expected
107 mapping-entry management shared/commit-zuordnung-2026-08-07.md 50bc39c0d1->490c2b7257 ok management new resolves, old gone as expected
108 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 50c2fc2889->e462980dac ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
109 mapping-entry management shared/commit-zuordnung-2026-08-07.md 5275bef15b->d019bfedda ok management new resolves, old gone as expected
110 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 52b0de1b5a->eabde3747e ok axion1337.chat-gitops new resolves, old gone as expected
111 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 55e1a0949f->80fcf6c227 ok ThreadNet-Web new resolves, old gone as expected
112 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 574c1bf89c->a8767583da ok ThreadNet-Web new resolves, old gone as expected
113 mapping-entry management shared/commit-zuordnung-2026-08-07.md 57a355ac38->a85d082f10 ok management new resolves, old gone as expected
114 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 58fcc4ab42->337dbe85ac ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
115 mapping-entry management shared/commit-zuordnung-2026-08-07.md 590a80f510->efbb4b9a1a ok management new resolves, old gone as expected
116 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 59e1719a10->5505b9cfc1 ok ThreadNet-Web new resolves, old gone as expected
117 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 59f9c81ef8->8d46fb33d2 ok ThreadNet-Web new resolves, old gone as expected
118 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 5bcbadd06a->be95bd921c ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
119 mapping-entry management shared/commit-zuordnung-2026-08-07.md 5d18924d28->8aebe3b03d ok management new resolves, old gone as expected
120 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 5e3254d8a8->1822fe80f0 ok ThreadNet-Web new resolves, old gone as expected
121 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 5eeddc8a0a->1eb4968968 ok ThreadNet-Web new resolves, old gone as expected
122 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 60f2cda962->45fb329577 ok ThreadNet-Web new resolves, old gone as expected
123 mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 6260cc4962->8fb630cfb3 ok-both-present threadnet-call old SHA still reachable from some ref
124 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 62b05c51c4->233b13f972 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
125 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 62d4bf6630->d742c99ba5 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
126 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 640c93480d->717638d12c ok axion1337.chat-gitops new resolves, old gone as expected
127 mapping-entry management shared/commit-zuordnung-2026-08-07.md 64670c51b6->f1b60d815b ok management new resolves, old gone as expected
128 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 6575cb942a->3c26cf2504 ok axion1337.chat-gitops new resolves, old gone as expected
129 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 65f6aa813d->1bb1bc9610 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
130 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 686f50db8e->c8fc91ff1d ok axion1337.chat-gitops new resolves, old gone as expected
131 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 697e1674c0->5a8c42b5e9 ok ThreadNet-Web new resolves, old gone as expected
132 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 6a628533c2->42285021cb ok ThreadNet-Web new resolves, old gone as expected
133 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 6a8a2bb1a9->71ac7c4346 ok ThreadNet-Web new resolves, old gone as expected
134 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 6a90a12b2c->252b16ca71 ok ThreadNet-Web new resolves, old gone as expected
135 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 6c693c9a8a->a81ea0dd2e ok axion1337.chat-gitops new resolves, old gone as expected
136 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 703cf1ff1c->3054037480 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
137 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7248da62bc->c7d4b6f376 ok axion1337.chat-gitops new resolves, old gone as expected
138 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 75a319a7e3->ba9783fa08 ok axion1337.chat-gitops new resolves, old gone as expected
139 mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 760c6af264->6f94e6a8a3 ok threadnet-call new resolves, old gone as expected
140 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7735c504f2->8ad921519f ok axion1337.chat-gitops new resolves, old gone as expected
141 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 7839b56a65->306cca041c ok ThreadNet-Web new resolves, old gone as expected
142 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 784459beed->d2bcd90291 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
143 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7871e038c7->fad91b6a05 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
144 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7972034298->2aed6e4932 ok axion1337.chat-gitops new resolves, old gone as expected
145 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7b9d13199e->9607687e4e ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
146 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7bd67a53a6->2e53387650 ok axion1337.chat-gitops new resolves, old gone as expected
147 mapping-entry management shared/commit-zuordnung-2026-08-07.md 7dc4e5bf8e->15396d53e8 ok management new resolves, old gone as expected
148 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7f42a456eb->7cd177f744 ok axion1337.chat-gitops new resolves, old gone as expected
149 mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 7fb6251e1c->a6e555ac3f ok threadnet-call new resolves, old gone as expected
150 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 7ff3fb65e8->5f7fd8bc46 ok axion1337.chat-gitops new resolves, old gone as expected
151 mapping-entry management shared/commit-zuordnung-2026-08-07.md 81f207e9c3->786ca28895 ok management new resolves, old gone as expected
152 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 826fc8dbd3->e9b24a6d1f ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
153 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 82827c4857->018a4b7d83 ok axion1337.chat-gitops new resolves, old gone as expected
154 mapping-entry management shared/commit-zuordnung-2026-08-07.md 83150c3d8e->9cc5ba4fe0 ok management new resolves, old gone as expected
155 mapping-entry management shared/commit-zuordnung-2026-08-07.md 838a186c91->02946481ae ok management new resolves, old gone as expected
156 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 83d733b9f5->26b6fd8938 ok ThreadNet-Web new resolves, old gone as expected
157 mapping-entry management shared/commit-zuordnung-2026-08-07.md 85aa8ef22d->3eb27b3a62 ok management new resolves, old gone as expected
158 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 88127d9876->1d5a136dff ok ThreadNet-Web new resolves, old gone as expected
159 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 88f9bdb8d7->f4995e5882 ok ThreadNet-Web new resolves, old gone as expected
160 mapping-entry management shared/commit-zuordnung-2026-08-07.md 891adc6944->59df406a19 ok management new resolves, old gone as expected
161 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 893fe32976->f58add72ae ok axion1337.chat-gitops new resolves, old gone as expected
162 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 8a3274dd33->4ca87a68c7 ok axion1337.chat-gitops new resolves, old gone as expected
163 mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md 8a38224f51->846135e48d ok threadnet-call new resolves, old gone as expected
164 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 8a9d778973->b10b607d70 ok axion1337.chat-gitops new resolves, old gone as expected
165 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 8cfa7cb83e->d7aca3bd0c ok axion1337.chat-gitops new resolves, old gone as expected
166 mapping-entry management shared/commit-zuordnung-2026-08-07.md 8ec67463b1->c1a604bd19 ok management new resolves, old gone as expected
167 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 8ee937e56d->5c3a7b798a ok axion1337.chat-gitops new resolves, old gone as expected
168 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 8fb32d9360->f2abae85dd ok ThreadNet-Web new resolves, old gone as expected
169 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 90251e4a55->e21e101004 ok ThreadNet-Web new resolves, old gone as expected
170 mapping-entry management shared/commit-zuordnung-2026-08-07.md 93a0c9cecb->98c6483b9f ok management new resolves, old gone as expected
171 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 93ee6a3549->228807fcc8 ok axion1337.chat-gitops new resolves, old gone as expected
172 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 94244736c9->d4f3fc4c97 ok axion1337.chat-gitops new resolves, old gone as expected
173 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 94596c2933->3c6f3645b3 ok axion1337.chat-gitops new resolves, old gone as expected
174 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 947eaab71c->ac7e65100d ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
175 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 95ab6db12f->5ca8f00d58 ok axion1337.chat-gitops new resolves, old gone as expected
176 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 95d43bcade->97e18bbf2f ok ThreadNet-Web new resolves, old gone as expected
177 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 961641004f->7a1710c78d ok axion1337.chat-gitops new resolves, old gone as expected
178 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 977903bdf7->f47baa553a ok ThreadNet-Web new resolves, old gone as expected
179 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md 99a87a2cef->4fdad89fa6 ok ThreadNet-Web new resolves, old gone as expected
180 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 9aa42f96bc->11f97b935f ok axion1337.chat-gitops new resolves, old gone as expected
181 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 9aec29f605->09aaf1b2b5 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
182 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 9b8145540f->0f28acb626 ok axion1337.chat-gitops new resolves, old gone as expected
183 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md 9e15ba57c5->712cd430bf ok axion1337.chat-gitops new resolves, old gone as expected
184 mapping-entry management shared/commit-zuordnung-2026-08-07.md 9f78b04419->88850809c7 ok management new resolves, old gone as expected
185 mapping-entry management shared/commit-zuordnung-2026-08-07.md a23a149c0d->ce62396f0b ok management new resolves, old gone as expected
186 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md a2438e1b2b->b15a9f578c ok axion1337.chat-gitops new resolves, old gone as expected
187 mapping-entry management shared/commit-zuordnung-2026-08-07.md a29235cd54->b4b4893389 ok management new resolves, old gone as expected
188 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md a3965d2eb6->6f1dfedde2 ok ThreadNet-Web new resolves, old gone as expected
189 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md a3c7fb3c17->8465457a48 ok ThreadNet-Web new resolves, old gone as expected
190 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md a3d51ddf70->cf66ff018d ok ThreadNet-Web new resolves, old gone as expected
191 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md a40a8665ee->a414bb8585 ok ThreadNet-Web new resolves, old gone as expected
192 mapping-entry management shared/commit-zuordnung-2026-08-07.md a4df631ee6->4f7500c00c ok management new resolves, old gone as expected
193 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md a5597f0f8b->0d0c1659c6 ok ThreadNet-Web new resolves, old gone as expected
194 mapping-entry management shared/commit-zuordnung-2026-08-07.md a64ce123c1->63fd0b460a ok management new resolves, old gone as expected
195 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md a777f973cb->316178bd51 ok axion1337.chat-gitops new resolves, old gone as expected
196 mapping-entry management shared/commit-zuordnung-2026-08-07.md a9b8ca05ca->d9db323b62 ok management new resolves, old gone as expected
197 mapping-entry management shared/commit-zuordnung-2026-08-07.md aa3f47d4ec->0b518bb3b1 ok management new resolves, old gone as expected
198 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md aa42d0530a->235306a840 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
199 mapping-entry management shared/commit-zuordnung-2026-08-07.md aa6d5fc13a->a053fd9271 ok management new resolves, old gone as expected
200 mapping-entry management shared/commit-zuordnung-2026-08-07.md ac11c274e4->83cee828b8 ok management new resolves, old gone as expected
201 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md ad3c956cb5->b51a07b068 ok axion1337.chat-gitops new resolves, old gone as expected
202 mapping-entry management shared/commit-zuordnung-2026-08-07.md ae982cdb4b->164d96dddd ok management new resolves, old gone as expected
203 mapping-entry management shared/commit-zuordnung-2026-08-07.md b11284b844->777f8c375f ok management new resolves, old gone as expected
204 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md b13bb2381d->0274f9316c ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
205 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md b24ce732dc->0f1d31021c ok ThreadNet-Web new resolves, old gone as expected
206 mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md b265395e6d->84419133b3 ok threadnet-call new resolves, old gone as expected
207 mapping-entry management shared/commit-zuordnung-2026-08-07.md b4ee92fe9a->0abd26e416 ok management new resolves, old gone as expected
208 mapping-entry management shared/commit-zuordnung-2026-08-07.md b51986de9f->ae62727a50 ok management new resolves, old gone as expected
209 mapping-entry management shared/commit-zuordnung-2026-08-07.md b647645d2a->3e226fba40 ok management new resolves, old gone as expected
210 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md b73d88729d->6f761da1a4 ok axion1337.chat-gitops new resolves, old gone as expected
211 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md b9358d91f7->6f33c7277a ok ThreadNet-Web new resolves, old gone as expected
212 mapping-entry management shared/commit-zuordnung-2026-08-07.md b96793da98->cc0d4d3e02 ok management new resolves, old gone as expected
213 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md baf0863a2f->af73cf770b ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
214 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md bccd265302->49005ed325 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
215 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md bd25486e56->11a079db57 ok axion1337.chat-gitops new resolves, old gone as expected
216 mapping-entry management shared/commit-zuordnung-2026-08-07.md bdb2c766e9->0671da1040 ok management new resolves, old gone as expected
217 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md bfd72cdf3e->580827f7ca ok ThreadNet-Web new resolves, old gone as expected
218 mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md c01d55d517->0823c8a866 ok threadnet-call new resolves, old gone as expected
219 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c0be911797->4a3d7c70a6 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
220 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c1c189d281->debf980d5f ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
221 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c262d47809->bb51047e1d ok axion1337.chat-gitops new resolves, old gone as expected
222 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c47b0a3312->ac0afaf3d9 ok axion1337.chat-gitops new resolves, old gone as expected
223 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md c52b792511->0d0255cb7f ok ThreadNet-Web new resolves, old gone as expected
224 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c52ff97502->414ada956a ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
225 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c631b0a917->44d3e7dae1 ok axion1337.chat-gitops new resolves, old gone as expected
226 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md c6e72ac9bb->f1d732afbe ok axion1337.chat-gitops new resolves, old gone as expected
227 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md c8d458734a->6b0261d66c ok ThreadNet-Web new resolves, old gone as expected
228 mapping-entry management shared/commit-zuordnung-2026-08-07.md cacb89175b->666aa9004a ok management new resolves, old gone as expected
229 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md cc3f860bf8->c51b68194a ok ThreadNet-Web new resolves, old gone as expected
230 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md cc6565e494->0213b0fe58 ok axion1337.chat-gitops new resolves, old gone as expected
231 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md cf24a1a396->edf224e450 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
232 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d10a9285b9->60248bfd92 ok axion1337.chat-gitops new resolves, old gone as expected
233 mapping-entry management shared/commit-zuordnung-2026-08-07.md d1f9f22455->0f3f155bc5 ok management new resolves, old gone as expected
234 mapping-entry management shared/commit-zuordnung-2026-08-07.md d21eabb77f->a5eacfe39e ok management new resolves, old gone as expected
235 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d24dbf84f7->9fa947cc21 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
236 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d24e37619c->25d1742d61 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
237 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d31cc19fab->5e16719bfe ok axion1337.chat-gitops new resolves, old gone as expected
238 mapping-entry management shared/commit-zuordnung-2026-08-07.md d43bb05d77->4c870854f1 ok management new resolves, old gone as expected
239 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md d4ed5e8cc0->c401f54e4d ok ThreadNet-Web new resolves, old gone as expected
240 mapping-entry management shared/commit-zuordnung-2026-08-07.md d5046621ca->b6aaad7abe ok management new resolves, old gone as expected
241 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d54c4aec65->2803fb384c ok axion1337.chat-gitops new resolves, old gone as expected
242 mapping-entry management shared/commit-zuordnung-2026-08-07.md d6c98632f0->889cd47be7 ok management new resolves, old gone as expected
243 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md d8acc1e26c->13385b68f2 ok axion1337.chat-gitops new resolves, old gone as expected
244 mapping-entry management shared/commit-zuordnung-2026-08-07.md d967654077->e549de8247 ok management new resolves, old gone as expected
245 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md da6d352902->42da25d0a6 ok axion1337.chat-gitops new resolves, old gone as expected
246 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md db77785b6b->9db1ee6f45 ok axion1337.chat-gitops new resolves, old gone as expected
247 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md dc856186d1->7ac584d27b ok axion1337.chat-gitops new resolves, old gone as expected
248 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md de2af6e199->e659242990 ok axion1337.chat-gitops new resolves, old gone as expected
249 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e0db79a3f1->b32920c48f ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
250 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e14d1be69d->34442df75c ok axion1337.chat-gitops new resolves, old gone as expected
251 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md e1f508d12e->b656eefdc7 ok ThreadNet-Web new resolves, old gone as expected
252 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e51142ec5b->1b35766ad3 ok axion1337.chat-gitops new resolves, old gone as expected
253 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e53896e02c->7795f89fc9 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
254 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e54a1d57e0->ebb1d4e2a7 ok axion1337.chat-gitops new resolves, old gone as expected
255 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e54ec10fd9->2c5f77686d ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
256 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e58b8db8fe->5e46a24e7d ok axion1337.chat-gitops new resolves, old gone as expected
257 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e5d74662a0->c1ee776070 ok axion1337.chat-gitops new resolves, old gone as expected
258 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md e7675d7b9f->a55adfdd65 ok ThreadNet-Web new resolves, old gone as expected
259 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e8ba7589dd->5aca738f55 ok axion1337.chat-gitops new resolves, old gone as expected
260 mapping-entry threadnet-call shared/commit-zuordnung-2026-08-07.md e8c7dfed36->e793902ae0 ok threadnet-call new resolves, old gone as expected
261 mapping-entry management shared/commit-zuordnung-2026-08-07.md e8e1b36224->ea026a0057 ok management new resolves, old gone as expected
262 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e963203376->af63755f1e ok axion1337.chat-gitops new resolves, old gone as expected
263 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md e9f000f87b->23c66c97b8 ok axion1337.chat-gitops new resolves, old gone as expected
264 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md ea72f5b357->37aea0254b ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
265 mapping-entry management shared/commit-zuordnung-2026-08-07.md eab452b3d5->e4991c050f ok management new resolves, old gone as expected
266 mapping-entry management shared/commit-zuordnung-2026-08-07.md eb9ada6427->3e81f40178 ok management new resolves, old gone as expected
267 mapping-entry ThreadNet-Web shared/commit-zuordnung-2026-08-07.md ed1c7ff5bc->965c456dee ok ThreadNet-Web new resolves, old gone as expected
268 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md ed73a42772->8331bb212d ok axion1337.chat-gitops new resolves, old gone as expected
269 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md ee476782bb->0a07da260f ok axion1337.chat-gitops new resolves, old gone as expected
270 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md ee91f121b8->0f7ff1a896 ok axion1337.chat-gitops new resolves, old gone as expected
271 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md efb25f31a2->f0174decc1 ok axion1337.chat-gitops new resolves, old gone as expected
272 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md eff643edf6->cdecb006d4 ok axion1337.chat-gitops new resolves, old gone as expected
273 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md f030586956->dfe7ff9fc0 ok axion1337.chat-gitops new resolves, old gone as expected
274 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md f0b0019ee7->191981aefe ok axion1337.chat-gitops new resolves, old gone as expected
275 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md f30d2f582b->802e09cd9c ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
276 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md f56f8c2479->105194d450 ok axion1337.chat-gitops new resolves, old gone as expected
277 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md f5e9fc5d2b->ba270bce71 ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
278 mapping-entry management shared/commit-zuordnung-2026-08-07.md f6055ee47c->2be5fb6f60 ok management new resolves, old gone as expected
279 mapping-entry management shared/commit-zuordnung-2026-08-07.md fcfe3b681d->7d7c1e86b0 ok management new resolves, old gone as expected
280 mapping-entry axion1337.chat-gitops shared/commit-zuordnung-2026-08-07.md fe575808b3->027f567c8b ok-both-present axion1337.chat-gitops old SHA still reachable from some ref
+145
View File
@@ -0,0 +1,145 @@
repo identity_class author timestamp_state reachable_from commits
ThreadNet-Web own Thore Cimbal <cfx@riot.8shield.net> anonymised main 49
ThreadNet-Web own ScrublordMcBad <gamemaster@axion1337.de> real-clock-time main 1
ThreadNet-Web own sorB <cfxqriot.8shield.net> real-clock-time main 2
ThreadNet-Web own ScrublordMcBad <gamemaster@axion1337.de> real-clock-time side-branch-only 1
axion1337.chat-gitops own Thore Cimbal <cfx@riot.8shield.net> anonymised main 120
axion1337.chat-gitops own Scrublord MacBad <Scrublord@Mac.Bad> real-clock-time main 135
axion1337.chat-gitops own ScrublordMcBad <gamemaster@axion1337.de> real-clock-time main 10
axion1337.chat-gitops own Scrublord MacBad <Scrublord@Mac.Bad> real-clock-time side-branch-only 2
axion1337.chat-gitops own Thore Cimbal <cfx@riot.8shield.net> real-clock-time side-branch-only 40
axion1337.chat-gitops upstream-or-bot turn-secret-rotation <turn-secret-rotation@axion1337.chat> anonymised main 2
axion1337.chat-gitops upstream-or-bot Flux <> real-clock-time main 2
axion1337.chat-gitops upstream-or-bot turn-secret-rotation <turn-secret-rotation@axion1337.chat> real-clock-time side-branch-only 1
management own Thore Cimbal <cfx@riot.8shield.net> anonymised main 86
management own Thore Cimbal <cfx@riot.8shield.net> anonymised side-branch-only 6
thread-net-git agent Claude <noreply@anthropic.com> real-clock-time main 9
thread-net-git own Thore Cimbal <cfx@riot.8shield.net> real-clock-time main 2
threadnet-call own Thore Cimbal <cfx@riot.8shield.net> anonymised main 12
threadnet-call own Thore Cimbal <cfx@riot.8shield.net> real-clock-time side-branch-only 14
threadnet-call upstream-or-bot Abhi Jain <abhijain3002@gmail.com> real-clock-time side-branch-only 2
threadnet-call upstream-or-bot Alexander Mnich <56564725+a-mnich@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Andrew Ferrazzutti <andrewf@element.io> real-clock-time side-branch-only 25
threadnet-call upstream-or-bot Angel Mendez <amendez1988@gmail.com> real-clock-time side-branch-only 5
threadnet-call upstream-or-bot Angel Mendez Cano <amendez1988@gmail.com> real-clock-time side-branch-only 12
threadnet-call upstream-or-bot Ariodaad <hut.group2010@gmail.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Avery <aveeryy@protonmail.com> real-clock-time side-branch-only 11
threadnet-call upstream-or-bot Ben Banfield-Zanin <ben@banfieldzanin.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Danial Behzadi <dani.behzi@ubuntu.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Daniel Abramov <daniel.abramov@bsi-software.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Daniel Abramov <daniel.abramov@element.io> real-clock-time side-branch-only 46
threadnet-call upstream-or-bot Daniel Abramov <inetcrack2@gmail.com> real-clock-time side-branch-only 2
threadnet-call upstream-or-bot Daniel Kilimnik <mail@kilimnik.de> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot DarkCoder15 <g.kikikam@gmail.com> real-clock-time side-branch-only 2
threadnet-call upstream-or-bot David Baker <dave@matrix.org> real-clock-time side-branch-only 517
threadnet-call upstream-or-bot David Baker <dbkr@users.noreply.github.com> real-clock-time side-branch-only 303
threadnet-call upstream-or-bot Davide Girardi <davideg@element.io> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Dimitris Vagiakakos <dimitrislinuxos@gmail.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Dino <23552286+dinosmm@users.noreply.github.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Doug <6060466+pixlwave@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Edgars Andersons <Edgars+Element-translations@gaitenis.id.lv> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Element Translate Bot <admin@riot.im> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot ElementRobot <releases@riot.im> real-clock-time side-branch-only 21
threadnet-call upstream-or-bot Enrico Schwendig <enricos@element.io> real-clock-time side-branch-only 27
threadnet-call upstream-or-bot Erik Bedami <bedami.erik@gmail.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Erik Johnston <erik@matrix.org> real-clock-time side-branch-only 11
threadnet-call upstream-or-bot Erik Johnston <erikj@jki.re> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Erkin Alp Güney <erkinalp9035@gmail.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Genbuchan <genbu@genbuchan.com> real-clock-time side-branch-only 23
threadnet-call upstream-or-bot Glandos <bugs-github@antipoul.fr> real-clock-time side-branch-only 24
threadnet-call upstream-or-bot Gordnho <oliderafa@gmail.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Half-Shot <will@half-shot.uk> real-clock-time side-branch-only 17
threadnet-call upstream-or-bot Harshal Taori <harshaltaory1111@gmail.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Harshal-Taori-11 <75373361+Harshal-Taori-11@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Hugh Nimmo-Smith <hughns@element.io> real-clock-time side-branch-only 28
threadnet-call upstream-or-bot Hugh Nimmo-Smith <hughns@users.noreply.github.com> real-clock-time side-branch-only 94
threadnet-call upstream-or-bot Ihor Hordiichuk <igor_ck@outlook.com> real-clock-time side-branch-only 29
threadnet-call upstream-or-bot Jake Janicke <37964537+JakeTripplJ@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Jake Janicke <jaketripplj@gmail.com> real-clock-time side-branch-only 11
threadnet-call upstream-or-bot Jeff Huang <s8321414@gmail.com> real-clock-time side-branch-only 15
threadnet-call upstream-or-bot JephDiel <javajoe015@gmail.com> real-clock-time side-branch-only 7
threadnet-call upstream-or-bot Johannes Marbach <johannesm@element.io> real-clock-time side-branch-only 4
threadnet-call upstream-or-bot Johannes Marbach <n0-0ne+github@mailbox.org> real-clock-time side-branch-only 50
threadnet-call upstream-or-bot Jorge Martin Espinosa <angel.arasthel@gmail.com> real-clock-time side-branch-only 4
threadnet-call upstream-or-bot Jorge Martín <jorgem@element.io> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Jozef Gaal <preklady@mayday.sk> real-clock-time side-branch-only 19
threadnet-call upstream-or-bot Kalissaac <kalissaac@protonmail.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Kat Gerasimova <ekaterinag@element.io> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Kim Brose <2803622+HarHarLinks@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot LinAGKar <linus.kardell@gmail.com> real-clock-time side-branch-only 2
threadnet-call upstream-or-bot Linerly <linerly@protonmail.com> real-clock-time side-branch-only 25
threadnet-call upstream-or-bot Marcel Ackermann <31695+dreamflasher@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot MarySue <hefeishaoyi@126.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Matthew Hodgson <matthew@matrix.org> real-clock-time side-branch-only 14
threadnet-call upstream-or-bot Michael Kaye <1917473+michaelkaye@users.noreply.github.com> real-clock-time side-branch-only 24
threadnet-call upstream-or-bot Michael Telatynski <7t3chguy@gmail.com> real-clock-time side-branch-only 18
threadnet-call upstream-or-bot Milton Moura <miltonmoura@gmail.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Mohammed Tayeh <info@tayeh.me> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot MomentQYC <62551256+MomentQYC@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot MomentQYC <yateam@foxmail.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Murat Ersin <mmuratersin@gmail.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Nui Harime <harime.nui@yandex.ru> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Open Culture Foundation <hi@ocf.tw> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Peter Chen <petercpg@gmail.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Platon Terekhov <ockenfels_vevent@aleeas.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Priit Jõerüüt <riot@joeruut.com> real-clock-time side-branch-only 25
threadnet-call upstream-or-bot Przemysław Romanik <github@rom4nik.pl> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Quentin Gliech <quenting@element.io> real-clock-time side-branch-only 14
threadnet-call upstream-or-bot Richard van der Hoff <1389908+richvdh@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Robert Long <robert@robertlong.me> real-clock-time side-branch-only 471
threadnet-call upstream-or-bot Robin <robin@robin.town> real-clock-time side-branch-only 1557
threadnet-call upstream-or-bot Robin Townsend <robin@robin.town> real-clock-time side-branch-only 360
threadnet-call upstream-or-bot Rodion Borisov <vintprox@gmail.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Ryan Emmick <ryanemmick4@gmail.com> real-clock-time side-branch-only 11
threadnet-call upstream-or-bot Slavi Pantaleev <slavi@devture.com> real-clock-time side-branch-only 2
threadnet-call upstream-or-bot SmallJinn <falomkin2@gmail.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Someone <hahahahacker2009@gmail.com> real-clock-time side-branch-only 4
threadnet-call upstream-or-bot Stefan Ceriu <stefan.ceriu@gmail.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Strac Consulting Engineers Pty Ltd <preminik@preminik.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Suguru Hirahara <d4bb0a95-96c1-4662-9d31-a5e520a01a09@hostux.ninja> real-clock-time side-branch-only 5
threadnet-call upstream-or-bot Suguru Hirahara <ovestekona@protonmail.com> real-clock-time side-branch-only 21
threadnet-call upstream-or-bot Theo <tbousiou@gmail.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Thibault Martin <mail@thibaultmart.in> real-clock-time side-branch-only 4
threadnet-call upstream-or-bot Timo <16718859+toger5@users.noreply.github.com> real-clock-time side-branch-only 250
threadnet-call upstream-or-bot Timo <toger5@hotmail.de> real-clock-time side-branch-only 102
threadnet-call upstream-or-bot Timo K <toger5@hotmail.de> real-clock-time side-branch-only 470
threadnet-call upstream-or-bot Toomore Chiang <toomore0929@gmail.com> real-clock-time side-branch-only 2
threadnet-call upstream-or-bot Travis Ralston <travisr@matrix.org> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Travis Ralston <travpc@gmail.com> real-clock-time side-branch-only 2
threadnet-call upstream-or-bot Valere <bill.carson@valrsoft.com> real-clock-time side-branch-only 377
threadnet-call upstream-or-bot Valere Fedronic <bill.carson@valrsoft.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot Valere Fedronic <valeref@element.io> real-clock-time side-branch-only 8
threadnet-call upstream-or-bot Valere Fedronic <valeref@matrix.org> real-clock-time side-branch-only 75
threadnet-call upstream-or-bot Vri <element@vrifox.cc> real-clock-time side-branch-only 29
threadnet-call upstream-or-bot Weblate <noreply@weblate.org> real-clock-time side-branch-only 30
threadnet-call upstream-or-bot Will Hunt <2072976+Half-Shot@users.noreply.github.com> real-clock-time side-branch-only 4
threadnet-call upstream-or-bot Will Hunt <github@half-shot.uk> real-clock-time side-branch-only 29
threadnet-call upstream-or-bot Will Hunt <will@half-shot.uk> real-clock-time side-branch-only 4
threadnet-call upstream-or-bot Youngbin Han <sukso96100@gmail.com> real-clock-time side-branch-only 2
threadnet-call upstream-or-bot aethralis <aethralis@yahoo.com> real-clock-time side-branch-only 10
threadnet-call upstream-or-bot afr4283 <adam@frankowski.info> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot alariej <alaj@gmx.net> real-clock-time side-branch-only 2
threadnet-call upstream-or-bot alutarius <35006594+alutarius@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot davidegirardi <16451191+davidegirardi@users.noreply.github.com> real-clock-time side-branch-only 2
threadnet-call upstream-or-bot dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot fkwp <5071496+fkwp@users.noreply.github.com> real-clock-time side-branch-only 17
threadnet-call upstream-or-bot fkwp <fkwp@users.noreply.github.com> real-clock-time side-branch-only 321
threadnet-call upstream-or-bot fkwp <github-fkwp@w4ve.de> real-clock-time side-branch-only 195
threadnet-call upstream-or-bot joemama <ayrakhadeeja@gmail.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot kongo09 <patrick@alberts.org> real-clock-time side-branch-only 4
threadnet-call upstream-or-bot lunarna-gh <luna@anarchy.center> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot manfrommedan <manfrommedan@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot mmehdishafiee <mmhdishafiee@gmail.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot phardyle <bradney_ccea@aleeas.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot random <dictionary@tutamail.com> real-clock-time side-branch-only 9
threadnet-call upstream-or-bot raspin0 <marcinekk13@interia.pl> real-clock-time side-branch-only 12
threadnet-call upstream-or-bot renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> real-clock-time side-branch-only 824
threadnet-call upstream-or-bot robintown <48614497+robintown@users.noreply.github.com> real-clock-time side-branch-only 3
threadnet-call upstream-or-bot robintown <robintown@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot snoutie <71790678+SnoutBug@users.noreply.github.com> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot waclaw66 <waclaw66@seznam.cz> real-clock-time side-branch-only 1
threadnet-call upstream-or-bot Šimon Brandner <simon.bra.ag@gmail.com> real-clock-time side-branch-only 331
threadnet-call upstream-or-bot Руся <qqrustzz@gmail.com> real-clock-time side-branch-only 1
threadnet-operating agent Claude <noreply@anthropic.com> real-clock-time main 6
threadnet-operating own Thore Cimbal <cfx@riot.8shield.net> real-clock-time main 10
threadnet-operating own sorb <gamemaster@axion1337.de> real-clock-time main 5
1 repo identity_class author timestamp_state reachable_from commits
2 ThreadNet-Web own Thore Cimbal <cfx@riot.8shield.net> anonymised main 49
3 ThreadNet-Web own ScrublordMcBad <gamemaster@axion1337.de> real-clock-time main 1
4 ThreadNet-Web own sorB <cfxqriot.8shield.net> real-clock-time main 2
5 ThreadNet-Web own ScrublordMcBad <gamemaster@axion1337.de> real-clock-time side-branch-only 1
6 axion1337.chat-gitops own Thore Cimbal <cfx@riot.8shield.net> anonymised main 120
7 axion1337.chat-gitops own Scrublord MacBad <Scrublord@Mac.Bad> real-clock-time main 135
8 axion1337.chat-gitops own ScrublordMcBad <gamemaster@axion1337.de> real-clock-time main 10
9 axion1337.chat-gitops own Scrublord MacBad <Scrublord@Mac.Bad> real-clock-time side-branch-only 2
10 axion1337.chat-gitops own Thore Cimbal <cfx@riot.8shield.net> real-clock-time side-branch-only 40
11 axion1337.chat-gitops upstream-or-bot turn-secret-rotation <turn-secret-rotation@axion1337.chat> anonymised main 2
12 axion1337.chat-gitops upstream-or-bot Flux <> real-clock-time main 2
13 axion1337.chat-gitops upstream-or-bot turn-secret-rotation <turn-secret-rotation@axion1337.chat> real-clock-time side-branch-only 1
14 management own Thore Cimbal <cfx@riot.8shield.net> anonymised main 86
15 management own Thore Cimbal <cfx@riot.8shield.net> anonymised side-branch-only 6
16 thread-net-git agent Claude <noreply@anthropic.com> real-clock-time main 9
17 thread-net-git own Thore Cimbal <cfx@riot.8shield.net> real-clock-time main 2
18 threadnet-call own Thore Cimbal <cfx@riot.8shield.net> anonymised main 12
19 threadnet-call own Thore Cimbal <cfx@riot.8shield.net> real-clock-time side-branch-only 14
20 threadnet-call upstream-or-bot Abhi Jain <abhijain3002@gmail.com> real-clock-time side-branch-only 2
21 threadnet-call upstream-or-bot Alexander Mnich <56564725+a-mnich@users.noreply.github.com> real-clock-time side-branch-only 1
22 threadnet-call upstream-or-bot Andrew Ferrazzutti <andrewf@element.io> real-clock-time side-branch-only 25
23 threadnet-call upstream-or-bot Angel Mendez <amendez1988@gmail.com> real-clock-time side-branch-only 5
24 threadnet-call upstream-or-bot Angel Mendez Cano <amendez1988@gmail.com> real-clock-time side-branch-only 12
25 threadnet-call upstream-or-bot Ariodaad <hut.group2010@gmail.com> real-clock-time side-branch-only 3
26 threadnet-call upstream-or-bot Avery <aveeryy@protonmail.com> real-clock-time side-branch-only 11
27 threadnet-call upstream-or-bot Ben Banfield-Zanin <ben@banfieldzanin.com> real-clock-time side-branch-only 1
28 threadnet-call upstream-or-bot Danial Behzadi <dani.behzi@ubuntu.com> real-clock-time side-branch-only 1
29 threadnet-call upstream-or-bot Daniel Abramov <daniel.abramov@bsi-software.com> real-clock-time side-branch-only 1
30 threadnet-call upstream-or-bot Daniel Abramov <daniel.abramov@element.io> real-clock-time side-branch-only 46
31 threadnet-call upstream-or-bot Daniel Abramov <inetcrack2@gmail.com> real-clock-time side-branch-only 2
32 threadnet-call upstream-or-bot Daniel Kilimnik <mail@kilimnik.de> real-clock-time side-branch-only 1
33 threadnet-call upstream-or-bot DarkCoder15 <g.kikikam@gmail.com> real-clock-time side-branch-only 2
34 threadnet-call upstream-or-bot David Baker <dave@matrix.org> real-clock-time side-branch-only 517
35 threadnet-call upstream-or-bot David Baker <dbkr@users.noreply.github.com> real-clock-time side-branch-only 303
36 threadnet-call upstream-or-bot Davide Girardi <davideg@element.io> real-clock-time side-branch-only 1
37 threadnet-call upstream-or-bot Dimitris Vagiakakos <dimitrislinuxos@gmail.com> real-clock-time side-branch-only 1
38 threadnet-call upstream-or-bot Dino <23552286+dinosmm@users.noreply.github.com> real-clock-time side-branch-only 3
39 threadnet-call upstream-or-bot Doug <6060466+pixlwave@users.noreply.github.com> real-clock-time side-branch-only 1
40 threadnet-call upstream-or-bot Edgars Andersons <Edgars+Element-translations@gaitenis.id.lv> real-clock-time side-branch-only 3
41 threadnet-call upstream-or-bot Element Translate Bot <admin@riot.im> real-clock-time side-branch-only 3
42 threadnet-call upstream-or-bot ElementRobot <releases@riot.im> real-clock-time side-branch-only 21
43 threadnet-call upstream-or-bot Enrico Schwendig <enricos@element.io> real-clock-time side-branch-only 27
44 threadnet-call upstream-or-bot Erik Bedami <bedami.erik@gmail.com> real-clock-time side-branch-only 1
45 threadnet-call upstream-or-bot Erik Johnston <erik@matrix.org> real-clock-time side-branch-only 11
46 threadnet-call upstream-or-bot Erik Johnston <erikj@jki.re> real-clock-time side-branch-only 1
47 threadnet-call upstream-or-bot Erkin Alp Güney <erkinalp9035@gmail.com> real-clock-time side-branch-only 3
48 threadnet-call upstream-or-bot Genbuchan <genbu@genbuchan.com> real-clock-time side-branch-only 23
49 threadnet-call upstream-or-bot Glandos <bugs-github@antipoul.fr> real-clock-time side-branch-only 24
50 threadnet-call upstream-or-bot Gordnho <oliderafa@gmail.com> real-clock-time side-branch-only 1
51 threadnet-call upstream-or-bot Half-Shot <will@half-shot.uk> real-clock-time side-branch-only 17
52 threadnet-call upstream-or-bot Harshal Taori <harshaltaory1111@gmail.com> real-clock-time side-branch-only 3
53 threadnet-call upstream-or-bot Harshal-Taori-11 <75373361+Harshal-Taori-11@users.noreply.github.com> real-clock-time side-branch-only 1
54 threadnet-call upstream-or-bot Hugh Nimmo-Smith <hughns@element.io> real-clock-time side-branch-only 28
55 threadnet-call upstream-or-bot Hugh Nimmo-Smith <hughns@users.noreply.github.com> real-clock-time side-branch-only 94
56 threadnet-call upstream-or-bot Ihor Hordiichuk <igor_ck@outlook.com> real-clock-time side-branch-only 29
57 threadnet-call upstream-or-bot Jake Janicke <37964537+JakeTripplJ@users.noreply.github.com> real-clock-time side-branch-only 1
58 threadnet-call upstream-or-bot Jake Janicke <jaketripplj@gmail.com> real-clock-time side-branch-only 11
59 threadnet-call upstream-or-bot Jeff Huang <s8321414@gmail.com> real-clock-time side-branch-only 15
60 threadnet-call upstream-or-bot JephDiel <javajoe015@gmail.com> real-clock-time side-branch-only 7
61 threadnet-call upstream-or-bot Johannes Marbach <johannesm@element.io> real-clock-time side-branch-only 4
62 threadnet-call upstream-or-bot Johannes Marbach <n0-0ne+github@mailbox.org> real-clock-time side-branch-only 50
63 threadnet-call upstream-or-bot Jorge Martin Espinosa <angel.arasthel@gmail.com> real-clock-time side-branch-only 4
64 threadnet-call upstream-or-bot Jorge Martín <jorgem@element.io> real-clock-time side-branch-only 1
65 threadnet-call upstream-or-bot Jozef Gaal <preklady@mayday.sk> real-clock-time side-branch-only 19
66 threadnet-call upstream-or-bot Kalissaac <kalissaac@protonmail.com> real-clock-time side-branch-only 1
67 threadnet-call upstream-or-bot Kat Gerasimova <ekaterinag@element.io> real-clock-time side-branch-only 1
68 threadnet-call upstream-or-bot Kim Brose <2803622+HarHarLinks@users.noreply.github.com> real-clock-time side-branch-only 1
69 threadnet-call upstream-or-bot LinAGKar <linus.kardell@gmail.com> real-clock-time side-branch-only 2
70 threadnet-call upstream-or-bot Linerly <linerly@protonmail.com> real-clock-time side-branch-only 25
71 threadnet-call upstream-or-bot Marcel Ackermann <31695+dreamflasher@users.noreply.github.com> real-clock-time side-branch-only 1
72 threadnet-call upstream-or-bot MarySue <hefeishaoyi@126.com> real-clock-time side-branch-only 1
73 threadnet-call upstream-or-bot Matthew Hodgson <matthew@matrix.org> real-clock-time side-branch-only 14
74 threadnet-call upstream-or-bot Michael Kaye <1917473+michaelkaye@users.noreply.github.com> real-clock-time side-branch-only 24
75 threadnet-call upstream-or-bot Michael Telatynski <7t3chguy@gmail.com> real-clock-time side-branch-only 18
76 threadnet-call upstream-or-bot Milton Moura <miltonmoura@gmail.com> real-clock-time side-branch-only 1
77 threadnet-call upstream-or-bot Mohammed Tayeh <info@tayeh.me> real-clock-time side-branch-only 1
78 threadnet-call upstream-or-bot MomentQYC <62551256+MomentQYC@users.noreply.github.com> real-clock-time side-branch-only 1
79 threadnet-call upstream-or-bot MomentQYC <yateam@foxmail.com> real-clock-time side-branch-only 3
80 threadnet-call upstream-or-bot Murat Ersin <mmuratersin@gmail.com> real-clock-time side-branch-only 1
81 threadnet-call upstream-or-bot Nui Harime <harime.nui@yandex.ru> real-clock-time side-branch-only 3
82 threadnet-call upstream-or-bot Open Culture Foundation <hi@ocf.tw> real-clock-time side-branch-only 1
83 threadnet-call upstream-or-bot Peter Chen <petercpg@gmail.com> real-clock-time side-branch-only 1
84 threadnet-call upstream-or-bot Platon Terekhov <ockenfels_vevent@aleeas.com> real-clock-time side-branch-only 1
85 threadnet-call upstream-or-bot Priit Jõerüüt <riot@joeruut.com> real-clock-time side-branch-only 25
86 threadnet-call upstream-or-bot Przemysław Romanik <github@rom4nik.pl> real-clock-time side-branch-only 3
87 threadnet-call upstream-or-bot Quentin Gliech <quenting@element.io> real-clock-time side-branch-only 14
88 threadnet-call upstream-or-bot Richard van der Hoff <1389908+richvdh@users.noreply.github.com> real-clock-time side-branch-only 1
89 threadnet-call upstream-or-bot Robert Long <robert@robertlong.me> real-clock-time side-branch-only 471
90 threadnet-call upstream-or-bot Robin <robin@robin.town> real-clock-time side-branch-only 1557
91 threadnet-call upstream-or-bot Robin Townsend <robin@robin.town> real-clock-time side-branch-only 360
92 threadnet-call upstream-or-bot Rodion Borisov <vintprox@gmail.com> real-clock-time side-branch-only 3
93 threadnet-call upstream-or-bot Ryan Emmick <ryanemmick4@gmail.com> real-clock-time side-branch-only 11
94 threadnet-call upstream-or-bot Slavi Pantaleev <slavi@devture.com> real-clock-time side-branch-only 2
95 threadnet-call upstream-or-bot SmallJinn <falomkin2@gmail.com> real-clock-time side-branch-only 1
96 threadnet-call upstream-or-bot Someone <hahahahacker2009@gmail.com> real-clock-time side-branch-only 4
97 threadnet-call upstream-or-bot Stefan Ceriu <stefan.ceriu@gmail.com> real-clock-time side-branch-only 3
98 threadnet-call upstream-or-bot Strac Consulting Engineers Pty Ltd <preminik@preminik.com> real-clock-time side-branch-only 1
99 threadnet-call upstream-or-bot Suguru Hirahara <d4bb0a95-96c1-4662-9d31-a5e520a01a09@hostux.ninja> real-clock-time side-branch-only 5
100 threadnet-call upstream-or-bot Suguru Hirahara <ovestekona@protonmail.com> real-clock-time side-branch-only 21
101 threadnet-call upstream-or-bot Theo <tbousiou@gmail.com> real-clock-time side-branch-only 3
102 threadnet-call upstream-or-bot Thibault Martin <mail@thibaultmart.in> real-clock-time side-branch-only 4
103 threadnet-call upstream-or-bot Timo <16718859+toger5@users.noreply.github.com> real-clock-time side-branch-only 250
104 threadnet-call upstream-or-bot Timo <toger5@hotmail.de> real-clock-time side-branch-only 102
105 threadnet-call upstream-or-bot Timo K <toger5@hotmail.de> real-clock-time side-branch-only 470
106 threadnet-call upstream-or-bot Toomore Chiang <toomore0929@gmail.com> real-clock-time side-branch-only 2
107 threadnet-call upstream-or-bot Travis Ralston <travisr@matrix.org> real-clock-time side-branch-only 1
108 threadnet-call upstream-or-bot Travis Ralston <travpc@gmail.com> real-clock-time side-branch-only 2
109 threadnet-call upstream-or-bot Valere <bill.carson@valrsoft.com> real-clock-time side-branch-only 377
110 threadnet-call upstream-or-bot Valere Fedronic <bill.carson@valrsoft.com> real-clock-time side-branch-only 3
111 threadnet-call upstream-or-bot Valere Fedronic <valeref@element.io> real-clock-time side-branch-only 8
112 threadnet-call upstream-or-bot Valere Fedronic <valeref@matrix.org> real-clock-time side-branch-only 75
113 threadnet-call upstream-or-bot Vri <element@vrifox.cc> real-clock-time side-branch-only 29
114 threadnet-call upstream-or-bot Weblate <noreply@weblate.org> real-clock-time side-branch-only 30
115 threadnet-call upstream-or-bot Will Hunt <2072976+Half-Shot@users.noreply.github.com> real-clock-time side-branch-only 4
116 threadnet-call upstream-or-bot Will Hunt <github@half-shot.uk> real-clock-time side-branch-only 29
117 threadnet-call upstream-or-bot Will Hunt <will@half-shot.uk> real-clock-time side-branch-only 4
118 threadnet-call upstream-or-bot Youngbin Han <sukso96100@gmail.com> real-clock-time side-branch-only 2
119 threadnet-call upstream-or-bot aethralis <aethralis@yahoo.com> real-clock-time side-branch-only 10
120 threadnet-call upstream-or-bot afr4283 <adam@frankowski.info> real-clock-time side-branch-only 1
121 threadnet-call upstream-or-bot alariej <alaj@gmx.net> real-clock-time side-branch-only 2
122 threadnet-call upstream-or-bot alutarius <35006594+alutarius@users.noreply.github.com> real-clock-time side-branch-only 1
123 threadnet-call upstream-or-bot davidegirardi <16451191+davidegirardi@users.noreply.github.com> real-clock-time side-branch-only 2
124 threadnet-call upstream-or-bot dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> real-clock-time side-branch-only 1
125 threadnet-call upstream-or-bot fkwp <5071496+fkwp@users.noreply.github.com> real-clock-time side-branch-only 17
126 threadnet-call upstream-or-bot fkwp <fkwp@users.noreply.github.com> real-clock-time side-branch-only 321
127 threadnet-call upstream-or-bot fkwp <github-fkwp@w4ve.de> real-clock-time side-branch-only 195
128 threadnet-call upstream-or-bot joemama <ayrakhadeeja@gmail.com> real-clock-time side-branch-only 1
129 threadnet-call upstream-or-bot kongo09 <patrick@alberts.org> real-clock-time side-branch-only 4
130 threadnet-call upstream-or-bot lunarna-gh <luna@anarchy.center> real-clock-time side-branch-only 1
131 threadnet-call upstream-or-bot manfrommedan <manfrommedan@users.noreply.github.com> real-clock-time side-branch-only 1
132 threadnet-call upstream-or-bot mmehdishafiee <mmhdishafiee@gmail.com> real-clock-time side-branch-only 3
133 threadnet-call upstream-or-bot phardyle <bradney_ccea@aleeas.com> real-clock-time side-branch-only 3
134 threadnet-call upstream-or-bot random <dictionary@tutamail.com> real-clock-time side-branch-only 9
135 threadnet-call upstream-or-bot raspin0 <marcinekk13@interia.pl> real-clock-time side-branch-only 12
136 threadnet-call upstream-or-bot renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> real-clock-time side-branch-only 824
137 threadnet-call upstream-or-bot robintown <48614497+robintown@users.noreply.github.com> real-clock-time side-branch-only 3
138 threadnet-call upstream-or-bot robintown <robintown@users.noreply.github.com> real-clock-time side-branch-only 1
139 threadnet-call upstream-or-bot snoutie <71790678+SnoutBug@users.noreply.github.com> real-clock-time side-branch-only 1
140 threadnet-call upstream-or-bot waclaw66 <waclaw66@seznam.cz> real-clock-time side-branch-only 1
141 threadnet-call upstream-or-bot Šimon Brandner <simon.bra.ag@gmail.com> real-clock-time side-branch-only 331
142 threadnet-call upstream-or-bot Руся <qqrustzz@gmail.com> real-clock-time side-branch-only 1
143 threadnet-operating agent Claude <noreply@anthropic.com> real-clock-time main 6
144 threadnet-operating own Thore Cimbal <cfx@riot.8shield.net> real-clock-time main 10
145 threadnet-operating own sorb <gamemaster@axion1337.de> real-clock-time main 5
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,105 @@
.devcontainer/Dockerfile
.devcontainer/README.md
.devcontainer/devcontainer.json
.devcontainer/docker-init.sh
.devcontainer/postCreateCommand.sh
.gitignore
.gitlab-ci.yml
.sops.yaml
CLAUDE.md
README.md
apps/authentik/authentik-backup-secret.yaml
apps/authentik/authentik-backup.yaml
apps/authentik/authentik-blueprints.yaml
apps/authentik/authentik-secret.yaml
apps/authentik/authentik.yaml
apps/authentik/certificate.yaml
apps/authentik/helm-repo.yaml
apps/authentik/ingress.yaml
apps/authentik/kustomization.yaml
apps/authentik/namespace.yaml
apps/authentik/networkpolicy.yaml
apps/base/infra/cert-manager-repo.yaml
apps/base/infra/cert-manager.yaml
apps/base/infra/kustomization.yaml
apps/base/infra/ns-cert-manager.yaml
apps/base/infra/ns-matrix.yaml
apps/base/matrix/ess-operator.yaml
apps/base/matrix/ess-repo.yaml
apps/monitoring/alloy-config.yaml
apps/monitoring/alloy.yaml
apps/monitoring/helm-repos.yaml
apps/monitoring/kube-state-metrics.yaml
apps/monitoring/kustomization.yaml
apps/monitoring/namespace.yaml
apps/production/apex-ingress.yaml
apps/production/cert-issuer.yaml
apps/production/clamav-http-scanner-Dockerfile
apps/production/clamav-http-scanner.py
apps/production/clamav-http-scanner.yaml
apps/production/clamav-pvc.yaml
apps/production/clamav.yaml
apps/production/clamav_spam_checker.py
apps/production/concierge-bot.py
apps/production/concierge-bot.yaml
apps/production/coturn-secret.yaml
apps/production/coturn.yaml
apps/production/custom-configs/element-values copy.yaml
apps/production/custom-configs/element-values.yaml
apps/production/custom-configs/mas-secret.yaml
apps/production/custom-configs/synapse-values.yaml
apps/production/draupnir-pvc.yaml
apps/production/draupnir-secret.yaml
apps/production/draupnir.yaml
apps/production/element-server-suite.yaml
apps/production/element-web-docs-configmap.yaml
apps/production/element-web-docs-server.yaml
apps/production/kustomization.yaml
apps/production/matrix-certificates.yaml
apps/production/matrix-postgres-auth.yaml
apps/production/networkpolicy.yaml
apps/production/synapse-backup-secret.yaml
apps/production/synapse-backup.yaml
apps/production/synapse-turn-secret.yaml
apps/production/turn-secret-rotation-secret.yaml
apps/production/turn-secret-rotation.yaml
ci/lab-ca-chain.crt
clusters/matrix/flux-system/authentik-sync.yaml
clusters/matrix/flux-system/gotk-components.yaml
clusters/matrix/flux-system/gotk-sync.yaml
clusters/matrix/flux-system/infra-sync.yaml
clusters/matrix/flux-system/kustomization.yaml
clusters/matrix/flux-system/monitoring-sync.yaml
clusters/matrix/flux-system/production-sync.yaml
docs/TASKS.md
docs/deployment-guides/01-turn-server-setup.md
docs/deployment-guides/02-authentik-identity-provider.md
docs/deployment-guides/03-monitoring-integration.md
docs/deployment-guides/04-element-customization.md
docs/deployment-guides/05-room-policies.md
docs/deployment-guides/06-moderation-content-scanning.md
docs/deployment-guides/07-host-maintenance-notifications.md
docs/deployment-guides/08-concierge-gaeste-einladungen.md
docs/deployment-guides/README.md
docs/install.md
docs/oldwiki/authentik.md
docs/oldwiki/fix report mrtc.md
docs/oldwiki/home.md
docs/oldwiki/invitereg.md
docs/ops-configmap-sync.md
docs/setup/README-Element-Setup.md
docs/setup/element-setup-linux.sh
docs/setup/element-setup-macos.command
docs/setup/element-setup-windows.cmd
docs/troubleshooting/AUTHENTIK-CREATE-INVITATION-FLOW.md
docs/troubleshooting/AUTHENTIK-FIX-TEMPLATE.md
docs/troubleshooting/AUTHENTIK-INVITATION-FLOW-FIX.md
docs/troubleshooting/DIAGNOSTIK-AUTHENTIK-FLOW.md
docs/troubleshooting/README.md
host-config/maintenance-notify/config.example
host-config/maintenance-notify/maintenance-notify.service
host-config/maintenance-notify/maintenance-notify.sh
host-config/maintenance-notify/maintenance-notify.timer
host-config/maintenance-notify/msmtprc.template
scripts/hooks/pre-commit
scripts/install-hooks.sh
+44
View File
@@ -0,0 +1,44 @@
.gitignore
.gitlab-ci.yml
.gitlab/issue_templates/Deploy-Übergabe.md
CLAUDE.md
README.md
ci/lab-ca-chain.crt
decisions/0001-gitlab-kanonisch-push-mirror.md
decisions/0002-issues-und-management-ins-lab.md
decisions/0003-cve-meldeweg-aggregiert.md
decisions/0004-site-to-site-vpn-hetzner-lab.md
decisions/0005-pm-framework-kanban.md
decisions/0006-wikis-konsolidieren-docusaurus.md
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md
decisions/0008-agenten-sessions-root-aequivalent.md
decisions/0009-commit-konventionen-und-historien-anonymisierung.md
decisions/README.md
decisions/template.md
hosts/cfgmon.md
hosts/game.md
hosts/matrix.md
hosts/overmind.md
roadmap.md
scripts/stillstandspruefung.py
shared/branding.md
shared/commit-zuordnung-2026-08-07.md
shared/lab-netzwerk.md
shared/zone-axion1337.md
verfahren/README.md
verfahren/aar-vorlage.md
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md
verfahren/aar/2026-08-01-labnet02-cfgmon.md
verfahren/aar/2026-08-01-labnet02-lab.md
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md
verfahren/aar/2026-08-09-refinement-und-betrieb.md
verfahren/deploy-uebergabe.md
verfahren/issue-migration/README.md
verfahren/issue-migration/migrate.py
verfahren/refinement.md
verfahren/retro/2026-08-09.md
verfahren/stillstandspruefung.md
verfahren/textbloecke.md
vision/axion1337-chat.md
vision/homelab.md
vision/threadnet.md
+4
View File
@@ -0,0 +1,4 @@
.gitignore
README.md
backup/gitea-backup.sh
docker-compose.yml
+598
View File
@@ -0,0 +1,598 @@
.dockerignore
.env.example
.env.production
.eslintrc.cjs
.githooks/pre-commit
.github/CODEOWNERS
.github/ISSUE_TEMPLATE/bug.yml
.github/ISSUE_TEMPLATE/config.yml
.github/ISSUE_TEMPLATE/enhancement.yml
.github/PULL_REQUEST_TEMPLATE.md
.github/release.yml
.github/workflows/blocked.yaml
.github/workflows/build-and-publish-docker.yaml
.github/workflows/build-element-call.yaml
.github/workflows/build.yaml
.github/workflows/changelog-label.yml
.github/workflows/deploy-to-netlify.yaml
.github/workflows/lint.yaml
.github/workflows/pr-deploy.yaml
.github/workflows/publish-embedded-packages.yaml
.github/workflows/publish.yaml
.github/workflows/test-netlify.yaml
.github/workflows/test.yaml
.github/workflows/translations-download.yaml
.github/workflows/translations-upload.yaml
.github/workflows/zizmor.yml
.gitignore
.gitlab-ci.yml
.node-version
.postcssrc.json
.prettierignore
.prettierrc.json
.storybook/main.ts
.storybook/manager.ts
.storybook/preview.tsx
.vscode/settings.json
CONTRIBUTING.md
Dockerfile
LICENSE-AGPL-3.0
LICENSE-COMMERCIAL
README.md
WIDGET_TEST.md
babel.config.cjs
backend/dev_homeserver-othersite.yaml
backend/dev_homeserver.yaml
backend/dev_livekit-othersite.yaml
backend/dev_livekit.yaml
backend/dev_nginx.conf
backend/dev_tls_local-ca.crt
backend/dev_tls_local-ca.key
backend/dev_tls_m.localhost.crt
backend/dev_tls_m.localhost.key
backend/dev_tls_setup
backend/ew.test.config.json
backend/ew.test.othersite.config.json
backend/playwright_homeserver-othersite.yaml
backend/playwright_homeserver.yaml
codecov.yaml
config/config.devenv.json
config/config.sample.json
config/config_netlify_preview.json
config/config_netlify_preview_sdk.json
config/httpd.conf
config/netlify_redirects
config/nginx.conf
config/otel_dev/README.md
config/otel_dev/collector-gateway.yaml
config/otel_dev/docker-compose.yaml
config/otel_dev/nginx_otel.conf
demo.gif
dev-backend-docker-compose.yml
docs/Federated_Setup.drawio.png
docs/MSC4195_setup.drawio.png
docs/README.md
docs/SFU_selection.drawio.png
docs/_developer.md
docs/axion1337-fork.md
docs/controls.md
docs/element_call_standalone.drawio.png
docs/element_call_widget.drawio.png
docs/embedded_package.drawio.png
docs/embedded_standalone.md
docs/full_package.drawio.png
docs/linking.md
docs/linking_concept_reasoning.md
docs/self_hosting.md
docs/url_params.md
embedded/android/.gitattributes
embedded/android/.gitignore
embedded/android/gradle.properties
embedded/android/gradle/libs.versions.toml
embedded/android/gradle/wrapper/gradle-wrapper.jar
embedded/android/gradle/wrapper/gradle-wrapper.properties
embedded/android/gradlew
embedded/android/gradlew.bat
embedded/android/lib/build.gradle.kts
embedded/android/lib/src/main/kotlin/io/element/android/call/embedded/Version.kt
embedded/android/publish_android_package.sh
embedded/android/settings.gradle
embedded/ios/.gitignore
embedded/ios/LICENSE-AGPL-3.0
embedded/ios/LICENSE-COMMMERCIAL
embedded/ios/Package.swift
embedded/ios/README.md
embedded/ios/Sources/EmbeddedElementCall/EmbeddedElementCall.swift
embedded/web/LICENSE-AGPL-3.0
embedded/web/LICENSE-COMMERCIAL
embedded/web/README.md
embedded/web/package.json
i18next.config.ts
index.html
knip.ts
localazy.json
locales/bg/app.json
locales/cs/app.json
locales/da/app.json
locales/de/app.json
locales/el/app.json
locales/en/app.json
locales/es/app.json
locales/et/app.json
locales/fa/app.json
locales/fi/app.json
locales/fr/app.json
locales/id/app.json
locales/it/app.json
locales/ja/app.json
locales/lv/app.json
locales/nl/app.json
locales/pl/app.json
locales/ro/app.json
locales/ru/app.json
locales/sk/app.json
locales/sv/app.json
locales/tr/app.json
locales/uk/app.json
locales/vi/app.json
locales/zh-Hans/app.json
locales/zh-Hant/app.json
package.json
playwright-backend-docker-compose.override.yml
playwright-backend-docker-compose.yml
playwright.config.ts
playwright/access.spec.ts
playwright/create-call.spec.ts
playwright/errors.spec.ts
playwright/fixtures/fixture-mobile-create.ts
playwright/fixtures/jwt-token.ts
playwright/fixtures/widget-user.ts
playwright/global.d.ts
playwright/landing.spec.ts
playwright/mobile/create-call-mobile.spec.ts
playwright/reconnect.spec.ts
playwright/restricted-sfu.spec.ts
playwright/sfu-reconnect-bug.spec.ts
playwright/spa-call-sticky.spec.ts
playwright/spa-helpers.ts
playwright/utils/synapse-admin.ts
playwright/widget/federated-call.test.ts
playwright/widget/federation-oldest-membership-bug.spec.ts
playwright/widget/hotswap-legacy-compat.test.ts
playwright/widget/huddle-call.test.ts
playwright/widget/pip-call-button-interaction.test.ts
playwright/widget/pip-call.test.ts
playwright/widget/screen-share.test.ts
playwright/widget/simple-create.spec.ts
playwright/widget/test-helpers.ts
playwright/widget/voice-call-dm.spec.ts
pnpm-lock.yaml
pnpm-workspace.yaml
public/favicon.png
renovate.json
scripts/.pnpmfile.cjs
scripts/dockerbuild.sh
scripts/playwright-webserver-command.sh
scripts/reformat-release-notes.py
scripts/setup-linking.sh
sdk/README.md
sdk/helper.ts
sdk/index.html
sdk/main.ts
src/@types/dom-mediacapture-transform.d.ts
src/@types/global.d.ts
src/@types/i18next.d.ts
src/@types/matrix-js-sdk.d.ts
src/@types/mdx.d.ts
src/@types/modules.d.ts
src/App.tsx
src/AppBar.module.css
src/AppBar.test.tsx
src/AppBar.tsx
src/Avatar.test.tsx
src/Avatar.tsx
src/ClientContext.tsx
src/DisconnectedBanner.module.css
src/DisconnectedBanner.tsx
src/ErrorView.module.css
src/ErrorView.tsx
src/FullScreenView.module.css
src/FullScreenView.tsx
src/Header.module.css
src/Header.test.tsx
src/Header.tsx
src/IndexedDBWorker.ts
src/LazyEventEmitter.ts
src/MediaDevicesContext.ts
src/Modal.module.css
src/Modal.test.tsx
src/Modal.tsx
src/Overlay.module.css
src/Platform.ts
src/QrCode.module.css
src/QrCode.test.tsx
src/QrCode.tsx
src/RTCConnectionStats.module.css
src/RTCConnectionStats.tsx
src/RichError.tsx
src/Slider.module.css
src/Slider.tsx
src/Toast.module.css
src/Toast.test.tsx
src/Toast.tsx
src/TranslatedError.ts
src/UrlParams.test.ts
src/UrlParams.ts
src/UserMenu.module.css
src/UserMenu.tsx
src/UserMenuContainer.tsx
src/__snapshots__/AppBar.test.tsx.snap
src/__snapshots__/Modal.test.tsx.snap
src/__snapshots__/QrCode.test.tsx.snap
src/__snapshots__/Toast-test.tsx.snap
src/__snapshots__/Toast.test.tsx.snap
src/analytics/AnalyticsNotice.tsx
src/analytics/PosthogAnalytics.test.ts
src/analytics/PosthogAnalytics.ts
src/analytics/PosthogEvents.test.ts
src/analytics/PosthogEvents.ts
src/auth/LoginPage.module.css
src/auth/LoginPage.tsx
src/auth/RegisterPage.tsx
src/auth/generateRandomName.ts
src/auth/useInteractiveLogin.ts
src/auth/useInteractiveRegistration.ts
src/auth/useRecaptcha.ts
src/auth/useRegisterPasswordlessUser.ts
src/button/Button.module.css
src/button/Button.test.tsx
src/button/Button.tsx
src/button/InviteButton.tsx
src/button/Link.module.css
src/button/Link.tsx
src/button/LinkButton.tsx
src/button/ReactionToggleButton.module.css
src/button/ReactionToggleButton.test.tsx
src/button/ReactionToggleButton.tsx
src/button/__snapshots__/ReactionToggleButton.test.tsx.snap
src/button/index.ts
src/components/CallFooter.mdx
src/components/CallFooter.module.css
src/components/CallFooter.stories.tsx
src/components/CallFooter.tsx
src/components/CallFooterViewModel.test.ts
src/components/CallFooterViewModel.tsx
src/components/MediaMuteAndSwitchButton.module.css
src/components/MediaMuteAndSwitchButton.stories.tsx
src/components/MediaMuteAndSwitchButton.test.tsx
src/components/MediaMuteAndSwitchButton.tsx
src/components/__snapshots__/MediaMuteAndSwitchButton.test.tsx.snap
src/config/Config.test.ts
src/config/Config.ts
src/config/ConfigOptions.ts
src/controls.ts
src/e2ee/e2eeType.ts
src/e2ee/matrixKeyProvider.test.ts
src/e2ee/matrixKeyProvider.ts
src/e2ee/sharedKeyManagement.ts
src/form/Form.module.css
src/form/Form.tsx
src/graphics/backgroundGradient.svg
src/graphics/loggedOutGradient.svg
src/grid/CallLayout.ts
src/grid/Grid.module.css
src/grid/Grid.tsx
src/grid/GridLayout.module.css
src/grid/GridLayout.tsx
src/grid/OneOnOneLandscapeLayout.module.css
src/grid/OneOnOneLandscapeLayout.tsx
src/grid/OneOnOnePortraitLayout.module.css
src/grid/OneOnOnePortraitLayout.tsx
src/grid/SpotlightExpandedLayout.module.css
src/grid/SpotlightExpandedLayout.tsx
src/grid/SpotlightLandscapeLayout.module.css
src/grid/SpotlightLandscapeLayout.tsx
src/grid/SpotlightPortraitLayout.module.css
src/grid/SpotlightPortraitLayout.tsx
src/grid/TileWrapper.module.css
src/grid/TileWrapper.tsx
src/home/CallList.module.css
src/home/CallList.test.tsx
src/home/CallList.tsx
src/home/HomePage.tsx
src/home/JoinExistingCallModal.module.css
src/home/JoinExistingCallModal.tsx
src/home/RegisteredView.module.css
src/home/RegisteredView.tsx
src/home/UnauthenticatedView.module.css
src/home/UnauthenticatedView.tsx
src/home/common.module.css
src/home/useGroupCallRooms.ts
src/icons/Check.svg
src/icons/Chevron.svg
src/icons/Close.svg
src/icons/FullScreenMaximise.svg
src/icons/FullScreenMinimise.svg
src/icons/LockOff.svg
src/icons/Login.svg
src/icons/Logo.svg
src/icons/LogoLarge.svg
src/icons/LogoMark.svg
src/icons/LogoType.svg
src/icons/Logout.svg
src/icons/Settings.svg
src/icons/StarSelected.svg
src/icons/StarUnselected.svg
src/icons/User.svg
src/index.css
src/initializer.test.ts
src/initializer.tsx
src/input/AvatarInputField.module.css
src/input/AvatarInputField.tsx
src/input/FeedbackInput.module.css
src/input/Input.module.css
src/input/Input.tsx
src/input/StarRating.test.tsx
src/input/StarRatingInput.module.css
src/input/StarRatingInput.stories.tsx
src/input/StarRatingInput.tsx
src/livekit/BlurBackgroundTransformer.ts
src/livekit/MatrixAudioRenderer.test.tsx
src/livekit/MatrixAudioRenderer.tsx
src/livekit/TrackProcessorContext.tsx
src/livekit/openIDSFU.test.ts
src/livekit/openIDSFU.ts
src/livekit/options.test.ts
src/livekit/options.ts
src/main.tsx
src/mediapipe/imageSegmenter/README.md
src/mediapipe/imageSegmenter/selfie_segmenter.tflite
src/profile/useProfile.ts
src/reactions/RaisedHandIndicator.test.tsx
src/reactions/RaisedHandIndicator.tsx
src/reactions/ReactionIndicator.module.css
src/reactions/ReactionIndicator.tsx
src/reactions/ReactionsReader.test.tsx
src/reactions/ReactionsReader.ts
src/reactions/__snapshots__/RaisedHandIndicator.test.tsx.snap
src/reactions/index.ts
src/reactions/useReactionsSender.tsx
src/room/CallEndedView.module.css
src/room/CallEndedView.tsx
src/room/CallEventAudioRenderer.test.tsx
src/room/CallEventAudioRenderer.tsx
src/room/EarpieceOverlay.module.css
src/room/EarpieceOverlay.tsx
src/room/EncryptionLock.module.css
src/room/EncryptionLock.tsx
src/room/GroupCallErrorBoundary.test.tsx
src/room/GroupCallErrorBoundary.tsx
src/room/GroupCallView.test.tsx
src/room/GroupCallView.tsx
src/room/InCallView.module.css
src/room/InCallView.test.tsx
src/room/InCallView.tsx
src/room/InviteModal.module.css
src/room/InviteModal.test.tsx
src/room/InviteModal.tsx
src/room/LobbyView.module.css
src/room/LobbyView.test.tsx
src/room/LobbyView.tsx
src/room/RageshakeRequestModal.tsx
src/room/ReactionAudioRenderer.test.tsx
src/room/ReactionAudioRenderer.tsx
src/room/ReactionsOverlay.module.css
src/room/ReactionsOverlay.test.tsx
src/room/ReactionsOverlay.tsx
src/room/RoomAuthView.module.css
src/room/RoomAuthView.tsx
src/room/RoomPage.tsx
src/room/VideoPreview.module.css
src/room/VideoPreview.test.tsx
src/room/VideoPreview.tsx
src/room/__snapshots__/GroupCallErrorBoundary.test.tsx.snap
src/room/__snapshots__/InCallView.test.tsx.snap
src/room/__snapshots__/LobbyView.test.tsx.snap
src/room/useJoinRule.ts
src/room/useLoadGroupCall.ts
src/room/useRoomAvatar.ts
src/room/useRoomName.ts
src/room/useRoomState.ts
src/settings/DeveloperSettingsTab.module.css
src/settings/DeveloperSettingsTab.test.tsx
src/settings/DeveloperSettingsTab.tsx
src/settings/DeviceSelection.module.css
src/settings/DeviceSelection.tsx
src/settings/FeedbackSettingsTab.tsx
src/settings/MediaQualitySettings.tsx
src/settings/PreferencesSettingsTab.tsx
src/settings/ProfileSettingsTab.module.css
src/settings/ProfileSettingsTab.tsx
src/settings/RageshakeButton.module.css
src/settings/RageshakeButton.tsx
src/settings/SettingsModal.module.css
src/settings/SettingsModal.tsx
src/settings/__snapshots__/DeveloperSettingsTab.test.tsx.snap
src/settings/rageshake.test.ts
src/settings/rageshake.ts
src/settings/settings.test.ts
src/settings/settings.ts
src/settings/submit-rageshake.test.ts
src/settings/submit-rageshake.ts
src/settings/useSubmitRageshake.test.tsx
src/sound/LICENCE.md
src/sound/call_declined.mp3
src/sound/call_declined.ogg
src/sound/call_timeout.mp3
src/sound/call_timeout.ogg
src/sound/end_talk.mp3
src/sound/end_talk.ogg
src/sound/join_call.mp3
src/sound/join_call.ogg
src/sound/left_call.mp3
src/sound/left_call.ogg
src/sound/raise_hand.mp3
src/sound/raise_hand.ogg
src/sound/reactions/baduntss.mp3
src/sound/reactions/baduntss.ogg
src/sound/reactions/cat.mp3
src/sound/reactions/cat.ogg
src/sound/reactions/clap.mp3
src/sound/reactions/clap.ogg
src/sound/reactions/crickets.mp3
src/sound/reactions/crickets.ogg
src/sound/reactions/deer.mp3
src/sound/reactions/deer.ogg
src/sound/reactions/dog.mp3
src/sound/reactions/dog.ogg
src/sound/reactions/generic.mp3
src/sound/reactions/generic.ogg
src/sound/reactions/lightbulb.mp3
src/sound/reactions/lightbulb.ogg
src/sound/reactions/party.mp3
src/sound/reactions/party.ogg
src/sound/reactions/rock.mp3
src/sound/reactions/rock.ogg
src/sound/reactions/wave.mp3
src/sound/reactions/wave.ogg
src/sound/ringtone.mp3
src/sound/ringtone.ogg
src/sound/screen_share_started.mp3
src/sound/screen_share_started.ogg
src/sound/start_talk_local.mp3
src/sound/start_talk_local.ogg
src/sound/start_talk_remote.mp3
src/sound/start_talk_remote.ogg
src/soundUtils.ts
src/state/AndroidControlledAudioOutput.test.ts
src/state/AndroidControlledAudioOutput.ts
src/state/AppViewModel.ts
src/state/AudioOutput.test.ts
src/state/Behavior.ts
src/state/CallViewModel/CallNotificationLifecycle.test.ts
src/state/CallViewModel/CallNotificationLifecycle.ts
src/state/CallViewModel/CallViewModel.test.ts
src/state/CallViewModel/CallViewModel.ts
src/state/CallViewModel/CallViewModelTestUtils.ts
src/state/CallViewModel/LayoutSwitch.test.ts
src/state/CallViewModel/LayoutSwitch.ts
src/state/CallViewModel/localMember/HomeserverConnected.test.ts
src/state/CallViewModel/localMember/HomeserverConnected.ts
src/state/CallViewModel/localMember/LocalMember.test.ts
src/state/CallViewModel/localMember/LocalMember.ts
src/state/CallViewModel/localMember/LocalTransport.test.ts
src/state/CallViewModel/localMember/LocalTransport.ts
src/state/CallViewModel/localMember/Publisher.test.ts
src/state/CallViewModel/localMember/Publisher.ts
src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.test.ts
src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.ts
src/state/CallViewModel/remoteMembers/Connection.test.ts
src/state/CallViewModel/remoteMembers/Connection.ts
src/state/CallViewModel/remoteMembers/ConnectionFactory.ts
src/state/CallViewModel/remoteMembers/ConnectionManager.test.ts
src/state/CallViewModel/remoteMembers/ConnectionManager.ts
src/state/CallViewModel/remoteMembers/ECConnectionFactory.test.ts
src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.test.ts
src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts
src/state/CallViewModel/remoteMembers/MatrixMemberMetadata.test.ts
src/state/CallViewModel/remoteMembers/MatrixMemberMetadata.ts
src/state/CallViewModel/remoteMembers/integration.test.ts
src/state/CallViewModelWidget.test.ts
src/state/GridLikeLayout.ts
src/state/IOSControlledAudioOutput.ts
src/state/MediaDevices.ts
src/state/MuteAllAudioModel.test.ts
src/state/MuteAllAudioModel.ts
src/state/MuteStates.test.ts
src/state/MuteStates.ts
src/state/ObservableScope.test.ts
src/state/ObservableScope.ts
src/state/OneOnOneLandscapeLayout.ts
src/state/OneOnOnePortraitLayout.ts
src/state/PipLayout.ts
src/state/SessionBehaviors.ts
src/state/SpotlightExpandedLayout.ts
src/state/TileStore.ts
src/state/TileViewModel.ts
src/state/ViewModel.ts
src/state/VolumeControls.ts
src/state/initialMuteState.test.ts
src/state/initialMuteState.ts
src/state/layout-types.ts
src/state/media/LocalScreenShareViewModel.ts
src/state/media/LocalUserMediaViewModel.ts
src/state/media/MediaViewModel.test.ts
src/state/media/MediaViewModel.ts
src/state/media/MemberMediaViewModel.ts
src/state/media/RemoteScreenShareViewModel.ts
src/state/media/RemoteUserMediaViewModel.ts
src/state/media/RingingMediaViewModel.ts
src/state/media/ScreenShareViewModel.ts
src/state/media/UserMediaViewModel.ts
src/state/media/WrappedUserMediaViewModel.ts
src/state/media/observeRtpStreamStats.ts
src/state/media/observeSpeaker.test.ts
src/state/media/observeSpeaker.ts
src/state/observeTrackReference.ts
src/tabs/Tabs.module.css
src/tabs/Tabs.tsx
src/tile/GridTile.module.css
src/tile/GridTile.test.tsx
src/tile/GridTile.tsx
src/tile/MediaView.module.css
src/tile/MediaView.test.tsx
src/tile/MediaView.tsx
src/tile/SpotlightTile.module.css
src/tile/SpotlightTile.test.tsx
src/tile/SpotlightTile.tsx
src/tile/TileAvatar.module.css
src/tile/TileAvatar.test.tsx
src/tile/TileAvatar.tsx
src/useAudioContext.test.tsx
src/useAudioContext.tsx
src/useBehavior.ts
src/useCallViewKeyboardShortcuts.test.tsx
src/useCallViewKeyboardShortcuts.ts
src/useEvents.test.tsx
src/useEvents.ts
src/useInitial.ts
src/useLatest.ts
src/useLocalStorage.test.tsx
src/useLocalStorage.ts
src/useMatrixRTCSessionMemberships.ts
src/useMediaQuery.ts
src/useMergedRefs.ts
src/usePageTitle.ts
src/usePrefersReducedMotion.ts
src/useReactiveState.ts
src/useTheme.test.ts
src/useTheme.ts
src/useWakeLock.ts
src/utils/array.ts
src/utils/displayname-integration.test.ts
src/utils/displayname.test.ts
src/utils/displayname.ts
src/utils/errors.ts
src/utils/fetch.test.ts
src/utils/fetch.ts
src/utils/i18n.ts
src/utils/iter.test.ts
src/utils/iter.ts
src/utils/matrix.ts
src/utils/media.ts
src/utils/observable.test.ts
src/utils/observable.ts
src/utils/spa.ts
src/utils/test-fixtures.ts
src/utils/test-viewmodel.ts
src/utils/test.ts
src/utils/videoFit.test.ts
src/utils/videoFit.ts
src/vitest.setup.ts
src/widget.test.ts
src/widget.ts
tsconfig.json
vite-embedded.config.ts
vite-sdk.config.ts
vite.config.ts
vitest.config.ts
@@ -0,0 +1,27 @@
.gitignore
README.md
monitoring/.env.example
monitoring/README.md
monitoring/alertmanager/alertmanager.yml
monitoring/alertmanager/matrix-alerts.py
monitoring/alertmanager/release-watch.py
monitoring/alloy/config.alloy
monitoring/cve/cve-exporter.py
monitoring/cve/images.txt
monitoring/cve/scan-loop.sh
monitoring/docker-compose.yml
monitoring/grafana/dashboards/gameserver/pterodactyl-server.json
monitoring/grafana/dashboards/general/k3s-cluster-monitoring.json
monitoring/grafana/dashboards/general/kubernetes-views-nodes-list.json
monitoring/grafana/dashboards/general/logs-app.json
monitoring/grafana/dashboards/matrix/flux2.json
monitoring/grafana/dashboards/matrix/k8s-dashboard.json
monitoring/grafana/dashboards/operating/node-exporter-full.json
monitoring/grafana/dashboards/operating/operating-docker-host-container-overview.json
monitoring/grafana/dashboards/operating/operating-traefik-official-standalone-dashboard.json
monitoring/grafana/dashboards/security/cve-overview.json
monitoring/grafana/provisioning/dashboards/dashboards.yml
monitoring/grafana/provisioning/datasources/datasources.yml
monitoring/loki/loki-config.yaml
monitoring/prometheus/alerts.yml
monitoring/prometheus/prometheus.yml
@@ -0,0 +1,50 @@
<!-- ENTWURF aus der Session-1-Analyse (Neckbeard-Feldtest).
Zielpfad: decisions/0010-haertung-eigener-meilenstein.md
Diese Session darf außerhalb von analysis/ nichts anlegen; das Platzieren
ist ein `git mv analysis/drafts/0010-haertung-eigener-meilenstein.md \
decisions/0010-haertung-eigener-meilenstein.md` durch sorb (plus das
Entfernen dieses Kommentarblocks). Bewusst im alten Schema und auf
Deutsch — Entscheidung sorb, 2026-08-10: „im alten Schema noch, wird
hier nichts migriert." Quelle der Entscheidung:
verfahren/retro/2026-08-09.md (Beschlüsse), Befund F-001 der Analyse. -->
# 0010 — Härtung ist ein eigener Meilenstein (M5); M1 misst nur Kaputtes
**Status:** akzeptiert · **Datum:** 2026-08-09 · **Entscheider:** sorb
## Kontext
M1 („Betrieb absichern") trug 33 von 70 offenen Issues — fast die Hälfte. Elf
davon waren zusätzliche Sicherheits-Werkzeuge (Falco, CrowdSec, Lynis, auditd,
WAF, PSA, Trivy …), keine kaputten Schutzmechanismen. Die roadmap.md hatte die
Frage seit 2026-08-06 explizit offen gestellt: eigener Meilenstein „Härtung"
oder M1 bewusst breit? Ein Meilenstein beantwortet „worauf zahlt es ein"
(CLAUDE.md) — ein M1, der Reparatur und Ausbau mischt, beantwortet das nicht
mehr.
## Entscheidung
Im Refinement vom 2026-08-09 (mit sorb, gemäß Board-Pflege-Regel nicht durch
eine Session allein): **M5 — Härtung** wird angelegt. Trennlinie:
> *Ist etwas Vorhandenes kaputt (M1) oder fehlt etwas, das wir noch nie
> hatten (M5)?*
14 Issues wurden aus M1 nach M5 verschoben (Verteilung danach laut Retro:
M1 18 · M2 21 · M3 4 · M4 13 · M5 14).
## Konsequenzen
- Der Meilenstein-Satz ist **M1M5**. `roadmap.md` (Kopf und „Stand"-Block)
und `CLAUDE.md` (Abschnitt Arbeitsframework, „M1M4") sind nachzuziehen —
beide behaupten Stand 2026-08-09 noch den alten Satz bzw. stellen die
Frage als offen dar (Analyse-Befund F-001).
- Neue Sicherheits-Issues werden an der Trennlinie einsortiert: fehlendes
Werkzeug → M5, kaputter Schutz → M1. Die Trennlinie steht damit hier und
nicht nur im Retro-Protokoll.
- Die Retro-Zahlen sind eine Momentaufnahme; verbindlich ist das Board.
## Verworfene Alternativen
- **M1 bewusst breit lassen:** verworfen — die Meilenstein-Frage „worauf
zahlt es ein" bekäme für die Hälfte des Backlogs zwei Antworten zugleich.
@@ -0,0 +1,47 @@
# F-001: Milestone M5 was decided and executed, but the steering docs still call it an open question
category: claim-vs-reality
confidence: high
evidence:
- `roadmap.md:6-14` (last commit 2026-08-09, `git log -1 main -- roadmap.md`) states
the milestone set as "M1M4", gives the distribution "M1 33 · M2 21 · M3 4 · M4 12
von 70" under "Stand 2026-08-06", and frames the Härtung milestone as an explicitly
open question: "Ob das ein eigener Meilenstein „Härtung" werden soll oder M1 bewusst
breit bleibt, ist **offen** — zu entscheiden im Refinement, nicht nebenbei."
- `CLAUDE.md:98` (last commit 2026-08-09) likewise binds every issue to "Gruppen-Milestones
M1M4".
- Measured against the live tracker (`analysis/data/gitlab_issues.json`, 71 open issues):
M1 19 · M2 22 · M3 4 · M4 12 · **M5 — Härtung 14**. The milestone exists and is populated.
- All 14 M5 issues live in `axion1337.chat-gitops` and carry `updated_at` 2026-08-09.
- `verfahren/retro/2026-08-09.md:115-117` records the decision: "**M5 — Härtung** angelegt,
14 Issues aus M1 verschoben", with the dividing line and the resulting distribution
"M1 18 · M2 21 · M3 4 · M4 13 · M5 14".
- No ADR covers it: `decisions/` holds 0001-0009, none mentions M5 or Härtung
(`grep -rn 'M5\|Härtung' decisions/` -> no match).
- The retro's own numbers are already stale on the day they were written: retro says
M1 18 / M2 21 / M4 13 / 70 total, the tracker says M1 19 / M2 22 / M4 12 / 71 total.
impact: The two documents a new session is told to read first (`CLAUDE.md`, then
`roadmap.md`) describe a milestone set that no longer exists, and pose as undecided a
question that was decided. An agent following `CLAUDE.md:98` would file a hardening issue
into M1, silently undoing the split. The decision itself survives only as a bullet in a
dated retro file — the one place the repo's own rules do not point sessions to.
`CLAUDE.md:79-82` makes an ADR mandatory for process decisions and calls documenting an
exception instead of deciding it "ein Fehler"; by the repo's own standard this decision is
under-recorded.
root-cause pattern: **Decision executed in the tool, documentation not carried along.**
The change was made where the work is (GitLab milestones), noted where the session ended
(the retro), and never propagated to the documents that claim to be canonical.
neckbeard mechanism: Partly prevented, partly a gap.
Prevented: ADR-0002 (`docs/adr/0002-in-repo-issues.md`, Decision) puts issues in the repo
as `docs/issues/NNNN-slug.md`, so re-bucketing 14 issues *is* a commit in the same tree as
`roadmap.md` — a reviewer sees the docs that were not updated alongside it. `AGENTS.md:79`
plus `scripts/gen_status.py` make `STATUS.md` a generated index ("do not edit by hand"), so
counts are never hand-copied prose that can rot. `WORKFLOW.md:128` puts "STATUS review:
anything stale or surprising" on the refinement agenda.
**Gap in neckbeard:** it has no milestone or roadmap concept at all — no artifact type in
`schema.yaml` groups issues into a delivery bucket, and nothing would have flagged the
M1-vs-M5 split as needing an ADR. Session 2 must decide where "worauf zahlt es ein" lives.
@@ -0,0 +1,77 @@
# F-002: The timestamp anonymisation rule reaches one of six repos; 237 commits still carry real working hours
category: claim-vs-reality
confidence: high
evidence:
- `CLAUDE.md:116-134` declares the rule for "**alle** Repos der Gruppe `axion1337.chat`
und die ThreadNet-Dienste": author *and* committer date set to 12:00:00 UTC, with the
stated purpose "damit sich aus der Historie keine persönlichen Arbeitszeiten ablesen
lassen".
- Measured over every ref of all six repos (`analysis/data/timestamp_anonymisation.tsv`,
produced by `analysis/scripts/inv_timestamps.py`, author time rendered in UTC):
| repo | own/agent commits with real clock time |
|---|---|
| management | 0 |
| axion1337.chat-gitops | 187 |
| threadnet-operating | 21 |
| thread-net-git | 11 |
| threadnet-call | 14 (all on `origin/livekit`) |
| ThreadNet-Web | 4 |
Total 237. Upstream Element/Matrix commits are excluded from that count — they were
never this project's to rewrite.
- `thread-net-git` and `threadnet-operating` were not rewritten at all: they hold **no**
12:00:00 commits and appear in no section of `shared/commit-zuordnung-2026-08-07.md`
(sections cover gitops, management, ThreadNet-Web, threadnet-call only).
- The exposed times are exactly the ones the rule exists to hide. On
`axion1337.chat-gitops`'s `turn-secret-rotation-20260728-192656` branch alone, the
hour-of-day distribution of the 41 commits is 00h ×1, 01h ×6, 21h ×8, 22h ×1, 23h ×6.
- Reach of the exposure, stated precisely. Observed: all six repos mirror to
`rohana.axion1337.de` and `git ls-remote` succeeded there without credentials from the
owner's machine (see F-013). **Not** observed: that this host is reachable by anyone
else. The human states the Gitea host is private to them, and an earlier draft of this
finding wrongly inferred "public" from "readable from here" — corrected.
The exposure that matters is therefore **prospective and on the git.lab side**: content
from git.lab may be pushed to GitHub, which is public. No such push path is configured
today — no repo has a remote other than `origin`, and no `.gitlab-ci.yml` in the six
repos references `github.com` (the `.github/workflows/` mentions in `hosts/cfgmon.md:60,105`
are inherited Element files that were removed). The rule exists for the day that changes,
and on that day 237 commits would go out with real clock times unless the gap is closed
first.
- `CLAUDE.md:143-147` does carry a caveat, but it names push times, issue and comment
timestamps, pipeline runs and package publications — **not** the git history itself.
`shared/commit-zuordnung-2026-08-07.md:41-44` discloses the untouched pre-boundary
commits, but frames it as an SHA matter ("haben ihre SHA behalten"), not as a
147-commit hole in the privacy goal.
impact: The rule's stated goal is not achieved for five of six repos, while both the rule
and its caveat read as though the remaining exposure were limited to non-git surfaces.
Anyone reading `CLAUDE.md` would reasonably conclude the git history is clean. Effort was
spent (a 251-commit rewrite, three restarted release pipelines, a mapping document) for a
result that a `git log` on any side branch undoes.
The cost is not damage already done — both hosts are private today. It is that the
protection is believed to be in place and is not, so the decision to open any repo
outward (a GitHub push, an added collaborator, a public project toggle) would be taken on
a false premise. That is the moment the gap becomes irreversible: history, once pushed,
cannot be recalled.
root-cause pattern: **Rule declared repo-wide, applied to a subset — and the gap between
the two is documented in a third place, in different terms.**
remediation constraint (human, 2026-08-10): any rewrite of these 237 commits **must ship
a Zuordnung** — an old→new SHA mapping in the style of
`shared/commit-zuordnung-2026-08-07.md`, which F-015 verified works (251/251 rows). A
rewrite without its mapping would break the evidence-by-citation style the repo depends
on (F-012).
neckbeard mechanism: **Gap in neckbeard.** Nothing in `AGENTS.md`, `WORKFLOW.md`,
`schema.yaml` or `scripts/validate.py` concerns commit hygiene, author identity or history
rewriting; `docs/aar/2026-08-09-neckbeard-v1-creation.md` ("Git is the changelog") treats
git as a given, not as an artifact under governance. The nearest applicable rule is
`AGENTS.md:50-55` ("Never claim something works without evidence... Uncertainty is
reported, never swallowed"), which is a behavioural rule for an agent, not a check on the
repo. A field test finding worth carrying back: a framework that governs documents while
the project's most sensitive claims are about its *git history* leaves that surface
unguarded.
@@ -0,0 +1,39 @@
# F-003: Five author identities of one person remain, one with a malformed e-mail
category: claim-vs-reality
confidence: high
evidence:
- `shared/commit-zuordnung-2026-08-07.md:19-22` states that the rewrite unified author
identity: "bei einigen Commits zusätzlich die Autoren-Identität (drei Varianten
derselben Person auf eine vereinheitlicht)".
- Author fields still present across the six repos
(`analysis/data/timestamp_anonymisation.tsv`, column `author`):
`Thore Cimbal <cfx@riot.8shield.net>`, `Scrublord MacBad <Scrublord@Mac.Bad>`,
`ScrublordMcBad <gamemaster@axion1337.de>`, `sorb <gamemaster@axion1337.de>`,
`sorB <cfxqriot.8shield.net>`.
- That is five variants, not the three the document says were collapsed into one.
- `sorB <cfxqriot.8shield.net>` (2 commits on `ThreadNet-Web` main) is not a valid e-mail
address — the `@` is missing, `cfx@riot` became `cfxqriot`.
- The unification reached only the rewritten commits: `management` main shows a single
identity, while `axion1337.chat-gitops` main still carries 135 commits as
`Scrublord MacBad <Scrublord@Mac.Bad>` and 10 as `ScrublordMcBad`.
impact: Same exposure class as F-002 -- prospective, not realised, since both hosts are
private today (see the reach note in F-002) -- and the same false sense of completion. In
addition, the malformed address makes those two commits unattributable by tooling that
matches on e-mail, and `Scrublord@Mac.Bad` leaks a machine name. Any forge rendering these
repos shows one person as four or five contributors.
root-cause pattern: **Rule declared repo-wide, applied to a subset** — the same pattern as
F-002, in the same operation. Both were verified for the property that was easy to check
(SHA pairs matched) and not for the property the operation existed to achieve.
session addendum: the human confirmed at session close (2026-08-10) that the canonical
identity is **`Thore Cimbal <cfx@riot.8shield.net>`** — recorded here as the target value
for any later remediation; nothing was rewritten in this session.
neckbeard mechanism: **Gap in neckbeard**, as in F-002 — no commit or identity hygiene
exists in the framework. The closest structural analogue is `scripts/validate.py`, which
enforces that declared metadata matches reality for *documents* (`check_fields`,
`apply_rules`); nothing does the equivalent for commit metadata.
@@ -0,0 +1,46 @@
# F-004: Open work items live only in host markdown, against the repo's own "no backlog markdown" rule
category: process-drift
confidence: high
evidence:
- The rule, twice stated: `CLAUDE.md:72-75` — "**Alles Offene ist ein Issue** … Kein neues
Backlog-Markdown anlegen; `hosts/`/`shared/` sind nur Bestand + Historie" — and
`README.md:47` — "Alle offenen Punkte sind **Issues in diesem Projekt**".
- Open next steps that exist only as prose in `hosts/` and `shared/`:
- `hosts/overmind.md:90` — "**Nächster Schritt:** `element-desktop-build` von rohana in
die Lab-Registry umziehen … bewusst zurückgestellt" (section OVERMIND-01, marked
"Status: erledigt").
- `hosts/overmind.md:111-115` — "**Offen:** … Falls der Hang trotz EEE-off + neuer
Firmware wiederkehrt: gezielter ASPM-Fix statt globalem Kernel-Parameter".
- `hosts/cfgmon.md:148` — "**Nächster Schritt:** die drei manuellen Schritte oben, dann
→ erledigt" (section CFGMON-11).
- `shared/branding.md:210` — a whole `## Offen` section.
- Section IDs in `hosts/`/`shared/` with **no** corresponding issue anywhere in the group
(checked against all 111 issues in `analysis/data/gitlab_issues.json`):
`OVERMIND-01`, `CFGMON-11`, `CFGMON-12`, `CFGMON-13`, `MATRIX-05`.
For contrast, `OVERMIND-02` -> management#4 and `LABNET-01` -> management#11 do exist.
- `hosts/overmind.md:146` even routes readers to a markdown-only item as if it were
tracked: "CFGMON-11 (Gitea-CI-Rückbau)".
impact: An item like the `element-desktop-build` migration is invisible to the group board,
carries no milestone, no priority and no owner, and appears in no refinement. It is
deferred with a reason — a good reason — inside a file the process declares to be history.
`README.md:74` names the distinction between "gemacht" and "bewusst gelassen" as the most
frequent question; for these five IDs the answer exists in exactly one place and it is not
the one the process points at.
root-cause pattern: **Two backlogs, one rule.** The rule says one system; the host
documents are the natural place to write while working on a host, so items land there and
the migration to an issue is a separate act of discipline that sometimes does not happen.
neckbeard mechanism: Directly prevented by ADR-0002
(`docs/adr/0002-in-repo-issues.md`, Decision: "In-repo Markdown issues
(`docs/issues/NNNN-slug.md`, status in frontmatter, generated `STATUS.md` as index)").
Under it there is no gap between "writing in the doc" and "filing an issue" — both are
markdown files in the same tree, and `scripts/validate.py` enforces that an issue has a
`status` from `schema.yaml`'s enum `[open, in-progress, done, rejected]` (`check_fields`,
`schema.yaml:76-84`), so an open item cannot exist as a bold prose label. `scripts/gen_status.py`
then lists it in `STATUS.md` whether or not anyone remembered it.
Residual gap: nothing in neckbeard would stop a wiki page under `docs/wiki/` from carrying
an "Offen" section; the guard is `WORKFLOW.md:126` wiki lint, a human ritual.
@@ -0,0 +1,49 @@
# F-005: A live document routes the reader to the Gitea tracker that three documents declare dead
category: claim-vs-reality
confidence: high
evidence:
- The claim, stated three times and each time absolutely:
- `README.md:22-27` — "**Keine Ausnahmen mehr.** … der Gitea-Tracker ist leer …
**Alle Issues leben auf git.lab.**"
- `hosts/overmind.md:38-42` — "**Issues nicht mehr** … der Tracker ist leer.
**Ohne Ausnahme: Issues leben auf git.lab.**"
- `CLAUDE.md:49` — "**Issues leben auf git.lab.** Die alten Gitea-Issues sind
geschlossen und verweisen dorthin."
- `hosts/cfgmon.md:176` (section CFGMON-12) resolves its status against that tracker:
"**Status:** abgelöst durch [gitops#48](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/48)
(2026-08-01, sorb: HOHE Priorität …) — Plan-Skizze und die offene
Erreichbarkeits-Entscheidung git.lab-only vs. extern stehen dort".
- So the substance of an open decision is said to live in an issue on the tracker that is
declared empty. The link is the only pointer to it in the repo.
- The number is additionally unsafe: `CLAUDE.md:50-52` warns that gitops issue numbers
shifted in the migration ("z. B. Gitea#48 → GitLab#46") and that "alte „gitops#N"-Verweise
meinen die Gitea-Nummer". A reader who resolves `gitops#48` on git.lab lands on a
different issue than the one meant — and `analysis/data/links.tsv` records
`axion1337.chat-gitops#48` as an existing GitLab issue, so nothing looks broken.
- The shift is now verified by title, not only by the warning: GitLab gitops#48 is
"Gäste-Invite-Workflow per Bot …" — a different topic — while GitLab gitops#46 is
"Issue-Migration nach GitLab + zentrale Projekt-Roadmap …", exactly the substance
CFGMON-12 describes. The Gitea#48 the doc links **is** today's GitLab#46, confirming
`CLAUDE.md:51`'s example as fact (`analysis/data/gitlab_issues.json`).
- CFGMON-12 has no issue of its own anywhere in the group (F-004).
impact: A high-priority decision ("HOHE Priorität", plus an open reachability question) is
reachable only through a link into a system the documentation says is retired, under a
number the documentation says is ambiguous. Both failure modes are silent: the link
resolves, and so does the wrong git.lab issue.
root-cause pattern: **Decision executed in the tool, documentation not carried along**
the migration was completed and announced, but the documents that pointed into the old
system were not swept. Compounded by **two backlogs, one rule** (F-004).
neckbeard mechanism: Removed by construction under ADR-0002
(`docs/adr/0002-in-repo-issues.md`): with issues as files in the repo, a reference to an
issue is a relative link, and `scripts/validate.py`'s `check_body_links` reports
"inline link target missing" when it does not resolve — a renumbering or a retired tracker
becomes a failing check instead of a working link to the wrong thing. ADR-0002 explicitly
lists this as the con of forge issues: "issue ↔ artifact links leave the repo".
**Gap in neckbeard:** `check_body_links` only validates repo-relative targets; external
URLs are format-checked at most (`schema.yaml:22-26` applies that only to frontmatter link
fields). A doc pointing at a dead external tracker stays green.
@@ -0,0 +1,44 @@
# F-006: Three abandoned branches still carry exactly what the rewrite removed from main
category: dead-artifact
confidence: high
evidence:
- `axion1337.chat-gitops` `origin/turn-secret-rotation-20260728-192656`: 41 commits not on
main, head `f30d2f5` dated 2026-07-28, **not merged** (`git merge-base --is-ancestor` ->
no). All 41 carry real clock times (00h01h and 21h23h heavy). They are the *pre-rewrite*
versions of commits the mapping table lists as replaced — 42 mapping rows resolve as
`ok-both-present` in `analysis/data/sha_refs.tsv`, meaning the old SHA is still reachable.
- The same branch exists on the Gitea mirror (private to the owner, see F-002):
`git ls-remote https://rohana.axion1337.de/sorb/axion1337.chat-gitops.git` ->
`f30d2f582ba14d85a7dec97c4db9bb2677ca824d refs/heads/turn-secret-rotation-20260728-192656`,
identical to git.lab.
- `threadnet-call` `origin/livekit`: 14 own commits with real clock times, head `c12a4116`
(2026-07-31 22:22), mirrored with the same head.
- `axion1337.chat-gitops` `origin/wiki`: head `0ff598e`, 2026-05-14. `CLAUDE.md:63` already
describes it as "ein überholter Mai-Abzug von `docs/`", and management#19 ("DOC-02:
Veralteten `wiki`-Branch im gitops-Repo entfernen?") tracks it — open, `priority:low`,
no `status:` label, i.e. plain backlog.
- The rotation branch's own successor mechanism is live: the scheduled CI job
`canonize_rotation` exists at `.gitlab-ci.yml:51` in the gitops repo, as `CLAUDE.md:56-60`
describes. The branch predates it and was never cleaned up.
impact: The single most expensive operation in this repo's history — a 251-commit rewrite
that restarted three release pipelines and needed its own mapping document — is undone for
42 of those commits by a branch nobody looks at, and the branch travels with every mirror
and every future clone or push of that repo. The `wiki` branch
additionally offers a three-month-old copy of the documentation next to the current one,
which is the "zwei Wahrheiten über dieselbe Sache" failure `CLAUDE.md:94-97` names as worse
than an incomplete one.
root-cause pattern: **Artifacts outlive their purpose without an owner.** All three branches
served a finished purpose; none had a defined end. The one that is noticed (`wiki`) sits in
the backlog without a status label, which is where low-priority hygiene goes to rest.
neckbeard mechanism: **Gap in neckbeard.** The framework governs files inside a checkout,
not refs: nothing in `AGENTS.md`, `WORKFLOW.md` or `scripts/validate.py` sees a branch.
The nearest existing mechanisms are `WORKFLOW.md:122` (refinement item 2, "Backlog triage
over `docs/issues/`") and `WORKFLOW.md:126` (wiki lint, which hunts "orphan pages") — both
would need a branch equivalent to catch this. `schema.yaml`'s `warn_if_orphan` rule shows
the framework already accepts "reachable from nowhere" as a reportable condition for
documents; the field test shows refs need the same treatment.
@@ -0,0 +1,58 @@
# F-007: How many repos are mirrored has three different answers, and one of them is wrong
category: claim-vs-reality
confidence: high
evidence:
- `CLAUDE.md:36-37` — "**Gespiegelt wird nur die Gruppe `axion1337.chat`** (die **fünf**
Produkt-Repos und `management`)" — i.e. six repos.
- `hosts/overmind.md:27-31` — "Stand 2026-08-09 **sieben**: die **sechs** Produkt-Repos
(ThreadNet-Web, threadnet-call, thread-net-git, threadnet-operating,
axion1337.chat-gitops, seit heute auch `game-operating`) **und `management`**".
- Both files were last committed on the same day, 2026-08-09
(`git log -1 main -- <file>`), so this is not a lag between an old and a new statement;
the repo asserts five and six product repos simultaneously.
- Measured (`git ls-remote` against both hosts, heads of `main`):
- management, axion1337.chat-gitops, ThreadNet-Web, threadnet-call, thread-net-git,
threadnet-operating -> **all six in sync**, identical SHAs.
- `game-operating` -> git.lab `ead1272823`, `rohana.axion1337.de/sorb/game-operating`
-> **no repository**. The "seit heute auch `game-operating`" claim does not hold.
- `gameserver` -> git.lab `d5c6ccb2e9`, Gitea `48441a500f`, **diverged** — which is
exactly what `hosts/overmind.md:33-35` says and management#32 tracks.
- Caveat on the negative result: the mirror naming convention is `sorb/<name>` for all
six verified repos; a `game-operating` mirror under a different name would not have
been found. Confidence high on the contradiction, medium on the specific cause.
post-analysis addendum (2026-08-10, session close): **the "is not mirrored" conclusion is
withdrawn.** A controlled re-probe showed Gitea answers identically for a definitely
nonexistent repo and for `sorb/game-operating` (auth prompt — existence is hidden), while
`sorb/gameserver` and `sorb/management` answer anonymously. The original measurement
discarded stderr and misread an auth prompt as absence. The human states the mirror
exists; the observable difference is therefore **visibility** (not anonymously readable,
unlike the six ThreadNet mirrors), not absence. The five-vs-six document contradiction
between `CLAUDE.md:36` and `hosts/overmind.md:28` stands unchanged. The human also
clarified scope: `game-operating` has nothing to do with ThreadNet beyond its planned
inclusion in monitoring.
impact: The mirror set is the answer to "what can the Hetzner cluster still reach when the
lab is down" — the reason the two-host topology exists at all (`CLAUDE.md:26-33`). A repo
believed mirrored but not mirrored is a gap in exactly that guarantee, and the belief is
recorded in the file that is meant to be authoritative for host questions.
management#28 ("MIRROR-01: Ein Ausfall der Push-Mirrors bleibt unbemerkt") shows the risk
class is known; it sits in the backlog at `priority:low` with no status label.
root-cause pattern: **Decision executed in the tool, documentation not carried along**
here in the inverse direction: the document was updated ahead of the tool, and the number
in the *other* document was not touched at all.
neckbeard mechanism: `WORKFLOW.md:136-138` (Knowledge Handling) is the governing rule:
"Contradictions are resolved or explicitly flagged — never left silently coexisting", with
the detection ritual at `WORKFLOW.md:126` (refinement item 4: "Wiki lint (content-level,
beyond `validate.py`): contradictions between pages, claims superseded by newer sources").
`AGENTS.md:50-52` adds "Never claim something works without evidence".
**Partial gap:** the rule exists, the detection is a human ritual on a weekly cadence, and
`scripts/validate.py` checks structure and link targets only — two numbers contradicting
each other across two files is invisible to it. `AGENTS.md:101-103` ("If a deterministic job
lacks a script, propose one") points the right way, but "is this claim still true" is not
deterministic in general. The tractable subset — a claim of the form "N repos are mirrored"
— is checkable, and this field test wrote such a check ad hoc.
@@ -0,0 +1,42 @@
# F-008: The five components have four naming schemes, and one display name maps to a repo that shares no name with it
category: structural-drift
confidence: high
evidence:
- Slugs verified against git.lab with `git ls-remote` (see `analysis/SCOPE.md` §3):
`threadnet-call`, `thread-net-git`, `threadnet-operating`, `ThreadNet-Web`,
`axion1337.chat-gitops`.
- `thread-net-git` breaks the `threadnet-*` pattern of its siblings;
`https://git.lab/axion1337.chat/threadnet-git.git` returns "project could not be found".
- `ThreadNet-Web` is the only CamelCase slug. `ThreadNet-Web` and `threadnet-web` return
byte-identical ref lists (same project via GitLab's case-insensitive path handling), and
the repo's own documents use both plus a lowercase registry path
`registry.git.lab/axion1337.chat/threadnet-web/desktop-build` (`hosts/overmind.md:54`).
`hosts/matrix.md:20` uses the Gitea spelling `sorb/ThreadNet-Web`.
- "ThreadNet Server Suite" = `axion1337.chat-gitops` rests on a single sentence,
`CLAUDE.md:6`. The slug contains no ThreadNet element; nothing else in the repo repeats
the equation. This session had to ask the human to confirm it (Phase-0 STOP, question 3).
- `vision/threadnet.md:9-11` lists the product line as "ThreadNet-Web …, threadnet-call
…, thread-net-git, threadnet-operating" — four names in three casings, and the fifth
component is absent from the vision that defines the line.
impact: Nothing in the repo lets a reader or an agent get from a display name to a
repository deterministically. This session could not, and the Phase-0 scope freeze existed
partly to resolve it. Every automation that iterates over "the ThreadNet repos" needs a
hand-maintained table, and the case-insensitive redirect hides the inconsistency until
something case-sensitive (a container path, a CI cache key, a `git clone` into a
case-sensitive filesystem) meets it.
root-cause pattern: **Rule declared repo-wide, applied to a subset** — the branding
decision in `shared/branding.md` fixes what the *product* is called on every surface, and
was carried through thoroughly there, but repository names were never part of that sweep.
neckbeard mechanism: **Gap in neckbeard**, with a near-miss worth noting. `schema.yaml`
enforces naming as a first-class rule for artifacts — `filename: "^\\d{4}-[a-z0-9-]+\\.md$"`
for ADRs and issues, `"^[a-z0-9-]+\\.md$"` for wiki pages — and `scripts/validate.py` reports
"filename does not match" plus "id does not match filename prefix". The framework therefore
already holds the position that names must be mechanically derivable. It applies that only
inside one repo; a multi-repo project has no equivalent, and neckbeard has no artifact type
that declares "these are the components and this is what they are called". Session 2 needs
one; today `analysis/SCOPE.md` §3 is the only such table that exists.
@@ -0,0 +1,57 @@
# F-009: Documentation attention and actual work mass point at different components
category: structural-drift
confidence: medium
evidence:
- Open issues per component (`analysis/data/gitlab_issues.json`):
`axion1337.chat-gitops` 35 · `management` 26 · `ThreadNet-Web` 9 · `threadnet-call` 1 ·
`thread-net-git` 0 · `threadnet-operating` 0.
- Commit volume over all refs (`analysis/data/git_activity.tsv`):
`axion1337.chat-gitops` 269 · `ThreadNet-Web` 52 · `threadnet-operating` 21 ·
`threadnet-call` 12 own · `thread-net-git` 11.
- Repository substance (`analysis/data/tree_*.txt`): `thread-net-git` holds **4 tracked
files** (`.gitignore`, `README.md`, `docker-compose.yml`, one file under `backup/`) and
one markdown document; last commit 2026-08-02, 7 days before the reference date.
`threadnet-operating` holds 27 files, 2 documents.
- Against that, `vision/threadnet.md:9-11` presents all four ThreadNet repos as equal
members of the product line, and `roadmap.md:50-62` gives the ThreadNet line six numbered
items, five of which concern `ThreadNet-Web` and none of which concern `thread-net-git`
or `threadnet-operating`.
- The component carrying half the open work, `axion1337.chat-gitops`, is named in the
vision document **not at all** and in `CLAUDE.md` once, parenthetically, as an equation
to a display name (`CLAUDE.md:6`).
- All 14 issues of the newly created M5 — Härtung milestone are in `axion1337.chat-gitops`.
impact: A reader forming a mental model from `vision/` and `roadmap.md` will weight five
components roughly equally and will not learn that one of them holds half the backlog while
two are effectively dormant. Session-start reading therefore mis-primes exactly the
prioritisation that the roadmap exists to steer. This is a mismatch, not a defect: dormancy
may be entirely intended — but the documents do not say so, and `README.md:68-70` requires
each point to describe "den tatsächlichen Zustand".
root-cause pattern: **Documents describe the intended shape, the tracker holds the actual
one, and nothing reconciles them.** Related to F-001 in mechanism: the tracker is where
reality accumulates, the documents are written once.
neckbeard mechanism: `AGENTS.md:79` plus `scripts/gen_status.py`: `STATUS.md` is a generated
overview of open issues, active designs and recent ADRs, explicitly "do not edit by hand",
and `WORKFLOW.md:128` puts reviewing it for "anything stale or surprising" on the refinement
agenda. With ADR-0002's in-repo issues, work mass is countable from the tree, so the
imbalance would be visible in a generated artifact rather than inferable only from an API.
**Gap in neckbeard:** `gen_status.py` covers one repo. This project is six, and neckbeard
has no cross-repo status concept — the same missing "components" artifact as in F-008.
confidence note: medium rather than high — the underlying counts are exact, but "attention
should follow work mass" is a judgement about intent, and dormant-by-design is a legitimate
answer the documents simply do not give.
post-analysis addendum (2026-08-10, session close): the human confirmed the dormancy is
**intentional and staged**: a base feature set first, then build out monitoring and
security — explicitly avoiding getting lost in polish ("sich nicht in Chromleisten
verrennen"). `threadnet-operating` rests deliberately. This resolves the intent question
and sharpens the finding rather than dissolving it: the strategy exists, but it lives in
the owner's head and now in this file — no repo document records it. Implication for
Session 2's components artifact (neckbeard gap 2): it needs a lifecycle field
(active / dormant, with the staging rationale) so that intent like this is recorded where
sessions read it.
@@ -0,0 +1,53 @@
# F-010: Hand-written "Stand" labels are older than the commits that touched the same file
category: doc-drift
confidence: medium
evidence:
- Label vs. last commit on `main` (`analysis/data/docs_inventory.tsv`, `git log -1`):
| file | "Stand" label | last commit |
|---|---|---|
| `CLAUDE.md:18` | 2026-08-01 | 2026-08-09 |
| `roadmap.md:3` | 2026-08-06 | 2026-08-09 |
| `hosts/overmind.md:14` | 2026-07-31 | 2026-08-09 |
- The labels are not merely old, they are contradicted inside their own file:
`hosts/overmind.md` carries the table label "**Stand** 2026-07-31" at line 14 and the
sentence "Stand 2026-08-09 **sieben**" at line 28.
- `CLAUDE.md` is labelled "Projektrealitäten (Stand 2026-08-01)" while containing a rule
section headed "Commit-Konventionen (seit 2026-08-07)" — six days newer than the label
above it.
- Scale of the surface: 40 documents, 813 extracted claim lines, of which 68 carry an
explicit date assertion (`analysis/data/claims.tsv`, trigger `date-claim`).
- The whole document set is young — every management doc is ≤ 8 days old
(`docs_inventory.tsv`, max `days_since_change` = 8) — so this is drift accumulating at
high speed, not neglect over time.
impact: The label is what a reader uses to decide whether to trust a section, and here it
systematically under-reports freshness, which trains readers to distrust current content
and, worse, gives no signal at all when a section really is stale. In `roadmap.md` the
combination is actively misleading: "Stand 2026-08-06" over numbers that were already wrong
on 2026-08-09 (F-001).
root-cause pattern: **Hand-maintained metadata about a file, kept inside the file.**
Git already knows the answer; the label is a second source of truth that must be updated by
hand and therefore is not.
neckbeard mechanism: Prevented by `AGENTS.md:79``STATUS.md` is "Generated overview …
do not edit by hand", produced by `scripts/gen_status.py` — combined with
`AGENTS.md:101-103`: "Deterministic jobs (status generation, validation, link checks) are
done by scripts, not by you. If a deterministic job lacks a script, propose one instead of
doing it by inference." A file's freshness is exactly such a deterministic job.
`docs/aar/2026-08-09-neckbeard-v1-creation.md` reinforces it from experience:
"Deterministic jobs belong in scripts, not inference — this rule paid for itself repeatedly",
and "Git is the changelog. No separate log file." (`WORKFLOW.md:140`) is the same principle
applied to history.
Note for Session 2: `schema.yaml` requires a `date` field on adr, design and aar artifacts
(`kind: date`), which is a *creation/decision* date and legitimately hand-set — that is not
the same thing as a freshness label and should not be conflated when migrating.
confidence note: medium — the dates are exact, but a "Stand" label may be intended as
"state of the described system as last verified", not "state of this text". Under that
reading the labels are defensible for `hosts/overmind.md`; they are not for
`roadmap.md`, whose own header says "Zahlen hier veralten, das Board nicht".
@@ -0,0 +1,44 @@
# F-011: "Project repos have their own CLAUDE.mds" holds for one of five components
category: claim-vs-reality
confidence: medium
evidence:
- `CLAUDE.md:5-7` — "Projekt-Repos haben eigene CLAUDE.mds für ihre Spezifika (z. B. die
ESS-/Flux-Details in „ThreadNet Server Suite" = `axion1337.chat-gitops`) — bei Widerspruch
gilt für Arbeitsweise und Prozess **diese** Datei."
- Present in the five component checkouts (`analysis/data/tree_*.txt`):
`axion1337.chat-gitops/CLAUDE.md` — yes. `threadnet-call`, `thread-net-git`,
`threadnet-operating`, `ThreadNet-Web` — none.
- The conflict-resolution rule the sentence sets up ("bei Widerspruch gilt … **diese**
Datei") therefore has nothing to resolve in four of five repos, and a session opened
directly in one of those four gets no pointer to the canonical conventions at all.
- The one that exists is consistent with its claim: `CLAUDE.md:230-233` says the Karpathy
block was taken verbatim from the gitops CLAUDE.md and must not be edited. Verified —
the block is byte-identical in both files; the management copy only appends its own
closing note after it. That claim holds.
impact: Four of five component repos have no session-start instructions. The conventions
that `CLAUDE.md:118` declares binding for "**alle** Repos der Gruppe" (commit style,
timestamp anonymisation, secrets handling) are unreachable from inside those repos — which
is a plausible contributing cause of F-002 and F-003, where exactly those four repos are
the ones the rules did not reach.
root-cause pattern: **Rule declared repo-wide, applied to a subset** — and here the
distribution mechanism for the rules is itself the thing that was only partly applied.
neckbeard mechanism: This is the exact problem ADR-0001
(`docs/adr/0001-agents-md-canonical.md`) decides. Its Context names it outright:
"Maintaining per-harness copies of the rules would guarantee drift", and its Decision makes
`AGENTS.md` the single rule file with `CLAUDE.md` reduced to a one-line pointer — the
neckbeard repo's own `CLAUDE.md` is exactly that one line ("Read AGENTS.md — the canonical
instruction file for this repository. All rules live there."). Adopting it converts the
present claim into a checkable fact: each repo carries a pointer, the rules exist once.
**Gap in neckbeard:** ADR-0001 solves one-repo-many-harnesses; it does not address
many-repos-one-ruleset. Nothing in the framework says how five component repos share the
governing `AGENTS.md` — vendoring a copy re-creates the drift ADR-0001 rejects, and a link
to another repo breaks the portability ADR-0003 protects. Session 2 has to answer this, and
it is the sharpest framework question this field test produced.
confidence note: medium — the sentence can be read as descriptive-in-general rather than as
a claim about all five repos, and it names only gitops as an example.
@@ -0,0 +1,46 @@
# F-012: Six commit references in the docs resolve nowhere, and nothing would have caught it
category: doc-drift
confidence: high
evidence:
- All SHA-shaped tokens in the 40 management documents were resolved against every ref of
all six repos and against the rewrite mapping (`analysis/scripts/inv_shas.py` ->
`analysis/data/sha_refs.tsv`): 22 resolve, **6 do not**.
- The six, with their nature established individually:
- `hosts/cfgmon.md:54` `dfe04c4a` and `verfahren/deploy-uebergabe.md:84` `dfe04c4`
a commit pushed directly to Gitea and overwritten by the mirror. Unresolvable **by
design**; the surrounding text documents the loss ("vom Mirror überschrieben").
- `verfahren/deploy-uebergabe.md:85` and
`verfahren/aar/2026-08-01-cve-pipeline-gitops47.md:13` `2b715ca` — same class, the
second documented overwrite ("2b715ca→0bd77e2").
- `hosts/overmind.md:23` `7645a2b` — a commit in the `vendor/windows` repo, which the
human placed out of scope; not resolvable here, not a defect.
- `hosts/overmind.md:87` `5bc25447` — not a commit at all but a **container image tag**
("Tags `5bc25447` + `stable`"); a false positive of the extractor, recorded as such.
- So of six, four are intentional records of lost commits and two are out-of-scope or
mis-typed as commits. **No accidental orphan was found** — and that is the finding worth
keeping: the mapping list did its job (F-015).
- What no mechanism provides: none of this was checkable before this session wrote a
script for it. `analysis/data/links.tsv` covers markdown link targets and reports 2
broken links in 11,390 (both malformed upstream Element changelog entries), but a SHA in
prose is not a link and was never checked.
impact: Low today, structurally high. The repo cites commits as evidence throughout — it is
the house style, and a good one (`README.md:68-70`, "woher stammt die Aussage?"). That style
depends on citations staying resolvable across exactly the kind of history operation this
project performed on 2026-08-07, and the only thing that kept it working was a document
someone remembered to write by hand.
root-cause pattern: **Evidence-by-citation without a checker.** The convention is sound and
followed; its integrity rests on human diligence at rewrite time.
neckbeard mechanism: **Gap in neckbeard.** `scripts/validate.py` checks link integrity in
two places — `check_links` for frontmatter link fields and `check_body_links` for inline
markdown links, erroring with "inline link target missing" — and `schema.yaml:19-20`
extends body-link checking to root-level prose via `link_only: ["*.md"]`. Commit SHAs cited
in prose are outside both. Given `AGENTS.md:101-103` ("Deterministic jobs … are done by
scripts … If a deterministic job lacks a script, propose one"), resolving a cited SHA is a
textbook deterministic job — `git cat-file -e` — and its absence is a real hole for any
project whose docs cite commits. `analysis/scripts/inv_shas.py` is a working reference
implementation.
@@ -0,0 +1,49 @@
# F-013: The mirror topology works exactly as documented — all six repos in sync
category: works-well
confidence: high
evidence:
- `main` heads compared between canonical git.lab and the Gitea mirror, both read live
with `git ls-remote`:
| repo | git.lab | rohana/Gitea | |
|---|---|---|---|
| management | `2f012a6cd2` | `2f012a6cd2` | in sync |
| axion1337.chat-gitops | `151ef3c8d0` | `151ef3c8d0` | in sync |
| ThreadNet-Web | `d3bd5b20c2` | `d3bd5b20c2` | in sync |
| threadnet-call | `d13cce7337` | `d13cce7337` | in sync |
| thread-net-git | `2f4a15ce85` | `2f4a15ce85` | in sync |
| threadnet-operating | `32f89afebf` | `32f89afebf` | in sync |
- The reasoning behind the topology is written down and is genuinely good:
`CLAUDE.md:26-33` explains *why* two locations exist rather than only asserting it — the
Hetzner cluster must rebuild when the lab is off — and pre-empts the tempting cleanup with
a named warning: "⚠️ **Die Flux-Quelle nicht „geradeziehen"** auf git.lab: Das sähe
aufgeräumter aus und würde die Verfügbarkeit der Produktion an das Lab koppeln".
- The failure mode is documented with its rescue procedure, not just prohibited:
`README.md:16-20` and `CLAUDE.md:45-48` — pull the `.patch` from Gitea, `git am` to
preserve authorship, push via git.lab.
- The one standing exception is explicit, justified, bounded, and has a live mechanism:
the TURN rotation CronJob (`CLAUDE.md:53-60`), canonised daily by the scheduled CI job
`canonize_rotation`, present at `.gitlab-ci.yml:51` in the gitops repo. The alarm design
is stated deliberately — "diese rote Pipeline **ist** der Alarm, einen zusätzlichen
Termin gibt es bewusst nicht."
impact: This is the part of the current approach that must survive migration untouched.
The value is not the sync itself but the form: a decision with its reason, its
counter-argument, its rescue path, and its one exception each written where the next
session will look.
root-cause pattern: **A decision recorded with its reasoning outlives the person who made
it.** Every claim in this cluster held up under measurement; the ones that failed elsewhere
in this report are the ones recorded as bare assertions.
neckbeard mechanism: This is what `docs/adr/` is for. `AGENTS.md:81` — "Architecture
Decision Records — binding; never edited, only superseded" — and `AGENTS.md:89-90`, "Before
proposing options (Gate 2), read the relevant ADRs and AARs first — past decisions and
learnings are input, not trivia." The existing `decisions/0001-gitlab-kanonisch-push-mirror.md`
already is an ADR in all but schema; migrating it needs frontmatter per `schema.yaml:39-52`
(`type`, `id`, `status`, `date`) and nothing else. The "don't straighten this out" warning
maps to the ADR Consequences section, and `WORKFLOW.md:56` ("Options & trade-offs … pro/contra
each, chosen option, and why") is where the two-host reasoning belongs.
@@ -0,0 +1,49 @@
# F-014: The issue discipline the docs describe is actually lived — measurably
category: works-well
confidence: high
evidence: all measured against `analysis/data/gitlab_issues.json` (111 issues, 71 open).
- **Milestone duty** (`CLAUDE.md:98-103`, "Jedes Issue gehört zu genau einem Meilenstein"):
**0 of 71** open issues lack a milestone. Across all four active projects, in every one.
- **Exactly one status label** (`CLAUDE.md:76-78`, `README.md:60`): **0** issues carry more
than one `status:` label.
- **WIP limit 2** (`CLAUDE.md:77`, "**WIP-Limit 2** — auch sessionübergreifend zu
verteidigen"): `status:doing` = **0**. The limit is not merely respected, there is no
work parked as in-progress at all.
- **No priority in titles** (`CLAUDE.md:90-97`, cleaned up 2026-08-06 after 34 migrated
issues carried prefixes and two contradicted their own label): **0** open issues carry a
`[HIGH]`/`[MEDIUM]`/`[LOW]` prefix. Priority lives only in `priority:*` labels
(48 medium, 37 low, 12 high, 4 critical).
- **Legacy IDs preserved and never reused** (`README.md:64-66`, "IDs … werden **nie
wiederverwendet**; sie leben in Issue-Titeln weiter"): **23** issues carry a leading
legacy ID (`^ID:`), across **23 distinct** IDs — no ID identifies two issues. Three
further titles mention an ID belonging to another issue (`LABNET-02` in management#15,
#26 and #27), which is the scheme used as intended: per `CLAUDE.md:92-93` the IDs
"benennen den Gegenstand", so referring to one from another issue is a cross-reference,
not a collision.
- **Closed, not deleted** (`README.md:72-74`): 40 closed issues are present and readable
alongside the 71 open ones.
- Link hygiene in the management repo is likewise clean: of 161 links in its documents,
**0 broken** (`analysis/data/links.tsv`); the two broken links in the whole corpus are
malformed upstream Element changelog entries in `ThreadNet-Web`.
impact: The rule set is not aspirational. Where a rule is mechanically checkable and the
tracker enforces it — a milestone field, a label — compliance is total. That is the
strongest single argument for the migration: this project already works the way neckbeard
assumes, and the failures found elsewhere in this report are concentrated exactly where no
mechanism enforces anything (prose, branches, commit metadata, cross-document consistency).
root-cause pattern: **Where the tool can hold the rule, the rule holds.** The inverse of the
pattern behind F-001, F-004, F-005 and F-010.
neckbeard mechanism: Preserved and extended by ADR-0002
(`docs/adr/0002-in-repo-issues.md`) plus `schema.yaml:76-84`, which makes `status` an enum
(`[open, in-progress, done, rejected]`) that `scripts/validate.py` enforces via
`check_fields` — the file-level equivalent of "exactly one status label", but checkable in
CI rather than by convention. Note the direction of loss to plan for: neckbeard's issue
schema has **no milestone and no priority field**, and
`docs/aar/2026-08-09-neckbeard-v1-creation.md` lists "priority field on issues (YAGNI,
revisit via refinement)" among the ideas deliberately not adopted. This project uses both,
on 100% and 101 of 111 issues respectively. Recorded here as field-test evidence, not as a
proposal — see REPORT.md's gap list.
@@ -0,0 +1,43 @@
# F-015: The rewrite mapping list does what it promises — 251 of 251 rows verified
category: works-well
confidence: high
evidence: `analysis/scripts/inv_shas.py` -> `analysis/data/sha_refs.tsv`, every row of
`shared/commit-zuordnung-2026-08-07.md` re-checked against the actual repositories.
- Row count matches the claim exactly: 117 (gitops) + 78 (management) + 47 (ThreadNet-Web)
+ 9 (threadnet-call) = **251**, and `CLAUDE.md:136` says "251 Commits neue SHAs".
- Of the 251 pairs: **209 `ok`** (new SHA resolves, old one gone as expected) and
**42 `ok-both-present`** (new resolves, old still reachable — all 42 explained by the
stale branches in F-006, not by a mapping error).
- **0 inverted** (new missing while old resolves) and **0 unresolvable** (neither present).
There is no row in the table that does not describe a real commit pair.
- Consequently no accidental orphan reference exists in the docs: all six unresolvable SHA
citations have individual, benign explanations (F-012).
- The document is honest about its own boundaries in a way that measurably helped:
`shared/commit-zuordnung-2026-08-07.md:39-44` states what is *not* in the table
(pre-boundary commits, 147 in gitops, 3 in ThreadNet-Web) — which is what let this
session classify unresolved SHAs correctly instead of reporting them as breakage.
- It records the operational trap it hit rather than quietly fixing it
(`:24-37`): the tag force-push restarted three release pipelines, and the reason nothing
was overwritten is named as luck, not design — "**Das war Glück, keine Planung**" — with
the follow-up tracked as ThreadNet-Web#14.
impact: A destructive, irreversible operation was made auditable after the fact by one
hand-written document, and the audit passes three days later. The unusual quality is the
self-criticism: the near-miss is written down as a near-miss, which is exactly the material
a future session needs and exactly what usually gets smoothed over.
root-cause pattern: **A risky operation paired with a written reconstruction of what it
did.** Note the limit, recorded as F-004's sibling: the `backup-vor-rewrite` branches the
document names as its verification basis (`:14-17`) exist on **no** remote today, so the
mapping can no longer be re-derived — only, as here, spot-checked against surviving refs.
neckbeard mechanism: `docs/aar/` is the home for this document type — `AGENTS.md:83`,
"Standalone After Action Reviews (incidents, major deviations only)", with the required
frontmatter at `schema.yaml:67-74` (`type`, `status` from `[open, harvested]`, `date`) and
the content shape at `WORKFLOW.md:84-89` (planned / actual / why the difference /
learnings, then harvest into the wiki). `WORKFLOW.md:105` makes it mandatory rather than
optional: "Incidents and major misdiagnoses get a standalone AAR in `docs/aar/`". The
`status: harvested` transition is the piece this project lacks — it writes AARs but has no
mechanism that marks a learning as absorbed.
@@ -0,0 +1,49 @@
# F-016: The repo names its own unresolved problems instead of presenting a clean face
category: works-well
confidence: high
evidence:
- Known problems written down *and* filed as issues, verified present in
`analysis/data/gitlab_issues.json`:
- `hosts/overmind.md:33-35` — "⚠️ `gameserver` … hat **keinen** Mirror … dort liegt auf
Gitea ein gleichnamiges Repo mit anderem Stand" -> management#32, open. **Verified
true by measurement**: git.lab `d5c6ccb2e9` vs Gitea `48441a500f`, diverged (F-007).
- `CLAUDE.md:63` — the gitops `wiki` branch is "ein überholter Mai-Abzug" -> management#19,
open. **Verified**: head `0ff598e`, 2026-05-14 (F-006).
- Mirror failure going unnoticed -> management#28 "MIRROR-01", open.
- Restore never rehearsed -> management#30, "Der Restore ist nie geprobt — Sicherungen
sind bisher eine Vermutung".
- `CLAUDE.md:143-147` — the timestamp rule "**schützt nur die Git-Historie**", with push
times, issue timestamps, pipelines and packages named as remaining exposure. Incomplete
(F-002) but volunteered.
- `CLAUDE.md:94-97` explains a rule by the damage its absence did, with numbers: 34 migrated
issues carried title prefixes, "davon **zwei mit einer anderen Aussage als ihr Label**",
and states the principle — "Zwei Wahrheiten über dieselbe Sache sind schlimmer als eine
unvollständige."
- `CLAUDE.md:149-158` ("Redlichkeit & gelebte Lehren") requires verified claims to be
separated from suspicion, states "Korrelation ≠ Kausalität — ein plausibler Verdacht ist
kein Befund", and closes with "Fehlschläge und übersprungene Schritte werden benannt,
nicht geglättet; „fertig" heißt verifiziert."
- `verfahren/retro/2026-08-09.md:70-71` records CI that was green while doing nothing
(`build_embedded` "lud **nie** ein Artefakt hoch") and a published npm package of 12.5 KB
instead of 12.8 MB — failures found and written down rather than quietly fixed.
impact: This is why the present analysis was possible at all. Most of the drift in this
report was found by taking the repo's own statements seriously and checking them; that only
works because the statements are specific, dated and falsifiable. A repo that wrote
"Mirrors are configured" instead of "seven repos, these six product ones plus management"
would have yielded no findings and no confidence either way.
root-cause pattern: **Specific, falsifiable claims are a feature.** Every finding in this
report is downstream of a claim precise enough to be wrong.
neckbeard mechanism: This is `AGENTS.md:50-55` almost verbatim — "Never claim something
works without evidence: a test run, command output, a rendered result. 'Should work' is not
a status" and "Uncertainty is reported, never swallowed. Flag your shakiest calls." It
recurs at `WORKFLOW.md:68` (Gate 3, "Shakiest calls: name the decisions you are least
confident about") and `WORKFLOW.md:113-114` (every session ends by answering which choices
it is least confident about). `WORKFLOW.md:137-139` completes it: "If the wiki has no
confident answer, say so. Never file a low-confidence synthesis back as knowledge."
The habit already exists here; neckbeard gives it fixed places to live rather than relying
on the author's temperament.
@@ -0,0 +1,55 @@
# F-017: Prose still asserts work-item states the tracker has already resolved
category: doc-drift
confidence: high
Found by the systematic claim-verification pass (`analysis/scripts/verify_claims.py`
-> `analysis/data/claims_verification.tsv`), which gave all 813 extracted claim rows a
mechanical disposition; the 28 flagged rows were adjudicated by hand (REPORT.md appendix).
Two survived as genuine drift; a third observation rides along.
evidence:
1. **A closed issue described as open.** `shared/lab-netzwerk.md:118-120`: "Zwei Punkte
… bleiben offen: [#13] … und [#15]". management#13 (LABNET-03) is **closed**,
`closed_at` 2026-08-02T13:43Z (`analysis/data/gitlab_issues.json`); #15 is indeed open.
The doc's last commit is dated 2026-08-02 12:00 UTC — but that timestamp is the
*anonymised* one (`CLAUDE.md:122-128`), so whether the sentence was already false when
written or became false minutes later is **undecidable from the repository**: the
anonymisation rule destroys exactly the evidence a freshness analysis needs. What is
decidable: seven days later it still says "offen".
2. **An open decision whose premise was already executed — in the same file.**
`hosts/cfgmon.md:119-124` ("### Entscheidungsabhängig") makes removing the
`thread-net-git` runner dependent on "ob das gitops-Repo seinen leichten
`deploy-on-push.yml` … behält". `hosts/cfgmon.md:61` records that gitops removed
`.gitea/workflows/` entirely (commit `5e46a24`; verified: the commit deletes exactly
`deploy-on-push.yml` + `milestone-release.yml`, and `tree_axion1337.chat-gitops.txt`
contains no `.gitea/` today), and `hosts/cfgmon.md:70-75` records the runner removal
as done. The "pending" decision block outlived its own answer by 60 lines.
3. **Bare issue references default to the wrong project.** `hosts/cfgmon.md:63` "siehe
#33" and `verfahren/aar/2026-08-09-refinement-und-betrieb.md:60` "#60" carry no
project. Under `README.md:47` ("Alle offenen Punkte sind Issues **in diesem
Projekt**") a reader resolves them as management#33/#60**neither exists**. Both
resolve by content to gitops issues (gitops#33 "Gitea Actions Workflows existieren,
laufen aber nie…" matches the dead-workflow context; gitops#60 "Blueprint
matrix-recovery-flow … Passwort-…" matches the password-recovery diagnosis). Content
correct, address ambiguous.
impact: Small per instance, but these are precisely the rows a systematic sweep exists to
find: each is a sentence a reader would act on (reopen a closed question, wait on a dead
decision, search the wrong tracker). Instance 1 also shows a structural side effect worth
naming for Session 2: **the timestamp anonymisation makes "was this claim true when
written" an unanswerable question** for every doc-vs-tracker discrepancy on the same day.
root-cause pattern: **Decision executed in the tool, documentation not carried along**
(pattern A) — here at sentence granularity rather than document granularity.
neckbeard mechanism: Partly covered, partly gap. Under ADR-0002
(`docs/adr/0002-in-repo-issues.md`) an issue reference is a relative link to
`docs/issues/NNNN-slug.md` — instance 3's ambiguity cannot exist, because
`scripts/validate.py` `check_body_links` fails on a target that is not there. For
instances 12 the framework has the *rule* (`WORKFLOW.md:136-138`, contradictions never
left silently coexisting) and the *ritual* (`WORKFLOW.md:126`, wiki lint for "claims
superseded by newer sources"), but no deterministic check compares a prose assertion
("open", "pending") against the frontmatter status of the artifact it points at —
**that specific check is a neckbeard gap**, and `verify_claims.py`'s expectation-word
logic is a working sketch of it.
+164
View File
@@ -0,0 +1,164 @@
"""Shared helpers for the neckbeard field-test inventory scripts.
Determinism rules obeyed by every consumer of this module:
* No wall-clock time enters any output file. Where an output needs a
"days since" figure, it is measured against REFERENCE_DATE, which is
the committer date of the management repo's HEAD -- a property of the
tree under analysis, not of the moment the script runs.
* Every collection written out is sorted by an explicit key.
* Paths in outputs are repo-relative, never absolute.
"""
import os
import re
import subprocess
from datetime import date
from pathlib import Path
# Repo layout. WORKSPACE holds the management clone plus a components/
# directory; override with NB_WORKSPACE when the checkout lives elsewhere.
MGMT_REPO = Path(__file__).resolve().parents[2]
WORKSPACE = Path(os.environ.get("NB_WORKSPACE", MGMT_REPO.parent))
COMPONENTS_DIR = WORKSPACE / "components"
DATA_DIR = MGMT_REPO / "analysis" / "data"
GITLAB_HOST = "https://git.lab"
GROUP = "axion1337.chat"
# Frozen in analysis/SCOPE.md, confirmed by the human at the Phase-0 STOP.
COMPONENTS = [
("threadnet-call", "ThreadNet Call"),
("thread-net-git", "ThreadNet Git"),
("threadnet-operating", "ThreadNet Operating"),
("axion1337.chat-gitops", "ThreadNet Server Suite"),
("ThreadNet-Web", "ThreadNet Web"),
]
# Named out of scope as analysis targets by the human. References into
# them are still recorded, tagged points-outside-scope.
OUT_OF_SCOPE_PROJECTS = ["game-operating", "gameserver"]
OUT_OF_SCOPE_SUBGROUPS = ["vendor", "Archiv"]
# Tracked-but-vendored paths, excluded from trees and scans. Deliberately
# narrow: an earlier broader pattern also excluded build/ and dist/, which
# silently dropped 7 tracked files -- ThreadNet-Web keeps its desktop icons
# under apps/desktop/build/, tracked source assets, not build output. That
# made this analysis flag documented icon paths as missing.
VENDORED = re.compile(r"(^|/)(node_modules|\.yarn)/")
DOC_SUFFIXES = {".md", ".rst"}
# The management repo is measured at its default branch, never at the
# analysis branch: otherwise this analysis observes its own commits and
# its own analysis/ files and reports them as project reality.
BASELINE_REF = {"management": "main"}
ANALYSIS_DIR = "analysis/"
def repos():
"""(name, path) for the management repo and every in-scope component."""
out = [("management", MGMT_REPO)]
out += [(slug, COMPONENTS_DIR / slug) for slug, _ in COMPONENTS]
return out
def ref_of(name):
return BASELINE_REF.get(name, "HEAD")
def assert_untouched():
"""Fail loudly if this session modified anything outside analysis/.
The mandate forbids changing any existing file. That is checked here
mechanically rather than trusted, on every run.
"""
ref = ref_of("management")
diff = git(MGMT_REPO, "diff", "--name-only", ref, "--", ".",
f":(exclude){ANALYSIS_DIR}")
untracked = git(MGMT_REPO, "ls-files", "--others", "--exclude-standard",
"--", ".", f":(exclude){ANALYSIS_DIR}")
offending = [p for p in (diff + untracked).split("\n") if p.strip()]
if offending:
raise SystemExit(
"ABORT: this session changed files outside analysis/, which the "
"field-test mandate forbids:\n " + "\n ".join(offending))
def git(repo, *args, env_tz=None):
"""Run git in repo, return stdout as text. Raises on non-zero exit.
env_tz pins the timezone git renders dates in. Date rules in this
project are stated in UTC; rendering them in the machine's local zone
silently misclassifies every commit.
"""
env = None
if env_tz:
env = dict(os.environ, TZ=env_tz)
res = subprocess.run(
["git", "-C", str(repo), *args],
capture_output=True, text=True, errors="replace", env=env,
)
if res.returncode != 0:
raise RuntimeError(f"git {' '.join(args)} in {repo}: {res.stderr.strip()}")
return res.stdout
def tracked_files(name, repo, skip_vendored=True):
"""Sorted repo-relative paths tracked at the repo's baseline ref.
Reads the ref, not the index, so the analysis branch's own files stay
out of the inventory.
"""
files = [f for f in
git(repo, "ls-tree", "-r", "-z", "--name-only", ref_of(name)).split("\0")
if f]
files = [f for f in files if not f.startswith(ANALYSIS_DIR)]
if skip_vendored:
files = [f for f in files if not VENDORED.search(f)]
return sorted(files)
def last_commit(name, repo, path):
"""(iso_date, author_name, short_sha) of the newest commit touching path."""
out = git(repo, "log", "-1", "--format=%ad\t%an\t%h", "--date=short",
ref_of(name), "--", path)
if not out.strip():
return ("", "", "")
return tuple(out.strip().split("\t"))
def _reference_date():
out = git(MGMT_REPO, "log", "-1", "--format=%cd", "--date=short",
ref_of("management"))
y, m, d = (int(x) for x in out.strip().split("-"))
return date(y, m, d)
REFERENCE_DATE = _reference_date()
def days_since(iso_date):
"""Whole days from iso_date to REFERENCE_DATE; '' when the date is empty."""
if not iso_date:
return ""
y, m, d = (int(x) for x in iso_date.split("-"))
return (REFERENCE_DATE - date(y, m, d)).days
def cell(text):
"""Make a value safe for a TSV cell: no tabs, no newlines, trimmed."""
return str(text).replace("\t", " ").replace("\r", " ").replace("\n", " ").strip()
def write_tsv(name, header, rows):
"""Write sorted rows to analysis/data/<name>, tab separated."""
DATA_DIR.mkdir(parents=True, exist_ok=True)
path = DATA_DIR / name
with path.open("w", encoding="utf-8") as fh:
fh.write("\t".join(header) + "\n")
for row in rows:
fh.write("\t".join(cell(v) for v in row) + "\n")
print(f" {name}: {len(rows)} rows")
return path
+99
View File
@@ -0,0 +1,99 @@
"""Export group issues from git.lab to analysis/data/gitlab_issues.json.
Metadata only -- titles, labels, dates, state -- never descriptions or
comment bodies. The token is read from the path the management repo's
CLAUDE.md sanctions (~/.config/gitlab-lab/token) and is never printed,
logged or written anywhere.
All issues of the group are exported, open and closed alike: the group is
small enough that a full export beats an arbitrary "recently closed"
cutoff, and a full export is trivially reproducible. Issues of projects
the human placed out of scope are exported too and tagged
in_scope=false -- they are evidence about where work lives.
Skipped without failing the run when the token file is missing or git.lab
is unreachable; run_all.sh then proceeds without the ticket dimension.
"""
import json
import sys
import urllib.error
import urllib.request
from pathlib import Path
from common import (
COMPONENTS, DATA_DIR, GITLAB_HOST, GROUP, OUT_OF_SCOPE_PROJECTS,
)
TOKEN_FILE = Path.home() / ".config" / "gitlab-lab" / "token"
IN_SCOPE = {slug for slug, _ in COMPONENTS} | {"management"}
# Exactly the fields the analysis needs. Anything else -- above all
# `description` -- is dropped before it reaches disk.
FIELDS = ["id", "iid", "project_id", "title", "state", "labels",
"created_at", "updated_at", "closed_at", "due_date"]
def api(token, path):
"""Yield every page of a GitLab list endpoint."""
url = f"{GITLAB_HOST}/api/v4/{path}"
while url:
req = urllib.request.Request(url, headers={"PRIVATE-TOKEN": token})
with urllib.request.urlopen(req, timeout=60) as resp:
yield from json.load(resp)
url = None
for link in resp.headers.get("Link", "").split(","):
if 'rel="next"' in link:
url = link.split(";")[0].strip().strip("<>")
def slim(issue, projects):
out = {k: issue.get(k) for k in FIELDS}
out["labels"] = sorted(out["labels"] or [])
out["project"] = projects.get(issue["project_id"], str(issue["project_id"]))
out["in_scope"] = out["project"] in IN_SCOPE
milestone = issue.get("milestone")
out["milestone"] = milestone["title"] if milestone else None
assignee = issue.get("assignee")
out["assignee"] = assignee["username"] if assignee else None
return out
def main():
if not TOKEN_FILE.exists():
print(f" gitlab_issues.json: SKIPPED, no token at {TOKEN_FILE}")
return 0
token = TOKEN_FILE.read_text().strip()
try:
projects = {
p["id"]: p["path"]
for p in api(token, f"groups/{GROUP}/projects?per_page=100&archived=false")
}
issues = list(api(token, f"groups/{GROUP}/issues?per_page=100&state=all&scope=all"))
except (urllib.error.URLError, TimeoutError) as exc:
print(f" gitlab_issues.json: SKIPPED, git.lab unreachable ({exc.reason})")
return 0
payload = {
"source": f"{GITLAB_HOST}/api/v4/groups/{GROUP}/issues?state=all",
"note": "metadata only; descriptions and comments deliberately not exported",
"projects": {
path: {"id": pid, "in_scope": path in IN_SCOPE,
"declared_out_of_scope": path in OUT_OF_SCOPE_PROJECTS}
for pid, path in sorted(projects.items(), key=lambda kv: kv[1])
},
"issues": sorted((slim(i, projects) for i in issues), key=lambda i: i["id"]),
}
out = DATA_DIR / "gitlab_issues.json"
DATA_DIR.mkdir(parents=True, exist_ok=True)
out.write_text(json.dumps(payload, indent=2, ensure_ascii=False,
sort_keys=True) + "\n", encoding="utf-8")
print(f" gitlab_issues.json: {len(payload['issues'])} issues, "
f"{len(projects)} projects")
return 0
if __name__ == "__main__":
sys.exit(main())
+83
View File
@@ -0,0 +1,83 @@
"""Extract checkable claims from the management repo's docs -> claims.tsv.
Phase 1 only *extracts*; nothing here judges whether a claim is true.
Verification happens in Phase 2.
A script cannot recognise a claim semantically, so extraction is trigger
based: a doc line is emitted when it matches at least one pattern that
marks it as asserting something checkable about the world (a component,
a count, a status, a version, a path, a date, the mirror topology, an
issue). Recall is favoured over precision -- a false positive costs a
Phase-2 glance, a false negative loses evidence.
Only management-repo docs are scanned: the mandate scopes claims to the
management repo's statements about its components.
"""
import re
from common import DOC_SUFFIXES, MGMT_REPO, cell, days_since, last_commit, \
tracked_files, write_tsv
COMPONENT_WORDS = (
r"ThreadNet[- ](?:Web|Call|Git|Operating|Server Suite)|threadnet-call|"
r"thread-net-git|threadnet-operating|threadnet-web|axion1337\.chat-gitops|"
r"game-operating|gameserver|management"
)
TRIGGERS = [
("component-ref", re.compile(COMPONENT_WORDS, re.I)),
("count", re.compile(
r"\b(ein|zwei|drei|vier|fünf|sechs|sieben|acht|neun|zehn|\d+)\s+"
r"(Repos?|Produkt-Repos?|Projekte?|Issues?|Commits?|Pipelines?|Themes?|"
r"Hosts?|Mirrors?)\b", re.I)),
("status", re.compile(
r"\b(erledigt|offen|live|aktiv|geschlossen|leer|umgezogen|entfallen|"
r"abgelöst|veraltet|überholt|scharf|grün|rot|tabu|kanonisch|"
r"zurückgestellt|verifiziert|bereinigt)\b", re.I)),
("version", re.compile(r"\bv?\d+\.\d+\.\d+\b|\b\d+\.\d+\.\d+-[\w.]+\b")),
("path-claim", re.compile(r"`[^`]*(?:/[^`]*|\.(?:md|ya?ml|json|py|ts|toml|crt))`")),
("date-claim", re.compile(r"\b(seit|Stand|bis|am|ab)\s+\d{4}-\d{2}-\d{2}\b", re.I)),
("mirror-topology", re.compile(
r"\b(Mirror|Spiegel|gespiegelt|Gitea|rohana|Push-Mirror|kanonisch|Flux-Source)\b",
re.I)),
("issue-ref", re.compile(r"(?:#\d+\b|/-/issues/\d+|\b[A-Z]{3,8}-\d{2}\b)")),
]
FENCE_RE = re.compile(r"^\s*(```|~~~)")
def main():
rows = []
docs = [f for f in tracked_files("management", MGMT_REPO)
if any(f.endswith(s) for s in DOC_SUFFIXES)]
for src in sorted(docs):
iso, _, _ = last_commit("management", MGMT_REPO, src)
text = (MGMT_REPO / src).read_text(encoding="utf-8")
in_fence = False
for lineno, line in enumerate(text.splitlines(), start=1):
if FENCE_RE.match(line):
in_fence = not in_fence
continue
stripped = line.strip()
if len(stripped) < 12:
continue
hits = [name for name, rx in TRIGGERS if rx.search(stripped)]
if not hits:
continue
rows.append([
src, lineno, ";".join(hits), "yes" if in_fence else "no",
iso, days_since(iso), cell(stripped)[:400],
])
rows.sort(key=lambda r: (r[0], r[1]))
write_tsv(
"claims.tsv",
["path", "line", "triggers", "in_code_block", "doc_last_commit_date",
"doc_days_since_change", "claim_text"],
rows,
)
if __name__ == "__main__":
main()
+146
View File
@@ -0,0 +1,146 @@
"""Link inventory across all analysed repos -> analysis/data/links.tsv.
Statuses are the three the mandate fixes:
ok target verified to exist
broken target verified to be absent
points-outside-scope target lies outside the analysed set
A fourth column, `kind`, carries the nuance the status alone cannot:
whether the target was a relative file, a git.lab issue, a repo URL, an
anchor, or an external URL.
Issue URLs resolve offline against gitlab_issues.json when that file
exists, so a rerun needs no network. Without it they are reported as
kind=issue-url, status=points-outside-scope, note=unresolved-no-issue-data.
"""
import json
import re
from urllib.parse import unquote, urlsplit
from common import (
COMPONENTS, DATA_DIR, DOC_SUFFIXES, GROUP, OUT_OF_SCOPE_PROJECTS,
OUT_OF_SCOPE_SUBGROUPS, repos, tracked_files, write_tsv,
)
# Inline markdown links, minus image embeds; reference definitions too.
LINK_RE = re.compile(r"(?<!\!)\[[^\]]*\]\(\s*<?([^)\s>]+)[^)]*\)")
# A reference definition needs a target that actually looks like one.
# Without that guard, log lines such as "[ERROR]: Task failed: ..." in
# imported wiki dumps parse as links to a file named "Task".
REFDEF_RE = re.compile(r"^\s{0,3}\[[^\]]+\]:\s*<?([^\s>]*[/.:#][^\s>]*)")
IN_SCOPE_REPOS = {slug for slug, _ in COMPONENTS} | {"management"}
ISSUE_URL_RE = re.compile(r"^/([^/]+(?:/[^/]+)*?)/-/issues/(\d+)")
def load_issue_index():
"""(project, iid) pairs known to exist, from a previous API export."""
path = DATA_DIR / "gitlab_issues.json"
if not path.exists():
return None
data = json.loads(path.read_text(encoding="utf-8"))
return {(i["project"], i["iid"]) for i in data["issues"]}
def classify_url(target, issue_index):
"""-> (kind, status, note) for an absolute URL."""
parts = urlsplit(target)
host = parts.netloc.lower()
if host != "git.lab":
return ("external-url", "points-outside-scope", f"host={host}")
m = ISSUE_URL_RE.match(parts.path)
if m:
ns, iid = m.group(1), int(m.group(2))
group, _, project = ns.rpartition("/")
if group != GROUP or project not in IN_SCOPE_REPOS:
return ("issue-url", "points-outside-scope", f"project={ns}")
if issue_index is None:
return ("issue-url", "points-outside-scope", "unresolved-no-issue-data")
if (project, iid) in issue_index:
return ("issue-url", "ok", f"{project}#{iid}")
return ("issue-url", "broken", f"{project}#{iid} not in group export")
segs = [s for s in parts.path.split("/") if s]
if segs and segs[0] == GROUP and len(segs) >= 2:
project = segs[1]
if project in OUT_OF_SCOPE_PROJECTS or project in OUT_OF_SCOPE_SUBGROUPS:
return ("repo-url", "points-outside-scope", f"declared out of scope: {project}")
if project in IN_SCOPE_REPOS:
return ("repo-url", "ok", f"in-scope repo {project}")
return ("repo-url", "points-outside-scope", f"path={parts.path or '/'}")
def classify_relative(repo_name, src, target, tracked):
"""-> (kind, status, note) for a repo-relative link."""
path = unquote(target.split("#")[0].split("?")[0])
if not path:
return ("anchor", "ok", "same-document anchor")
base = src.rsplit("/", 1)[0] if "/" in src else ""
joined = f"{base}/{path}" if base and not path.startswith("/") else path.lstrip("/")
resolved, stack = [], joined.split("/")
for seg in stack:
if seg in ("", "."):
continue
if seg == "..":
if resolved:
resolved.pop()
else:
return ("relative-file", "points-outside-scope",
"traverses above the repo root")
else:
resolved.append(seg)
cand = "/".join(resolved)
if cand in tracked:
return ("relative-file", "ok", cand)
# Directory links are legitimate targets in this doc set.
if any(t.startswith(cand + "/") for t in tracked):
return ("relative-file", "ok", cand + "/ (directory)")
# Extensionless doc links ("[x](playwright#anchor)") are common in
# imported upstream docs and resolve in the renderers that serve them.
for suffix in sorted(DOC_SUFFIXES):
if cand + suffix in tracked:
return ("relative-file", "ok", f"{cand}{suffix} (extension implied)")
return ("relative-file", "broken", f"no tracked file at {cand}")
def main():
issue_index = load_issue_index()
rows = []
for name, repo in repos():
tracked = set(tracked_files(name, repo))
docs = [f for f in tracked if any(f.endswith(s) for s in DOC_SUFFIXES)]
for src in docs:
try:
text = (repo / src).read_text(encoding="utf-8")
except (OSError, UnicodeDecodeError):
continue
for lineno, line in enumerate(text.splitlines(), start=1):
targets = LINK_RE.findall(line)
ref = REFDEF_RE.match(line)
if ref:
targets = targets + [ref.group(1)]
for target in targets:
if target.startswith(("mailto:", "tel:")):
kind, status, note = ("mailto", "points-outside-scope", "")
elif target.startswith("#"):
kind, status, note = ("anchor", "ok", "same-document anchor")
elif re.match(r"^[a-zA-Z][a-zA-Z0-9+.-]*://", target):
kind, status, note = classify_url(target, issue_index)
else:
kind, status, note = classify_relative(name, src, target, tracked)
rows.append([name, src, lineno, kind, target, status, note])
rows.sort(key=lambda r: (r[0], r[1], r[2], r[4]))
write_tsv("links.tsv",
["repo", "src_path", "line", "kind", "target", "status", "note"],
rows)
if __name__ == "__main__":
main()
+171
View File
@@ -0,0 +1,171 @@
"""Per-repo inventory: file trees, doc inventory, markers, git activity.
Writes tree_<repo>.txt, docs_inventory.tsv, markers.tsv, git_activity.tsv.
"""
import re
from collections import defaultdict
from datetime import date
from common import (
DATA_DIR, DOC_SUFFIXES, assert_untouched, days_since, git, last_commit,
ref_of, repos, tracked_files, write_tsv,
)
MARKER_RE = re.compile(r"\b(TODO|FIXME|HACK|XXX|DEPRECATED)\b")
# git grep's ERE does not implement \b, which silently reports zero
# markers; the scan therefore runs in Python, where \b works.
MAX_SCAN_BYTES = 512 * 1024
def write_trees():
for name, repo in repos():
files = tracked_files(name, repo)
path = DATA_DIR / f"tree_{name}.txt"
path.write_text("\n".join(files) + "\n", encoding="utf-8")
print(f" tree_{name}.txt: {len(files)} files")
def write_docs_inventory():
rows = []
for name, repo in repos():
for f in tracked_files(name, repo):
if not any(f.endswith(s) for s in DOC_SUFFIXES):
continue
size = (repo / f).stat().st_size
iso, author, sha = last_commit(name, repo, f)
rows.append([name, f, size, iso, author, days_since(iso), sha])
rows.sort(key=lambda r: (r[0], r[1]))
write_tsv(
"docs_inventory.tsv",
["repo", "path", "bytes", "last_commit_date", "last_author",
"days_since_change", "last_commit"],
rows,
)
def _blame_dates(repo, path, lines_wanted):
"""Map line number -> (author date, short sha, author) via one blame pass."""
try:
out = git(repo, "blame", "--line-porcelain", "--", path)
except RuntimeError:
return {}
result, sha, author, when, lineno = {}, None, None, None, None
for line in out.splitlines():
if re.match(r"^[0-9a-f]{40} ", line):
parts = line.split()
sha, lineno = parts[0], int(parts[2])
elif line.startswith("author "):
author = line[len("author "):]
elif line.startswith("author-time "):
when = date.fromtimestamp(int(line[len("author-time "):])).isoformat()
elif line.startswith("\t"):
if lineno in lines_wanted:
result[lineno] = (when or "", (sha or "")[:9], author or "")
return result
def write_markers():
rows = []
for name, repo in repos():
for f in tracked_files(name, repo):
full = repo / f
try:
if full.stat().st_size > MAX_SCAN_BYTES:
continue
text = full.read_text(encoding="utf-8")
except (OSError, UnicodeDecodeError):
continue # binary or unreadable: not a marker carrier
hits = {}
for i, line in enumerate(text.splitlines(), start=1):
m = MARKER_RE.search(line)
if m:
hits[i] = (m.group(1), line.strip()[:200])
if not hits:
continue
blame = _blame_dates(repo, f, set(hits))
for lineno in sorted(hits):
marker, snippet = hits[lineno]
when, sha, author = blame.get(lineno, ("", "", ""))
rows.append([name, f, lineno, marker, snippet, when,
days_since(when), sha, author])
rows.sort(key=lambda r: (r[0], r[1], r[2]))
write_tsv(
"markers.tsv",
["repo", "path", "line", "marker", "text", "blame_date",
"days_since_blame", "blame_commit", "blame_author"],
rows,
)
def _is_doc(path):
return any(path.endswith(s) for s in DOC_SUFFIXES)
def write_git_activity():
rows = []
for name, repo in repos():
log = git(repo, "log", "--format=%x01%H\t%ad", "--date=short",
"--name-only", ref_of(name))
per_month = defaultdict(lambda: {"commits": 0, "docs": 0, "code": 0,
"docs_only": 0})
commit_days = []
for chunk in log.split("\x01"):
if not chunk.strip():
continue
head, _, body = chunk.partition("\n")
sha, iso = head.split("\t")
files = [ln for ln in body.splitlines() if ln.strip()]
touched_docs = any(_is_doc(f) for f in files)
touched_code = any(not _is_doc(f) for f in files)
bucket = per_month[iso[:7]]
bucket["commits"] += 1
bucket["docs"] += 1 if touched_docs else 0
bucket["code"] += 1 if touched_code else 0
bucket["docs_only"] += 1 if touched_docs and not touched_code else 0
commit_days.append(iso)
for month in sorted(per_month):
b = per_month[month]
for metric in ("commits", "docs", "code", "docs_only"):
key = {"docs": "commits_touching_docs",
"code": "commits_touching_code",
"docs_only": "commits_docs_only"}.get(metric, metric)
rows.append([name, month, key, b[metric]])
days = sorted({d for d in commit_days})
totals = {
"commits": len(commit_days),
"commits_touching_docs": sum(b["docs"] for b in per_month.values()),
"commits_touching_code": sum(b["code"] for b in per_month.values()),
"commits_docs_only": sum(b["docs_only"] for b in per_month.values()),
"active_days": len(days),
"first_commit": days[0] if days else "",
"last_commit": days[-1] if days else "",
"days_since_last_commit": days_since(days[-1]) if days else "",
}
gap, gap_from, gap_to = 0, "", ""
for a, b in zip(days, days[1:]):
ya, ma, da = (int(x) for x in a.split("-"))
yb, mb, db = (int(x) for x in b.split("-"))
delta = (date(yb, mb, db) - date(ya, ma, da)).days
if delta > gap:
gap, gap_from, gap_to = delta, a, b
totals["max_gap_days"] = gap
totals["max_gap_from"] = gap_from
totals["max_gap_to"] = gap_to
for metric in sorted(totals):
rows.append([name, "ALL", metric, totals[metric]])
rows.sort(key=lambda r: (r[0], r[1], r[2]))
write_tsv("git_activity.tsv", ["repo", "scope", "metric", "value"], rows)
if __name__ == "__main__":
assert_untouched()
DATA_DIR.mkdir(parents=True, exist_ok=True)
write_trees()
write_docs_inventory()
write_markers()
write_git_activity()
+144
View File
@@ -0,0 +1,144 @@
"""Resolve commit-SHA references -> analysis/data/sha_refs.tsv.
Added at the human's prompt during Phase 2: the 2026-08-07 history
rewrite gave 251 commits new SHAs, and shared/commit-zuordnung-2026-08-07.md
is the mapping list meant to keep older references resolvable. This
script tests whether that actually holds.
Two row kinds share one file:
doc-reference a SHA cited in a management-repo doc
mapping-entry an (old -> new) pair from the mapping table itself
Scope note: only management-repo docs are scanned for references. The
component repos are forks whose upstream docs cite thousands of upstream
SHAs that were never part of this project's history; including them
would bury the signal.
"""
import re
from common import (
DOC_SUFFIXES, MGMT_REPO, cell, git, repos, tracked_files, write_tsv,
)
MAPPING_DOC = "shared/commit-zuordnung-2026-08-07.md"
# Section heading -> repo name used elsewhere in the analysis.
SECTION_REPO = {
"gitops": "axion1337.chat-gitops",
"management": "management",
"ThreadNet-Web": "ThreadNet-Web",
"threadnet-call": "threadnet-call",
}
MAPPING_ROW = re.compile(r"^\|\s*`([0-9a-f]{7,40})`\s*\|\s*`([0-9a-f]{7,40})`\s*\|")
SECTION = re.compile(r"^##\s+(.+?)\s+—\s+(\d+)\s+Commits\s*$")
# A SHA-shaped token: 7-40 hex chars, mixing letters and digits so that
# plain numbers and hex-free words do not qualify.
SHA_TOKEN = re.compile(r"(?<![0-9a-zA-Z_/-])([0-9a-f]{7,40})(?![0-9a-zA-Z_-])")
def all_commits(repo):
"""Every commit SHA reachable from any ref, including remotes and tags."""
out = git(repo, "rev-list", "--all")
return {line.strip() for line in out.splitlines() if line.strip()}
def resolve(sha, index):
"""Repos in which sha is a commit (prefix match), sorted."""
hits = []
for name, commits in index.items():
if sha in commits or any(c.startswith(sha) for c in commits):
hits.append(name)
return sorted(hits)
def parse_mapping(text):
"""[(repo, old, new, declared_section_count)] from the mapping table."""
rows, section, declared = [], None, 0
for line in text.splitlines():
m = SECTION.match(line)
if m:
section = SECTION_REPO.get(m.group(1), m.group(1))
declared = int(m.group(2))
continue
m = MAPPING_ROW.match(line)
if m and section:
rows.append((section, m.group(1), m.group(2), declared))
return rows
def main():
index = {name: all_commits(path) for name, path in repos()}
known_repos = set(index)
mapping_text = (MGMT_REPO / MAPPING_DOC).read_text(encoding="utf-8")
mapping = parse_mapping(mapping_text)
old_to_new = {old: (repo, new) for repo, old, new, _ in mapping}
rows = []
# 1. The mapping table checked against the repos it describes.
for repo, old, new, _declared in mapping:
if repo not in known_repos:
status, note = "unverifiable", f"repo {repo} not in analysis scope"
else:
new_ok = bool(resolve(new, {repo: index[repo]}))
old_ok = bool(resolve(old, {repo: index[repo]}))
if new_ok and not old_ok:
status, note = "ok", "new resolves, old gone as expected"
elif new_ok and old_ok:
status, note = "ok-both-present", "old SHA still reachable from some ref"
elif not new_ok and old_ok:
status, note = "inverted", "new SHA missing but old one resolves"
else:
status, note = "unresolvable", "neither old nor new SHA exists in the repo"
rows.append(["mapping-entry", repo, MAPPING_DOC, "", f"{old}->{new}",
status, repo if status.startswith("ok") else "", note])
# 2. Every SHA cited in a management doc.
docs = [f for f in tracked_files("management", MGMT_REPO)
if any(f.endswith(s) for s in DOC_SUFFIXES)]
for src in sorted(docs):
text = (MGMT_REPO / src).read_text(encoding="utf-8")
for lineno, line in enumerate(text.splitlines(), start=1):
if src == MAPPING_DOC and MAPPING_ROW.match(line):
continue # already covered as mapping-entry rows
for sha in SHA_TOKEN.findall(line):
hits = resolve(sha, index)
if hits:
status = "resolves"
note = f"found in {','.join(hits)}"
elif sha in old_to_new:
repo, new = old_to_new[sha]
if repo in known_repos and resolve(new, {repo: index[repo]}):
status = "resolves-via-mapping"
note = f"pre-rewrite SHA; mapping -> {new} in {repo}"
hits = [repo]
else:
status = "mapping-stale"
note = f"mapping points to {new} in {repo}, which does not exist"
else:
status = "orphan"
note = "resolves in no analysed repo and is not in the mapping table"
rows.append(["doc-reference", "management", src, lineno, sha,
status, ",".join(hits), cell(line.strip())[:160]])
rows.sort(key=lambda r: (r[0], r[2], r[3] if r[3] != "" else 0, r[4]))
write_tsv(
"sha_refs.tsv",
["kind", "repo", "path", "line", "sha", "status", "resolved_in", "note"],
rows,
)
counts = {}
for r in rows:
counts[(r[0], r[5])] = counts.get((r[0], r[5]), 0) + 1
for key in sorted(counts):
print(f" {key[0]:<14} {key[1]:<22} {counts[key]}")
if __name__ == "__main__":
main()
+86
View File
@@ -0,0 +1,86 @@
"""Measure the 2026-08-07 timestamp anonymisation -> timestamp_anonymisation.tsv.
CLAUDE.md:116-134 requires author *and* committer date of every commit in
the group to be 12:00:00 UTC, so that personal working hours cannot be
read out of the history. This script measures how far that holds.
Upstream fork history is separated out: threadnet-call and ThreadNet-Web
carry thousands of commits by Element/Matrix contributors that were never
this project's to rewrite. Counting those as a leak would be dishonest,
so every row carries the author identity and an `own_identity` flag.
Own identities are listed explicitly rather than guessed, and were read
off the actual author list of the six repos.
"""
import re
from collections import Counter
from common import cell, git, repos, write_tsv
# The one person behind this project, in every spelling that appears in
# the six repos' author fields -- including the malformed one.
OWN_IDENTITIES = {
"thore cimbal <cfx@riot.8shield.net>",
"scrublord macbad <scrublord@mac.bad>",
"scrublordmcbad <gamemaster@axion1337.de>",
"sorb <gamemaster@axion1337.de>",
"sorb <cfxqriot.8shield.net>",
}
# Agent-authored commits: not a person's working hours, but they were made
# during one, so they are reported separately rather than ignored.
AGENT_IDENTITIES = {"claude <noreply@anthropic.com>"}
ANONYMISED = "12:00:00"
def classify(ident):
low = ident.lower()
if low in OWN_IDENTITIES:
return "own"
if low in AGENT_IDENTITIES:
return "agent"
return "upstream-or-bot"
def main():
rows = []
for name, repo in repos():
# Author time forced to UTC: the rule is stated in UTC, and reading
# it in local time silently classifies every commit as non-compliant.
log = git(repo, "log", "--all", "--date=format-local:%H:%M:%S",
"--format=%H%x09%ad%x09%an <%ae>", env_tz="UTC")
main_shas = {
line.strip()
for line in git(repo, "log", "--format=%H", "origin/main").splitlines()
if line.strip()
}
buckets = Counter()
for line in log.splitlines():
if not line.strip():
continue
sha, when, ident = line.split("\t", 2)
anon = when == ANONYMISED
buckets[(classify(ident), anon, sha in main_shas, ident)] += 1
for (who, anon, on_main, ident), n in sorted(buckets.items()):
rows.append([name, who, ident,
"anonymised" if anon else "real-clock-time",
"main" if on_main else "side-branch-only", n])
rows.sort(key=lambda r: (r[0], r[1], r[3], r[4], r[2]))
write_tsv(
"timestamp_anonymisation.tsv",
["repo", "identity_class", "author", "timestamp_state", "reachable_from",
"commits"],
rows,
)
leak = sum(int(r[5]) for r in rows
if r[1] in ("own", "agent") and r[3] == "real-clock-time")
print(f" commits by own/agent identities still carrying real clock time: {leak}")
if __name__ == "__main__":
main()
+80
View File
@@ -0,0 +1,80 @@
#!/usr/bin/env bash
# Reproduce every raw data file of the neckbeard field test from zero.
#
# bash analysis/scripts/run_all.sh
#
# Clones the in-scope component repos next to the management repo if they
# are missing, then regenerates everything under analysis/data/.
# Rerunning on an unchanged tree must produce no diff -- no wall-clock
# time enters any output (see common.py).
#
# Requirements: bash, git, python3 (stdlib only). Network and lab access
# are needed for the initial clone and for gitlab_issues.json; both steps
# skip cleanly without them, and everything else still runs.
set -euo pipefail
MGMT_REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
WORKSPACE="${NB_WORKSPACE:-$(dirname "$MGMT_REPO")}"
COMPONENTS_DIR="$WORKSPACE/components"
SCRIPTS="$MGMT_REPO/analysis/scripts"
# Scope frozen in analysis/SCOPE.md, confirmed by the human at Phase 0.
COMPONENTS=(
threadnet-call
thread-net-git
threadnet-operating
axion1337.chat-gitops
ThreadNet-Web
)
echo "management repo: $MGMT_REPO"
echo "workspace: $WORKSPACE"
echo
echo "== components"
mkdir -p "$COMPONENTS_DIR"
for slug in "${COMPONENTS[@]}"; do
target="$COMPONENTS_DIR/$slug"
if [ -d "$target/.git" ]; then
echo " $slug: present"
continue
fi
echo " $slug: cloning"
GIT_TERMINAL_PROMPT=0 git clone -q \
"https://git.lab/axion1337.chat/$slug.git" "$target"
# This analysis must never write back. Break the push path on every
# clone it creates.
git -C "$target" remote set-url --push origin DISABLED-no-push
done
echo
echo "== tickets"
python3 "$SCRIPTS/fetch_gitlab_issues.py"
echo
echo "== repo inventory"
python3 "$SCRIPTS/inv_repo.py"
echo
echo "== links"
python3 "$SCRIPTS/inv_links.py"
echo
echo "== claims"
python3 "$SCRIPTS/inv_claims.py"
echo
echo "== commit-SHA references and the 2026-08-07 rewrite mapping"
python3 "$SCRIPTS/inv_shas.py"
echo
echo "== timestamp anonymisation coverage"
python3 "$SCRIPTS/inv_timestamps.py"
echo
echo "== claim verification (mechanical pass over claims.tsv)"
python3 "$SCRIPTS/verify_claims.py"
echo
echo "done. raw data in $MGMT_REPO/analysis/data/"
+264
View File
@@ -0,0 +1,264 @@
"""Mechanically verify every claim row -> analysis/data/claims_verification.tsv.
Closes the gap HANDOFF.md named as the analysis' largest hole: claims.tsv
was extracted in full but verified selectively. This pass gives every one
of its rows an explicit disposition instead of an implicit "not chased".
What a script can and cannot do here is stated, not blurred:
* checkable here -- backticked repo paths resolved against all six trees;
issue references resolved against the group export,
including expectation words ("geschlossen", "offen")
checked against the actual state; legacy IDs against
issue titles; version tokens against git tags.
* not checkable -- host/runtime state (absolute paths, service versions,
DNS), claims about the past, and claims whose truth
lives outside the analysed repos. These are classed,
counted and left honest, not silently passed.
Rows that fail a mechanical check are FLAGged for human adjudication; the
verdicts live in REPORT.md's appendix, not here -- this file is
regenerated and must stay free of hand-written content.
"""
import csv
import json
import re
from common import DATA_DIR, MGMT_REPO, cell, git, repos, write_tsv
# --- reference data -------------------------------------------------------
PROJECT_ALIASES = {
"gitops": "axion1337.chat-gitops",
"axion1337.chat-gitops": "axion1337.chat-gitops",
"threadnet-web": "ThreadNet-Web",
"ThreadNet-Web": "ThreadNet-Web",
"threadnet-call": "threadnet-call",
"thread-net-git": "thread-net-git",
"threadnet-operating": "threadnet-operating",
"management": "management",
}
CLOSED_WORDS = re.compile(r"geschlossen|erledigt|abgeschlossen", re.I)
OPEN_WORDS = re.compile(r"\boffen(?:e[rs]?)?\b", re.I)
HISTORY_WORDS = re.compile(
r"entfernt|gelöscht|removed|hieß|war\b|bis 2026|damals|Vorgänger|alte?[rn]?\b", re.I)
PATH_EXT = (".md", ".yml", ".yaml", ".json", ".py", ".ts", ".toml", ".crt",
".sh", ".env", ".example", ".cjs", ".rst", ".txt", ".conf", ".rules",
".png", ".jpg", ".ico", ".icns", ".exe", ".production")
DOMAIN_PREFIX = re.compile(
r"^(https?://|git\.lab|registry\.|rohana|axionwiki|wiki\.lab|ghcr\.io|gcr\.io)")
FORGE_REPO = re.compile(r"^(sorb|homelab|vendor|axion1337\.chat)/")
NET_REF = re.compile(r"^\d{1,3}(\.\d{1,3}){3}(/\d+)?$")
BARE_EXT = re.compile(r"^\.[a-z0-9]{1,6}$")
VERSION_RE = re.compile(r"\bv?\d+\.\d+\.\d+(?:-[\w.]+)?\b")
NAMED_REF_RE = re.compile(r"\b([A-Za-z][\w.-]*)#(\d{1,4})\b")
URL_REF_RE = re.compile(r"/([\w.-]+)/-/issues/(\d{1,4})")
BARE_REF_RE = re.compile(r"(?<![\w/])#(\d{1,4})\b")
LEGACY_ID_RE = re.compile(r"\b([A-Z]{3,8}-\d{2})\b")
def load_issues():
data = json.loads((DATA_DIR / "gitlab_issues.json").read_text(encoding="utf-8"))
by_ref = {(i["project"], i["iid"]): i for i in data["issues"]}
id_in_titles = set()
for i in data["issues"]:
id_in_titles.update(LEGACY_ID_RE.findall(i["title"]))
return by_ref, id_in_titles
def load_trees():
"""repo -> set of tracked paths, read from the committed tree files so a
rerun without component clones still verifies identically."""
trees = {}
for name, _ in repos():
tree_file = DATA_DIR / f"tree_{name}.txt"
trees[name] = set(tree_file.read_text(encoding="utf-8").splitlines())
return trees
def load_tags():
tags = {}
for name, repo in repos():
try:
tags[name] = {t for t in git(repo, "tag", "--list").splitlines() if t}
except RuntimeError:
tags[name] = set()
return tags
def load_branches():
"""Remote branch names across all repos, with and without origin/."""
out = set()
for _, repo in repos():
try:
for b in git(repo, "branch", "-r", "--format=%(refname:short)").splitlines():
b = b.strip()
if b and "HEAD" not in b:
out.add(b)
out.add(b.removeprefix("origin/"))
except RuntimeError:
pass
return out
# --- per-token checks ------------------------------------------------------
# Doc names that qualify a path with a repo alias ("gitops/CLAUDE.md").
TREE_ALIASES = {"gitops": "axion1337.chat-gitops", "management": "management"}
def classify_path_token(tok, trees, branches, src_dir):
"""-> (check_note, flag_or_None)"""
if tok.startswith(("/", "~", "$")) or DOMAIN_PREFIX.match(tok):
return (f"runtime-path:{tok}", None)
if NET_REF.match(tok):
return (f"net-ref:{tok}", None)
if FORGE_REPO.match(tok):
return (f"forge-repo:{tok}", None)
if tok.startswith("@"):
return (f"package-ref:{tok}", None)
if ":" in tok:
return (f"image-ref:{tok}", None)
if BARE_EXT.match(tok):
return (None, None)
if any(c in tok for c in " *<{=!") or tok.startswith("-"):
return (None, None)
looks_like_path = "/" in tok or tok.endswith(PATH_EXT)
if not looks_like_path:
return (None, None)
clean = tok[2:] if tok.startswith("./") else tok
stripped = clean.removeprefix("origin/")
if stripped in branches or clean in branches:
return (f"branch-ok:{clean}", None)
first, _, rest = clean.partition("/")
if rest and first in TREE_ALIASES and rest in trees[TREE_ALIASES[first]]:
return (f"path-ok:{rest}@{TREE_ALIASES[first]}", None)
candidates = [clean]
if src_dir: # doc-relative resolution inside the management repo
candidates.append(f"{src_dir}/{clean}")
hits = []
for name, files in trees.items():
for cand in candidates:
if cand in files or any(f.endswith("/" + cand) for f in files):
hits.append(name)
break
if any(("/" + cand.rstrip("/") + "/") in ("/" + f) or
f.startswith(cand.rstrip("/") + "/") for f in files):
hits.append(name + "(dir)")
break
if hits:
return (f"path-ok:{clean}@{','.join(sorted(hits)[:3])}", None)
return (f"path-miss:{clean}", f"path-miss:{clean}")
def issue_refs(line):
"""Extract (project, iid) refs; bare #N defaults to management."""
refs, spans = [], []
for m in list(NAMED_REF_RE.finditer(line)) + list(URL_REF_RE.finditer(line)):
proj = PROJECT_ALIASES.get(m.group(1))
if proj:
refs.append((proj, int(m.group(2))))
spans.append(m.span())
named_iids = {iid for _, iid in refs}
for m in BARE_REF_RE.finditer(line):
if any(a <= m.start() < b for a, b in spans):
continue
iid = int(m.group(1))
# "[#49](…/gitops/-/issues/49)" names the same issue twice; the
# bare token is the link text, not a second (management) reference.
if iid in named_iids:
continue
refs.append(("management", iid))
return refs
def check_issue_ref(proj, iid, line, by_ref, single_ref):
issue = by_ref.get((proj, iid))
if issue is None:
return (f"issue-miss:{proj}#{iid}", f"issue-miss:{proj}#{iid}")
expect = None
# Expectation words are only attributable when the line references
# exactly one issue ("#5 geschlossen, Folgethemen in #6" must not
# expect #6 to be closed).
if single_ref and CLOSED_WORDS.search(line) and not OPEN_WORDS.search(line):
expect = "closed"
elif single_ref and OPEN_WORDS.search(line) and not CLOSED_WORDS.search(line):
expect = "opened"
if expect and issue["state"] != expect:
return (f"issue-state:{proj}#{iid}={issue['state']},text-says-{expect}",
f"issue-state:{proj}#{iid}")
return (f"issue-ok:{proj}#{iid}({issue['state']})", None)
def main():
by_ref, ids_in_titles = load_issues()
trees = load_trees()
tags = load_tags()
branches = load_branches()
all_tags = {t for s in tags.values() for t in s}
rows = []
counts = {}
with (DATA_DIR / "claims.tsv").open(encoding="utf-8") as fh:
for row in csv.DictReader(fh, delimiter="\t"):
line = row["claim_text"]
checks, flags = [], []
if row["in_code_block"] == "yes":
status = "code-block"
else:
src_dir = row["path"].rsplit("/", 1)[0] if "/" in row["path"] else ""
for tok in re.findall(r"`([^`]+)`", line):
note, flag = classify_path_token(tok, trees, branches, src_dir)
if note:
checks.append(note)
if flag:
flags.append(flag)
refs = issue_refs(line)
for proj, iid in refs:
note, flag = check_issue_ref(proj, iid, line, by_ref,
single_ref=len(refs) == 1)
checks.append(note)
if flag:
flags.append(flag)
for lid in LEGACY_ID_RE.findall(line):
checks.append(f"id-{'ok' if lid in ids_in_titles else 'no-issue'}:{lid}")
for v in VERSION_RE.findall(line):
if v in all_tags or "v" + v in all_tags:
checks.append(f"tag-ok:{v}")
if flags:
status = "FLAG"
elif any(c.startswith(("path-ok", "issue-ok")) for c in checks):
status = "checked-ok"
elif checks:
status = "informational"
else:
status = "prose-or-runtime"
hint = "historical-wording" if HISTORY_WORDS.search(line) else ""
counts[status] = counts.get(status, 0) + 1
rows.append([row["path"], row["line"], status,
";".join(checks)[:400], ";".join(flags), hint,
cell(line)[:200]])
rows.sort(key=lambda r: (r[0], int(r[1])))
write_tsv("claims_verification.tsv",
["path", "line", "status", "checks", "flags", "hint", "claim_text"],
rows)
for k in sorted(counts):
print(f" {k:<18} {counts[k]}")
print(" -- FLAG rows:")
for r in rows:
if r[2] == "FLAG":
print(f" {r[0]}:{r[1]} [{r[4]}] {'(hist?)' if r[5] else ''} {r[6][:110]}")
if __name__ == "__main__":
main()