@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.
- package/README.md +14 -120
- package/conventions/_profiles/architecture.yaml +190 -0
- package/conventions/_profiles/coder.yaml +804 -0
- package/conventions/_profiles/design.yaml +219 -0
- package/conventions/_profiles/docs.yaml +136 -0
- package/conventions/_profiles/htmx.yaml +436 -0
- package/conventions/_profiles/interlocking.yaml +248 -0
- package/conventions/_profiles/metrics.yaml +80 -0
- package/conventions/_profiles/planner.yaml +789 -0
- package/conventions/_profiles/runtime.yaml +62 -0
- package/conventions/_profiles/security.yaml +70 -0
- package/conventions/_profiles/telemetry.yaml +196 -0
- package/conventions/_profiles/tester.yaml +734 -0
- package/conventions/_profiles/topology.yaml +192 -0
- package/conventions/_profiles/traceability.yaml +94 -0
- package/conventions/atdd-bun.profiles/atdd-bun.profiles.presets.convention.yaml +21 -3
- package/conventions/planner.docs/planner.docs.area-index-required.convention.yaml +2 -2
- package/conventions/planner.docs/planner.docs.artifact-path-shape.convention.yaml +1 -1
- package/conventions/planner.docs/planner.docs.asciidoc-only.convention.yaml +0 -1
- package/conventions/planner.docs/planner.docs.identity-required.convention.yaml +1 -1
- package/conventions/planner.docs/planner.docs.undeclared-change.convention.yaml +1 -2
- package/detectors/bun_interlocking_coverage/checks/interlocking_train_sequence.mjs +7 -5
- package/detectors/planner_docs_capability/README.md +1 -1
- package/integrity.json +36 -50
- package/package.json +1 -1
- package/relationships.yaml +0 -151
- package/src/agent.ts +15 -31
- package/src/cli.ts +7 -8
- package/src/docs-capability.ts +6 -24
- package/src/enforce.ts +8 -9
- package/src/hooks.ts +4 -8
- package/src/index.ts +1 -2
- package/src/integrity.ts +3 -11
- package/src/profile-registry.ts +74 -0
- package/src/setup.ts +3 -5
- package/templates/agents/AGENTS.block.md +4 -8
- package/templates/github/atdd-bun.yml +0 -5
- package/conventions/delivery/delivery.approved-sha-resolves.convention.yaml +0 -33
- package/conventions/delivery/delivery.board.convention.yaml +0 -60
- package/conventions/delivery/delivery.config-schema.convention.yaml +0 -49
- package/conventions/delivery/delivery.evidence-schema.convention.yaml +0 -34
- package/conventions/delivery/delivery.findings-resolved.convention.yaml +0 -42
- package/conventions/delivery/delivery.merge-gate.convention.yaml +0 -46
- package/conventions/delivery/delivery.model-allowed.convention.yaml +0 -29
- package/conventions/delivery/delivery.operating-model.convention.yaml +0 -97
- package/conventions/delivery/delivery.review.convention.yaml +0 -42
- package/conventions/delivery/delivery.reviewer-independent.convention.yaml +0 -34
- package/conventions/delivery/delivery.stages-complete.convention.yaml +0 -33
- package/detectors/delivery_evidence/atdd.implementation.yaml +0 -33
- package/detectors/delivery_evidence/detect.mjs +0 -9
- package/detectors/delivery_evidence/fixtures/clean/atdd-bun.yaml +0 -8
- package/detectors/delivery_evidence/fixtures/clean/docs/delivery/tranches/api/evidence.yaml +0 -54
- package/detectors/delivery_evidence/fixtures/dirty/atdd-bun.yaml +0 -3
- package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/api/evidence.yaml +0 -31
- package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/data/evidence.yaml +0 -8
- package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/orphan/README.md +0 -1
- package/detectors/delivery_evidence/fixtures/dirty/docs/delivery/tranches/ui/evidence.yaml +0 -5
- package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/delivery/release.adoc +0 -10
- package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/purpose/index.adoc +0 -5
- package/planner-schemas/delivery-config.schema.json +0 -95
- package/planner-schemas/delivery-evidence.schema.json +0 -103
- package/src/board-ui.ts +0 -91
- package/src/board.ts +0 -222
- package/src/delivery.ts +0 -567
- package/templates/agents/atdd/SKILL.md +0 -20
- 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.
|
|
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
|
-
|
|
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
|
|
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/
|
|
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
|
|
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
|
|
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.`,
|
|
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/
|
|
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
|
|
77
|
+
if (/^\s*sequence:\s*$/m.test(text) || /^\s*sequence:\s*\[/m.test(text)) return f;
|
|
77
78
|
}
|
|
78
|
-
return
|
|
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
|
-
|
|
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,
|
|
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/
|
|
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.
|
|
2
|
+
"version": "0.10.33",
|
|
3
3
|
"files": {
|
|
4
4
|
"HOOK_AUDIT.md": "5329d840db37671b1918f688ead26865473b87db73dbc75f7c8b2a8bbe8d6d43",
|
|
5
5
|
"PLANNER_PORT.md": "fb5935bac8b7ac18994de21e43ace3a5ef8cd55f85b0e3349fca261280054f11",
|
|
6
|
-
"README.md": "
|
|
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": "
|
|
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": "
|
|
108
|
-
"conventions/planner.docs/planner.docs.artifact-path-shape.convention.yaml": "
|
|
109
|
-
"conventions/planner.docs/planner.docs.asciidoc-only.convention.yaml": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
1203
|
-
"src/agent.ts": "
|
|
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": "
|
|
1208
|
-
"src/
|
|
1209
|
-
"src/
|
|
1210
|
-
"src/
|
|
1211
|
-
"src/
|
|
1212
|
-
"src/
|
|
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": "
|
|
1208
|
+
"src/setup.ts": "19629b3c03e6d35b3e0e8b8a697a3c796d0e8cc4f9bac65875a26421573f3447",
|
|
1221
1209
|
"src/telemetry-plan.ts": "cdb1e8bfff414f3ea81977388973da2cf6d89567d9e060dc9d5989a33600f153",
|
|
1222
1210
|
"src/topology.ts": "9779ee48e1c453abb76363163d4ab363463fa14e359571139f6d1f1fcc51ae2c",
|
|
1223
|
-
"templates/agents/AGENTS.block.md": "
|
|
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": "
|
|
1215
|
+
"templates/github/atdd-bun.yml": "404dc06b6ff4faf5eab909f9f77bac0ae58163d810c3928c4353b1f4b3529048"
|
|
1230
1216
|
}
|
|
1231
1217
|
}
|