Skip to content

EV — TFW-53 / Phase D: Glossary, Adapters and Version

Date: 2026-08-14 Author: Executor (Claude Code) Task: TFW-53 Passes: first 2026-08-14 · corrective 2026-08-18 after REVIEW 🔄 REVISE TS: TS Phase D


Environment

Field Value
OS Windows 11 Pro 10.0.26200
Shell Git Bash (POSIX sh) — the config.md drift check is a bash snippet and was run verbatim
Language / Runtime Python (project venv), python -m pytest
Repository state branch master, working tree; concurrent uncommitted TFW-55 edits present in README.md and two TFW-55 files
CI / Pipeline local — docs/scripts/ suite only; the GitHub Pages build was not triggered

Evidence

# AC What was verified Environment Result Artifact
E1 AC-1 All ten terms resolve in glossary.md under a case-insensitive grep -ci. Counts: HL Contract 2 · Contract Baseline 3 · Frozen Section 2 · Amendment 5 · Amendment Log 1 · Project North Star 4 · Purpose Check 3 · not fit for purpose 1 · deferral confession 1 · Result Visualization 2. All ≥ 1 local shell VERIFIED ac-gates.txt § AC-1
E2 AC-1 Every article is at or under the p75 = 50-word ceiling: 48 · 49 · 50 · 50 · 45 · 48 · 48 · 43 · 41 · 49. Median of the ten is 48 local shell VERIFIED ac-gates.txt § AC-1 wc -w
E3 AC-1 Each of the ten articles ends with a pointer, and each pointer target was opened: conventions.md §3 HL Contract · rules 13-16 · rules 3, 5 · rules 10-12 · rule 4 · §3 Project North Star · templates/review/judge.md (×3) · conventions.md §3 Visual Sections local shell + file read VERIFIED inline — git diff .tfw/glossary.md
E4 AC-1 Deferral confession exists in the framework and its pointer resolves: templates/review/judge.md:50, the second of the Purpose Check's three tests. A case-sensitive search for the lower-case form returns 0, which is why the gate was changed to grep -ci local shell VERIFIED judge.md:50, quoted in RF §2 D4
E5 AC-2 frozen baseline across .tfw/**.md excluding CHANGELOG.md: 8 → 0 local shell VERIFIED ac-gates.txt § AC-2
E6 AC-2 committed baseline excluding the negation (grep -roE "[^n]committed baseline"): 0, before and after. The two literal substring hits are uncommitted baseline at conventions.md:75 and plan.md:60, ruled out of mandate (ONB Q1 → (a)) and left untouched local shell VERIFIED ac-gates.txt § AC-2
E7 AC-2 Bare capitalised North Star: 2 genuine → 0. templates/HL.md:18 and :20 renamed to Project North Star. The one remaining literal match, glossary.md:268 > North Star., is the tail of Project North Star wrapped across a line break — recorded rather than "fixed" local shell VERIFIED ac-gates.txt § AC-2, remaining-occurrence block
E8 AC-2 Neither workflow grew: plan.md 1,195 → 1,195 (zero occurrences, so zero substitutions), review.md 1,176 → 1,176 (two substitutions, 3 words → 3 words each) local shell VERIFIED ac-gates.txt § AC-2 budgets
E9 AC-3 Direction check run before any copy, all 14 pairs. Source-only vs copy-only line counts recorded per pair; every copy-only line read and confirmed to be an older form of a source-only line in the same hunk. No copy holds content its source lacks — AC-3's stop condition does not fire local shell + diff read VERIFIED direction-check.txt
E10 AC-3, TD-157 config.md drift check before: 14 DRIFT: lines, exit 0. Captured verbatim local shell VERIFIED drift-check-before.txt
E11 AC-3, TD-157 config.md drift check after the sync: no output, exit 0. Independently, diff per pair across all 22 copies returns 0 lines local shell VERIFIED drift-check-after.txt
E12 AC-3 Codex routers read in full. tfw-review/SKILL.md — no statement is false, unchanged. tfw-plan/SKILL.md — the description field read "creates or revises approved HL/TS artifacts", which grants what conventions.md §3 rule 3 now forbids; one word removed in both the source and the installed copy, which remain byte-identical local shell + file read VERIFIED git diff .tfw/adapters/codex/ .agents/skills/
E13 AC-4 CLAUDE.md both purpose cells rewritten and read back against the shipped workflows: plan.md Step 4 (freeze), Step 6c (classify/route), Step 6d (verdicts); review.md Step 3 + the Purpose Check paragraph. Two missing rows added (/tfw-knowledge, /tfw-config) per the coordinator's recorded R6 extension. AGENTS.md checked row by row — nothing false, so unchanged, exactly as AC-4 directs local shell + file read VERIFIED git diff CLAUDE.md; git diff --stat AGENTS.md empty
E14 AC-5 cat .tfw/VERSION1.2.0; grep -c 'version: "1.2.0"' .tfw/project_config.yaml → 1; grep -c "[TFW-54](../../../TFW-54__agent_team_mode/)" .tfw/CHANGELOG.md → 1. One ## [1.2.0] entry; grep -c "12 drifted copies" → 0, so the stale count did not survive the fold local shell VERIFIED ac-gates.txt § AC-5
E15 AC-6 Each of the four named lines opened before and after: templates/HL.md:10 (recovery command → pointer), glossary.md Knowledge Gate (Phase 0 → Step 2, checked against plan.md's actual Steps 0-7), compilable_contract.md:81 (PP{N}, NS{N} added to the Resolution rules), compilable_contract.md:65 (KNOWLEDGE.md §0 removed from the list) local shell + file read VERIFIED git diff hunks, quoted in RF §1
E16 AC-6 python -m pytest docs/scripts/68 passed in 55.82s, against a pre-phase baseline of 68 passed in 55.99s. Same count, no new failures local venv VERIFIED ac-gates.txt § AC-6
E17 AC-7, AC-9 Row replaced 2026-08-18. Command named exactly: git diff -U0 ce30f3b^ ce30f3b -- .tfw/conventions.md .tfw/glossary.md .tfw/templates/HL.md .tfw/templates/review/judge.md .tfw/workflows/review.md .tfw/compilable_contract.md \| grep -c '^@@'16 (14 at default context). Per file: 2 · 4 · 4 · 2 · 2 · 2. Classification: 10 substitution hunks carrying 11 substituted lines (judge.md @@ -34,2 holds two), 4 named debt fixes, 2 addition sites. git diff --stat → 6 files, 47 insertions, 15 deletions. No hunk is a rewritten sentence local shell VERIFIED full reconciliation in RF §9; git diff -U0 output
E17b AC-9 The first pass's figure of 12 does not reproduce, and why is recorded rather than glossed. The ledger names six files including glossary.md; the command actually run listed plan.md (0 hunks) and omitted glossary.md (4 hunks) — 16 − 4 + 0 = 12. A number produced by one file set and reported against another local shell VERIFIED RF §9, Where 12 came from
E18 AC-7 git diff --stat on the six framework files: compilable_contract.md 4 · conventions.md 4 · glossary.md 36 · templates/HL.md 8 · judge.md 6 · review.md 4 — 47 insertions, 15 deletions. Per-file justification in RF §1 local shell VERIFIED RF §1 diffstat table
E19 AC-8 Row replaced 2026-08-18. Counted under the rule the owner stated on 2026-08-18 — the budget counts product files, not task artifacts — and the rule is quoted beside the number, which the first pass did not do. git diff --name-status ce30f3b^ ce30f3b → 27 modified, 6 added; plus README.md modified and unstaged in the working tree. Product: 28 modified of 30, 0 new of 15. Of the 28, 14 are byte cp and 14 authored. Trace, unbudgeted: 6 — the RF, the EV file, four command-output attachments local shell VERIFIED RF §1 accounting table
E19b AC-8 The first pass compared only the sub-limits and computed no total — which is exactly what let a 33-file phase read as green. The reviewer's 33-vs-30 count was arithmetically correct against its own reading of the rule. Recorded as a defect of the first trace, not argued away reading RF/EV first pass VERIFIED REVIEW §2 row 5, verify.md V11
E20 AC-8 The TS's own corrected figure is also wrong, and I did not adopt it. TS AC-8 states "27 modified product files"; 27 is the commit's modified count and omits README.md, a product file this phase changed twice and changes again in this pass. Correct figure 28; conclusion unaffected (28 < 30). Ambiguity filed as TD-173 local shell VERIFIED RF §1, closing note
E21 AC-10 §8 reads No strategic insights. with its reason. §7 carries one row. Each re-homed item was opened at its stated destination and found there: S3 in §2 decision 11, S4 in §6 observation 8, S2's operative half in §6 observation 9, FC5 in §6 observation 10. S1, FC1, FC2, FC4 dropped, with the ground stated file read VERIFIED RF §2, §6, §7, §8
E22 AC-10 The §7 contradiction is measured, not asserted. templates/RF.md §7 Scope admits "agent-observed project patterns" four lines above a Human-Only Test that bars anything "an agent can discover by reading code or running commands". Both cannot hold. RF TFW-56 (3 entries), RF TFW-53/B (2) and RF TFW-53/C (4) carried agent-derived entries and were approved — four consecutive reviews. Filed as TD-174 file read across four RFs VERIFIED TECH_DEBT.md TD-174
E23 AC-11 grep -rn "PROJECT_CONFIG" CLAUDE.md AGENTS.mdbefore: 2 matches (CLAUDE.md:51, :53); after: no matches, exit 1. Both now read .tfw/project_config.yaml; ls .tfw/project_config.yaml confirms the target exists. TD-172 closed with its reason local shell VERIFIED RF §6 obs. 5
E24 AC-11 Repo-wide sweep for the retired filename outside CLAUDE.md: no live occurrence. Every hit is history that must not be rewritten (CHANGELOG.md, KNOWLEDGE.md D16/D20/D22/D48 + Legacy, knowledge/philosophy.md F23, two README task titles, 136 files under tasks/) or the rule itself (conventions.md:468). AGENTS.md and .tfw/workflows/init.md are clean. Reported, not fixed, as AC-11 directs local shell VERIFIED RF §6 obs. 11

Verdict

Evidence verdict: 26/26 VERIFIED, 0 DEFERRED, 0 BLOCKED, 0 N/A

Recomputed 2026-08-18 (AC-12), not restored. At REVISE time the supported count was the reviewer's 17 of 19: E17 and E19 did not establish their claims. Both rows were replaced, not re-asserted — E17 now names the command and carries its 16-header output, E19 carries the counting rule and the 28-of-30 product total. Seven rows were added for the corrective pass — E17b, E19b and E20–E24; row count 19 → 26. E1–E16 and E18 were not touched and not re-run — the reviewer independently established all seventeen at 100% file coverage, and re-running them to pad a count is the behaviour this section exists to prevent. No row was upgraded without its underlying artifact changing.

Attachments

File Description
drift-check-before.txt The config.md drift check run verbatim before the sync — 14 DRIFT: lines, exit 0
direction-check.txt Per-pair source-only / copy-only line counts, run before any copy, with the read verdict
drift-check-after.txt The same check after the sync — no output, exit 0
ac-gates.txt Every AC gate command and its output: AC-1 term counts and word counts, AC-2 occurrence counts and word budgets, AC-5 release gates, AC-6 test result

EV — TFW-53 / Phase D: Glossary, Adapters and Version | 2026-08-14