Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3921c9efeb | ||
|
|
feab9bda73 | ||
|
|
e68b295249 | ||
|
|
ccf83da515 | ||
|
|
0f419f006f | ||
|
|
eaa00f0ed2 | ||
|
|
959bf882e9 | ||
|
|
b8b853163d | ||
|
|
f6a9b9f26b |
@@ -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 1–5 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.
|
||||
@@ -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:00–01: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 "M1–M4";
|
||||
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 4–5 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 1–5: 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`.
|
||||
@@ -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.
|
||||
@@ -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 1–7 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 1–4 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:05–19: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 M1–M4 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, M1–M4 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 1–7 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 1–7 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 1–7 (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 1–7 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.
|
@@ -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 1–7 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 1–4 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:05–19: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 M1–M4 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, M1–M4 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 1–7 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 1–7 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 1–7 (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 1–7 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.
|
@@ -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
|
||||
|
@@ -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
|
||||
|
File diff suppressed because it is too large
Load Diff
+11391
File diff suppressed because it is too large
Load Diff
@@ -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 can’t 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.
|
@@ -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
|
||||
|
@@ -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
|
||||
|
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
|
||||
@@ -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
|
||||
@@ -0,0 +1,4 @@
|
||||
.gitignore
|
||||
README.md
|
||||
backup/gitea-backup.sh
|
||||
docker-compose.yml
|
||||
@@ -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 **M1–M5**. `roadmap.md` (Kopf und „Stand"-Block)
|
||||
und `CLAUDE.md` (Abschnitt Arbeitsframework, „M1–M4") 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 "M1–M4", 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
|
||||
M1–M4".
|
||||
- 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 (00h–01h and 21h–23h 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 1–2 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.
|
||||
@@ -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
|
||||
@@ -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())
|
||||
@@ -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()
|
||||
@@ -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()
|
||||
@@ -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()
|
||||
@@ -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()
|
||||
@@ -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()
|
||||
Executable
+80
@@ -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/"
|
||||
@@ -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()
|
||||
Reference in New Issue
Block a user