Skip to content

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 baseline ruled 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 in CLAUDE.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 missing Result 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.yaml tfw.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.01.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 Defence grouping, placed after ## Artifact Types, in DoD-30's order (ONB R1)
  • [ ] Plus Result Visualization, placed between ### Value Flow and ### Findings Map under ## 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 in conventions.md
  • [ ] Each article ends with a pointer to the rule that governs it, following the existing entries' pattern
  • [ ] Amendment and Amendment Log are 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 baseline is not a third name and is out of mandate (ONB Q1). Its two occurrences — conventions.md:75 and plan.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 Baseline is 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 Star is canonical. One capitalised form only. Bare lower-case north star in running prose is permitted after the first full mention in a file — that is ordinary English, not drift. Capitalised North Star without Project is the drift, because it reads as a second defined term
  • [ ] templates/HL.md:18 and :20 are renamed — the north-star field label and its explainer, the two genuine bare-capital occurrences (ONB Q2). A form field that says North Star while the glossary defines Project North Star teaches 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.md and review.md do 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 .agents skills 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-plan does "Research, write HL, RESEARCH gate, scope decision, write TS" and /tfw-review does "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.md carries 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-knowledge and /tfw-config, both of which AGENTS.md carries. 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 that CLAUDE.md is the entry point a Claude session reads, /tfw-knowledge is a mandatory KNW-stage workflow, and omitting it makes that workflow invisible to the surface it serves. Limit: two rows, no other change to CLAUDE.mdwidened 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

  • [ ] VERSION 1.1.01.2.0, and project_config.yaml tfw.version with 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.md carries one entry for Phases A–D, not four. ### Added names the HL contract, §12 Amendment Log, the Purpose Check and PV priority 0; ### Changed names plan.md Step 6c's inversion and the retirement of the Judge mapping-integrity check; ### Removed names 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 into 1.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 at conventions.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-163glossary.md:213 places the Knowledge Gate in "Phase 0 of plan.md"; plan.md has Steps 0–7 and no Phase 0
  • [ ] TD-165compilable_contract.md:81: NS{N} and PP{N} are declared in the §2 pattern table while the Resolution rules still read D{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.py resolves only TD-{N} and D{N}, so P{N} and F{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; extending gen_docs.py stays out of scope
  • [ ] TD-167compilable_contract.md:65: "Where references appear" opens with KNOWLEDGE.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.md and HL.md is one of: a canonical-term substitution, a named debt fix, or a cp. No hunk is a rewritten sentence
  • [ ] git diff --stat on 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 saved grep output 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 cp with 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_phase does not define its own subject. Site: conventions.md §6 and project_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 -U0 across the six framework files returns 16 hunk headers, not 12 — per file conventions.md 2 · glossary.md 4 · templates/HL.md 4 · judge.md 2 · review.md 2 · compilable_contract.md 2
  • [ ] The semantic ledger reports 11 canonical substitutions, not 8
  • [ ] AC-7 asked for git diff --stat; the RF reported -U0 hunks. 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-plan router's description granted what conventions.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-handoff copy it was sent to repair) → §6 Observations, environment
  • S2's operative half (a terminology gate written as a raw substring grep cannot distinguish a concept from its denial — uncommitted baseline matched the sweep for committed baseline) → §6 Observations, naming. Worth keeping: it is why AC-2's gate had to be re-read at ONB
  • FC5 (the config.md drift check is a bash snippet 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.md points 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.md and the rest of the repository are checked for the same retired filename; anything found outside CLAUDE.md is 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.md or review.md crosses 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.md already 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
  • VERSION and tfw.version disagree
  • ❌ 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