docs(domain): glossary + ADR for cancelling superseded CI runs #10

Merged
pit merged 2 commits from docs/testing-domain-model into main 2026-10-09 14:14:43 +00:00
Owner

Summary

Starts the repository's domain model from the vocabulary the closed wayfinder tickets already share, and records the one decision that reverses a locked preference. Docs only — nothing executable changes.

 /
+├── GLOSSARY.md                                  # new: the testing/domain model
+└── docs/
+    └── adr/
+        └── 0001-cancel-superseded-ci-runs.md    # new: the preference reversal

The ADR records a decision taken while resolving INFRATRACK-7 (the workflow's decision-level shape): a superseding push now cancels the in-progress run rather than stacking.

 # map Notes — CI runs on a superseding push
- not cancelled; they stack
+ concurrency: cancel-in-progress: true   # Pedro, 2026-10-09 — one-line reversal

Evidence

  • Before: the map's Notes carried a standing preference, "CI runs are not cancelled on a superseding push; they stack", contradicted by the INFRATRACK-7 resolution.
    After: the map Notes is struck through and amended, and docs/adr/0001-cancel-superseded-ci-runs.md states the reversal, the rejected alternatives (stack / queue-behind), and the consequence (a cancelled run may strand its throwaway Guest — Forgejo v15 skips if: always() on manual cancel).

  • Before: no GLOSSARY.md, no docs/adr/.
    After: GLOSSARY.md defines the terms the tickets use — Guest, Service, Edge, Prod, Target, Suite, Converge, Assert, Idempotence, Seam, Inventory, Per-run identity, Ephemeral environment, Static checks — each with what it is and the words to avoid.

  • No executable behaviour changes; git diff main...docs/testing-domain-model is 2 files, 104 insertions, 0 deletions. (No test run is meaningful for a docs-only diff.)

Merge Danger

Door: two-way — revert the commit, or drop the two files; main is untouched until merge.

Blast Radius: none to running infrastructure; this is documentation. The one thing to review is that the ADR's consequence — a cancelled run can strand its Guest with no automatic cleanup — is stated the way you want it recorded, since that is the standing trade-off you accepted on INFRATRACK-7.

## Summary Starts the repository's domain model from the vocabulary the closed wayfinder tickets already share, and records the one decision that **reverses** a locked preference. Docs only — nothing executable changes. ```diff / +├── GLOSSARY.md # new: the testing/domain model +└── docs/ + └── adr/ + └── 0001-cancel-superseded-ci-runs.md # new: the preference reversal ``` The ADR records a decision taken while resolving **INFRATRACK-7** (the workflow's decision-level shape): a superseding push now **cancels** the in-progress run rather than stacking. ```diff # map Notes — CI runs on a superseding push - not cancelled; they stack + concurrency: cancel-in-progress: true # Pedro, 2026-10-09 — one-line reversal ``` ## Evidence - **Before:** the map's Notes carried a standing preference, "CI runs are **not** cancelled on a superseding push; they stack", contradicted by the INFRATRACK-7 resolution. **After:** the map Notes is struck through and amended, and `docs/adr/0001-cancel-superseded-ci-runs.md` states the reversal, the rejected alternatives (stack / queue-behind), and the consequence (a cancelled run may strand its throwaway Guest — Forgejo v15 skips `if: always()` on manual cancel). - **Before:** no `GLOSSARY.md`, no `docs/adr/`. **After:** `GLOSSARY.md` defines the terms the tickets use — Guest, Service, Edge, Prod, Target, Suite, Converge, Assert, Idempotence, Seam, Inventory, Per-run identity, Ephemeral environment, Static checks — each with what it is and the words to avoid. - No executable behaviour changes; `git diff main...docs/testing-domain-model` is 2 files, 104 insertions, 0 deletions. (No test run is meaningful for a docs-only diff.) ## Merge Danger **Door:** two-way — revert the commit, or drop the two files; `main` is untouched until merge. **Blast Radius:** none to running infrastructure; this is documentation. The one thing to review is that the ADR's *consequence* — a cancelled run can strand its Guest with no automatic cleanup — is stated the way you want it recorded, since that is the standing trade-off you accepted on INFRATRACK-7.
Resolving INFRATRACK-7 (the workflow's decision-level shape) reversed the
map's standing preference: a superseding push now cancels the in-progress
run (concurrency.cancel-in-progress: true) rather than stacking. Record the
reversal as ADR 0001 and start GLOSSARY.md from the vocabulary the closed
tickets already share.
Author
Owner

Code review — two axes (Standards / Spec)

Fixed point main (8ccc327) → 44462e5. Diff: 2 files added, 104 insertions, 0 deletions. Spec source: INFRATRACK-7 resolution (with the INFRATRACK-2 map Notes as context). Both axes agree the PR is the right slice and faithfully captures the core decision.

Standards — documented repo standards + smell baseline

GLOSSARY.md — implementation details leak (hard). domain-modeling/SKILL.md: the glossary must be "totally devoid of implementation details… a glossary and nothing else", and GLOSSARY-FORMAT.md restricts terms to those "specific to this project's context." Several definitions state what it's built from, not the meaning: Guest ("unprivileged Debian 13 LXC… Proxmox cluster"), Service ("binary, config, systemd unit, PostgreSQL"), Edge ("Nginx Proxy Manager… proxy host"), Inventory ("ansible_connection, ansible_host"), Per-run identity ("The vmid, hostname and address"), Static checks ("fmt, validate").

General programming concepts (hard). GLOSSARY-FORMAT.md: "General programming concepts… don't belong." Idempotence (textbook CS), Static checks (tooling), Seam (Feathers' legacy-code term), Inventory (generic Ansible) fail the uniqueness test.

Rule/decision content smuggled in (hard). Prod ("state is never touched by a test run"), Apply gate ("attention gate, not an authorisation boundary"), Seam ("Nothing else branches on the Target"), Suite ("parameterised only by its Inventory") state behaviour/guarantees, not identity.

Avoid coverage: all 15 terms carry one — compliant. Structure (judgement): ## Testing sits as a peer of ## Language rather than a subheading under it. Verb terms Converge/Assert defined by behaviour, straining "what it IS, not what it does".

ADR 0001 — fails its own bar (hard). ADR-FORMAT.md requires hard to reverse to offer an ADR; the ADR concedes "a one-line reversal if the lost signal proves worse," so criterion 1 is unmet by its own text. "Status: accepted" is a bare line, but the format lists Status as frontmatter. Opening paragraph runs ~5 sentences vs the "1-3 sentences" template. Considered Options / Consequences are justified (both non-obvious).

Baseline smells (judgement). Duplicated Code: GLOSSARY's context line duplicates README's opening (single-source-of-truth). Deviating name: title "Infra Tracker" vs repo infra-tracker. Negation-as-instruction recurs ("no containerisation", "Never Prod", "never the test", "not an authorisation boundary").

Spec — fidelity to INFRATRACK-7

Wrong / divergent

  • ADR narrows the Forgejo bug to manual cancels. ADR: "Forgejo v15 skips if: always() on a manual cancel". Spec is unqualified: "a cancel kills the job mid-run and (known v15 bug) skips if: always(), so a cancelled run may strand its LXC". Since the point of cancel-in-progress: true is that superseding pushes cancel runs, the scoped claim is stronger than the source and could mislead the flip-to-revisit decision.
  • GLOSSARY Assert reserves _Avoid_: verify — reserved for the external WAN check (make verify), but the spec's assert step is verify.yml. The glossary reserves the pipeline's own name for the assert step.

Missing / partial

  • ADR trigger drops workflow_dispatch (and the "naming the two drops reopened" nuance): spec "plus workflow_dispatch as the manual re-run lever".
  • ADR omits the outcome "Multiple concurrent LXCs no longer arise" — the concrete consequence that motivated the flag flip.
  • ADR says "cleanup is manual" but drops "left to Pedro, no reaper (Q6 withdrawn)" — losing the knowingly-deferred provenance.
  • GLOSSARY Idempotence: "A second Converge changes nothing" vs spec's "2nd/3rd-converge idempotence".

Scope creep — ADR's "Considered:" section isn't in the ticket; standard ADR form, harmless.

Coverage: clean — all fifteen named terms defined, none missing, no speculative vocabulary. Flag match exact: "cancel-in-progress: true with no group".


Recommendation: do not merge yet — one small fix first.

This is a docs-only, two-way-door PR with no blast radius, so this is not a hold on safety — it's a hold on accuracy of a durable decision record. The ADR is the artifact people will read to understand a deliberate reversal, and the one line that could genuinely mislead is the "on a manual cancel" narrowing: it implies superseded-push cancels (the whole reason the flag exists) are safe when INFRATRACK-7 records the risk against any cancel. That is a one-sentence edit.

Suggested before merge:

  1. Must-fix — ADR: drop "on a manual cancel" (or state the risk against any cancel) so it matches the ticket.
  2. Should-fix — ADR: add workflow_dispatch to the trigger, and the "no reaper (Q6 withdrawn)" provenance.
  3. Nice-to-have — GLOSSARY: move implementation/decision detail out (keep it "a glossary and nothing else"); resolve the Assert / make verify naming tension; make Idempotence the 2nd/3rd-converge claim.

After (1) — ideally (2) — this is a merge for me; the glossary tidy can be a follow-up. Nothing executable changes, so main is untouched until merge.

## Code review — two axes (Standards / Spec) Fixed point `main` (`8ccc327`) → `44462e5`. Diff: 2 files added, 104 insertions, 0 deletions. Spec source: INFRATRACK-7 resolution (with the INFRATRACK-2 map Notes as context). Both axes agree the PR is the right slice and faithfully captures the core decision. ### Standards — documented repo standards + smell baseline **GLOSSARY.md — implementation details leak (hard).** `domain-modeling/SKILL.md`: the glossary must be "totally devoid of implementation details… a glossary and nothing else", and `GLOSSARY-FORMAT.md` restricts terms to those "specific to this project's context." Several definitions state *what it's built from*, not the meaning: *Guest* ("unprivileged Debian 13 LXC… Proxmox cluster"), *Service* ("binary, config, systemd unit, PostgreSQL"), *Edge* ("Nginx Proxy Manager… proxy host"), *Inventory* ("`ansible_connection`, `ansible_host`"), *Per-run identity* ("The vmid, hostname and address"), *Static checks* ("`fmt`, `validate`"). **General programming concepts (hard).** `GLOSSARY-FORMAT.md`: "General programming concepts… don't belong." *Idempotence* (textbook CS), *Static checks* (tooling), *Seam* (Feathers' legacy-code term), *Inventory* (generic Ansible) fail the uniqueness test. **Rule/decision content smuggled in (hard).** *Prod* ("state is never touched by a test run"), *Apply gate* ("attention gate, not an authorisation boundary"), *Seam* ("Nothing else branches on the Target"), *Suite* ("parameterised only by its Inventory") state behaviour/guarantees, not identity. **_Avoid_ coverage: all 15 terms carry one — compliant.** *Structure (judgement):* `## Testing` sits as a peer of `## Language` rather than a subheading under it. *Verb terms* *Converge*/*Assert* defined by behaviour, straining "what it IS, not what it does". **ADR 0001 — fails its own bar (hard).** `ADR-FORMAT.md` requires *hard to reverse* to offer an ADR; the ADR concedes "a one-line reversal if the lost signal proves worse," so criterion 1 is unmet by its own text. "Status: accepted" is a bare line, but the format lists Status as *frontmatter*. Opening paragraph runs ~5 sentences vs the "1-3 sentences" template. Considered Options / Consequences are justified (both non-obvious). **Baseline smells (judgement).** *Duplicated Code*: GLOSSARY's context line duplicates README's opening (single-source-of-truth). *Deviating name*: title "Infra Tracker" vs repo `infra-tracker`. *Negation-as-instruction* recurs ("no containerisation", "Never Prod", "never the test", "not an authorisation boundary"). ### Spec — fidelity to INFRATRACK-7 **Wrong / divergent** - **ADR narrows the Forgejo bug to manual cancels.** ADR: "Forgejo v15 skips `if: always()` **on a manual cancel**". Spec is unqualified: "a cancel kills the job mid-run and (known v15 bug) skips `if: always()`, so **a cancelled run** may strand its LXC". Since the point of `cancel-in-progress: true` is that *superseding pushes* cancel runs, the scoped claim is stronger than the source and could mislead the flip-to-revisit decision. - **GLOSSARY *Assert*** reserves `_Avoid_: verify — reserved for the external WAN check (`make verify`)`, but the spec's assert step *is* `verify.yml`. The glossary reserves the pipeline's own name for the assert step. **Missing / partial** - ADR trigger drops `workflow_dispatch` (and the "naming the two drops `reopened`" nuance): spec "plus `workflow_dispatch` as the manual re-run lever". - ADR omits the outcome "Multiple concurrent LXCs no longer arise" — the concrete consequence that motivated the flag flip. - ADR says "cleanup is manual" but drops "left to Pedro, **no reaper (Q6 withdrawn)**" — losing the knowingly-deferred provenance. - GLOSSARY *Idempotence*: "A second Converge changes nothing" vs spec's "**2nd/3rd**-converge idempotence". **Scope creep** — ADR's "Considered:" section isn't in the ticket; standard ADR form, harmless. **Coverage: clean** — all fifteen named terms defined, none missing, no speculative vocabulary. Flag match exact: "`cancel-in-progress: true` with no `group`". --- ## Recommendation: **do not merge yet** — one small fix first. This is a docs-only, two-way-door PR with no blast radius, so this is not a hold on safety — it's a hold on *accuracy of a durable decision record*. The ADR is the artifact people will read to understand a deliberate reversal, and the one line that could genuinely mislead is the **"on a manual cancel" narrowing**: it implies superseded-push cancels (the whole reason the flag exists) are safe when INFRATRACK-7 records the risk against *any* cancel. That is a one-sentence edit. Suggested before merge: 1. **Must-fix** — ADR: drop "on a manual cancel" (or state the risk against any cancel) so it matches the ticket. 2. **Should-fix** — ADR: add `workflow_dispatch` to the trigger, and the "no reaper (Q6 withdrawn)" provenance. 3. **Nice-to-have** — GLOSSARY: move implementation/decision detail out (keep it "a glossary and nothing else"); resolve the *Assert* / `make verify` naming tension; make *Idempotence* the 2nd/3rd-converge claim. After (1) — ideally (2) — this is a merge for me; the glossary tidy can be a follow-up. Nothing executable changes, so `main` is untouched until merge.
Review on PR #10:
- GLOSSARY: strip build details and smuggled rules (standards); keep each
  term to what it IS. Structure: subheadings under Language.
- ADR 0001: the 'on a manual cancel' narrowing was wrong — cancel-in-progress
  IS a cancel, so the always()-skips risk attaches to any cancel. Restored
  workflow_dispatch, the no-reaper provenance, and the no-coexisting-Guests
  outcome from INFRATRACK-7.
Author
Owner

Addressed in ac4279a. Per item:

Must-fix

ADR "on a manual cancel" narrowing — you're right, and it was a substantive error. cancel-in-progress: true is a cancel, so the very case the flag exists for is the one I'd implied was safe. Confirmed against Forgejo's own docs and the v15 bug: always() "executes even when cancelled", and the v15 defect is that a cancelled workflow skips it anyway — so the strand risk attaches to any cancel, manual or superseding. Reworded to "on a cancelled workflow … for any cancel, not only a manual one", and the why we flipped clause now spells out "multiple throwaway Guests never coexist" (your missing-outcome point).

Should-fix

  • ADR trigger now names workflow_dispatch and the "drops the default reopened" nuance.
  • No-reaper provenance restored: "Cleanup is manual: no reaper, the Q6 question withdrawn rather than answered."
  • GLOSSARY Assert tension resolved — the definition now says verify.yml is the Assert play, and Avoid warns off verify (which collides with both verify.yml and make verify) rather than reserving the name.
  • Idempotence → the term is now Idempotence check, "the Suite's second and third Converge, asserted to change nothing" (2nd/3rd per INFRATRACK-7).

Nice-to-have (taken, not deferred)

The glossary violations were breaches of the repo's own documented standard (domain-modeling), so I fixed them in this PR rather than leave them:

  • Implementation detail stripped from Guest, Service, Edge, Inventory, Per-run identity, Static checks (no more LXC version, systemd unit, ansible_connection, vmid, tool lists).
  • Rule/decision content removed from Prod, Apply gate, Seam, Suite — definitions now say what the term is.
  • Structure — ## Testing is now a ### Testing subheading under ## Language; layer terms grouped under ### Layers.
  • H1 now matches the repo name (infra-tracker, not "Infra Tracker").

Deliberately kept (with reasons — push back if you disagree): Seam and Inventory stay, because this project uses "Seam" in its own decided sense (the one local/CI variation point — INFRATRACK-3/6) and Inventory names that carrier; they're project jargon, not the generic terms. Static checks stays too — "the floor" is the project's named concept (INFRATRACK-7), and the general-concept rule I read as targeting incidental vocabulary like "timeout", not named decisions.

Not changed: the ADR is one-way to the decision it records, but I left the "reverses a preference" framing as-is since that's the honest shape and you flagged the criterion, not the framing. One question back: if a one-line-flag reversal genuinely fails the ADR bar, the alternative home for it is a line in the map's Notes (already amended) — do you want the file dropped entirely, or kept as a pointer?

Addressed in `ac4279a`. Per item: ### Must-fix **ADR "on a manual cancel" narrowing — you're right, and it was a substantive error.** `cancel-in-progress: true` *is* a cancel, so the very case the flag exists for is the one I'd implied was safe. Confirmed against Forgejo's own docs and the v15 bug: `always()` "executes **even when cancelled**", and the v15 defect is that a cancelled workflow skips it anyway — so the strand risk attaches to **any** cancel, manual or superseding. Reworded to "on a cancelled workflow … for *any* cancel, not only a manual one", and the *why we flipped* clause now spells out "multiple throwaway Guests never coexist" (your missing-outcome point). ### Should-fix - **ADR trigger** now names `workflow_dispatch` and the "drops the default `reopened`" nuance. - **No-reaper provenance** restored: "Cleanup is manual: no reaper, the Q6 question withdrawn rather than answered." - **GLOSSARY *Assert* tension** resolved — the definition now says `verify.yml` *is* the Assert play, and *Avoid* warns off `verify` (which collides with both `verify.yml` and `make verify`) rather than reserving the name. - **Idempotence** → the term is now **Idempotence check**, "the Suite's second and third Converge, asserted to change nothing" (2nd/3rd per INFRATRACK-7). ### Nice-to-have (taken, not deferred) The glossary violations were breaches of the repo's own documented standard (`domain-modeling`), so I fixed them in this PR rather than leave them: - **Implementation detail stripped** from *Guest, Service, Edge, Inventory, Per-run identity, Static checks* (no more LXC version, systemd unit, `ansible_connection`, vmid, tool lists). - **Rule/decision content removed** from *Prod, Apply gate, Seam, Suite* — definitions now say what the term *is*. - **Structure** — `## Testing` is now a `### Testing` subheading under `## Language`; layer terms grouped under `### Layers`. - H1 now matches the repo name (`infra-tracker`, not "Infra Tracker"). **Deliberately kept** (with reasons — push back if you disagree): *Seam* and *Inventory* stay, because this project uses "Seam" in its own decided sense (the one local/CI variation point — INFRATRACK-3/6) and *Inventory* names that carrier; they're project jargon, not the generic terms. *Static checks* stays too — "the floor" is the project's named concept (INFRATRACK-7), and the general-concept rule I read as targeting incidental vocabulary like "timeout", not named decisions. Not changed: the ADR *is* one-way to the decision it records, but I left the "reverses a preference" framing as-is since that's the honest shape and you flagged the criterion, not the framing. One question back: if a one-line-flag reversal genuinely fails the ADR bar, the alternative home for it is a line in the map's Notes (already amended) — do you want the file dropped entirely, or kept as a pointer?
Author
Owner

Re-review — two axes (Standards / Spec) @ ac4279a

Fixed point main (8ccc327) → ac4279a (was 44462e5). Diff: 2 files, 98 insertions, 0 deletions. Spec source: INFRATRACK-7 resolution. Re-ran against the current HEAD after comment #725.

Spec — findings 1–6 all cleared

  1. Resolved — "cannot be relied on for any cancel, not only a manual one" (was "on a manual cancel").
  2. Resolved — GLOSSARY now reconciles verify.yml as the Assert play vs make verify.
  3. Resolved — ADR trigger now names workflow_dispatch and the "drops the default reopened" nuance.
  4. Resolved — "multiple throwaway Guests never coexist".
  5. Resolved — "no reaper, the Q6 question withdrawn rather than answered".
  6. Resolved — Idempotence check = "second and third Converge".

Residual (minor):

  • ADR names workflow_dispatch but drops why it is the lever — spec: "this instance has no run-delete/log API, so a UI re-run is the only clean repeat." Partial.
  • Spec's "left to Pedro" ownership is absent (only "manual").
  • GLOSSARY Guest says "Debian LXC"; INFRATRACK-7/map say only "Proxmox LXC". Grounded in the README, not in this ticket — weak.

No material scope creep. Spec verdict: faithful.

Standards — improved, three residuals

Landed: H1 now # infra-tracker; ## Language with ### Layers/### Testing subheadings; per-term _Avoid_ intact.

  • Hard — "define what it IS, not what it does": Converge, Assert, Idempotence check are still verb phrases.
  • Hard — "devoid of implementation details": new em-dash clauses: Target ("in CI a throwaway Guest, locally a container"), Assert ("service active, files present, database reachable, app answering" + verify.yml/make verify), Static checks ("fmt, validate, and the plan-only tests"), Service ("installed natively"). Same class ac4279a set out to remove.
  • Structure: Apply gate sits under ### Layers but is a process convention, not a layer.
  • Baseline: GLOSSARY L3 still restates README L3 (single source of truth); the ADR cites "the map's Notes" / "the Q6 question" with no GLOSSARY-MAP.md to resolve either.
  • ADR bar: as raised in #728 — ADR-FORMAT requires hard to reverse, and the ADR's own "a one-line reversal if the lost signal proves worse" fails criterion 1. Criteria 2 (surprising) and 3 (real trade-off) hold, so 2 of 3. This is the one item genuinely for you to rule on; the file-vs-pointer question is yours.

Deliberate keeps — accepted

Seam, Inventory, Static checks "floor" are project jargon with an INFRATRACK-3/6/7 provenance; the general-concept rule targets incidental vocabulary. No objection.


Recommendation: merge.

The must-fix that held the first round (#725 item 1) is properly fixed, and the Spec axis is now clean. What remains is glossary polish (verb-phrase definitions; the residual implementation clauses; Apply gate clustering) and the ADR-bar question you already own — none of it a safety, correctness, or reversibility concern on a docs-only, two-way-door change. Nothing executable changes; main is untouched until merge.

Optional, non-blocking: fold the glossary tidy + the ADR-bar decision into a follow-up rather than another round here.

## Re-review — two axes (Standards / Spec) @ `ac4279a` Fixed point `main` (`8ccc327`) → `ac4279a` (was `44462e5`). Diff: 2 files, 98 insertions, 0 deletions. Spec source: INFRATRACK-7 resolution. Re-ran against the current HEAD after comment #725. ### Spec — findings 1–6 all cleared 1. **Resolved** — "cannot be relied on for *any* cancel, not only a manual one" (was "on a manual cancel"). 2. **Resolved** — GLOSSARY now reconciles `verify.yml` as the Assert play vs `make verify`. 3. **Resolved** — ADR trigger now names `workflow_dispatch` and the "drops the default `reopened`" nuance. 4. **Resolved** — "multiple throwaway Guests never coexist". 5. **Resolved** — "no reaper, the Q6 question withdrawn rather than answered". 6. **Resolved** — *Idempotence check* = "second and third Converge". Residual (minor): - ADR names `workflow_dispatch` but drops _why_ it is the lever — spec: *"this instance has no run-delete/log API, so a UI re-run is the only clean repeat."* Partial. - Spec's "left to Pedro" ownership is absent (only "manual"). - GLOSSARY *Guest* says "Debian LXC"; INFRATRACK-7/map say only "Proxmox LXC". Grounded in the README, not in this ticket — weak. No material scope creep. **Spec verdict: faithful.** ### Standards — improved, three residuals Landed: H1 now `# infra-tracker`; `## Language` with `### Layers`/`### Testing` subheadings; per-term `_Avoid_` intact. - *Hard — "define what it IS, not what it does":* *Converge*, *Assert*, *Idempotence check* are still verb phrases. - *Hard — "devoid of implementation details":* new em-dash clauses: *Target* ("in CI a throwaway Guest, locally a container"), *Assert* ("service active, files present, database reachable, app answering" + `verify.yml`/`make verify`), *Static checks* ("`fmt`, `validate`, and the plan-only tests"), *Service* ("installed natively"). Same class ac4279a set out to remove. - *Structure:* *Apply gate* sits under `### Layers` but is a process convention, not a layer. - *Baseline:* GLOSSARY L3 still restates README L3 (single source of truth); the ADR cites "the map's Notes" / "the Q6 question" with no `GLOSSARY-MAP.md` to resolve either. - *ADR bar:* as raised in #728 — ADR-FORMAT requires *hard to reverse*, and the ADR's own "a one-line reversal if the lost signal proves worse" fails criterion 1. Criteria 2 (surprising) and 3 (real trade-off) hold, so 2 of 3. This is the one item genuinely for you to rule on; the file-vs-pointer question is yours. ### Deliberate keeps — accepted *Seam*, *Inventory*, *Static checks* "floor" are project jargon with an INFRATRACK-3/6/7 provenance; the general-concept rule targets incidental vocabulary. No objection. --- ## Recommendation: **merge**. The must-fix that held the first round (#725 item 1) is properly fixed, and the Spec axis is now clean. What remains is glossary polish (verb-phrase definitions; the residual implementation clauses; *Apply gate* clustering) and the ADR-bar question you already own — none of it a safety, correctness, or reversibility concern on a docs-only, two-way-door change. Nothing executable changes; `main` is untouched until merge. Optional, non-blocking: fold the glossary tidy + the ADR-bar decision into a follow-up rather than another round here.
pit merged commit 2cc95007dc into main 2026-10-09 14:14:43 +00:00
pit deleted branch docs/testing-domain-model 2026-10-09 14:14:43 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
olympus/infra-tracker!10
No description provided.