TS — TFW-53 / Phase D: Glossary, Adapters and Version¶
Date: 2026-08-13 Author: Coordinator (Claude Code) Status: 🟡 TS_DRAFT — approved by the owner 2026-08-13 · amended 2026-08-14 after ONB: six measurements corrected from the executor's re-measurement (glossary parent heading, article median, and four terminology counts), Q1
uncommitted baselineruled out of mandate, Q2 the HL north-star field label enters AC-2, Q3 TD-158 re-routed out, R6 overruled as a recorded two-row scope extension inCLAUDE.md· amended 2026-08-18 after REVIEW 🔄 REVISE — AC-8 to AC-12 added for the second execution pass, same executor. Review item 1 refused as written; the owner ruled the budget counts product files, not task artifacts Parent HL: HL-TFW-53 — 🔒 FROZEN Covers: frozen DoD 30–33 Predecessors read (Pre-TS gate): RF Phase C, REVIEW Phase C — ✅ APPROVE, second pass · RF Phase B · RF TFW-56
1. Objective¶
Phases A, B and C built a contract, an enforcement path and a defender. All three exist in .tfw/ and in exactly one of the three tool surfaces. This phase makes the work portable and findable: the vocabulary the task invented gets defined instead of merely used, the same concept stops carrying three names, and every adapter copy runs the same workflow the framework defines. Then the version bump ships it.
This is the gate where we built it becomes everyone gets it. It is not a refactor: nothing is redesigned, no section content is rewritten, and no mechanism is reopened.
2. Scope¶
In Scope¶
glossary.md— ten articles: the nine terms DoD-30 names, plus the missingResult Visualization- Terminology consistency: one name per concept across
conventions.md,glossary.md, templates and workflows - All 14 drifted adapter copies re-synced, plus the entry points and the Codex skills
VERSION,CHANGELOG.md,project_config.yamltfw.version, and the TFW-54 pointer- Five debts that fall inside this phase's mandate: TD-157, TD-163, TD-164, TD-165, TD-167
Out of Scope¶
- Rewriting any section's content. HL §7.1: "D changes no section content, only terminology consistency." A synonym becomes the canonical term; a sentence does not become a better sentence
- Six debts routed here by earlier reviews that do not belong — see §6 for the reasoning and the re-routing: TD-120, TD-140, TD-142, TD-153, TD-154, TD-155
- Phase E (rejected-task traces) — independent, not blocked by this phase
- Any part of the AT execution mode (HL DoF-4)
3. Principles Check¶
| # | Principle (HL §7) | Enforced by | Gate |
|---|---|---|---|
| P9 | Naming creates behavior | AC-1, AC-2 | Every term this task invented is defined; the measured three-name drift resolves to one |
| P8 | Tool-agnostic by behavior | AC-3, AC-4 | The drift check prints nothing; all three surfaces run the same workflow |
| P3 | Structural enforcement over guidelines | AC-3 | The acceptance test is a recorded command, not a claim that the sweep was done |
| P7 | Token density | AC-2, AC-7 | plan.md and review.md are within 25 words of the hard budget; substitutions must be word-neutral or negative |
| P12 | A frozen baseline must be diffable | AC-6 | TD-164 — the recovery form belongs in one place, and the template is currently the fourth copy |
| P1, P2, P4, P5, P6, P10–P17 | contract mechanics, purpose defence, traces | N/A | Discharged in Phases A–C, or Phase E. This phase changes no mechanism |
4. Affected Files¶
| File | Action | Description |
|---|---|---|
.tfw/glossary.md |
MODIFY | Ten articles; the Phase 0 stale pointer (TD-163) |
.tfw/conventions.md |
MODIFY | Terminology only. It currently uses all three baseline synonyms |
.tfw/templates/HL.md |
MODIFY | TD-164 — the recovery command replaced by a pointer to conventions.md §3 rule 15; terminology |
.tfw/templates/review/judge.md |
MODIFY | Terminology only (3 baseline occurrences) |
.tfw/workflows/review.md |
MODIFY | Terminology only — word-neutral or negative, the file is at 1,176 of 1,200 |
.tfw/workflows/plan.md |
MODIFY | Terminology only — word-neutral or negative, the file is at 1,195 of 1,200 |
.tfw/compilable_contract.md |
MODIFY | TD-165 (NS{N}/PP{N} resolution behaviour) and TD-167 (second stale KNOWLEDGE.md §0 reference) |
.claude/commands/tfw-*.md × 7 |
MODIFY | Re-copied from source: plan, review, research, init, handoff, update, knowledge |
.agent/workflows/tfw-*.md × 7 |
MODIFY | Same seven |
.tfw/adapters/codex/skills/tfw-{plan,review}/SKILL.md |
MODIFY | Behavioural parity check; edit only if a statement is now false |
.agents/skills/tfw-{plan,review}/SKILL.md |
MODIFY | Same |
CLAUDE.md, AGENTS.md |
MODIFY | The command table understates both workflows — see AC-4 |
.tfw/VERSION, .tfw/project_config.yaml |
MODIFY | 1.1.0 → 1.2.0; tfw.version moves in lockstep (RF TFW-56 FC2) |
.tfw/CHANGELOG.md |
MODIFY | One entry covering Phases A–D, with the TFW-54 pointer |
TECH_DEBT.md, README.md |
MODIFY | Five closures; board row |
phase-d/evidence/EV__phase-d__glossary_adapters_version.md |
CREATE | Structured evidence |
Budget: 27 modified product files against a 30 limit, 0 new product files — and 14 of the 27 are cp with zero authored content, leaving 13 authored. Trace files (the RF, the EV file and its command-output attachments) are counted separately and do not spend the budget: owner ruling 2026-08-18, see AC-8. (This line read "1 new, 28 modified" until the review recounted; both halves were wrong.) — and 14 of the 28 are cp with zero authored content. Not split into two phases: splitting core from adapters is the TFW-42/C and TFW-46/C precedent that opens a desync window and buys a second review cycle for a phase whose acceptance test is one command.
5. Acceptance Criteria¶
AC-1: The vocabulary is defined, not merely used¶
Eight of the ten terms have zero occurrences in glossary.md today, measured. A term five files use and no file defines is jargon.
- [ ] Articles exist for: HL Contract · Contract Baseline · Frozen Section · Amendment · Amendment Log · Project North Star · Purpose Check ·
not fit for purpose·deferral confession(DoD-30) - [ ] The nine ship as
###entries under one new## Contract and Purpose Defencegrouping, placed after## Artifact Types, in DoD-30's order (ONB R1) - [ ] Plus Result Visualization, placed between
### Value Flowand### Findings Mapunder## Knowledge Terms— where both siblings actually live (corrected 2026-08-14, ONB §6.1: the TS named## Artifact Types, which is wrong; the operative requirement is "beside its siblings"). Content per HL §4 Phase D deliverable 1: what the finished outcome looks like, written from the finished state, rendered visually, showing the value and not only the artifact — the owner's checkpoint before the spend, not an illustration of the plan - [ ] Each article matches the house length. Measured across the 78 entries: median 35 words, p75 50, max 296 (the PV Index, a table) (corrected from "40", ONB §6.4). Ceiling is p75 = 50 words per article; report per-article
wc -w. An article that needs 150 is restating a rule that belongs inconventions.md - [ ] Each article ends with a
→pointer to the rule that governs it, following the existing entries' pattern - [ ]
AmendmentandAmendment Logare distinguishable by their first sentence — one is a proposal against a frozen claim, the other is the log that carries it. Two adjacent entries with converging definitions collapse into one within a few reads (the S1-vs-U7 lesson from TFW-56)
Gate: case-insensitive grep -ci each term in glossary.md → ≥1; wc -w per article. (Case-sensitive would fail deferral confession, which ships capitalised at judge.md:50 — ONB §6.5.)
Evidence: the ten articles, quoted
AC-2: One name per concept [depends: AC-1]¶
Measured drift, case-sensitive, across .tfw/** excluding CHANGELOG.md:
Table corrected 2026-08-14 from the ONB's re-measurement, reproduced by the coordinator. The original claimed three baseline names in six files; there are two, in five.
| Concept | Names in use today | Occurrences |
|---|---|---|
| The point the contract is frozen at | frozen baseline · Contract Baseline · one hybrid |
8 in five files · 2 in conventions.md (:73 is already the canonical heading, :94 reads "frozen contract baseline") · judge.md:34 "committed frozen baseline" fuses both retired forms |
| The anchor above the task | Project North Star · bare North Star · lower-case north star |
5 · 2 genuine, both the north-star field label and its explainer in templates/HL.md:18 and :20 · 13, permitted after first full mention |
uncommitted baselineis not a third name and is out of mandate (ONB Q1). Its two occurrences —conventions.md:75 andplan.md:60 — name the absence of a baseline.grep -rnE "[^n]committed baseline"returns 0 today. Substituting into them produces a sentence that means its opposite, and repairing that is a rewrite, which DoF-1 forbids. Leave both untouched; record the exclusion in the before/after table.
- [ ]
Contract Baselineis canonical — chosen by frozen DoD-30, which names it as the term to define, not by preference. Phrases like "at its frozen baseline" become "at its contract baseline": same word count - [ ]
Project North Staris canonical. One capitalised form only. Bare lower-casenorth starin running prose is permitted after the first full mention in a file — that is ordinary English, not drift. CapitalisedNorth StarwithoutProjectis the drift, because it reads as a second defined term - [ ]
templates/HL.md:18 and:20are renamed — the north-star field label and its explainer, the two genuine bare-capital occurrences (ONB Q2). A form field that saysNorth Starwhile the glossary definesProject North Starteaches the wrong name at the moment the reader is learning it. The field sits below the contract block, so §9's restriction does not reach it. 2 lines, +2 words, in a template off the F2 budget - [ ]
plan.mdandreview.mddo not grow. They sit at 1,195 and 1,176 against a 1,200 hard budget; a substitution that adds a word must find one to remove in the same sentence - [ ] Any third synonym pair found while sweeping is reported in RF §6, not fixed — the mandate is the two concepts above, and a consistency pass that keeps finding new work is how a cleanup phase becomes a rewrite
Gate: grep -rn each retired form across .tfw/ excluding CHANGELOG.md → 0; wc -w on both workflows before and after
Evidence: the before/after occurrence table and the two word counts
AC-3: Every adapter copy runs what the framework defines¶
The drift check in config.md currently prints 14 lines. Six are this task's doing (tfw-plan 82 diff lines × 2 folders, tfw-review 12 × 2, tfw-research 6 × 2); eight are pre-existing and belong to earlier tasks (tfw-init 41 × 2, tfw-handoff 14 × 2, tfw-update 12 × 2, tfw-knowledge 2 × 2).
- [ ] All fourteen are re-copied. Owner decision 2026-08-13: a binary check that keeps printing eight failures after the phase whose deliverable is adapter parity stops being read — the same mechanism that produced 0 of 38 evidence folders while the folder was optional (D53)
- [ ] The RF states the split — which six were ours, which eight were not — so a reviewer sees the boundary rather than inferring scope creep
- [ ] Direction verified before copying:
.tfw/is ahead of every copy, so this propagates already-reviewed content. If any copy turns out to be ahead of its source, stop and report — that is an undocumented edit in an adapter, not a sync - [ ] The drift check is run after the sync and its silent output recorded with its exit status
- [ ] Codex and
.agentsskills are thin routers (180 and 153 words), not copies. Check them for statements that are now false and edit only those. Both were verified clean of mode vocabulary by TFW-56; the check here is for contract and purpose vocabulary
Gate: the config.md drift check → no output; diff per copy → empty
Evidence: the check's output before (14 lines) and after (silent), both recorded verbatim
Note on DoD-32. It reads "adapter and entry-point copies of every changed workflow are re-synced (tfw-plan, tfw-review …)". Its parenthetical omits tfw-research, which Phase B changed — the general clause covers it, so no amendment. The eight unrelated copies are outside DoD-32 entirely and enter as a rule-6 refinement on owner instruction: DoD-32 stays satisfied and no DoF item is touched.
AC-4: The entry points describe what the workflows now do¶
- [ ]
CLAUDE.md's command table says/tfw-plandoes "Research, write HL, RESEARCH gate, scope decision, write TS" and/tfw-reviewdoes "Review RF against checklist, write REVIEW". Both are now incomplete: plan freezes the contract and routes amendments, review defends goals against the contract baseline. Two cells, a few words each - [ ]
AGENTS.mdcarries the same table without a description column — check and change only if something is false - [ ]
CLAUDE.md's table gains the two rows it is missing —/tfw-knowledgeand/tfw-config, both of whichAGENTS.mdcarries. Coordinator scope extension, recorded 2026-08-14 (ONB R6, overruling the executor's report-not-fix recommendation): DoD-32 does not cover these two, because this task did not change them. The ground is thatCLAUDE.mdis the entry point a Claude session reads,/tfw-knowledgeis a mandatory KNW-stage workflow, and omitting it makes that workflow invisible to the surface it serves. Limit: two rows, no other change toCLAUDE.md— widened 2026-08-18 by owner instruction to "two rows and two link corrections, nothing else"; see AC-11 - [ ] No new section is added to either file. They are entry points, not documentation (F22)
Gate: read both tables against plan.md Step 4/6c/6d and review.md Step 3
Evidence: N/A — textual
AC-5: The release is shippable and its purpose is not orphaned¶
- [ ]
VERSION1.1.0→1.2.0, andproject_config.yamltfw.versionwith it — the two have moved in lockstep on every release since 0.8.5, and letting them disagree here would be the first time (RF TFW-56 FC2) - [ ]
CHANGELOG.mdcarries one entry for Phases A–D, not four.### Addednames the HL contract, §12 Amendment Log, the Purpose Check and PV priority 0;### Changednamesplan.mdStep 6c's inversion and the retirement of the Judge mapping-integrity check;### Removednames what is gone by name, per the rule TFW-56 established for keys a file-level upgrade cannot surface - [ ] The TFW-54 pointer is recorded (DoD-33).
[TFW-54](../../TFW-54__agent_team_mode/)currently appears zero times anywhere in.tfw/. The contract exists to make delegation safe; without the pointer the reason is legible only inside this task's folder - [ ] Both
## [Unreleased]bullets are folded into1.2.0 ### Changed, and the Adapter Sync bullet's closing sentence is corrected, not carried verbatim (ONB R4). It currently reads "First run of the check found 12 drifted copies (6 workflows × 2 folders) — recorded, not yet repaired." Both halves are stale on this phase: the count is 14 (7 × 2) and the repair is AC-3. Folding it as written ships a release note that is false about the release it announces, on the day it ships, in the number that release corrects
Gate: cat .tfw/VERSION; grep -c "tfw.version: 1.2.0" .tfw/project_config.yaml; grep -c "[TFW-54](../../TFW-54__agent_team_mode/)" .tfw/CHANGELOG.md
Evidence: the entry, quoted
AC-6: Five debts close, and TD-164 closes first¶
- [ ] TD-164 (High) —
templates/HL.md:10 carries a fourth copy of the baseline recovery command. Amendment A13 removed that form from this task's HL at all three occurrences and pointed atconventions.md§3 rule 15; the template was missed, so every future HL is still born carrying it. Replace with the same pointer. This is the single-source-of-truth rule broken at the most visible point in the framework - [ ] TD-163 —
glossary.md:213 places the Knowledge Gate in "Phase 0 ofplan.md";plan.mdhas Steps 0–7 and no Phase 0 - [ ] TD-165 —
compilable_contract.md:81:NS{N}andPP{N}are declared in the §2 pattern table while the Resolution rules still readD{N}, P{N}, F{N}, TD-{N} → anchor links. A reference pattern that resolves nowhere is a rule with no enforcement site (F4), and the build script silently will not link either namespace. The gap is wider than the debt says (ONB §5.4):gen_docs.pyresolves onlyTD-{N}andD{N}, soP{N}andF{N}are already aspirational in that same line. Adding NS/PP keeps them at their neighbours' grain rather than inventing a claim. File one new debt covering all four patterns, naming the resolver as the site; extendinggen_docs.pystays out of scope - [ ] TD-167 —
compilable_contract.md:65: "Where references appear" opens withKNOWLEDGE.md §0 Source column, a section D37 removed in April. Six lines below the one Phase C corrected - [ ] TD-157 — closed by AC-3
- [ ] Each closure records the reason, not just the status
Gate: open each named line; python -m pytest docs/scripts/ still passes
Evidence: before/after for each of the five
AC-7: The phase changed no content it was not asked to change¶
The named risk of a consistency phase is that "consistency" becomes a licence to improve prose. HL §7.1 forbids it in as many words.
- [ ] Every diff hunk in
conventions.md,judge.md,review.md,plan.mdandHL.mdis one of: a canonical-term substitution, a named debt fix, or acp. No hunk is a rewritten sentence - [ ]
git diff --staton the six framework files is reported with a one-line justification per file - [ ] No section is added anywhere, and no template gains a field (F22)
Gate: git diff reviewed hunk by hunk against this list
Evidence: the diffstat with per-file justification
Second execution pass — corrective, added 2026-08-18¶
Origin: REVIEW Phase D 🔄 REVISE, four items. Every one was reproduced by the coordinator before being accepted or refused.
What is not reopened: no framework file is re-edited except AC-11's two links, no glossary article changes, no adapter is re-copied, the release stands. AC-1 through AC-7 keep their functional outcomes — the reviewer confirmed all seven and all of frozen DoD 30–33. This pass repairs the trace, not the work.
One review item is refused, and stated as refused. Item 1 asked to "consolidate or remove at least three supporting evidence files." Deleting proof to satisfy a counter is not available in this framework, and least of all in this task. The count is corrected instead — see AC-8.
AC-8: The scope budget is counted under a stated rule, and the rule's ambiguity is filed¶
The reviewer counted 33 files against max_files_per_phase: 30 and called it an unapproved breach. The count is right; what it counts was never defined. Three artifacts in this repository read the same rule three ways: RF TFW-56 counted product plus evidence and excluded the RF; this TS counted product plus one evidence file; the review counted everything.
- [ ] Owner ruling, 2026-08-18: the budget counts product files, not task artifacts. The RF, the EV file and its attachments are the trace of a change, not the change.
conventions.md§6's own rationale is "agent maintains full context of changed files" — a savedgrepoutput carries no context to hold - [ ] Recount under that rule and record it with the rule stated beside it: 27 modified product files against 30, of which 14 are
cpwith zero authored content, leaving 13 authored. New product files: 0 - [ ] The six created files are named as trace and listed separately: the RF, the EV file and four command-output attachments
- [ ] RF §1 and the EV file are corrected to this accounting. The earlier "28 modified / 1 new" figure came from this TS and was wrong in both halves
- [ ] File a new debt:
max_files_per_phasedoes not define its own subject. Site:conventions.md§6 andproject_config.yaml. Not fixed here — §6 is not this phase's to edit and HL §7.1 binds D to terminology only. Record the owner's ruling inside the debt row so the follow-up implements a decision instead of reopening it
Gate: the recount, with the counting rule quoted beside it Evidence: the file list split into product and trace
AC-9: The AC-7 ledger reproduces¶
- [ ] The command is named exactly and its output matches the number reported. Reproduced by the coordinator:
git diff -U0across the six framework files returns 16 hunk headers, not 12 — per fileconventions.md2 ·glossary.md4 ·templates/HL.md4 ·judge.md2 ·review.md2 ·compilable_contract.md2 - [ ] The semantic ledger reports 11 canonical substitutions, not 8
- [ ] AC-7 asked for
git diff --stat; the RF reported-U0hunks. Report both, or name the one used and use it consistently - [ ] Propagated to RF §3, RF §9 and EV E17
- [ ] Every hunk still classifies as a canonical substitution, a named debt fix, or a
cp— the reviewer confirmed this, so AC-7's claim is unaffected. Only the count was wrong, which in this task is not a small thing: a number in an evidence file that a reader cannot reproduce is the same defect class as Phase C's truncated citation
Gate: run the named command, compare with the reported figure Evidence: the command and its raw output
AC-10: §7 and §8 carry knowledge, not computation¶
The RF template's §8 is unambiguous — "Only when the human provides domain knowledge… If no human interaction occurred — write No strategic insights." All four entries are agent analysis. §7 is not unambiguous, and that is a separate finding, below.
- [ ] §8 becomes
No strategic insights.with one line of reason: the owner's input reached this phase at TS approval, and the ONB answers came from the coordinator, so no human domain knowledge entered during execution - [ ] §7 keeps FC3 only — the owner's reasoning for syncing all fourteen copies. It is human-sourced and sits in no knowledge file yet. FC1, FC2 and FC4 are dropped: they restate coordinator rulings the ONB and this TS already carry, and re-recording a decision where it was made is duplication, not knowledge
- [ ] Nothing of value is deleted — it is re-homed, and the RF says where each item went:
- S3 (the Codex
tfw-planrouter'sdescriptiongranted whatconventions.md§3 rule 3 now forbids) → §2 Key Decisions. It describes a change that was made, not an insight - S4 (this session was invoked from the stale
tfw-handoffcopy it was sent to repair) → §6 Observations, environment - S2's operative half (a terminology gate written as a raw substring
grepcannot distinguish a concept from its denial —uncommitted baselinematched the sweep forcommitted baseline) → §6 Observations, naming. Worth keeping: it is why AC-2's gate had to be re-read at ONB - FC5 (the
config.mddrift check is abashsnippet and is a parse error in this project's primary shell) → §6 Observations, environment - S1 and FC2 → dropped. Both are commentary on this TS's measurement quality, already recorded in the ONB and in the coordinator's commit
- [ ] File a new debt: the RF and REVIEW templates contradict themselves on §7. Scope says "Agent-observed project patterns discovered during execution"; the Human-Only Test four lines below says "if an agent can discover it by reading code or running commands — it's not a fact candidate." Both cannot hold. The executor read the first, the reviewer read the second, and both were reading the same file. Record the second half too: RF TFW-56 (3 entries), RF Phase B (2) and RF Phase C (4) all carried agent-derived §8 entries and four consecutive reviews approved them — the test has been unenforced while feeding
/tfw-knowledge. Not fixed here: it is a template edit, and this phase touches no template beyond the two lines AC-2 names
Gate: read §7 and §8; confirm each re-homed item appears at its stated destination Evidence: N/A — textual
AC-11: The broken entry-point links are fixed [owner instruction, 2026-08-18]¶
RF §6 observation 5 found it; the review routed it to TD-172. The owner ruled it fixed here instead.
- [ ]
CLAUDE.mdpoints twice at.tfw/PROJECT_CONFIG.yaml; the tracked file is.tfw/project_config.yaml, renamed by D48 in April 2026. Both links are broken on any case-sensitive filesystem — Windows masks it, a Linux clone does not - [ ] Scope extension recorded: AC-4's limit "two rows, no other change to
CLAUDE.md" becomes "two rows and two link corrections, nothing else." Owner instruction, not an executor judgement call - [ ]
AGENTS.mdand the rest of the repository are checked for the same retired filename; anything found outsideCLAUDE.mdis reported, not fixed - [ ] TD-172 closed with its reason recorded
Gate: grep -rn "PROJECT_CONFIG" CLAUDE.md AGENTS.md → no matches
Evidence: the grep, before and after
AC-12: The evidence verdict is recomputed, not restored [depends: AC-8, AC-9, AC-10]¶
- [ ] The EV verdict is recomputed after the items above. The reviewer's supported count was 17 of 19 — E17 (the ledger) and E19 (the budget) did not establish their claims
- [ ] If both are repaired the verdict may return to 19 of 19, but it is recomputed, not restored: state which rows changed and why
- [ ] No row is upgraded without its underlying artifact changing
Gate: read the EV verdict against its rows Evidence: the corrected verdict block
Evidence Artifacts¶
| File | Description |
|---|---|
evidence/EV__phase-d__glossary_adapters_version.md |
Environment header, per-AC table, verdict (required) |
6. Technical Guidance¶
Reference material, not instructions. Deviate with justification in the RF.
Six debts were routed here by earlier reviews and are being re-routed out. The reasoning, so the RF does not have to re-derive it:
| Debt | Why not Phase D | Where it goes |
|---|---|---|
TD-140 (HL.md +76% in one phase), TD-142 (Phase A's artifacts are the largest in the repo) |
Artifact growth, not naming. This is TFW-57's entire subject and TD-142 already says so | TFW-57 |
TD-153 (RES.md's two classes cannot hold TS-aimed output), TD-154 (plan.md 6d has no 🚫 WITHDRAWN path) |
Gaps in a mechanism, not inconsistencies in a name. TD-154 also has nowhere to land: 14 words against 5 of headroom | Follow-up task |
| TD-155 (the re-freeze trigger reads "after an approved amendment" but fired after a refinement) | It is a rewording of conventions.md §3 rules 13–15 — Phase A's section. HL §7.1 forbids this phase from rewriting another phase's entries, and that outranks a debt row's routing note written before the ownership rule existed |
Follow-up task, or a Phase A amendment if it proves substantive |
TD-158 (HL.md §3.1 bullet 2 lists "a narrative timeline" in the bullet ending "Prose alone is not a rendering") |
Added 2026-08-14, ONB Q3. Its row pointed at Phase D and it appeared in neither TS list — my omission: the re-route list was built from the Phase C review's rows and TECH_DEBT.md was never re-scanned for older ones. It fails the same two tests as TD-155: a sentence rewrite (DoF-1) inside Phase A's section (§7.1). The executor re-scans for any other row pointing here and reports what it finds |
Follow-up task |
| TD-120 (EV template absent from the Source Manifest) | Neither naming nor adapters | Backlog |
The two workflows are effectively full. plan.md 1,195 and review.md 1,176 against F2's 1,200 hard limit. Phase D adds nothing to either, so this does not block the phase — but it means any substitution must be word-neutral, and it is the strongest available argument for TFW-57.
judge.md went 639 → 1,165 words in Phase C. It is a template, so F2 does not bind it, and Phase C's design put the mechanism in a block below the table precisely to keep review.md off the budget. Recorded as an observation for TFW-57, not as a defect of this phase. Do not compress it here.
Glossary placement. Value Flow (line 50) and Findings Map (line 53) are ### entries under ## Artifact Types. Result Visualization joins them there. The contract terms are a different kind and may need their own ## grouping — the existing file has 78 entries under 33 groupings, so adding one is in keeping.
Direction of the adapter copy. Confirm with diff per pair before copying, not after. The whole sync is safe only because .tfw/ is canonical and ahead everywhere; a copy that is ahead of its source means someone edited an adapter directly, which is a finding, not a merge.
7. Definition of Failure¶
- ❌ A sentence is rewritten under the consistency banner — HL §7.1's explicit prohibition, and the way a cleanup phase becomes a redesign
- ❌
plan.mdorreview.mdcrosses 1,200 words - ❌ The drift check still prints after the sync, or the sync is reported without the check having been run (
config.md's own anti-pattern) - ❌ An adapter copy is found ahead of its source and merged instead of reported
- ❌ A glossary article restates a rule instead of defining a term — the article is 150 words and
conventions.mdalready says it - ❌ TD-164 is closed by editing the template's copy of the command rather than replacing it with the pointer — the defect is the fourth copy existing, not its wording
- ❌ A re-routed debt (TD-140, TD-142, TD-153, TD-154, TD-155, TD-120) is fixed here anyway
- ❌
VERSIONandtfw.versiondisagree - ❌ The version ships without the TFW-54 pointer, orphaning the contract's stated purpose
8. Phase Risks¶
| Risk | Mitigation |
|---|---|
| The consistency sweep keeps finding new synonym pairs and the phase never ends | AC-2's last bullet: report a third pair, do not fix it. The mandate is two concepts, both measured |
| Copying eight unrelated adapters ships something unreviewed | Direction check first: .tfw/ is ahead everywhere, so the copy propagates reviewed content. A copy ahead of source stops the phase |
| 28 modified files against a 30 budget | 14 are cp. Splitting would open a desync window — the TFW-42/C precedent — for a phase whose acceptance test is one command |
| A glossary article contradicts the rule it names | Each article ends in a → pointer to its governing rule, so the two are read together |
CHANGELOG for four phases becomes an essay |
One entry, three blocks, named artifacts. The release note is a diff summary, not a retelling of the task |
9. Cross-Phase Modifications¶
| File | Also modified in | Coordination note |
|---|---|---|
.tfw/conventions.md |
A (§3, §14), B (§14), C (§3 north star, §14), E (§5, §13, §14) | D changes terminology only — never section content. Phase E has not run and may add to §5/§13/§14 after this |
.tfw/glossary.md |
C (PV Index priority 0) | D adds the term articles C deliberately did not pre-empt |
.tfw/templates/HL.md |
A (contract header, §12), B (§3.1) | D touches the header's recovery-command line (TD-164) and nothing else in the contract block |
README.md |
concurrent TFW-55 session | Stage by explicit path. If the board row is held, leave it uncommitted and say so — the coordinator lands it |
TS — TFW-53 / Phase D: Glossary, Adapters and Version | 2026-08-13