@afokapu/atdd-bun 0.3.2 → 0.5.0
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/PLANNER_PORT.md +1 -1
- package/README.md +111 -4
- package/conventions/coder.bun/coder.bun.complexity-cyclomatic.convention.yaml +1 -3
- package/conventions/coder.bun/coder.bun.complexity-length.convention.yaml +1 -2
- package/conventions/coder.bun/coder.bun.complexity-nesting.convention.yaml +1 -2
- package/conventions/coder.bun/coder.bun.dead-code-reachability.convention.yaml +1 -2
- package/conventions/coder.bun/coder.bun.design-token-color.convention.yaml +1 -1
- package/conventions/coder.bun/coder.bun.design-token-hardcoded.convention.yaml +1 -1
- package/conventions/coder.bun/coder.bun.dto-mapper.convention.yaml +2 -1
- package/conventions/coder.bun/coder.bun.dto-placement.convention.yaml +2 -1
- package/conventions/coder.bun/coder.bun.dto-purity.convention.yaml +2 -1
- package/conventions/coder.bun/coder.bun.duplication-intra-layer.convention.yaml +1 -2
- package/conventions/coder.bun/coder.bun.green-header-order.convention.yaml +2 -11
- package/conventions/coder.bun/coder.bun.green-header-purpose.convention.yaml +2 -11
- package/conventions/coder.bun/coder.bun.green-header-runtime.convention.yaml +2 -11
- package/conventions/coder.bun/coder.bun.green-header-tested-by.convention.yaml +2 -11
- package/conventions/coder.bun/coder.bun.green-urn-layer.convention.yaml +2 -11
- package/conventions/coder.bun/coder.bun.green-urn-marker.convention.yaml +2 -12
- package/conventions/coder.bun/coder.bun.green-urn-name-matches.convention.yaml +3 -12
- package/conventions/coder.bun/coder.bun.green-urn-pattern.convention.yaml +2 -11
- package/conventions/coder.bun/coder.bun.green-urn-side.convention.yaml +2 -11
- package/conventions/coder.bun/coder.bun.green-urn-wagon-feature.convention.yaml +2 -11
- package/conventions/coder.bun/coder.bun.layer-naming.convention.yaml +2 -1
- package/conventions/coder.bun/coder.bun.logging-structured.convention.yaml +2 -4
- package/conventions/coder.bun/coder.bun.quality-comments.convention.yaml +1 -2
- package/conventions/coder.bun/coder.bun.quality-mi.convention.yaml +1 -2
- package/conventions/coder.bun/coder.bun.responsive-breakpoints-declared.convention.yaml +31 -0
- package/conventions/coder.bun/coder.bun.responsive-no-fixed-width.convention.yaml +30 -0
- package/conventions/coder.bun/coder.bun.responsive-viewport-meta.convention.yaml +31 -0
- package/conventions/coder.bun/coder.bun.runtime-executes-the-declaration.convention.yaml +2 -18
- package/conventions/coder.bun/coder.bun.runtime-typecheck-enforced.convention.yaml +2 -15
- package/conventions/coder.htmx/coder.htmx.swap-no-inline-handler.convention.yaml +3 -3
- package/conventions/coder.htmx/coder.htmx.verb-endpoint-is-routed.convention.yaml +2 -2
- package/conventions/coder.htmx/coder.htmx.verb-mutation-signals-progress.convention.yaml +3 -2
- package/conventions/planner.docs/planner.docs.adr-registry-derived.convention.yaml +2 -12
- package/conventions/planner.docs/planner.docs.area-index-required.convention.yaml +2 -12
- package/conventions/planner.docs/planner.docs.artifact-path-shape.convention.yaml +2 -12
- package/conventions/planner.docs/planner.docs.asciidoc-only.convention.yaml +2 -13
- package/conventions/planner.docs/planner.docs.doc-id-unique.convention.yaml +2 -12
- package/conventions/planner.docs/planner.docs.graph-target-resolves.convention.yaml +2 -12
- package/conventions/planner.docs/planner.docs.identity-required.convention.yaml +2 -12
- package/conventions/planner.docs/planner.docs.journey-view-current.convention.yaml +53 -0
- package/conventions/planner.docs/planner.docs.reference-integrity.convention.yaml +2 -12
- package/conventions/planner.docs/planner.docs.undeclared-change.convention.yaml +2 -12
- package/conventions/tester.bun/tester.bun.acceptance-binding-declared.convention.yaml +2 -6
- package/conventions/tester.bun/tester.bun.acceptance-covers-tag-well-formed.convention.yaml +1 -5
- package/conventions/tester.bun/tester.bun.interlocking-train-sequence-is-exercised.convention.yaml +2 -14
- package/conventions/tester.bun/tester.bun.red-behavioral-assertion.convention.yaml +1 -5
- package/conventions/tester.bun/tester.bun.routing-runtime-family.convention.yaml +2 -1
- package/conventions/tester.bun/tester.bun.smoke-no-collaborator-substitution.convention.yaml +2 -7
- package/conventions/tester.bun/tester.bun.smoke-observable-assertion.convention.yaml +2 -7
- package/conventions/tester.bun/tester.bun.telemetry-emit.convention.yaml +2 -1
- package/conventions/tester.bun/tester.bun.test-carries-urn-identity.convention.yaml +2 -6
- package/conventions/tester.bun/tester.bun.test-isolation-no-live-state.convention.yaml +1 -5
- package/conventions/tester.bun/tester.bun.test-no-self-skip.convention.yaml +1 -5
- package/conventions/tester.bun/tester.bun.test-phase-declared.convention.yaml +2 -6
- package/conventions/tester.htmx/tester.htmx.a11y-harness.convention.yaml +32 -0
- package/conventions/tester.htmx/tester.htmx.covered-train-is-routed.convention.yaml +30 -0
- package/conventions/tester.htmx/tester.htmx.e2e-binds-declared-subject.convention.yaml +31 -0
- package/conventions/tester.htmx/tester.htmx.e2e-spec-naming.convention.yaml +32 -0
- package/conventions/tester.htmx/tester.htmx.exposed-journey-e2e-coverage.convention.yaml +31 -0
- package/conventions/tester.htmx/tester.htmx.fragment-asserts-returned-markup.convention.yaml +2 -6
- package/conventions/tester.htmx/tester.htmx.journey-binding-header.convention.yaml +32 -0
- package/conventions/tester.htmx/tester.htmx.journey-layer-assembly.convention.yaml +29 -0
- package/conventions/tester.htmx/tester.htmx.journey-no-acceptance-marker.convention.yaml +29 -0
- package/conventions/tester.htmx/tester.htmx.journey-urn-format.convention.yaml +32 -0
- package/conventions/tester.htmx/tester.htmx.presentation-smoke-coverage.convention.yaml +31 -0
- package/conventions/tester.htmx/tester.htmx.responsive-harness.convention.yaml +33 -0
- package/conventions/tester.htmx/tester.htmx.responsive-journey-coverage.convention.yaml +30 -0
- package/conventions/tester.htmx/tester.htmx.swap-oob-asserts-destination-id.convention.yaml +2 -1
- package/conventions/tester.htmx/tester.htmx.train-e2e-coverage.convention.yaml +32 -0
- package/conventions/tester.htmx/tester.htmx.verb-endpoint-coverage.convention.yaml +2 -1
- package/conventions/tester.htmx/tester.htmx.visual-harness.convention.yaml +28 -0
- package/conventions/traceability/traceability.plan.executable-acceptance-has-test.convention.yaml +5 -0
- package/conventions/traceability/traceability.source.tested-by-present.convention.yaml +5 -0
- package/conventions/traceability/traceability.source.tested-by-resolves.convention.yaml +5 -0
- package/conventions/traceability/traceability.test.binding-resolves.convention.yaml +5 -0
- package/detectors/bun_green_traceability_detector/urn_header.mjs +2 -1
- package/detectors/bun_responsive_detector/atdd.implementation.yaml +18 -0
- package/detectors/bun_responsive_detector/checks/_map.json +5 -0
- package/detectors/bun_responsive_detector/checks/_responsive.mjs +20 -0
- package/detectors/bun_responsive_detector/checks/responsive_breakpoints_declared.mjs +21 -0
- package/detectors/bun_responsive_detector/checks/responsive_no_fixed_width.mjs +13 -0
- package/detectors/bun_responsive_detector/checks/responsive_viewport_meta.mjs +20 -0
- package/detectors/bun_responsive_detector/detect.mjs +46 -0
- package/detectors/bun_responsive_detector/fixtures/clean/public/index.html +9 -0
- package/detectors/bun_responsive_detector/fixtures/clean/src/app.css +13 -0
- package/detectors/bun_responsive_detector/fixtures/clean/src/document.ts +7 -0
- package/detectors/bun_responsive_detector/fixtures/clean/src/fragment.html +1 -0
- package/detectors/bun_responsive_detector/fixtures/clean/src/head.ts +1 -0
- package/detectors/bun_responsive_detector/fixtures/clean/src/layout.tsx +8 -0
- package/detectors/bun_responsive_detector/fixtures/clean/src/range.css +3 -0
- package/detectors/bun_responsive_detector/fixtures/clean/src/viewport-expression.tsx +5 -0
- package/detectors/bun_responsive_detector/fixtures/dirty/public/fixed-viewport.html +5 -0
- package/detectors/bun_responsive_detector/fixtures/dirty/public/no-meta.html +5 -0
- package/detectors/bun_responsive_detector/fixtures/dirty/public/no-zoom.html +5 -0
- package/detectors/bun_responsive_detector/fixtures/dirty/public/scale.html +5 -0
- package/detectors/bun_responsive_detector/fixtures/dirty/src/app.css +4 -0
- package/detectors/bun_responsive_detector/fixtures/dirty/src/render.ts +2 -0
- package/detectors/bun_responsive_detector/fixtures/dirty/src/units.css +3 -0
- package/detectors/bun_responsive_detector/fixtures/dirty/src/wide.tsx +3 -0
- package/detectors/htmx_e2e_detector/atdd.implementation.yaml +40 -0
- package/detectors/htmx_e2e_detector/checks/_e2e.mjs +98 -0
- package/detectors/htmx_e2e_detector/checks/_map.json +16 -0
- package/detectors/htmx_e2e_detector/checks/a11y_harness.mjs +21 -0
- package/detectors/htmx_e2e_detector/checks/covered_train_is_routed.mjs +6 -0
- package/detectors/htmx_e2e_detector/checks/e2e_binds_declared_subject.mjs +11 -0
- package/detectors/htmx_e2e_detector/checks/e2e_spec_naming.mjs +6 -0
- package/detectors/htmx_e2e_detector/checks/exposed_journey_e2e_coverage.mjs +7 -0
- package/detectors/htmx_e2e_detector/checks/journey_binding_header.mjs +13 -0
- package/detectors/htmx_e2e_detector/checks/journey_layer_assembly.mjs +11 -0
- package/detectors/htmx_e2e_detector/checks/journey_no_acceptance_marker.mjs +6 -0
- package/detectors/htmx_e2e_detector/checks/journey_urn_format.mjs +18 -0
- package/detectors/htmx_e2e_detector/checks/presentation_smoke_coverage.mjs +15 -0
- package/detectors/htmx_e2e_detector/checks/responsive_harness.mjs +30 -0
- package/detectors/htmx_e2e_detector/checks/responsive_journey_coverage.mjs +7 -0
- package/detectors/htmx_e2e_detector/checks/train_e2e_coverage.mjs +7 -0
- package/detectors/htmx_e2e_detector/checks/visual_harness.mjs +7 -0
- package/detectors/htmx_e2e_detector/detect.mjs +46 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/e2e/buy-alias.a11y.e2e.ts +12 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/e2e/buy-inline.responsive.e2e.ts +11 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/e2e/buy.a11y.e2e.ts +12 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/e2e/buy.responsive.e2e.ts +14 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/e2e/buy.visual.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/e2e/checkout-buy.smoke.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/e2e/crlf.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/e2e/place-order.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/e2e/reject-empty-cart.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/e2e/support/fixtures.ts +3 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/e2e/take-payment.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/plan/_journeys/buy.yaml +19 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/plan/_journeys/settle.yaml +14 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/plan/_trains/_interlockings/checkout.yaml +21 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/plan/_trains/_interlockings/payment.yaml +16 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/plan/_trains/_interlockings/settlement.yaml +16 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/plan/_trains/orders/place-order.yaml +11 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/plan/_trains/orders/reject-empty-cart.yaml +11 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/plan/_trains/orders/settle-ledger.yaml +11 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/plan/_trains/orders/take-payment.yaml +11 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/playwright.config.ts +3 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/src/wagons/checkout/presentation/cart.tsx +3 -0
- package/detectors/htmx_e2e_detector/fixtures/clean/tests/urn-parser.test.ts +7 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/acceptance.e2e.ts +6 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/bad-id.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/bad-urn.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/both.e2e.ts +6 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/buy.a11y.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/buy.responsive.e2e.ts +11 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/buy.visual.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/covered.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/first-only.responsive.e2e.ts +13 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/ghost.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/misnamed.spec.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/no-binding.e2e.ts +4 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/no-layer.e2e.ts +4 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/no-urn.e2e.ts +4 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/tautology.a11y.e2e.ts +11 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/two-trains.e2e.ts +6 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/unrouted.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/wrong-layer.e2e.ts +5 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/e2e/wrong-urn.e2e.ts +10 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/plan/_journeys/browse.yaml +16 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/plan/_journeys/buy.yaml +16 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/plan/_trains/_interlockings/checkout.yaml +21 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/plan/_trains/orders/covered.yaml +11 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/plan/_trains/orders/uncovered.yaml +11 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/plan/_trains/orders/unrouted.yaml +11 -0
- package/detectors/htmx_e2e_detector/fixtures/dirty/src/wagons/billing/presentation/invoice.tsx +3 -0
- package/detectors/planner_docs_capability/atdd.implementation.yaml +2 -0
- package/detectors/planner_docs_capability/fixtures/clean/docs/purpose/journeys/index.adoc +170 -0
- package/detectors/planner_docs_capability/fixtures/clean/docs/purpose/journeys/svg/journey-buy.svg +61 -0
- package/detectors/planner_docs_capability/fixtures/clean/docs/purpose/journeys/svg/path-buy-nominal.svg +81 -0
- package/detectors/planner_docs_capability/fixtures/clean/docs/purpose/journeys/svg/train-orders-archive-order.svg +13 -0
- package/detectors/planner_docs_capability/fixtures/clean/docs/purpose/journeys/svg/train-orders-place-order.svg +31 -0
- package/detectors/planner_docs_capability/fixtures/clean/docs/purpose/journeys/svg/train-orders-reject-empty-cart.svg +22 -0
- package/detectors/planner_docs_capability/fixtures/clean/docs/purpose/journeys/svg/train-orders-retry-payment.svg +22 -0
- package/detectors/planner_docs_capability/fixtures/clean/docs/purpose/journeys/svg/train-orders-ship-order.svg +35 -0
- package/detectors/planner_docs_capability/fixtures/clean/docs/purpose/journeys/svg/train-orders-take-payment.svg +27 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_journeys/buy.yaml +24 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_themes.yaml +3 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_trains/_interlockings/checkout.yaml +43 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_trains/_interlockings/fulfilment.yaml +33 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_trains/_interlockings/payment.yaml +43 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_trains/_interlockings/returns.yaml +33 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_trains/orders/archive-order.yaml +11 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_trains/orders/place-order.yaml +21 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_trains/orders/reject-empty-cart.yaml +16 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_trains/orders/retry-payment.yaml +16 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_trains/orders/ship-order.yaml +21 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_trains/orders/take-payment.yaml +21 -0
- package/detectors/planner_docs_capability/fixtures/clean/plan/_trains/orders/unrouted-refund.yaml +11 -0
- package/detectors/planner_docs_capability/fixtures/dirty_journey_view/docs/index.adoc +3 -0
- package/detectors/planner_docs_capability/fixtures/dirty_journey_view/plan/_trains/_interlockings/fulfilment.yaml +33 -0
- package/detectors/planner_static_validators/atdd.implementation.yaml +2 -0
- package/detectors/planner_static_validators/fixtures/dirty/plan/_trains/_interlockings/uncomposed.yaml +4 -0
- package/integrity.json +207 -70
- package/lib/frontend.mjs +17 -0
- package/lib/scan.mjs +6 -2
- package/package.json +7 -2
- package/planner-nodes/ENFORCEMENT_SCOPE.yaml +25 -2
- package/planner-nodes/nodes/planner.journey.interlocking-composed.convention.yaml +43 -0
- package/relationships.yaml +4790 -0
- package/src/cli.ts +9 -0
- package/src/docs-capability.ts +10 -1
- package/src/enforce.ts +4 -4
- package/src/index.ts +2 -0
- package/src/journey-docs.ts +355 -0
- package/src/planner-validators.ts +29 -0
|
@@ -2,27 +2,32 @@ schema_version: "1.0.0"
|
|
|
2
2
|
package: "@afokapu/atdd-bun"
|
|
3
3
|
node_corpus:
|
|
4
4
|
source: "src/atdd/planner/conventions/nodes/"
|
|
5
|
-
count:
|
|
5
|
+
count: 196
|
|
6
6
|
policy: >-
|
|
7
7
|
Every node is shipped as canonical planner reference material. A node is not
|
|
8
8
|
represented as enforced merely because it is present in this corpus.
|
|
9
9
|
|
|
10
|
-
# A provider implementation must name every canonical rule it realizes. `
|
|
10
|
+
# A provider implementation must name every canonical rule it realizes. `disposition` is
|
|
11
|
+
# this package's enforcement, always strict: atdd-bun fails on every finding, whatever the
|
|
12
|
+
# canonical node's own metadata says (the nodes are shipped verbatim). `coverage`
|
|
11
13
|
# describes the Bun predicate actually exercised, not an assertion that the entire
|
|
12
14
|
# prose convention has been ported.
|
|
13
15
|
canonical_bun_enforcement:
|
|
14
16
|
- rule_id: planner.train.naming
|
|
17
|
+
disposition: strict
|
|
15
18
|
origin: schema-validator
|
|
16
19
|
coverage: complete
|
|
17
20
|
predicates:
|
|
18
21
|
- train definitions and interlocking route targets use train:<subject>:<slug>
|
|
19
22
|
- rule_id: planner.train.registry-coherence
|
|
23
|
+
disposition: strict
|
|
20
24
|
origin: core-validator-port
|
|
21
25
|
coverage: complete
|
|
22
26
|
predicates:
|
|
23
27
|
- every registry path resolves to a train document
|
|
24
28
|
- every non-sidecar train document is registered
|
|
25
29
|
- rule_id: planner.journey.continuation-closure
|
|
30
|
+
disposition: strict
|
|
26
31
|
origin: bun-custom-validator
|
|
27
32
|
coverage: complete
|
|
28
33
|
predicates:
|
|
@@ -31,7 +36,15 @@ canonical_bun_enforcement:
|
|
|
31
36
|
- continuation artifacts occur in the selected train sequence
|
|
32
37
|
- continuation destinations resolve to interlockings
|
|
33
38
|
- disconnected continuation or terminal sources are rejected
|
|
39
|
+
- rule_id: planner.journey.interlocking-composed
|
|
40
|
+
disposition: strict
|
|
41
|
+
origin: bun-custom-validator
|
|
42
|
+
coverage: complete
|
|
43
|
+
predicates:
|
|
44
|
+
- a plan that declares interlockings declares at least one journey
|
|
45
|
+
- every interlocking is a journey entrypoint or the destination of a continuation reachable from one
|
|
34
46
|
- rule_id: planner.wagon.no-consume-cycle
|
|
47
|
+
disposition: strict
|
|
35
48
|
origin: core-validator-port
|
|
36
49
|
coverage: partial
|
|
37
50
|
predicates:
|
|
@@ -39,6 +52,7 @@ canonical_bun_enforcement:
|
|
|
39
52
|
unported:
|
|
40
53
|
- multi-wagon strongly-connected-component detection
|
|
41
54
|
- rule_id: planner.contract.registry-coherence
|
|
55
|
+
disposition: strict
|
|
42
56
|
origin: core-validator-port
|
|
43
57
|
coverage: complete
|
|
44
58
|
predicates:
|
|
@@ -49,27 +63,32 @@ canonical_bun_enforcement:
|
|
|
49
63
|
- registry identity theme matches its identity namespace
|
|
50
64
|
- registry paths resolve to contract documents
|
|
51
65
|
- rule_id: planner.theme.must-be-canonical
|
|
66
|
+
disposition: strict
|
|
52
67
|
origin: bun-custom-validator
|
|
53
68
|
coverage: complete
|
|
54
69
|
predicates:
|
|
55
70
|
- every declared theme belongs to plan/_themes.yaml
|
|
56
71
|
- the package supplies no taxonomy besides reserved index 0
|
|
57
72
|
- rule_id: planner.theme.theme-zero-mandatory
|
|
73
|
+
disposition: strict
|
|
58
74
|
origin: bun-custom-validator
|
|
59
75
|
coverage: complete
|
|
60
76
|
predicates:
|
|
61
77
|
- plan/_themes.yaml index 0 is commons
|
|
62
78
|
- rule_id: planner.theme.urn-namespace-matches
|
|
79
|
+
disposition: strict
|
|
63
80
|
origin: bun-custom-validator
|
|
64
81
|
coverage: complete
|
|
65
82
|
predicates:
|
|
66
83
|
- a themed wagon's produced identities begin with that theme
|
|
67
84
|
- rule_id: planner.artifact-naming.theme-first-identity
|
|
85
|
+
disposition: strict
|
|
68
86
|
origin: bun-custom-validator
|
|
69
87
|
coverage: complete
|
|
70
88
|
predicates:
|
|
71
89
|
- artifact identity themes are declared in plan/_themes.yaml
|
|
72
90
|
- rule_id: planner.wagon.urn
|
|
91
|
+
disposition: strict
|
|
73
92
|
origin: bun-custom-validator
|
|
74
93
|
coverage: partial
|
|
75
94
|
predicates:
|
|
@@ -77,6 +96,7 @@ canonical_bun_enforcement:
|
|
|
77
96
|
unported:
|
|
78
97
|
- documented directory and file layout
|
|
79
98
|
- rule_id: planner.wagon.urn-naming
|
|
99
|
+
disposition: strict
|
|
80
100
|
origin: bun-custom-validator
|
|
81
101
|
coverage: partial
|
|
82
102
|
predicates:
|
|
@@ -84,6 +104,7 @@ canonical_bun_enforcement:
|
|
|
84
104
|
unported:
|
|
85
105
|
- verb-object preference
|
|
86
106
|
- rule_id: planner.wagon.produce-consume-artifacts
|
|
107
|
+
disposition: strict
|
|
87
108
|
origin: bun-custom-validator
|
|
88
109
|
coverage: partial
|
|
89
110
|
predicates:
|
|
@@ -91,6 +112,7 @@ canonical_bun_enforcement:
|
|
|
91
112
|
unported:
|
|
92
113
|
- complete required-field and URN-shape validation
|
|
93
114
|
- rule_id: planner.wagon.features
|
|
115
|
+
disposition: strict
|
|
94
116
|
origin: bun-custom-validator
|
|
95
117
|
coverage: partial
|
|
96
118
|
predicates:
|
|
@@ -98,6 +120,7 @@ canonical_bun_enforcement:
|
|
|
98
120
|
unported:
|
|
99
121
|
- complete feature-manifest coverage
|
|
100
122
|
- rule_id: planner.wagon.telemetry-filesystem
|
|
123
|
+
disposition: strict
|
|
101
124
|
origin: bun-custom-validator
|
|
102
125
|
coverage: partial
|
|
103
126
|
predicates:
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
schema_version: 1.0.0
|
|
2
|
+
rule_id: planner.journey.interlocking-composed
|
|
3
|
+
kind: constraint
|
|
4
|
+
status: active
|
|
5
|
+
name: Every interlocking is composed into a journey
|
|
6
|
+
statement: >-
|
|
7
|
+
A plan that declares interlockings must declare at least one journey, and every interlocking must be
|
|
8
|
+
reached by a journey: either as a journey's entrypoint interlocking or as the destination of a
|
|
9
|
+
continuation reachable from that entrypoint. An interlocking no journey reaches is a routing decision
|
|
10
|
+
with no stated trigger and no stated place in the product flow.
|
|
11
|
+
rationale: >-
|
|
12
|
+
planner.journey.continuation-closure validates the journeys a plan declares, so a plan that declares
|
|
13
|
+
none, or leaves some interlockings outside every journey, passes it vacuously. The journey is where
|
|
14
|
+
the plan says what starts a routing decision and what happens after its train completes; without
|
|
15
|
+
this rule a decomposition can stop at interlockings and look complete while the end-to-end flow was
|
|
16
|
+
never decided.
|
|
17
|
+
terms:
|
|
18
|
+
- term_id: composed_interlocking
|
|
19
|
+
text: >-
|
|
20
|
+
an interlocking that is the entrypoint of at least one journey, or the destination of a
|
|
21
|
+
continuation reachable from a journey's entrypoint.
|
|
22
|
+
- term_id: vacuous_topology
|
|
23
|
+
text: >-
|
|
24
|
+
a plan with interlockings and no journey. Every interlocking is reported, because none of them is
|
|
25
|
+
composed.
|
|
26
|
+
implementation:
|
|
27
|
+
type: validator
|
|
28
|
+
ref: planner.static.validators.bun::journeyCompositionFindings
|
|
29
|
+
metadata:
|
|
30
|
+
severity: 4
|
|
31
|
+
disposition: strict
|
|
32
|
+
introduced_in: 0.4.0
|
|
33
|
+
validation:
|
|
34
|
+
family: closure
|
|
35
|
+
template: graph_route_space_closure
|
|
36
|
+
variant: planner_journey_composition
|
|
37
|
+
phase: CONFIRM
|
|
38
|
+
enforcement: confirm-blocking
|
|
39
|
+
subject_kind: interlocking
|
|
40
|
+
failure_evidence:
|
|
41
|
+
- interlocking_id
|
|
42
|
+
- journey_count
|
|
43
|
+
- reason
|