@afokapu/atdd-bun 0.10.31 → 0.10.33

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 (66) hide show
  1. package/README.md +14 -120
  2. package/conventions/_profiles/architecture.yaml +190 -0
  3. package/conventions/_profiles/coder.yaml +804 -0
  4. package/conventions/_profiles/design.yaml +219 -0
  5. package/conventions/_profiles/docs.yaml +136 -0
  6. package/conventions/_profiles/htmx.yaml +436 -0
  7. package/conventions/_profiles/interlocking.yaml +248 -0
  8. package/conventions/_profiles/metrics.yaml +80 -0
  9. package/conventions/_profiles/planner.yaml +789 -0
  10. package/conventions/_profiles/runtime.yaml +62 -0
  11. package/conventions/_profiles/security.yaml +70 -0
  12. package/conventions/_profiles/telemetry.yaml +196 -0
  13. package/conventions/_profiles/tester.yaml +734 -0
  14. package/conventions/_profiles/topology.yaml +192 -0
  15. package/conventions/_profiles/traceability.yaml +94 -0
  16. package/conventions/atdd-bun.profiles/atdd-bun.profiles.presets.convention.yaml +21 -3
  17. package/conventions/planner.docs/planner.docs.area-index-required.convention.yaml +2 -2
  18. package/conventions/planner.docs/planner.docs.artifact-path-shape.convention.yaml +1 -1
  19. package/conventions/planner.docs/planner.docs.asciidoc-only.convention.yaml +0 -1
  20. package/conventions/planner.docs/planner.docs.identity-required.convention.yaml +1 -1
  21. package/conventions/planner.docs/planner.docs.undeclared-change.convention.yaml +1 -2
  22. package/detectors/bun_interlocking_coverage/checks/interlocking_train_sequence.mjs +7 -5
  23. package/detectors/planner_docs_capability/README.md +1 -1
  24. package/integrity.json +36 -50
  25. package/package.json +1 -1
  26. package/relationships.yaml +0 -151
  27. package/src/agent.ts +15 -31
  28. package/src/cli.ts +7 -8
  29. package/src/docs-capability.ts +6 -24
  30. package/src/enforce.ts +8 -9
  31. package/src/hooks.ts +4 -8
  32. package/src/index.ts +1 -2
  33. package/src/integrity.ts +3 -11
  34. package/src/profile-registry.ts +74 -0
  35. package/src/setup.ts +3 -5
  36. package/templates/agents/AGENTS.block.md +4 -8
  37. package/templates/github/atdd-bun.yml +0 -5
  38. package/conventions/delivery/delivery.approved-sha-resolves.convention.yaml +0 -33
  39. package/conventions/delivery/delivery.board.convention.yaml +0 -60
  40. package/conventions/delivery/delivery.config-schema.convention.yaml +0 -49
  41. package/conventions/delivery/delivery.evidence-schema.convention.yaml +0 -34
  42. package/conventions/delivery/delivery.findings-resolved.convention.yaml +0 -42
  43. package/conventions/delivery/delivery.merge-gate.convention.yaml +0 -46
  44. package/conventions/delivery/delivery.model-allowed.convention.yaml +0 -29
  45. package/conventions/delivery/delivery.operating-model.convention.yaml +0 -97
  46. package/conventions/delivery/delivery.review.convention.yaml +0 -42
  47. package/conventions/delivery/delivery.reviewer-independent.convention.yaml +0 -34
  48. package/conventions/delivery/delivery.stages-complete.convention.yaml +0 -33
  49. package/detectors/delivery_evidence/atdd.implementation.yaml +0 -33
  50. package/detectors/delivery_evidence/detect.mjs +0 -9
  51. package/detectors/delivery_evidence/fixtures/clean/atdd-bun.yaml +0 -8
  52. package/detectors/delivery_evidence/fixtures/clean/docs/delivery/tranches/api/evidence.yaml +0 -54
  53. package/detectors/delivery_evidence/fixtures/dirty/atdd-bun.yaml +0 -3
  54. package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/api/evidence.yaml +0 -31
  55. package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/data/evidence.yaml +0 -8
  56. package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/orphan/README.md +0 -1
  57. package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/ui/evidence.yaml +0 -5
  58. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/delivery/release.adoc +0 -10
  59. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/purpose/index.adoc +0 -5
  60. package/planner-schemas/delivery-config.schema.json +0 -95
  61. package/planner-schemas/delivery-evidence.schema.json +0 -103
  62. package/src/board-ui.ts +0 -91
  63. package/src/board.ts +0 -222
  64. package/src/delivery.ts +0 -567
  65. package/templates/agents/atdd/SKILL.md +0 -20
  66. package/templates/agents/delivery/SKILL.md +0 -15
@@ -0,0 +1,192 @@
1
+ schema_version: "1.0.0"
2
+ profile: "topology"
3
+ implementations:
4
+ - "atdd_topology"
5
+ conventions:
6
+ - rule_id: "atdd-bun.topology.e2e-location"
7
+ path: "conventions/atdd-bun.topology/atdd-bun.topology.e2e-location.convention.yaml"
8
+ - rule_id: "atdd-bun.topology.feature-source-coverage"
9
+ path: "conventions/atdd-bun.topology/atdd-bun.topology.feature-source-coverage.convention.yaml"
10
+ - rule_id: "atdd-bun.topology.feature-test-coverage"
11
+ path: "conventions/atdd-bun.topology/atdd-bun.topology.feature-test-coverage.convention.yaml"
12
+ - rule_id: "atdd-bun.topology.plan-location"
13
+ path: "conventions/atdd-bun.topology/atdd-bun.topology.plan-location.convention.yaml"
14
+ - rule_id: "atdd-bun.topology.source-location"
15
+ path: "conventions/atdd-bun.topology/atdd-bun.topology.source-location.convention.yaml"
16
+ - rule_id: "atdd-bun.topology.test-location"
17
+ path: "conventions/atdd-bun.topology/atdd-bun.topology.test-location.convention.yaml"
18
+ - rule_id: "planner.feature.wagon-link"
19
+ path: "planner-nodes/nodes/planner.feature.wagon-link.convention.yaml"
20
+ - rule_id: "planner.wagon.features"
21
+ path: "planner-nodes/nodes/planner.wagon.features.convention.yaml"
22
+ relationships:
23
+ - confidence: 1
24
+ constraint: "mandatory"
25
+ control: "internal"
26
+ foundation: "finish_to_start"
27
+ origin: "@afokapu/atdd-bun"
28
+ reason: "journey E2E paths are derived from the journeys the plan declares"
29
+ source_ref: "atdd-bun.topology.e2e-location"
30
+ strength: "critical"
31
+ target_ref: "planner.journey.definition"
32
+ type: "requires"
33
+ - confidence: 1
34
+ constraint: "mandatory"
35
+ control: "internal"
36
+ foundation: "start_to_start"
37
+ origin: "@afokapu/atdd-bun"
38
+ reason: "every route has an end-to-end proof: at its canonical path, and exercising the production runner"
39
+ source_ref: "atdd-bun.topology.e2e-location"
40
+ strength: "important"
41
+ target_ref: "tester.bun.interlocking-route-coverage"
42
+ type: "runs_alongside"
43
+ - confidence: 1
44
+ constraint: "mandatory"
45
+ control: "internal"
46
+ foundation: "start_to_start"
47
+ origin: "@afokapu/atdd-bun"
48
+ reason: "on a frontend journey a browser spec is the route's end-to-end proof"
49
+ source_ref: "atdd-bun.topology.e2e-location"
50
+ strength: "important"
51
+ target_ref: "tester.htmx.train-e2e-coverage"
52
+ type: "runs_alongside"
53
+ - confidence: 1
54
+ constraint: "mandatory"
55
+ control: "internal"
56
+ foundation: "finish_to_start"
57
+ origin: "@afokapu/atdd-bun"
58
+ reason: "coverage counts only source placed beneath its feature"
59
+ source_ref: "atdd-bun.topology.feature-source-coverage"
60
+ strength: "critical"
61
+ target_ref: "atdd-bun.topology.source-location"
62
+ type: "requires"
63
+ - confidence: 1
64
+ constraint: "mandatory"
65
+ control: "internal"
66
+ foundation: "start_to_start"
67
+ origin: "@afokapu/atdd-bun"
68
+ reason: "a feature with WMBTs is implemented and tested"
69
+ source_ref: "atdd-bun.topology.feature-test-coverage"
70
+ strength: "important"
71
+ target_ref: "atdd-bun.topology.feature-source-coverage"
72
+ type: "runs_alongside"
73
+ - confidence: 1
74
+ constraint: "mandatory"
75
+ control: "internal"
76
+ foundation: "finish_to_start"
77
+ origin: "@afokapu/atdd-bun"
78
+ reason: "coverage counts only tests placed beneath their feature and bound to its acceptances"
79
+ source_ref: "atdd-bun.topology.feature-test-coverage"
80
+ strength: "critical"
81
+ target_ref: "atdd-bun.topology.test-location"
82
+ type: "requires"
83
+ - confidence: 1
84
+ constraint: "mandatory"
85
+ control: "internal"
86
+ foundation: "start_to_start"
87
+ origin: "@afokapu/atdd-bun"
88
+ reason: "where a feature lives and which wagon owns it: the same ownership, by path and by link"
89
+ source_ref: "atdd-bun.topology.plan-location"
90
+ strength: "important"
91
+ target_ref: "planner.feature.wagon-link"
92
+ type: "runs_alongside"
93
+ - confidence: 1
94
+ constraint: "mandatory"
95
+ control: "internal"
96
+ foundation: "finish_to_start"
97
+ origin: "@afokapu/atdd-bun"
98
+ reason: "features are placed by path once the wagon's feature decomposition is declared"
99
+ source_ref: "atdd-bun.topology.plan-location"
100
+ strength: "critical"
101
+ target_ref: "planner.wagon.features"
102
+ type: "requires"
103
+ - confidence: 1
104
+ constraint: "mandatory"
105
+ control: "internal"
106
+ foundation: "finish_to_start"
107
+ origin: "@afokapu/atdd-bun"
108
+ reason: "source is placed beneath a feature the plan declares at its canonical path"
109
+ source_ref: "atdd-bun.topology.source-location"
110
+ strength: "critical"
111
+ target_ref: "atdd-bun.topology.plan-location"
112
+ type: "requires"
113
+ - confidence: 1
114
+ constraint: "mandatory"
115
+ control: "internal"
116
+ foundation: "start_to_start"
117
+ origin: "@afokapu/atdd-bun"
118
+ reason: "the same component URN, read for its grammar and for where the file must live"
119
+ source_ref: "atdd-bun.topology.source-location"
120
+ strength: "important"
121
+ target_ref: "coder.bun.green-urn-pattern"
122
+ type: "runs_alongside"
123
+ - confidence: 1
124
+ constraint: "mandatory"
125
+ control: "internal"
126
+ foundation: "finish_to_start"
127
+ origin: "@afokapu/atdd-bun"
128
+ reason: "tests are placed beneath a feature the plan declares"
129
+ source_ref: "atdd-bun.topology.test-location"
130
+ strength: "critical"
131
+ target_ref: "atdd-bun.topology.plan-location"
132
+ type: "requires"
133
+ - confidence: 1
134
+ constraint: "mandatory"
135
+ control: "internal"
136
+ foundation: "start_to_start"
137
+ origin: "@afokapu/atdd-bun"
138
+ reason: "the acceptance a test binds, read for presence and for whether a WMBT declares it"
139
+ source_ref: "atdd-bun.topology.test-location"
140
+ strength: "important"
141
+ target_ref: "tester.bun.acceptance-binding-declared"
142
+ type: "runs_alongside"
143
+ - confidence: 1
144
+ constraint: "mandatory"
145
+ control: "external"
146
+ foundation: "finish_to_start"
147
+ origin: "atdd@36ce055a:src/atdd/coach/graph/relationships.yaml"
148
+ reason: "wagon-feature coverage reads the wagon features manifest"
149
+ source_ref: "planner.coverage.bidirectional-coverage-between-wagons"
150
+ strength: "important"
151
+ target_ref: "planner.wagon.features"
152
+ type: "requires"
153
+ - confidence: 1
154
+ constraint: "mandatory"
155
+ control: "internal"
156
+ foundation: "finish_to_finish"
157
+ origin: "atdd@36ce055a:src/atdd/coach/graph/relationships.yaml"
158
+ reason: "a feature belongs to exactly one wagon"
159
+ source_ref: "planner.feature.definition"
160
+ strength: "critical"
161
+ target_ref: "planner.feature.wagon-link"
162
+ type: "requires"
163
+ - confidence: 1
164
+ constraint: "mandatory"
165
+ control: "external"
166
+ foundation: "finish_to_start"
167
+ origin: "atdd@36ce055a:src/atdd/coach/graph/relationships.yaml"
168
+ reason: "a feature is registered in its wagon _features.yaml"
169
+ source_ref: "planner.feature.wagon-link"
170
+ strength: "important"
171
+ target_ref: "planner.wagon.features"
172
+ type: "requires"
173
+ - confidence: 1
174
+ constraint: "mandatory"
175
+ control: "internal"
176
+ foundation: "finish_to_finish"
177
+ origin: "atdd@36ce055a:src/atdd/coach/graph/relationships.yaml"
178
+ reason: "a wagon groups the features that decompose it"
179
+ source_ref: "planner.wagon.definition"
180
+ strength: "minor"
181
+ target_ref: "planner.wagon.features"
182
+ type: "requires"
183
+ - confidence: 1
184
+ constraint: "mandatory"
185
+ control: "internal"
186
+ foundation: "start_to_start"
187
+ origin: "atdd@36ce055a:src/atdd/coach/graph/relationships.yaml"
188
+ reason: "the features-manifest rule uses the urn-array features format"
189
+ source_ref: "planner.wagon.features-format"
190
+ strength: "important"
191
+ target_ref: "planner.wagon.features"
192
+ type: "runs_alongside"
@@ -0,0 +1,94 @@
1
+ schema_version: "1.0.0"
2
+ profile: "traceability"
3
+ implementations:
4
+ - "atdd_traceability_closure"
5
+ conventions:
6
+ - rule_id: "traceability.plan.executable-acceptance-has-test"
7
+ path: "conventions/traceability/traceability.plan.executable-acceptance-has-test.convention.yaml"
8
+ - rule_id: "traceability.source.tested-by-present"
9
+ path: "conventions/traceability/traceability.source.tested-by-present.convention.yaml"
10
+ - rule_id: "traceability.source.tested-by-resolves"
11
+ path: "conventions/traceability/traceability.source.tested-by-resolves.convention.yaml"
12
+ - rule_id: "traceability.test.binding-resolves"
13
+ path: "conventions/traceability/traceability.test.binding-resolves.convention.yaml"
14
+ relationships:
15
+ - confidence: 1
16
+ constraint: "mandatory"
17
+ control: "internal"
18
+ foundation: "finish_to_start"
19
+ origin: "@afokapu/atdd-bun"
20
+ reason: "a test can bind an acceptance only through the acc: identity the WMBT gives it"
21
+ source_ref: "atdd-bun.planner.acceptance-identity"
22
+ strength: "critical"
23
+ target_ref: "traceability.test.binding-resolves"
24
+ type: "enables"
25
+ - confidence: 1
26
+ constraint: "discretionary"
27
+ control: "internal"
28
+ foundation: "finish_to_start"
29
+ origin: "@afokapu/atdd-bun"
30
+ reason: "traceability joins with the building preset because executable-acceptance-has-test reports every acceptance until tests exist"
31
+ source_ref: "atdd-bun.profiles.presets"
32
+ strength: "minor"
33
+ target_ref: "traceability.plan.executable-acceptance-has-test"
34
+ type: "follows"
35
+ - confidence: 1
36
+ constraint: "mandatory"
37
+ control: "internal"
38
+ foundation: "finish_to_start"
39
+ origin: "@afokapu/atdd-bun"
40
+ reason: "telemetry items follow the acceptance-has-test discipline"
41
+ source_ref: "tester.bun.telemetry-required-item-coverage"
42
+ strength: "important"
43
+ target_ref: "traceability.plan.executable-acceptance-has-test"
44
+ type: "requires"
45
+ - confidence: 1
46
+ constraint: "mandatory"
47
+ control: "internal"
48
+ foundation: "start_to_start"
49
+ origin: "@afokapu/atdd-bun"
50
+ reason: "the two directions of plan-test closure: every acceptance has a test, and every test names an acceptance that exists"
51
+ source_ref: "traceability.plan.executable-acceptance-has-test"
52
+ strength: "critical"
53
+ target_ref: "traceability.test.binding-resolves"
54
+ type: "runs_alongside"
55
+ - confidence: 1
56
+ constraint: "mandatory"
57
+ control: "internal"
58
+ foundation: "start_to_start"
59
+ origin: "@afokapu/atdd-bun"
60
+ reason: "the same Tested-By header, read by the closure check and by the coder header rule"
61
+ source_ref: "traceability.source.tested-by-present"
62
+ strength: "important"
63
+ target_ref: "coder.bun.green-header-tested-by"
64
+ type: "runs_alongside"
65
+ - confidence: 1
66
+ constraint: "mandatory"
67
+ control: "internal"
68
+ foundation: "finish_to_start"
69
+ origin: "@afokapu/atdd-bun"
70
+ reason: "a testing witness can only resolve once one is declared"
71
+ source_ref: "traceability.source.tested-by-resolves"
72
+ strength: "critical"
73
+ target_ref: "traceability.source.tested-by-present"
74
+ type: "requires"
75
+ - confidence: 1
76
+ constraint: "mandatory"
77
+ control: "internal"
78
+ foundation: "start_to_start"
79
+ origin: "@afokapu/atdd-bun"
80
+ reason: "source-to-test and test-to-plan links chain into plan to test to implementation closure"
81
+ source_ref: "traceability.source.tested-by-resolves"
82
+ strength: "important"
83
+ target_ref: "traceability.test.binding-resolves"
84
+ type: "runs_alongside"
85
+ - confidence: 1
86
+ constraint: "mandatory"
87
+ control: "internal"
88
+ foundation: "finish_to_start"
89
+ origin: "@afokapu/atdd-bun"
90
+ reason: "a test's binding must be declared before it can be resolved against the plan"
91
+ source_ref: "traceability.test.binding-resolves"
92
+ strength: "critical"
93
+ target_ref: "tester.bun.acceptance-binding-declared"
94
+ type: "requires"
@@ -8,12 +8,30 @@ 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]
16
+ - term_id: profile_registries
17
+ text: >-
18
+ A deterministic, profile-scoped projection of the detector manifests, convention paths, and
19
+ direct relationship edges. Read the selected profile's registry instead of the complete graph.
20
+ values:
21
+ architecture: conventions/_profiles/architecture.yaml
22
+ coder: conventions/_profiles/coder.yaml
23
+ design: conventions/_profiles/design.yaml
24
+ docs: conventions/_profiles/docs.yaml
25
+ htmx: conventions/_profiles/htmx.yaml
26
+ interlocking: conventions/_profiles/interlocking.yaml
27
+ metrics: conventions/_profiles/metrics.yaml
28
+ planner: conventions/_profiles/planner.yaml
29
+ runtime: conventions/_profiles/runtime.yaml
30
+ security: conventions/_profiles/security.yaml
31
+ telemetry: conventions/_profiles/telemetry.yaml
32
+ tester: conventions/_profiles/tester.yaml
33
+ topology: conventions/_profiles/topology.yaml
34
+ traceability: conventions/_profiles/traceability.yaml
17
35
  content:
18
36
  summary: >-
19
37
  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 +40,7 @@ content:
22
40
  security joins with the first code, not at release: a secret committed during GREEN stays in history.
23
41
  coder already bundles the architecture, metrics, runtime, design and responsive detectors, so those need no later preset.
24
42
  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.
43
+ 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
44
  exceptions:
27
45
  - >-
28
46
  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,10 +1,24 @@
1
1
  {
2
- "version": "0.10.31",
2
+ "version": "0.10.33",
3
3
  "files": {
4
4
  "HOOK_AUDIT.md": "5329d840db37671b1918f688ead26865473b87db73dbc75f7c8b2a8bbe8d6d43",
5
5
  "PLANNER_PORT.md": "fb5935bac8b7ac18994de21e43ace3a5ef8cd55f85b0e3349fca261280054f11",
6
- "README.md": "3200613045942da247f24bd54c01e6b651a0878f9b6244944e384a6731cef32e",
6
+ "README.md": "edcd36ebed5853c412c89ed998cd198f7a58237a68dcf37c14be5f7f5c0e9ff4",
7
7
  "bunfig.toml": "b9fc65eca9014c5179380259d70e76385a6a80788fa9a2df5fb3eaa5554fd2fe",
8
+ "conventions/_profiles/architecture.yaml": "f1808768b720a4e476047e4a0912002ca673946562cea9aeef5d0c214828d93a",
9
+ "conventions/_profiles/coder.yaml": "c38e46405ddd7e82fd7679246d027821db19db86c307a23ce5d14f18165d0699",
10
+ "conventions/_profiles/design.yaml": "25a02a67152d49728ad3517f6510da7285116fa69c56cbda55613a7cfcfd3b89",
11
+ "conventions/_profiles/docs.yaml": "05485c3b32f1757e77c42e331eec1db651cb52ef57fc4e8607bb2f73b056cbb3",
12
+ "conventions/_profiles/htmx.yaml": "38fc8b3e1a53429e16977ed63e83e751b203deffe9b338ea171050fb64641559",
13
+ "conventions/_profiles/interlocking.yaml": "46a2a4fb2eb537941c991ef4178d009a30d14f84279e525ca0d0887d3239047d",
14
+ "conventions/_profiles/metrics.yaml": "6028a227ccdef6d97ff10602f1a146eb73fd02b0a03ebce6726540fa30540f3c",
15
+ "conventions/_profiles/planner.yaml": "b3938783793c34f832968b7293b7c301f3e1deff5f06536a078168c911d0d089",
16
+ "conventions/_profiles/runtime.yaml": "48fae0d31fb9228b8819243c264721037720acb1763bf27f74325c14ffef46d4",
17
+ "conventions/_profiles/security.yaml": "38eb6b17e35e1439fe4f19c8ccf3ba1b2f18759a984dd1d33171ec3a29128876",
18
+ "conventions/_profiles/telemetry.yaml": "4c07c693357fad420df0df82a3ad196cd159df017fec6b98244841530516dfd9",
19
+ "conventions/_profiles/tester.yaml": "348183eee5298cbb843031f6c41c3f9d0a725b11b3c66e154b47c9b340a72666",
20
+ "conventions/_profiles/topology.yaml": "08df698c2e5419e8f7faa83f5f15c3ba9c085cc2ce72579624eb24962a6b8612",
21
+ "conventions/_profiles/traceability.yaml": "adce93fb8392307685a01bec85e60534c59a9f4f0e4f8ea4767d79d22cf80878",
8
22
  "conventions/atdd-bun.planner/atdd-bun.planner.acceptance-identity.convention.yaml": "81c5c773d5ee15e8d99a2c237aa9846b110b2533df45ebf407d0e3ec6ed3dd03",
9
23
  "conventions/atdd-bun.planner/atdd-bun.planner.identity-required.convention.yaml": "e96d7c1455d0c221072d82e7f2b55da1c4f9ceb17718eb6ed96affdeef37675b",
10
24
  "conventions/atdd-bun.planner/atdd-bun.planner.identity-unique.convention.yaml": "409ba1d035ed46bc45f3627b62fd3a6a5967d984cc4c071c41be3f3fa887c6d6",
@@ -13,7 +27,7 @@
13
27
  "conventions/atdd-bun.planner/atdd-bun.planner.reference-resolves.convention.yaml": "b96927d269692c29c02fee38ecbeb999480791f8dc7486c4072a9ff30183d7d6",
14
28
  "conventions/atdd-bun.planner/atdd-bun.planner.schema.convention.yaml": "16d0a26451758b759e6ca1f5b4f38ae1feff129688306ffcc2f70f6d3974b591",
15
29
  "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",
30
+ "conventions/atdd-bun.profiles/atdd-bun.profiles.presets.convention.yaml": "4f6f6367d6baa1c5f2eac8c686a7a0e309b3e6335fdaa5e6641f3cc43dbb97d0",
17
31
  "conventions/atdd-bun.topology/atdd-bun.topology.e2e-location.convention.yaml": "3a3b991bc851b86d597636200f5cb10a0defda3920348860cdca28955ab91f4c",
18
32
  "conventions/atdd-bun.topology/atdd-bun.topology.feature-source-coverage.convention.yaml": "2b64093f1e7f1fe0e2edcadf12e560fa80cecec19536abaa5bf09af362c6694e",
19
33
  "conventions/atdd-bun.topology/atdd-bun.topology.feature-test-coverage.convention.yaml": "279be57399c9b79a1bd758414076e3053d67b7d4a7fcbbb950ea12d1201effeb",
@@ -92,27 +106,16 @@
92
106
  "conventions/coder.htmx/coder.htmx.verb-endpoint-is-routed.convention.yaml": "d6aa58d35df4b7ebbcf675ca79f0177d64e56f095802b9a3eaae3e4befb5c270",
93
107
  "conventions/coder.htmx/coder.htmx.verb-endpoint-same-origin.convention.yaml": "2128d26153e2d1f19c65a1e1665d4f82c78395daedb336d6ef1256e82b74aedb",
94
108
  "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
109
  "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",
110
+ "conventions/planner.docs/planner.docs.area-index-required.convention.yaml": "6b851168daf1913c24ecdb91ae1d81a9e4542e9a5354642b2c60c273c15d28e8",
111
+ "conventions/planner.docs/planner.docs.artifact-path-shape.convention.yaml": "436937a82f8e064833dc28adfeedcfa78fcdc46a74b28e956756000787b3e05e",
112
+ "conventions/planner.docs/planner.docs.asciidoc-only.convention.yaml": "6e7b5b16efd794bee677d0827adc71c2f66df8bcba0264dd74a25c67c19f3a3b",
110
113
  "conventions/planner.docs/planner.docs.doc-id-unique.convention.yaml": "558bc7d7001645f5443fcf19a5da67df17220b335d99811d103529bf22555311",
111
114
  "conventions/planner.docs/planner.docs.graph-target-resolves.convention.yaml": "657225233b92125b2667e2d72d65dc0ebc7cfc92b2c9e023d3d42449281683ea",
112
- "conventions/planner.docs/planner.docs.identity-required.convention.yaml": "86427664a497d7fefc8f77178cf64db66cb7ce328c1a3d2b94a0109ee7401e86",
115
+ "conventions/planner.docs/planner.docs.identity-required.convention.yaml": "afe23ea51fd53f305668a8ba97acc46125d0d2a1d818785b35ecd0457f65ac1c",
113
116
  "conventions/planner.docs/planner.docs.journey-view-current.convention.yaml": "5892d4213d72342dc568c37f13942139bbdce4c0d5716075de579dc8060fc969",
114
117
  "conventions/planner.docs/planner.docs.reference-integrity.convention.yaml": "34310088114ac7cc58bc74443a76366e3e644121aaa3ff39b6602a0d15e03293",
115
- "conventions/planner.docs/planner.docs.undeclared-change.convention.yaml": "eb0df8fbf343ed38fe4694f63a065ee3e0e060d819f57ca8ea2f151aef66a8d5",
118
+ "conventions/planner.docs/planner.docs.undeclared-change.convention.yaml": "b66655649bbf030ab58f29d0c474890b88cf8dbff8440c9b22cb44769d0bbb7e",
116
119
  "conventions/planner.telemetry/planner.telemetry.acceptance-decision.convention.yaml": "67dc840e0993c6940a431403b47439484ed557855a7dee82d75abd1479f3151e",
117
120
  "conventions/planner.telemetry/planner.telemetry.logical-ownership.convention.yaml": "6dd666a22fd7fd0cb6e5fe5505665c8889a504ee929fdebf3aee019df4aac2b4",
118
121
  "conventions/planner.telemetry/planner.telemetry.metric-cardinality.convention.yaml": "e61831f207ad4f09be983b300cbedc40f6ad08a4b2483612fc195e2343be93f6",
@@ -386,7 +389,7 @@
386
389
  "detectors/bun_interlocking_coverage/checks/interlocking_route_coverage.mjs": "2d73c401adf77b3147e11271653c528d02dfc50f4eebde8be35795707023fb6d",
387
390
  "detectors/bun_interlocking_coverage/checks/interlocking_smoke_coverage.mjs": "ad53b606c325f87b09ac89c848c75ba5618e7073223fe528cf048343147638ce",
388
391
  "detectors/bun_interlocking_coverage/checks/interlocking_trace_binds.mjs": "61dcb8a8d04e9764aab7920f346bd3684fc98e2c294aa5c58eefec555145a1d0",
389
- "detectors/bun_interlocking_coverage/checks/interlocking_train_sequence.mjs": "7a38ce0b8bd5b4342a7bae09776b9638dc3ed51635322055a4fb0f0e6940af77",
392
+ "detectors/bun_interlocking_coverage/checks/interlocking_train_sequence.mjs": "e16af2af51a07c80f7cf5f4016ebf3f18a8cfc6b0ca9ca9187992fac6c12aeaf",
390
393
  "detectors/bun_interlocking_coverage/detect.mjs": "a124418dc29aaf8fda9cd09427230d25768206b3f563d516774667e8cf75b66e",
391
394
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/e2e/interlockings/match-resolution/routes.test.ts": "ba6ea85b3fbe15e3c49332da3ad2921a0ff3436a6fe3b5a5035fb35fdc874720",
392
395
  "detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/e2e/interlockings/match-resolution/trace.test.ts": "aee4ea93ceb8636846344e915cd7e66f7e8f99ba08596f83266590fa2b9ff58e",
@@ -674,15 +677,6 @@
674
677
  "detectors/bun_ts_metrics_detector/fixtures/dirty/orphan.ts": "0f7acd0dffe90902a0a43cc45771b8a473d079efc9693112b3b85645c191c23d",
675
678
  "detectors/bun_ts_metrics_detector/fixtures/dirty/typed.ts": "7c27ee1a674af7d5b2cce3a65bfec2111602d84a75817fd60f737c7d63fc9c83",
676
679
  "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
680
  "detectors/htmx_e2e_detector/atdd.implementation.yaml": "454bb123039d57c992d27d9274e20fa3452ac41a237eb55471be62a4bcfebf06",
687
681
  "detectors/htmx_e2e_detector/checks/_e2e.mjs": "efec6c8e3dc8b95bf3acd826397ecdedac64c06d367791a4017a272bc0660896",
688
682
  "detectors/htmx_e2e_detector/checks/_map.json": "94dec08ff4764cd6a3dba139f12a7c984292e95a9354b0cdaa0ce9d4180e2c89",
@@ -788,7 +782,7 @@
788
782
  "detectors/htmx_tester_detector/fixtures/dirty/panel.html": "840f263e83979c87b8a6dffdbef5df69883cfa2d5122be959092a4776f2f6457",
789
783
  "detectors/htmx_tester_detector/fixtures/dirty/statusonly.test.ts": "a2daf2874bf68c6221374ac05619642a42d56b5d1f76e30fa3d2a1826adaf51b",
790
784
  "detectors/htmx_tester_detector/test_header.mjs": "a22221fe9ef6d10297ec777c5d0c6e7b84010ccf41e90db30c036206790ea198",
791
- "detectors/planner_docs_capability/README.md": "1e1f8ee258242c05293447fcde124543447ba375306e8a7e5f665881b038bcd1",
785
+ "detectors/planner_docs_capability/README.md": "6e90339fae5a77154fc7bfda36d60b57e55acbd2884cbbc1d86f31f8aaf99960",
792
786
  "detectors/planner_docs_capability/atdd.implementation.yaml": "0bc4c27c61faa15147ad8ed55a866d7830875efb6222aa463d49f1163a8b6121",
793
787
  "detectors/planner_docs_capability/detect.mjs": "d10773fa5b2d8f65ce351804694171a6eb75e05eb4c80fa1edce4a5d56b72c5d",
794
788
  "detectors/planner_docs_capability/fixtures/clean/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc": "6d30e5545e7b051c80605c3dbee50286f71e344ab2e71a987db945941de42523",
@@ -899,10 +893,8 @@
899
893
  "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/architecture/state-store.adoc": "41141c225dad3fed39195313ad09a5cf3e3ba2f591bd6d8c7a9133dd79e52498",
900
894
  "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/archive/2025-control-root.adoc": "7c7aef22837f29891a90ce15b0b181aab4a79fbba97e4c7903cc5e56d9028983",
901
895
  "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
896
  "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/dist/index.md": "eac4d8fe653f45c959731cc08218d898e5123d685a1017191c4cffb626777f13",
904
897
  "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
898
  "detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/purpose/worktrees.adoc": "de957bd8aec411c930fa9785d793c3345c82f5d7cb7f28f40f73f1c53a436440",
907
899
  "detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc": "6d30e5545e7b051c80605c3dbee50286f71e344ab2e71a987db945941de42523",
908
900
  "detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/architecture/decisions/index.adoc": "4a6cb87e249d587c85bb6389ff5fecae7a96194af8677b588eed0c791099123b",
@@ -1185,8 +1177,6 @@
1185
1177
  "planner-schemas/binding-lock.schema.json": "f2455606702f45fafa194549126d4a66e6c286ba1c4ba9e6bdcf932286a6d34d",
1186
1178
  "planner-schemas/component.schema.json": "d20d3502c155627a120cb10d5e9bdec4ba2c73af9c3e9a9d10e3c351f167c72a",
1187
1179
  "planner-schemas/contract-registry.schema.json": "b9dbaf6c87d4f4d676e3b4251344b9eada523b1c5e739c0423cabe267012c12e",
1188
- "planner-schemas/delivery-config.schema.json": "7cd9c15ea4345ad83195b9a1c7d09a0b66275e9a3fdf8b5d6905d96bbec579d3",
1189
- "planner-schemas/delivery-evidence.schema.json": "72ba1450abe5482c43f2069e9ee7d121398008a0ddef36c6b269d38a16872e0e",
1190
1180
  "planner-schemas/feature.schema.json": "eb4aa40d89067ae5c86a079bb3d8e4f45c8727f9e15db2b86c08dacf8e4ae56a",
1191
1181
  "planner-schemas/journey.schema.json": "1ff705bcf89a2823cf60c9e1597e254f97844e7a74dc58299d53192ad2c9f8c3",
1192
1182
  "planner-schemas/registry-index.schema.json": "ffd5643da662ced4052707eeb270eb02908f2e48365103ff0638ec7ba146f430",
@@ -1199,33 +1189,29 @@
1199
1189
  "planner-schemas/train.schema.json": "d6fbac9067c1bffeb84eb79a71228441055af6e6e7ba141dd4e0bcb079345ec0",
1200
1190
  "planner-schemas/wagon.schema.json": "57b98f1ade998d745538eb3d72fb3014a50042006870f90bce47028eea336eb4",
1201
1191
  "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",
1192
+ "relationships.yaml": "26dd50489d7cbd45400937a8949d6ff77cdd4400bfa828d6b7a17e90c64c879b",
1193
+ "src/agent.ts": "39ca8b3183063c60e00eb96e5629d0397aeb83cc82d4c4bc32c01715c906649b",
1206
1194
  "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",
1195
+ "src/cli.ts": "cbc50f1e7fc7d0935f78230b7da6e232ed7ee6f04828e015c599fb6f6edcbfa2",
1196
+ "src/docs-capability.ts": "bdeeb414649049b1cd4fa8008cada3a576318be51c43bec91bfa46a8e250c270",
1197
+ "src/enforce.ts": "736da6a864785137f3c2ef5b4f25060d2f4a1eba5d2872b7f4e7cd7395eb46de",
1198
+ "src/hooks.ts": "0b4ca8c857e637bbd144e737e78eda924e3cba7b038c0abe5e6916d200d73068",
1199
+ "src/index.ts": "4081f8b08d1d3ee9e15a9964143e53d9cfb94a5616ab3e58a180d24cc16dc381",
1200
+ "src/integrity.ts": "44ebe101933e8b1a42c563acdffcaf7a24baa4861eb8731a914bc51500d0a93d",
1214
1201
  "src/journey-docs.ts": "994d229376244c84212cff951032823068a76565dd2fd427b9d44e341bd14853",
1215
1202
  "src/planner-kernel.ts": "5d3f5305fb59becb2cc97d8a03aca6b104f385805d91cc0410856e289dd6fbb1",
1216
1203
  "src/planner-schema-validator.ts": "ce529c0936171075e93c7539b3655fe895a98dd2973ebda5775958e6ebc316d9",
1217
1204
  "src/planner-validators.ts": "99adeb65f579af923c11f21a8f55cfb9993b007fd8df59c5f764696b55379cfc",
1205
+ "src/profile-registry.ts": "1c0d64172d2006a8d865bffbb47506684eb5f42b75df6308d28564dbb942088c",
1218
1206
  "src/register.ts": "6a2f1c6b8df0dc9c8f45df8ec9fac2be29044e048b08c8ffe423410e94dadedd",
1219
1207
  "src/release.ts": "7b0fe444ee81f476f53b9c21b6c347ef588ee616c60211419cf984132be768ba",
1220
- "src/setup.ts": "04fe6dc4618c14b93580f36d9775b7deca2082b8cc4efab7668795053b7d8dd0",
1208
+ "src/setup.ts": "19629b3c03e6d35b3e0e8b8a697a3c796d0e8cc4f9bac65875a26421573f3447",
1221
1209
  "src/telemetry-plan.ts": "cdb1e8bfff414f3ea81977388973da2cf6d89567d9e060dc9d5989a33600f153",
1222
1210
  "src/topology.ts": "9779ee48e1c453abb76363163d4ab363463fa14e359571139f6d1f1fcc51ae2c",
1223
- "templates/agents/AGENTS.block.md": "e3e49cb31294bff3d9fbfab9b0b600e690f80e11eccf96a1925e6b4ac21401ba",
1211
+ "templates/agents/AGENTS.block.md": "978ea89e1469f0a89a6ef6e4ac40bdc11ae856bb2754069743758ba204c395a1",
1224
1212
  "templates/agents/atdd-bun.integrity.test.ts": "dec6f6e5f65a08d9512fc703b367c163f8c9da1f6aa7fd466835c1ec30348a41",
1225
- "templates/agents/atdd/SKILL.md": "8f36d7d571aa17beb03df5e620ff837be73eb21a4e73dabd2c12188d2b378022",
1226
- "templates/agents/delivery/SKILL.md": "0c4fa25303ada52db9c6b67d51a4011c15039e92c4f2947994ec9cba4d0c5efa",
1227
1213
  "templates/docs/site.css": "482b3427e3a3cb02a85dc85cfbeac80592dfd53abf42fc92d6ea7071f22afc95",
1228
1214
  "templates/github/atdd-bun-release.yml": "d9547e9e6ef3ae010d53d55314f6a54567f88bd900f7e50d994cd308601d2684",
1229
- "templates/github/atdd-bun.yml": "bb42414f72f4b9a2fb1eb69530695e193f105a984542f4ca124c898a5f1489be"
1215
+ "templates/github/atdd-bun.yml": "404dc06b6ff4faf5eab909f9f77bac0ae58163d810c3928c4353b1f4b3529048"
1230
1216
  }
1231
1217
  }
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.33",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/afokapu/atdd-bun.git"