# 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.