@afokapu/atdd-bun 0.10.31 → 0.10.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +2 -112
  2. package/conventions/atdd-bun.profiles/atdd-bun.profiles.presets.convention.yaml +2 -3
  3. package/conventions/planner.docs/planner.docs.area-index-required.convention.yaml +2 -2
  4. package/conventions/planner.docs/planner.docs.artifact-path-shape.convention.yaml +1 -1
  5. package/conventions/planner.docs/planner.docs.asciidoc-only.convention.yaml +0 -1
  6. package/conventions/planner.docs/planner.docs.identity-required.convention.yaml +1 -1
  7. package/conventions/planner.docs/planner.docs.undeclared-change.convention.yaml +1 -2
  8. package/detectors/bun_interlocking_coverage/checks/interlocking_train_sequence.mjs +7 -5
  9. package/detectors/planner_docs_capability/README.md +1 -1
  10. package/integrity.json +21 -49
  11. package/package.json +1 -1
  12. package/relationships.yaml +0 -151
  13. package/src/agent.ts +2 -18
  14. package/src/cli.ts +0 -8
  15. package/src/docs-capability.ts +6 -24
  16. package/src/enforce.ts +1 -2
  17. package/src/hooks.ts +1 -5
  18. package/src/index.ts +0 -2
  19. package/src/integrity.ts +3 -9
  20. package/src/setup.ts +1 -3
  21. package/templates/agents/AGENTS.block.md +0 -2
  22. package/templates/github/atdd-bun.yml +0 -5
  23. package/conventions/delivery/delivery.approved-sha-resolves.convention.yaml +0 -33
  24. package/conventions/delivery/delivery.board.convention.yaml +0 -60
  25. package/conventions/delivery/delivery.config-schema.convention.yaml +0 -49
  26. package/conventions/delivery/delivery.evidence-schema.convention.yaml +0 -34
  27. package/conventions/delivery/delivery.findings-resolved.convention.yaml +0 -42
  28. package/conventions/delivery/delivery.merge-gate.convention.yaml +0 -46
  29. package/conventions/delivery/delivery.model-allowed.convention.yaml +0 -29
  30. package/conventions/delivery/delivery.operating-model.convention.yaml +0 -97
  31. package/conventions/delivery/delivery.review.convention.yaml +0 -42
  32. package/conventions/delivery/delivery.reviewer-independent.convention.yaml +0 -34
  33. package/conventions/delivery/delivery.stages-complete.convention.yaml +0 -33
  34. package/detectors/delivery_evidence/atdd.implementation.yaml +0 -33
  35. package/detectors/delivery_evidence/detect.mjs +0 -9
  36. package/detectors/delivery_evidence/fixtures/clean/atdd-bun.yaml +0 -8
  37. package/detectors/delivery_evidence/fixtures/clean/docs/delivery/tranches/api/evidence.yaml +0 -54
  38. package/detectors/delivery_evidence/fixtures/dirty/atdd-bun.yaml +0 -3
  39. package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/api/evidence.yaml +0 -31
  40. package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/data/evidence.yaml +0 -8
  41. package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/orphan/README.md +0 -1
  42. package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/ui/evidence.yaml +0 -5
  43. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/delivery/release.adoc +0 -10
  44. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/purpose/index.adoc +0 -5
  45. package/planner-schemas/delivery-config.schema.json +0 -95
  46. package/planner-schemas/delivery-evidence.schema.json +0 -103
  47. package/src/board-ui.ts +0 -91
  48. package/src/board.ts +0 -222
  49. package/src/delivery.ts +0 -567
  50. package/templates/agents/delivery/SKILL.md +0 -15
package/README.md CHANGED
@@ -55,7 +55,6 @@ registerEnforcementTest({ root: import.meta.dir + "/..", profiles: ["traceabilit
55
55
  | `topology` | feature decomposition and the plan, source, test and E2E locations. Missing source, tests and E2E suites are reported only when a run also selects `coder` or `tester`, so a repository in the PLAN stage can enforce `planner` and `topology` before RED |
56
56
  | `planner` | schemas for every plan artifact, graph integrity, the scoped planner rules |
57
57
  | `telemetry` | the telemetry tracking plan: item shape, path-mirrored identity and versioning under `telemetry/`, wagon ownership of logical artifacts, the per-acceptance telemetry decision, metric label cardinality, source `Telemetry:` references, raw-string and forbidden-property emission, the vendor-SDK boundary around the TelemetryPort, and telemetry tests that bind the acceptance and item, assert the exact identity on a captured sink, cover every required item, and exercise declared timing semantics |
58
- | `delivery` | the review record of each tranche under `docs/delivery/tranches/`: allowed writer and reviewer models with recorded fallbacks, reviewer independence, every finding fixed, withdrawn after one dispute or ruled on by a human, every configured stage approved, and, at the gate, no change without a record and a merged head that contains exactly the approved commit. Inert until adopted |
59
58
  | `docs` | the documentation capability, including the generated journey view |
60
59
  | `coder`, `tester`, `security`, `architecture`, `metrics`, `runtime` | Bun source and test conventions |
61
60
  | `interlocking` | train/interlocking binding, infrastructure and route coverage |
@@ -85,7 +84,7 @@ the adoption that establishes the governed set, so a brownfield repository can d
85
84
  `profiles: [docs]` in an ordinary pull request. From then on, the integrity check reports, against
86
85
  the base branch, removing a profile from the list and removing the list itself. The second closes
87
86
  the two-step bypass `[docs, security]` → no list → `[docs]`. `init` writes a new `atdd-bun.yaml`
88
- with every profile listed except the opt-in `delivery`, so a greenfield repository is governed from its first commit; trim the
87
+ with every profile listed, so a greenfield repository is governed from its first commit; trim the
89
88
  list before that commit to adopt gradually.
90
89
 
91
90
  ## Configuration
@@ -109,114 +108,6 @@ worktrees: { enabled: false }
109
108
  release: { enabled: false }
110
109
  ```
111
110
 
112
- ### Delivery
113
-
114
- For programs delivered as tranches by a coordinator and persistent drivers, with headless writers
115
- and independent reviewers. Adopt it by naming `delivery` in `profiles:` (or, with no list, by adding
116
- a `delivery:` block); `agent init` then installs the delivery skill. The adopting pull request is
117
- itself governed: the skill and workflow it brings are outside the delivery root, so it carries its
118
- own tranche record, reviewed and `ready` like any other. A later change to `atdd-bun.yaml` alone
119
- needs no record: the integrity check reports any loosening for a human to approve.
120
-
121
- The policy names, for each lifecycle stage (plan, red, green, refactor, final), who may write it and
122
- who reviews it; either may be absent. By default two stages are reviewed: the plan, and the whole
123
- change at its head (final). Red, green and refactor are written and held by their gates. How the
124
- coordinator and drivers carry this out is the `delivery.operating-model` convention; what a reviewer
125
- checks is `delivery.review`; how agents talk, through a local ntfy board with one topic per program,
126
- tranche and review conversation (`atdd-bun chat`), is `delivery.board`, used only when `delivery.board` is
127
- set. The skill only points to them.
128
-
129
- The records live with the program's reasoning, in the docs profile's `docs/delivery/` area:
130
-
131
- ```text
132
- docs/delivery/index.adoc the program: why, scope, how it was split (docs profile)
133
- docs/delivery/tranches/<tranche>/evidence.yaml one tranche's review record (delivery profile)
134
- docs/delivery/tranches/<tranche>/*.json the retained raw reviewer reports
135
- ```
136
-
137
- Where delivery is adopted, the docs profile leaves the records folder's records and data files to
138
- the delivery profile: they are not authored documentation, and changing them needs no docs
139
- declaration. AsciiDoc there stays documentation. Where the docs profile is active, the first tranche
140
- also brings `docs/index.adoc` and `docs/delivery/index.adoc`, each with `:doc-id:` and `:status:`,
141
- since every docs area needs an index.
142
-
143
- Upgrading from 0.8.0: records under `delivery/` are reported until `delivery.root: delivery` is set
144
- (a reported root change, approved once) or they are moved. A data file in an old tranche that no
145
- record there names is reported on local runs, not at the merge gate; removing it is a gate change a
146
- human approves, or a new tranche's record can name it.
147
-
148
- Upgrading from 0.9.0: an `atdd-bun.yaml` field with the wrong type (a quoted number, `yes`/`no`, a
149
- non-string list item, `.inf`) is now reported, and on the base branch it blocks every pull request,
150
- since the policy cannot be compared. Correct such fields on the base branch before upgrading.
151
-
152
- Upgrading to 0.10: the policy names writers and reviewers per stage. The 0.9 stage names
153
- (`plan_review`, `test_review`, `code_review`, `final_review` with `authors` and `reviewers`) are still
154
- read, as `plan`, `red`, `refactor` and `final`, and 0.9 records that name review authors still count as
155
- recorded work. Independence now defaults to `different-model`: a repository that relied on the old
156
- `fresh-process` default sets it explicitly. A repository with no `stages:` gets the new default
157
- operating model, without the integrity check reporting the change.
158
-
159
- From 0.10.2 the pre-commit hook no longer counts uncommitted work: it refused exactly the small
160
- commits that reduce it. `max_uncommitted_files` is no longer read; commit size stays limited by
161
- `max_staged_files` and `max_staged_changed_lines`.
162
-
163
- From 0.10.3 each ready record is judged by the delivery policy in `atdd-bun.yaml` at its `approved_sha`:
164
- a later policy change (dropping or reordering a model, removing a review) never makes a merged record
165
- fail. Records in progress are judged by the current policy.
166
-
167
- From 0.10.4 a stage with nothing written (a plan-only or no-op tranche) records no work; a review
168
- whose range recorded none answers for the latest recorded work before it.
169
-
170
- From 0.10.5 only coordinators and drivers use the board: a writer or reviewer takes its task from its
171
- launch prompt and returns its answer as output, which the driver posts. `atdd-bun chat wait` takes several
172
- topics and `--skip heartbeat`; reviewers answer in JSON.
173
-
174
- From 0.10.7 only a browser spec (a `*.e2e.*` file, or a Playwright file bound by `// Train:`/`// Journey:` or a
175
- `test:train:`/`test:journey:` URN) is a journey spec. A `bun:test` file may carry the `Acceptance:` line
176
- traceability needs, including a test proving `acc:train:…` and the journey test `atdd-bun.topology.e2e-location` requires.
177
-
178
- Every key is optional; these are the defaults:
179
-
180
- ```yaml
181
- delivery:
182
- root: docs/delivery/tranches # one <tranche>/evidence.yaml per tranche, reports beside it
183
- require_record: true # at the gate, a change outside the root (other than atdd-bun.yaml alone) needs a tranche record
184
- multiplexer: herdr # the terminal multiplexer humans watch agents in; any command name
185
- # board: { url: http://127.0.0.1:2586 } # opt-in: agents talk through a local board; absent, there is none
186
- independence: different-model # a reviewer's model wrote none of the work it reviews; or fresh-process
187
- stages: # models in preference order: the first, then recorded fallbacks
188
- plan: { writer: [codex, claude-opus, kimi], reviewer: [glm, claude-opus, codex, kimi] }
189
- red: { writer: [glm, claude-sonnet, deepseek-flash, claude-opus, codex, kimi] }
190
- green: { writer: [glm, claude-sonnet, deepseek-flash, claude-opus, codex, kimi] }
191
- refactor: { writer: [glm, claude-sonnet, deepseek-flash, claude-opus, codex, kimi] }
192
- final: { reviewer: [codex, glm, claude-opus, kimi] }
193
- fallback: { after_failures: 3, within_minutes: 10, when_exhausted: block } # or wait
194
- commands: {} # per model: { author: "...", review: "..." } overriding delivery.operating-model's defaults
195
- ```
196
-
197
- The profile checks the record, never the running agents. The generated CI sets
198
- `ATDD_DELIVERY_GATE`: `merge` on pull requests and the merge queue, where every record the branch
199
- changes must be `ready`, the branch may differ from its approved SHA only under the delivery root,
200
- and a change outside the root needs a record unless it touches only `atdd-bun.yaml` (`require_record`, default true); `post-merge` on a
201
- push to a protected branch (the generated workflow's push branches follow `protected_branches`), where the pushed commit must contain every approved SHA it brings in. Merge tranches with a
202
- merge commit: a squash or rebase merge writes a commit no reviewer saw, and the post-merge check
203
- fails on it. Moving the root, dropping a stage, relaxing a stage from `different-model` to
204
- `fresh-process`, no longer reviewing a stage, adding a writer or reviewer, moving a fallback model earlier in a list, turning off
205
- `require_record`, making fallback easier, or adding or changing a model's `commands` loosens the policy and is reported by the integrity check.
206
-
207
- The record's model and run identifiers are the driver's claims. The profile checks that they are
208
- consistent and that a `ready` record retains every review's raw report (a record in progress may lag
209
- behind); it does not verify them
210
- cryptographically.
211
-
212
- The hooks enforce protected-branch blocking, micro-commit limits, mass-delete approval and
213
- validation of the affected area. Git can bypass them, so CI is the authority. The changed-line
214
- limit counts a moved file by the edits it carries, so relocating a directory is not measured as
215
- rewriting it; mass-delete and registry-removal approval still count a move in full.
216
- The journey view `atdd-bun docs journeys` generates is exempt from the size caps, since its index
217
- alone can exceed them, and never from the `docs` profile, which refuses a copy that is not exactly
218
- what the plan generates.
219
-
220
111
  ## Docs-site theme
221
112
 
222
113
  A repository that publishes its AsciiDoc docs as a site does not need its own theme.
@@ -237,8 +128,7 @@ To re-theme it, override its custom properties (`--paper`, `--ink`, `--accent`,
237
128
  The skill gives every coding agent the lifecycle PLAN → RED → GREEN → SMOKE → REFACTOR → TRACE and
238
129
  the profile that gates each stage. The block in `AGENTS.md` and `CLAUDE.md` adds the rules: never
239
130
  modify the toolkit itself, only the configuration it offers; turn profiles on or off in
240
- `profiles:` only when the user asks; and, where `delivery` is active, deliver tranches through the
241
- delivery skill.
131
+ `profiles:` only when the user asks.
242
132
 
243
133
  `atdd-bun integrity`, run by the generated test and first in CI on a clean install, fails when:
244
134
 
@@ -8,12 +8,11 @@ statement: >-
8
8
  terms:
9
9
  - term_id: presets
10
10
  text: >-
11
- Planning: planner (plus docs when the repository keeps documentation under docs/). Building, once RED starts: add coder, tester, traceability, security; add htmx and design for a web UI, and interlocking once trains have a runtime. Instrumenting: add telemetry. Delivering through reviewed tranches: add delivery.
11
+ Planning: planner (plus docs when the repository keeps documentation under docs/). Building, once RED starts: add coder, tester, traceability, security; add htmx and design for a web UI, and interlocking once trains have a runtime. Instrumenting: add telemetry.
12
12
  values:
13
13
  planning: [planner]
14
14
  building: [coder, tester, traceability, security]
15
15
  instrumenting: [telemetry]
16
- delivering: [delivery]
17
16
  content:
18
17
  summary: >-
19
18
  A goal is easier to name than a profile. The presets map what the user is doing to the profiles that judge it, in the order the work creates what they check.
@@ -22,7 +21,7 @@ content:
22
21
  security joins with the first code, not at release: a secret committed during GREEN stays in history.
23
22
  coder already bundles the architecture, metrics, runtime, design and responsive detectors, so those need no later preset.
24
23
  fix_hint: |
25
- At a stage whose preset is missing, ask what the user wants to do (planning, building, instrumenting, delivering), recommend that preset and say it can be adopted step by step, then write the chosen list to profiles: in atdd-bun.yaml.
24
+ At a stage whose preset is missing, ask what the user wants to do (planning, building, or instrumenting), recommend that preset and say it can be adopted step by step, then write the chosen list to profiles: in atdd-bun.yaml.
26
25
  exceptions:
27
26
  - >-
28
27
  A profile can always be run by name to see what it would report (atdd-bun coder); only profiles: decides what the repository is governed by.
@@ -5,7 +5,7 @@ status: active
5
5
  name: Each authored area carries an index.adoc
6
6
  statement: >-
7
7
  Each authored area of the canonical tree — `docs/`, `docs/purpose/`, `docs/architecture/`,
8
- `docs/architecture/decisions/`, `docs/delivery/`, `docs/archive/` — MUST contain an `index.adoc`.
8
+ `docs/architecture/decisions/`, `docs/archive/` — MUST contain an `index.adoc`.
9
9
  Other canonical filenames are defined when useful and are NOT instantiated merely to satisfy an
10
10
  empty taxonomy (spec 2 §4).
11
11
  terms:
@@ -21,7 +21,7 @@ terms:
21
21
  content:
22
22
  summary: >-
23
23
  An area without an index is an area the rendered site cannot navigate into and a reader cannot
24
- enter. The rule checks the six canonical areas only; it does not require an index in every
24
+ enter. The rule checks the five canonical areas only; it does not require an index in every
25
25
  subdirectory an author happens to create.
26
26
  normative_text: |
27
27
  The rule is scoped to the canonical areas DELIBERATELY, and the restraint is the point. Spec 2 §4
@@ -47,7 +47,7 @@ content:
47
47
  path: docs/archive/old-spec.adoc # ✓ archive lands in archive/
48
48
 
49
49
  An archived document keeps its content and gains `:status:`. It does not gain a place in
50
- `purpose/`, `architecture/` or `delivery/` — those are for documents that are accepted truth today.
50
+ `purpose/` or `architecture/` — those are for documents that are accepted truth today.
51
51
  exceptions:
52
52
  - >-
53
53
  `impact: none` declares no artifacts and is not checked by this rule. Core enforces that a
@@ -45,7 +45,6 @@ content:
45
45
  migration preserves history and never promotes it.
46
46
  exceptions:
47
47
  - Everything beneath `docs/dist/` is generated output and is never scanned.
48
- - Where the delivery profile is adopted, its records folder (delivery.root, by default `docs/delivery/tranches/`) holds tranche records and raw reviewer reports, not authored documentation; its record and data files are left to that profile, while AsciiDoc there stays documentation.
49
48
  - Markdown OUTSIDE `docs/` is untouched by this rule. `README.md`, `CONTRIBUTING.md` and the
50
49
  repository-root corpus are out of its scope; they are migrated by the adoption step, not
51
50
  rejected by this detector.
@@ -39,7 +39,7 @@ content:
39
39
  :doc-id: architecture.shared-control-root
40
40
  :status: current
41
41
 
42
- Choose the id from the area the document lives in (`architecture.`, `purpose.`, `delivery.`,
42
+ Choose the id from the area the document lives in (`architecture.`, `purpose.`,
43
43
  `archive.`) so that the id and the tree agree. Nothing enforces that agreement today; it is a
44
44
  convention that keeps ids readable, not a checked rule.
45
45
  exceptions:
@@ -42,7 +42,7 @@ content:
42
42
  impact: change
43
43
  artifacts:
44
44
  - action: modify
45
- path: docs/delivery/release.adoc
45
+ path: docs/purpose/release.adoc
46
46
 
47
47
  If the change is genuinely not a documentation change — a typo fix in a rendered artefact, a
48
48
  path you did not mean to touch — the fix is to not touch `docs/`, not to widen the declaration.
@@ -50,7 +50,6 @@ content:
50
50
  the honest correction.
51
51
  exceptions:
52
52
  - '`docs/dist/**` is generated output and is never required to be declared.'
53
- - Where the delivery profile is adopted, its records folder (delivery.root, by default `docs/delivery/tranches/`) changes with every tranche; its record and data files are governed by that profile's merge gate, not by a documentation declaration (AsciiDoc there is still documentation and still declared).
54
53
  - A repository with no documentation declaration recorded at all is core's concern (companion §4,
55
54
  check 1), not this rule's. This rule fires when a declaration exists and does not cover the diff.
56
55
  - >-
@@ -57,6 +57,7 @@ export function trainSequenceCovered(trainId, texts) {
57
57
  // reported "no test asserts the wagon SEQUENCE" about a sequence that does not exist,
58
58
  // and a route pointing at a missing train is the binding family's concern
59
59
  // (declared_route_not_runtime_resolvable), not this one.
60
+ // The plan document that declares `trainId`'s sequence, or null when none does.
60
61
  export function declaresASequence(croot, trainId) {
61
62
  const found = [];
62
63
  (function rec(dir) {
@@ -73,9 +74,9 @@ export function declaresASequence(croot, trainId) {
73
74
  for (const f of found) {
74
75
  const text = readText(f);
75
76
  if (!text.includes(trainId)) continue;
76
- if (/^\s*sequence:\s*$/m.test(text) || /^\s*sequence:\s*\[/m.test(text)) return true;
77
+ if (/^\s*sequence:\s*$/m.test(text) || /^\s*sequence:\s*\[/m.test(text)) return f;
77
78
  }
78
- return false;
79
+ return null;
79
80
  }
80
81
 
81
82
  export function scanExecution(scanRoot) {
@@ -85,13 +86,14 @@ export function scanExecution(scanRoot) {
85
86
  if (!records.length) continue;
86
87
  const files = e2eFiles(croot).map((f) => ({ file: f, text: readText(f) }));
87
88
  const texts = files.map((x) => x.text);
88
- const anchor = files.length ? rel(files[0].file, croot) : "e2e/";
89
89
  for (const trainId of [...trainsReachableFromRoutes(records)].sort()) {
90
- if (!declaresASequence(croot, trainId)) continue; // nothing declared to exercise
90
+ // The finding points at the train's own document, where the sequence a test must assert is declared (FWS #fqUGvWHn25mq).
91
+ const declared = declaresASequence(croot, trainId);
92
+ if (!declared) continue; // nothing declared to exercise
91
93
  if (unbuiltWagons(croot, trainId).length) continue; // pending: a wagon on it has no source yet
92
94
  if (trainSequenceCovered(trainId, texts)) continue;
93
95
  violations.push(
94
- mk(RULE_SEQUENCE, anchor, 1, 0,
96
+ mk(RULE_SEQUENCE, rel(declared, croot), 1, 0,
95
97
  `declared train "${trainId}" is selected by a route but no test asserts the wagon ` +
96
98
  `SEQUENCE it executes; reorder or empty its definition and the suite stays green`,
97
99
  ""),
@@ -21,7 +21,7 @@ Each `dirty_*` tree is `clean/` plus exactly one defect, so that
21
21
  | `dirty_identity` | a document with no attributes | `planner.docs.identity-required` |
22
22
  | `dirty_duplicate_id` | two documents claiming `purpose.worktrees` | `planner.docs.doc-id-unique` |
23
23
  | `dirty_unresolved_edge` | `:implements: purpose.wortrees` (a typo) | `planner.docs.graph-target-resolves` |
24
- | `dirty_missing_index` | `docs/delivery/` with its index removed | `planner.docs.area-index-required` |
24
+ | `dirty_missing_index` | `docs/purpose/` with its index removed | `planner.docs.area-index-required` |
25
25
  | `dirty_adr_registry` | ADR-20260906-002 absent from the registry | `planner.docs.adr-registry-derived` |
26
26
 
27
27
  `dirty_unresolved_edge` carries the **#1758 regression**: the test asserts the graph's
package/integrity.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
- "version": "0.10.31",
2
+ "version": "0.10.32",
3
3
  "files": {
4
4
  "HOOK_AUDIT.md": "5329d840db37671b1918f688ead26865473b87db73dbc75f7c8b2a8bbe8d6d43",
5
5
  "PLANNER_PORT.md": "fb5935bac8b7ac18994de21e43ace3a5ef8cd55f85b0e3349fca261280054f11",
6
- "README.md": "3200613045942da247f24bd54c01e6b651a0878f9b6244944e384a6731cef32e",
6
+ "README.md": "78a1acc1f18f84a567448051bec90f676e3cab7956d971abc97a6201c96fc409",
7
7
  "bunfig.toml": "b9fc65eca9014c5179380259d70e76385a6a80788fa9a2df5fb3eaa5554fd2fe",
8
8
  "conventions/atdd-bun.planner/atdd-bun.planner.acceptance-identity.convention.yaml": "81c5c773d5ee15e8d99a2c237aa9846b110b2533df45ebf407d0e3ec6ed3dd03",
9
9
  "conventions/atdd-bun.planner/atdd-bun.planner.identity-required.convention.yaml": "e96d7c1455d0c221072d82e7f2b55da1c4f9ceb17718eb6ed96affdeef37675b",
@@ -13,7 +13,7 @@
13
13
  "conventions/atdd-bun.planner/atdd-bun.planner.reference-resolves.convention.yaml": "b96927d269692c29c02fee38ecbeb999480791f8dc7486c4072a9ff30183d7d6",
14
14
  "conventions/atdd-bun.planner/atdd-bun.planner.schema.convention.yaml": "16d0a26451758b759e6ca1f5b4f38ae1feff129688306ffcc2f70f6d3974b591",
15
15
  "conventions/atdd-bun.planner/atdd-bun.planner.train-wagon-resolves.convention.yaml": "6410e248351e701dcba38c671c07c4d8f6d67927984ed4d18e567abd1eb1f3f0",
16
- "conventions/atdd-bun.profiles/atdd-bun.profiles.presets.convention.yaml": "0db36d84018fb8d799db246c6e324575c586a575f28d76d891ca5054d558e5cd",
16
+ "conventions/atdd-bun.profiles/atdd-bun.profiles.presets.convention.yaml": "a5885bfa387d0abbc4694ea2d0cf1f3639d5b45588707d4f70f2f2be4e12e847",
17
17
  "conventions/atdd-bun.topology/atdd-bun.topology.e2e-location.convention.yaml": "3a3b991bc851b86d597636200f5cb10a0defda3920348860cdca28955ab91f4c",
18
18
  "conventions/atdd-bun.topology/atdd-bun.topology.feature-source-coverage.convention.yaml": "2b64093f1e7f1fe0e2edcadf12e560fa80cecec19536abaa5bf09af362c6694e",
19
19
  "conventions/atdd-bun.topology/atdd-bun.topology.feature-test-coverage.convention.yaml": "279be57399c9b79a1bd758414076e3053d67b7d4a7fcbbb950ea12d1201effeb",
@@ -92,27 +92,16 @@
92
92
  "conventions/coder.htmx/coder.htmx.verb-endpoint-is-routed.convention.yaml": "d6aa58d35df4b7ebbcf675ca79f0177d64e56f095802b9a3eaae3e4befb5c270",
93
93
  "conventions/coder.htmx/coder.htmx.verb-endpoint-same-origin.convention.yaml": "2128d26153e2d1f19c65a1e1665d4f82c78395daedb336d6ef1256e82b74aedb",
94
94
  "conventions/coder.htmx/coder.htmx.verb-mutation-signals-progress.convention.yaml": "ae85c5ea01a09a3c41b939988088a8e5da91848d2710a1f0a1e0c86308638ac9",
95
- "conventions/delivery/delivery.approved-sha-resolves.convention.yaml": "68f2ecc10870e780abb05bb31d211b1923d47b56672df4b3950f437aa9cf8ca8",
96
- "conventions/delivery/delivery.board.convention.yaml": "fefc9f32f8ee85ee35b254cbc4aefec55a4b72eaa3a7b02b0ec21efb2074a013",
97
- "conventions/delivery/delivery.config-schema.convention.yaml": "b59a69b7789ad0c3d0b1ac9ea2b955fbbb5dfa07a9ee169a037b406a198813f0",
98
- "conventions/delivery/delivery.evidence-schema.convention.yaml": "9c6a22495dfb3e2fcbca700392866c3b5660084b1f5594230eb320b499d5e5cb",
99
- "conventions/delivery/delivery.findings-resolved.convention.yaml": "f6574e93a9a2d4bdd6d6f5645720b1a647fc0048d95f7675fe783d2ddb62c05b",
100
- "conventions/delivery/delivery.merge-gate.convention.yaml": "48745ec23625b68be9b8fe2c6dcdcba88b2b38924f6593abf6987391ff0ee243",
101
- "conventions/delivery/delivery.model-allowed.convention.yaml": "e9690e95f3604483f182b3032ae60eac20109eb458509f14651945ccf07692f2",
102
- "conventions/delivery/delivery.operating-model.convention.yaml": "1a86a1fe84695968a2fb719a899629af9a8baadcd90bdb8776f1f0208cebbbb4",
103
- "conventions/delivery/delivery.review.convention.yaml": "b033579c2d90fcb098d325dcc07c7b084e048cca43fbe8e28159ec08a412018a",
104
- "conventions/delivery/delivery.reviewer-independent.convention.yaml": "8c436d66ef5b1f6d6bc5dd55a235caca2490020e88665eecadb2ca41cd4149c5",
105
- "conventions/delivery/delivery.stages-complete.convention.yaml": "0e5dd8057ad51eff7906e3424a9686a81be1814447afb9a30acab43d39e49b4c",
106
95
  "conventions/planner.docs/planner.docs.adr-registry-derived.convention.yaml": "152cfb05c4a0e2053b09c05186d48ef330f4a94c5faddb8fbb322a81341a60a5",
107
- "conventions/planner.docs/planner.docs.area-index-required.convention.yaml": "fd931e9f225bfbb5e78436d0d8a2a89cc0f5114493579962c72dd971301becce",
108
- "conventions/planner.docs/planner.docs.artifact-path-shape.convention.yaml": "a9f6178d29abe9385342a46a2c57470a3631aaf5e26f01e3660b7088b042418e",
109
- "conventions/planner.docs/planner.docs.asciidoc-only.convention.yaml": "9e6fadbbe9aaf6015afc479f5b392e4c4324bfc47e1c59e315d26c2e5180a5f8",
96
+ "conventions/planner.docs/planner.docs.area-index-required.convention.yaml": "6b851168daf1913c24ecdb91ae1d81a9e4542e9a5354642b2c60c273c15d28e8",
97
+ "conventions/planner.docs/planner.docs.artifact-path-shape.convention.yaml": "436937a82f8e064833dc28adfeedcfa78fcdc46a74b28e956756000787b3e05e",
98
+ "conventions/planner.docs/planner.docs.asciidoc-only.convention.yaml": "6e7b5b16efd794bee677d0827adc71c2f66df8bcba0264dd74a25c67c19f3a3b",
110
99
  "conventions/planner.docs/planner.docs.doc-id-unique.convention.yaml": "558bc7d7001645f5443fcf19a5da67df17220b335d99811d103529bf22555311",
111
100
  "conventions/planner.docs/planner.docs.graph-target-resolves.convention.yaml": "657225233b92125b2667e2d72d65dc0ebc7cfc92b2c9e023d3d42449281683ea",
112
- "conventions/planner.docs/planner.docs.identity-required.convention.yaml": "86427664a497d7fefc8f77178cf64db66cb7ce328c1a3d2b94a0109ee7401e86",
101
+ "conventions/planner.docs/planner.docs.identity-required.convention.yaml": "afe23ea51fd53f305668a8ba97acc46125d0d2a1d818785b35ecd0457f65ac1c",
113
102
  "conventions/planner.docs/planner.docs.journey-view-current.convention.yaml": "5892d4213d72342dc568c37f13942139bbdce4c0d5716075de579dc8060fc969",
114
103
  "conventions/planner.docs/planner.docs.reference-integrity.convention.yaml": "34310088114ac7cc58bc74443a76366e3e644121aaa3ff39b6602a0d15e03293",
115
- "conventions/planner.docs/planner.docs.undeclared-change.convention.yaml": "eb0df8fbf343ed38fe4694f63a065ee3e0e060d819f57ca8ea2f151aef66a8d5",
104
+ "conventions/planner.docs/planner.docs.undeclared-change.convention.yaml": "b66655649bbf030ab58f29d0c474890b88cf8dbff8440c9b22cb44769d0bbb7e",
116
105
  "conventions/planner.telemetry/planner.telemetry.acceptance-decision.convention.yaml": "67dc840e0993c6940a431403b47439484ed557855a7dee82d75abd1479f3151e",
117
106
  "conventions/planner.telemetry/planner.telemetry.logical-ownership.convention.yaml": "6dd666a22fd7fd0cb6e5fe5505665c8889a504ee929fdebf3aee019df4aac2b4",
118
107
  "conventions/planner.telemetry/planner.telemetry.metric-cardinality.convention.yaml": "e61831f207ad4f09be983b300cbedc40f6ad08a4b2483612fc195e2343be93f6",
@@ -386,7 +375,7 @@
386
375
  "detectors/bun_interlocking_coverage/checks/interlocking_route_coverage.mjs": "2d73c401adf77b3147e11271653c528d02dfc50f4eebde8be35795707023fb6d",
387
376
  "detectors/bun_interlocking_coverage/checks/interlocking_smoke_coverage.mjs": "ad53b606c325f87b09ac89c848c75ba5618e7073223fe528cf048343147638ce",
388
377
  "detectors/bun_interlocking_coverage/checks/interlocking_trace_binds.mjs": "61dcb8a8d04e9764aab7920f346bd3684fc98e2c294aa5c58eefec555145a1d0",
389
- "detectors/bun_interlocking_coverage/checks/interlocking_train_sequence.mjs": "7a38ce0b8bd5b4342a7bae09776b9638dc3ed51635322055a4fb0f0e6940af77",
378
+ "detectors/bun_interlocking_coverage/checks/interlocking_train_sequence.mjs": "e16af2af51a07c80f7cf5f4016ebf3f18a8cfc6b0ca9ca9187992fac6c12aeaf",
390
379
  "detectors/bun_interlocking_coverage/detect.mjs": "a124418dc29aaf8fda9cd09427230d25768206b3f563d516774667e8cf75b66e",
391
380
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/e2e/interlockings/match-resolution/routes.test.ts": "ba6ea85b3fbe15e3c49332da3ad2921a0ff3436a6fe3b5a5035fb35fdc874720",
392
381
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/e2e/interlockings/match-resolution/trace.test.ts": "aee4ea93ceb8636846344e915cd7e66f7e8f99ba08596f83266590fa2b9ff58e",
@@ -674,15 +663,6 @@
674
663
  "detectors/bun_ts_metrics_detector/fixtures/dirty/orphan.ts": "0f7acd0dffe90902a0a43cc45771b8a473d079efc9693112b3b85645c191c23d",
675
664
  "detectors/bun_ts_metrics_detector/fixtures/dirty/typed.ts": "7c27ee1a674af7d5b2cce3a65bfec2111602d84a75817fd60f737c7d63fc9c83",
676
665
  "detectors/bun_ts_metrics_detector/ts_metrics.mjs": "d5da8c768dd7fe1717cc7f29b4115f8b2573c945cf9fb2e6d7c2d76adc186417",
677
- "detectors/delivery_evidence/atdd.implementation.yaml": "2f6fc30dc353bef97bcb32ea54e4317d3c87cbd7ae1443fcef2aefc46280dc09",
678
- "detectors/delivery_evidence/detect.mjs": "e98664dee8090a0b280cd285a54e9a6fb9ba3572af2666b4e3656ca5b0555509",
679
- "detectors/delivery_evidence/fixtures/clean/atdd-bun.yaml": "f701861e3530bb5a25a70d73e248549fb96642f48db1ff4d3e8e4546aaa825ee",
680
- "detectors/delivery_evidence/fixtures/clean/docs/delivery/tranches/api/evidence.yaml": "2cdbc4f628cf2d56627e6692b1f4e1a9b72316a3b7d09b47fffcd54c696a0fcb",
681
- "detectors/delivery_evidence/fixtures/dirty/atdd-bun.yaml": "85c572d65f27b11b7ff8f115883913b2d2f1978097c416d3341b9c9d0de373d4",
682
- "detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/api/evidence.yaml": "05a6c7926603842dbccd820cf19326bcf7377012931b63501748ba30a196945b",
683
- "detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/data/evidence.yaml": "165dd67ff64f14c30268de5b18bf0c9c6634fb9ca48439c660c1962cebe3e0cb",
684
- "detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/orphan/README.md": "7d480b1fff6546615e55d866784bc2267d06d0221dfde8d0ba0353fa1ea0db9a",
685
- "detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/ui/evidence.yaml": "777b4f7921e302dfce79cd764bba8b44091ac9c7ee04a00f5dbb663342ec68a0",
686
666
  "detectors/htmx_e2e_detector/atdd.implementation.yaml": "454bb123039d57c992d27d9274e20fa3452ac41a237eb55471be62a4bcfebf06",
687
667
  "detectors/htmx_e2e_detector/checks/_e2e.mjs": "efec6c8e3dc8b95bf3acd826397ecdedac64c06d367791a4017a272bc0660896",
688
668
  "detectors/htmx_e2e_detector/checks/_map.json": "94dec08ff4764cd6a3dba139f12a7c984292e95a9354b0cdaa0ce9d4180e2c89",
@@ -788,7 +768,7 @@
788
768
  "detectors/htmx_tester_detector/fixtures/dirty/panel.html": "840f263e83979c87b8a6dffdbef5df69883cfa2d5122be959092a4776f2f6457",
789
769
  "detectors/htmx_tester_detector/fixtures/dirty/statusonly.test.ts": "a2daf2874bf68c6221374ac05619642a42d56b5d1f76e30fa3d2a1826adaf51b",
790
770
  "detectors/htmx_tester_detector/test_header.mjs": "a22221fe9ef6d10297ec777c5d0c6e7b84010ccf41e90db30c036206790ea198",
791
- "detectors/planner_docs_capability/README.md": "1e1f8ee258242c05293447fcde124543447ba375306e8a7e5f665881b038bcd1",
771
+ "detectors/planner_docs_capability/README.md": "6e90339fae5a77154fc7bfda36d60b57e55acbd2884cbbc1d86f31f8aaf99960",
792
772
  "detectors/planner_docs_capability/atdd.implementation.yaml": "0bc4c27c61faa15147ad8ed55a866d7830875efb6222aa463d49f1163a8b6121",
793
773
  "detectors/planner_docs_capability/detect.mjs": "d10773fa5b2d8f65ce351804694171a6eb75e05eb4c80fa1edce4a5d56b72c5d",
794
774
  "detectors/planner_docs_capability/fixtures/clean/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc": "6d30e5545e7b051c80605c3dbee50286f71e344ab2e71a987db945941de42523",
@@ -899,10 +879,8 @@
899
879
  "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/architecture/state-store.adoc": "41141c225dad3fed39195313ad09a5cf3e3ba2f591bd6d8c7a9133dd79e52498",
900
880
  "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/archive/2025-control-root.adoc": "7c7aef22837f29891a90ce15b0b181aab4a79fbba97e4c7903cc5e56d9028983",
901
881
  "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/archive/index.adoc": "aa6d6eeea1a5692e800575c9579dc7b9e43ccab159f787baad560b3877d03ba0",
902
- "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/delivery/release.adoc": "cef338e694dae844496d0d4379cc0e84b9cc37ca5af38a91c4cea840cf39c67a",
903
882
  "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/dist/index.md": "eac4d8fe653f45c959731cc08218d898e5123d685a1017191c4cffb626777f13",
904
883
  "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/index.adoc": "8aabcd7a4ecfc6ef565a604c1172364f761bef7d3fc4f2c96c07dce4e0ebe19b",
905
- "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/purpose/index.adoc": "e10193ea48f3c77b67ca8ed7221c53f23ce699e63f651cc340cea9ef6b44cffb",
906
884
  "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/purpose/worktrees.adoc": "de957bd8aec411c930fa9785d793c3345c82f5d7cb7f28f40f73f1c53a436440",
907
885
  "detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc": "6d30e5545e7b051c80605c3dbee50286f71e344ab2e71a987db945941de42523",
908
886
  "detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/architecture/decisions/index.adoc": "4a6cb87e249d587c85bb6389ff5fecae7a96194af8677b588eed0c791099123b",
@@ -1185,8 +1163,6 @@
1185
1163
  "planner-schemas/binding-lock.schema.json": "f2455606702f45fafa194549126d4a66e6c286ba1c4ba9e6bdcf932286a6d34d",
1186
1164
  "planner-schemas/component.schema.json": "d20d3502c155627a120cb10d5e9bdec4ba2c73af9c3e9a9d10e3c351f167c72a",
1187
1165
  "planner-schemas/contract-registry.schema.json": "b9dbaf6c87d4f4d676e3b4251344b9eada523b1c5e739c0423cabe267012c12e",
1188
- "planner-schemas/delivery-config.schema.json": "7cd9c15ea4345ad83195b9a1c7d09a0b66275e9a3fdf8b5d6905d96bbec579d3",
1189
- "planner-schemas/delivery-evidence.schema.json": "72ba1450abe5482c43f2069e9ee7d121398008a0ddef36c6b269d38a16872e0e",
1190
1166
  "planner-schemas/feature.schema.json": "eb4aa40d89067ae5c86a079bb3d8e4f45c8727f9e15db2b86c08dacf8e4ae56a",
1191
1167
  "planner-schemas/journey.schema.json": "1ff705bcf89a2823cf60c9e1597e254f97844e7a74dc58299d53192ad2c9f8c3",
1192
1168
  "planner-schemas/registry-index.schema.json": "ffd5643da662ced4052707eeb270eb02908f2e48365103ff0638ec7ba146f430",
@@ -1199,33 +1175,29 @@
1199
1175
  "planner-schemas/train.schema.json": "d6fbac9067c1bffeb84eb79a71228441055af6e6e7ba141dd4e0bcb079345ec0",
1200
1176
  "planner-schemas/wagon.schema.json": "57b98f1ade998d745538eb3d72fb3014a50042006870f90bce47028eea336eb4",
1201
1177
  "planner-schemas/wmbt.schema.json": "7a3a5693bfcf01340667c2be4a3c48e74f34b1af7e8dc13372c0de06b7f4fe12",
1202
- "relationships.yaml": "1cb713364aff54fb6e299e0737fe75a5d7b2e1dbd0a79b16b793aa1d269207b5",
1203
- "src/agent.ts": "65e4579adb5a54977f557f8c783aba0e2a2a1d5cf3cea9f017b67ffe598b2f65",
1204
- "src/board-ui.ts": "16a843705552f8f18e0e328e90e4a2a9148d771ca69f2708fe4a91302947dfad",
1205
- "src/board.ts": "4b9aa5b356d67c1b4ab4018796f9d09afba6d443dbebbb733b5d6c6a8d5a1c87",
1178
+ "relationships.yaml": "26dd50489d7cbd45400937a8949d6ff77cdd4400bfa828d6b7a17e90c64c879b",
1179
+ "src/agent.ts": "009d3170752ded12e9e3d4f7f07fd68d4bab821046714ad68cea428581343c67",
1206
1180
  "src/ci.ts": "67e54d2cbfc44a9e42837d5e750af526d6255c539d3c452a4d5fca3226c0d9ac",
1207
- "src/cli.ts": "e5ab4d2435fdcbebf462b4c2b67b495bd975d5deb668b088d8cba04a9d8b78a5",
1208
- "src/delivery.ts": "2eaaf4fd87aea26dce70b4c88a4e0a2f25b9de165bc2e38330fd7eb449587901",
1209
- "src/docs-capability.ts": "8a7a4360976773fe462b1860eaf26182b016bcb1fbcd6a6d5423bd81379dbe67",
1210
- "src/enforce.ts": "41a6f8c058a2a034996c817f224191403cc66ccc4ed4e04bbefc430014c783d8",
1211
- "src/hooks.ts": "2feeec2674c1462c94256de02ce59ccc6e3ff671ec4dca1bf9903c32888b600b",
1212
- "src/index.ts": "8ee4d7716794f6990ae8580e471b98256a0d0223dad063cd3b4542e598b6e744",
1213
- "src/integrity.ts": "ba3de29e12e62a1b3e0149e243183fdfbce33d88efc9d39605b54996c01426cd",
1181
+ "src/cli.ts": "09e6b4bdebef32ff482a12182e2efbc2e42424ff854e813a10efd3764e45d4fc",
1182
+ "src/docs-capability.ts": "bdeeb414649049b1cd4fa8008cada3a576318be51c43bec91bfa46a8e250c270",
1183
+ "src/enforce.ts": "45c473ffec9f565fba24df2a7db6564d76ee885cd4b0ab8b34bc14b7f2bcc7b2",
1184
+ "src/hooks.ts": "9779eb48f9d0cb6234c33f6616f98dde6583d2ee03ac3c19f3ace2d156af26d0",
1185
+ "src/index.ts": "b3cc97f9867bd605aefa95650a6b8b773e32e6e52e58792d0dbf6736dd3406be",
1186
+ "src/integrity.ts": "3a74cc03bbdebf83d607073a4a13ab4afd4a163c2307062ed137d7d21e38b988",
1214
1187
  "src/journey-docs.ts": "994d229376244c84212cff951032823068a76565dd2fd427b9d44e341bd14853",
1215
1188
  "src/planner-kernel.ts": "5d3f5305fb59becb2cc97d8a03aca6b104f385805d91cc0410856e289dd6fbb1",
1216
1189
  "src/planner-schema-validator.ts": "ce529c0936171075e93c7539b3655fe895a98dd2973ebda5775958e6ebc316d9",
1217
1190
  "src/planner-validators.ts": "99adeb65f579af923c11f21a8f55cfb9993b007fd8df59c5f764696b55379cfc",
1218
1191
  "src/register.ts": "6a2f1c6b8df0dc9c8f45df8ec9fac2be29044e048b08c8ffe423410e94dadedd",
1219
1192
  "src/release.ts": "7b0fe444ee81f476f53b9c21b6c347ef588ee616c60211419cf984132be768ba",
1220
- "src/setup.ts": "04fe6dc4618c14b93580f36d9775b7deca2082b8cc4efab7668795053b7d8dd0",
1193
+ "src/setup.ts": "2dbdddec898e9a3779889f3491eaa1423c4427c9ec63167663245b3ae4db1e6f",
1221
1194
  "src/telemetry-plan.ts": "cdb1e8bfff414f3ea81977388973da2cf6d89567d9e060dc9d5989a33600f153",
1222
1195
  "src/topology.ts": "9779ee48e1c453abb76363163d4ab363463fa14e359571139f6d1f1fcc51ae2c",
1223
- "templates/agents/AGENTS.block.md": "e3e49cb31294bff3d9fbfab9b0b600e690f80e11eccf96a1925e6b4ac21401ba",
1196
+ "templates/agents/AGENTS.block.md": "d7f6013ef7b1793f236b610f78f2898f6c10c60751f671ff2c4b72d49b4f6011",
1224
1197
  "templates/agents/atdd-bun.integrity.test.ts": "dec6f6e5f65a08d9512fc703b367c163f8c9da1f6aa7fd466835c1ec30348a41",
1225
1198
  "templates/agents/atdd/SKILL.md": "8f36d7d571aa17beb03df5e620ff837be73eb21a4e73dabd2c12188d2b378022",
1226
- "templates/agents/delivery/SKILL.md": "0c4fa25303ada52db9c6b67d51a4011c15039e92c4f2947994ec9cba4d0c5efa",
1227
1199
  "templates/docs/site.css": "482b3427e3a3cb02a85dc85cfbeac80592dfd53abf42fc92d6ea7071f22afc95",
1228
1200
  "templates/github/atdd-bun-release.yml": "d9547e9e6ef3ae010d53d55314f6a54567f88bd900f7e50d994cd308601d2684",
1229
- "templates/github/atdd-bun.yml": "bb42414f72f4b9a2fb1eb69530695e193f105a984542f4ca124c898a5f1489be"
1201
+ "templates/github/atdd-bun.yml": "404dc06b6ff4faf5eab909f9f77bac0ae58163d810c3928c4353b1f4b3529048"
1230
1202
  }
1231
1203
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@afokapu/atdd-bun",
3
- "version": "0.10.31",
3
+ "version": "0.10.32",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/afokapu/atdd-bun.git"
@@ -95,17 +95,6 @@ nodes:
95
95
  - coder.htmx.verb-endpoint-is-routed
96
96
  - coder.htmx.verb-endpoint-same-origin
97
97
  - coder.htmx.verb-mutation-signals-progress
98
- - delivery.approved-sha-resolves
99
- - delivery.board
100
- - delivery.config-schema
101
- - delivery.evidence-schema
102
- - delivery.findings-resolved
103
- - delivery.merge-gate
104
- - delivery.model-allowed
105
- - delivery.operating-model
106
- - delivery.review
107
- - delivery.reviewer-independent
108
- - delivery.stages-complete
109
98
  - planner.acceptance.abstract-fields-required
110
99
  - planner.acceptance.authoring-guidelines
111
100
  - planner.acceptance.boundary-kind-vocabulary
@@ -5208,143 +5197,3 @@ edges:
5208
5197
  target_ref: planner.telemetry.tracking-plan-schema
5209
5198
  type: requires
5210
5199
  origin: "@afokapu/atdd-bun"
5211
- - confidence: 1
5212
- constraint: mandatory
5213
- control: internal
5214
- foundation: finish_to_start
5215
- reason: evidence is judged against the stages the policy configures
5216
- source_ref: delivery.evidence-schema
5217
- strength: important
5218
- target_ref: delivery.config-schema
5219
- type: requires
5220
- origin: "@afokapu/atdd-bun"
5221
- - confidence: 1
5222
- constraint: mandatory
5223
- control: internal
5224
- foundation: finish_to_start
5225
- reason: allowed models and their preference order come from the policy
5226
- source_ref: delivery.model-allowed
5227
- strength: important
5228
- target_ref: delivery.config-schema
5229
- type: requires
5230
- origin: "@afokapu/atdd-bun"
5231
- - confidence: 1
5232
- constraint: mandatory
5233
- control: internal
5234
- foundation: finish_to_start
5235
- reason: models are read from a well-formed review entry
5236
- source_ref: delivery.model-allowed
5237
- strength: important
5238
- target_ref: delivery.evidence-schema
5239
- type: requires
5240
- origin: "@afokapu/atdd-bun"
5241
- - confidence: 1
5242
- constraint: mandatory
5243
- control: internal
5244
- foundation: finish_to_start
5245
- reason: independence is judged over the author and reviewer runs the record names
5246
- source_ref: delivery.reviewer-independent
5247
- strength: important
5248
- target_ref: delivery.evidence-schema
5249
- type: requires
5250
- origin: "@afokapu/atdd-bun"
5251
- - confidence: 1
5252
- constraint: mandatory
5253
- control: internal
5254
- foundation: finish_to_start
5255
- reason: outcomes are read from well-formed findings
5256
- source_ref: delivery.findings-resolved
5257
- strength: important
5258
- target_ref: delivery.evidence-schema
5259
- type: requires
5260
- origin: "@afokapu/atdd-bun"
5261
- - confidence: 1
5262
- constraint: mandatory
5263
- control: internal
5264
- foundation: finish_to_start
5265
- reason: a stage is approved only once its earlier findings are settled
5266
- source_ref: delivery.stages-complete
5267
- strength: important
5268
- target_ref: delivery.findings-resolved
5269
- type: requires
5270
- origin: "@afokapu/atdd-bun"
5271
- - confidence: 1
5272
- constraint: mandatory
5273
- control: internal
5274
- foundation: start_to_start
5275
- reason: a reviewer works read-only in a fresh process, as the independence rule judges from the record
5276
- source_ref: delivery.review
5277
- strength: important
5278
- target_ref: delivery.reviewer-independent
5279
- type: requires
5280
- origin: "@afokapu/atdd-bun"
5281
- - confidence: 1
5282
- constraint: mandatory
5283
- control: internal
5284
- foundation: start_to_start
5285
- reason: a reviewer settles a rebuttal in one round, as the findings rule judges from the record
5286
- source_ref: delivery.review
5287
- strength: important
5288
- target_ref: delivery.findings-resolved
5289
- type: requires
5290
- origin: "@afokapu/atdd-bun"
5291
- - confidence: 1
5292
- constraint: mandatory
5293
- control: internal
5294
- foundation: start_to_start
5295
- reason: the driver runs every review as the review convention describes
5296
- source_ref: delivery.operating-model
5297
- strength: important
5298
- target_ref: delivery.review
5299
- type: requires
5300
- origin: "@afokapu/atdd-bun"
5301
- - confidence: 1
5302
- constraint: mandatory
5303
- control: internal
5304
- foundation: finish_to_start
5305
- reason: the operating model leaves the record the evidence schema judges
5306
- source_ref: delivery.operating-model
5307
- strength: important
5308
- target_ref: delivery.evidence-schema
5309
- type: requires
5310
- origin: "@afokapu/atdd-bun"
5311
- - confidence: 1
5312
- constraint: mandatory
5313
- control: internal
5314
- foundation: start_to_start
5315
- reason: the coordinator and drivers dispatch work and receive results through the board
5316
- source_ref: delivery.operating-model
5317
- strength: important
5318
- target_ref: delivery.board
5319
- type: requires
5320
- origin: "@afokapu/atdd-bun"
5321
- - confidence: 1
5322
- constraint: mandatory
5323
- control: internal
5324
- foundation: finish_to_start
5325
- reason: the approved SHA is the one the closing review approved
5326
- source_ref: delivery.approved-sha-resolves
5327
- strength: important
5328
- target_ref: delivery.stages-complete
5329
- type: requires
5330
- origin: "@afokapu/atdd-bun"
5331
- - confidence: 1
5332
- constraint: mandatory
5333
- control: internal
5334
- foundation: finish_to_start
5335
- reason: the gate compares the branch head with an approved SHA that exists
5336
- source_ref: delivery.merge-gate
5337
- strength: important
5338
- target_ref: delivery.approved-sha-resolves
5339
- type: requires
5340
- origin: "@afokapu/atdd-bun"
5341
- - confidence: 1
5342
- constraint: mandatory
5343
- control: internal
5344
- foundation: start_to_start
5345
- reason: the gate merges a tranche whose lifecycle closed its acceptances
5346
- source_ref: delivery.merge-gate
5347
- strength: important
5348
- target_ref: traceability.plan.executable-acceptance-has-test
5349
- type: requires
5350
- origin: "@afokapu/atdd-bun"