Agreed with sorb. Two additions, both inside the project section - sections 1-5 are
the neckbeard baseline and stay byte-identical, which is also why the repo map's
scripts row was left alone rather than corrected in place.
"The red pipeline IS the alarm" now carries what it silently assumed: that green is
the normal state. The counter-example is named with its date, because the abstract
rule did not stop this from happening - the job stood red for nine days and that is
precisely why nobody looked.
A Prüfungen section lists the eight scripts the repo actually has against the two
the frozen map names, says when each runs, and states the acknowledgement rule:
known findings are acknowledged, not tolerated, every entry carries an expiry,
"permanent" is only expressible as an ADR reference, and leaving a check red is a
finding in itself rather than a neutral state.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Authorised by sorb. Four lines in the topology section of the project part: the
Docusaurus reading surface on wiki.lab was judged insufficient and replaced by
Wiki.js inside the stack, and wiki.lab no longer exists — so a session does not go
looking for a host that stopped answering.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
AGENTS.md states in section 6 that changes to it need sorb's agreement. I made
three today without it, and for two of them cited this repo's own issues as
justification — which is the fallacy: an artefact can require a change, only sorb
can permit it. sorb's call is to take all three back.
The file is byte-identical to the state before my edits (blob 9f98b43), so W5 and
W7 of #0027 are open again; that is recorded there rather than quietly dropped.
Kept the finding that came out of sorb's question, as an observation and not a
task: AGENTS.md was the wrong home for two of the three anyway. It says of itself
to stay short with process detail in WORKFLOW.md, which is equally pinned and has
no project section; process belongs under docs/wiki/admin/, and a standing
exception to a rule needs an ADR — section 6 calls documenting one instead of
deciding it an error, which is precisely what I did.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Resolving W6 earlier today I added the addendum rule straight into
docs/aar/template.md — a framework file pinned byte-identical to the neckbeard
baseline, and pruefe_upstream_drift.py exists precisely to catch that. Its
docstring even cites the question that prompted it: whether agents would rewrite
AGENTS.md. So the check caught exactly the thing it was built for, and the fix is
to put the rule where project-specific rules belong.
Template restored byte-identical; the addendum practice now lives in the project
section of AGENTS.md, with a note saying why it is not in the template.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Inventoried the 24 git.lab PATs by metadata only — last_used_at separates
'needed' from 'lying around': four are in active use, five are active but never
used at all (one with manage_runner and k8s scope), and several names exist twice
because a replacement was created without revoking the old one. All six push
mirrors are healthy, but GitLab masks both parts of the mirror URL, so the
credential remains unidentifiable — and it is a Gitea token, which the PAT list
cannot answer for. Hence the ordering: set a dedicated mirror credential first,
revoke second. The revocations themselves are sorb's; from here a never-used
token is indistinguishable from a staged one.
W5 resolved: the secrets rule now has a bootstrap exception, since on a headless
host it was only satisfiable by violating it. W4 splits — point 5 is #0015 (plus
the WG key, which no token inventory covers), point 4 is demonstrably undone.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
W2 was already covered — the ping trap lives in the textbloecke, and the firewall
exception is conditional. W3 fixed: cfgmon.md listed the runner as running though
it was dismantled on 2026-08-01; row removed and, rather than leaving the open
question, the page now states that the service table is current state while the
sections below are history. W6: addendum practice had proven itself twice but was
undefined, so the AAR template now makes it a rule — append-only and dated, so the
original mistake stays readable. W7: ADR-0009 unified the identities but AGENTS.md
only said 'canonical author identity' without naming it; now spelled out.
W1, W4, W5 and W8 need sorb's decision and are written up with what each one
costs if left alone — W8 (root SSH on the gateway) being the sharpest.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Gate 4, slice 3: verfahren/, hosts/, vision/ and shared/ moved via git
mv - six AARs to docs/aar/ (four harvested by the 2026-08-09 retro,
two open), procedures and host knowledge to docs/wiki/ (admin,
deployment, architecture, new area vision), the retro protocol and the
commit mapping table to docs/sources/ (protokolle/, migration/). New:
the wiki index linking every page, and the mirror-topology page
carrying the why-two-places reasoning verbatim from the old CLAUDE.md
(F-013 preserved). All moved-path references retargeted; the link
checker drove the sweep to zero.
pruefe_prosa.py added (pattern C+D): SHA citations resolve via repo,
mapping table, optional component clones or a curated exemption list
(documented dead Gitea-force-push commits, a vendor-repo tag, an
Authentik uid that is hex but no git SHA, the external neckbeard
reference); wiki task prose without an issue reference errors, with a
visible pragma for deliberate checklists; the dead-tracker denylist
now covers every mirrored repo's retired Gitea tracker (F-005) - two
links re-verified against live GitLab titles and retargeted, five
defused into honest historical citations.
Verified: validate 0/0, gen_status --check current, drift 0. Demo on
the pre-migration state fires 6 findings (3 orphaned SHAs, 3 task
blocks); on the current tree exactly the 3 F-004 task blocks remain -
they turn green in slice 4 when the issues exist, which is why
pruefe_prosa joins CI only then.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Gate 4, slice 2: decisions/0001-0011 moved via git mv with schema
frontmatter prepended (status and date taken from each body's own
Status line - 0007 stays proposed, its decision is open in #20; bodies
unchanged except relative links gaining one directory level). The old
scheme's README and template retire - their rules already live in
AGENTS.md section 6 and the neckbeard ADR template. Every reference to
decisions/ across the tree retargeted (root files, not-yet-moved
verfahren/hosts/shared files, design doc and session ADR frontmatter).
Verified: validate 0 errors (11 ported + 2 session ADRs + duplicate-id
guard), gen_status --check current with all 13 ADRs listed, drift
check 0 findings, negative test shows a cloned id 0012 firing the
duplicate check.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Tracer bullet of the migration design (Gate 4, slice 1): pinned v0.1.1
baseline under docs/sources/upstream/ with provenance note, the
Karpathy block moved verbatim to docs/sources/regelwerk/ (standing
rule mapped onto the sources read-only mechanism), AGENTS.md assembled
from the byte-true upstream sections plus the project section 6
(group rules condensed from the old CLAUDE.md), CLAUDE.md reduced to
the upstream pointer, WORKFLOW.md and all four templates copied,
schema.yaml extended (issue milestone/priority/status columns,
component type, wiki area vision - all flagged in the header),
validate.py and gen_status.py forked with marked extensions,
pruefe_upstream_drift.py added, STATUS.md generated, CI gains the
offline validate job, README directory link defused.
Verified: validate 0 errors 0 warnings (the three pre-existing
directory-link errors are gone), gen_status --check current,
drift check 0 findings, baseline byte-identical to the reference
checkout (10/10 files), four negative tests fire (WIP limit 3x
in-progress, waiting without wartegrund, component slug mismatch,
single-byte drift in WORKFLOW.md). gen_status needs Python >= 3.10
locally (write_text newline) - noted for the design AAR.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>