@inventarch/compliance 0.0.0-stage → 1.0.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/LICENSE +202 -0
- package/NOTICE +4 -0
- package/README.md +8 -2
- package/SPEC.md +128 -0
- package/dist/adoption.d.ts +18 -0
- package/dist/adoption.d.ts.map +1 -0
- package/dist/adoption.js +76 -0
- package/dist/adoption.js.map +1 -0
- package/dist/catalog.d.ts +112 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +265 -0
- package/dist/catalog.js.map +1 -0
- package/dist/check-ids.d.ts +4 -0
- package/dist/check-ids.d.ts.map +1 -0
- package/dist/check-ids.js +22 -0
- package/dist/check-ids.js.map +1 -0
- package/dist/evidence.d.ts +145 -0
- package/dist/evidence.d.ts.map +1 -0
- package/dist/evidence.js +468 -0
- package/dist/evidence.js.map +1 -0
- package/dist/fixtures.d.ts +29 -0
- package/dist/fixtures.d.ts.map +1 -0
- package/dist/fixtures.js +107 -0
- package/dist/fixtures.js.map +1 -0
- package/dist/graph-checks.d.ts +27 -0
- package/dist/graph-checks.d.ts.map +1 -0
- package/dist/graph-checks.js +184 -0
- package/dist/graph-checks.js.map +1 -0
- package/dist/host-plugin.d.ts +23 -0
- package/dist/host-plugin.d.ts.map +1 -0
- package/dist/host-plugin.js +204 -0
- package/dist/host-plugin.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/obligations.d.ts +157 -0
- package/dist/obligations.d.ts.map +1 -0
- package/dist/obligations.js +301 -0
- package/dist/obligations.js.map +1 -0
- package/dist/profiles.d.ts +27 -0
- package/dist/profiles.d.ts.map +1 -0
- package/dist/profiles.js +40 -0
- package/dist/profiles.js.map +1 -0
- package/dist/projections.d.ts +51 -0
- package/dist/projections.d.ts.map +1 -0
- package/dist/projections.js +124 -0
- package/dist/projections.js.map +1 -0
- package/dist/record-text.d.ts +26 -0
- package/dist/record-text.d.ts.map +1 -0
- package/dist/record-text.js +73 -0
- package/dist/record-text.js.map +1 -0
- package/dist/report.d.ts +25 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +80 -0
- package/dist/report.js.map +1 -0
- package/dist/schema.d.ts +23 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +229 -0
- package/dist/schema.js.map +1 -0
- package/dist/shape.d.ts +18 -0
- package/dist/shape.d.ts.map +1 -0
- package/dist/shape.js +106 -0
- package/dist/shape.js.map +1 -0
- package/dist/steward-profile.d.ts +39 -0
- package/dist/steward-profile.d.ts.map +1 -0
- package/dist/steward-profile.js +143 -0
- package/dist/steward-profile.js.map +1 -0
- package/dist/systems.d.ts +11 -0
- package/dist/systems.d.ts.map +1 -0
- package/dist/systems.js +86 -0
- package/dist/systems.js.map +1 -0
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +92 -0
- package/dist/types.js.map +1 -0
- package/dist/values.d.ts +8 -0
- package/dist/values.d.ts.map +1 -0
- package/dist/values.js +47 -0
- package/dist/values.js.map +1 -0
- package/dist/variants.d.ts +4 -0
- package/dist/variants.d.ts.map +1 -0
- package/dist/variants.js +82 -0
- package/dist/variants.js.map +1 -0
- package/dist/workspace-projection.d.ts +22 -0
- package/dist/workspace-projection.d.ts.map +1 -0
- package/dist/workspace-projection.js +68 -0
- package/dist/workspace-projection.js.map +1 -0
- package/fixtures/language/cases/fail/duplicate-given.diagnostics.json +10 -0
- package/fixtures/language/cases/fail/duplicate-given.ia +72 -0
- package/fixtures/language/cases/fail/given-scalar.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/given-scalar.ia +71 -0
- package/fixtures/language/cases/fail/head-verdict.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/head-verdict.ia +72 -0
- package/fixtures/language/cases/fail/missing-evaluator.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/missing-evaluator.ia +70 -0
- package/fixtures/language/cases/fail/missing-expected.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/missing-expected.ia +70 -0
- package/fixtures/language/cases/fail/missing-given.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/missing-given.ia +70 -0
- package/fixtures/language/cases/fail/missing-kind.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/missing-kind.ia +70 -0
- package/fixtures/language/cases/fail/missing-request.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/missing-request.ia +70 -0
- package/fixtures/language/cases/fail/scenario-conditioned-field.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/scenario-conditioned-field.ia +71 -0
- package/fixtures/language/cases/fail/scenario-verdict.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/scenario-verdict.ia +72 -0
- package/fixtures/language/cases/fail/unbound.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/unbound.ia +71 -0
- package/fixtures/language/cases/fail/unknown-kind.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/unknown-kind.ia +71 -0
- package/fixtures/language/cases/fail/verdict-block.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/verdict-block.ia +73 -0
- package/fixtures/language/cases/fail/wrong-fragment.diagnostics.json +6 -0
- package/fixtures/language/cases/fail/wrong-fragment.ia +71 -0
- package/fixtures/language/cases/pass/all-scenario-kinds.ia +107 -0
- package/fixtures/language/cases/pass/all-scenario-kinds.records.json +1558 -0
- package/fixtures/language/cells/fail/duplicate-phase-sections.diagnostics.json +10 -0
- package/fixtures/language/cells/fail/duplicate-phase-sections.ia +64 -0
- package/fixtures/language/cells/fail/duplicate-primary.diagnostics.json +10 -0
- package/fixtures/language/cells/fail/duplicate-primary.ia +63 -0
- package/fixtures/language/cells/fail/duplicate-primitive.diagnostics.json +10 -0
- package/fixtures/language/cells/fail/duplicate-primitive.ia +63 -0
- package/fixtures/language/cells/fail/legacy-primary-move.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/legacy-primary-move.ia +61 -0
- package/fixtures/language/cells/fail/means-list.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/means-list.ia +61 -0
- package/fixtures/language/cells/fail/means-reference.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/means-reference.ia +61 -0
- package/fixtures/language/cells/fail/means-scalar.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/means-scalar.ia +61 -0
- package/fixtures/language/cells/fail/means-unsupported-child.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/means-unsupported-child.ia +62 -0
- package/fixtures/language/cells/fail/phase-unknown.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/phase-unknown.ia +61 -0
- package/fixtures/language/cells/fail/primary-quoted.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/primary-quoted.ia +61 -0
- package/fixtures/language/cells/fail/primary-requires-means.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/primary-requires-means.ia +61 -0
- package/fixtures/language/cells/fail/primary-unknown.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/primary-unknown.ia +61 -0
- package/fixtures/language/cells/fail/primitive-case.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/primitive-case.ia +61 -0
- package/fixtures/language/cells/fail/primitive-unknown.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/primitive-unknown.ia +61 -0
- package/fixtures/language/cells/fail/unsupported-item.diagnostics.json +6 -0
- package/fixtures/language/cells/fail/unsupported-item.ia +61 -0
- package/fixtures/language/cells/pass/full-opal-grid.ia +92 -0
- package/fixtures/language/cells/pass/full-opal-grid.records.json +1450 -0
- package/fixtures/language/compile/fail/blocked-keyword.diagnostics.json +1 -0
- package/fixtures/language/compile/fail/blocked-keyword.ia +22 -0
- package/fixtures/language/compile/fail/discriminator-unregistered.diagnostics.json +1 -0
- package/fixtures/language/compile/fail/discriminator-unregistered.ia +19 -0
- package/fixtures/language/compile/pass/minimal-floor.ia +22 -0
- package/fixtures/language/compile/pass/minimal-floor.records.json +293 -0
- package/fixtures/language/compile/pass/nested-and-items.ia +27 -0
- package/fixtures/language/compile/pass/nested-and-items.records.json +373 -0
- package/fixtures/language/conditions/fail/conflicting-name.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/conflicting-name.ia +60 -0
- package/fixtures/language/conditions/fail/dangling-and.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/dangling-and.ia +60 -0
- package/fixtures/language/conditions/fail/empty-child.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/empty-child.ia +61 -0
- package/fixtures/language/conditions/fail/misplaced-head.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/misplaced-head.ia +59 -0
- package/fixtures/language/conditions/fail/misplaced-meaning.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/misplaced-meaning.ia +60 -0
- package/fixtures/language/conditions/fail/misplaced-ordinary-deep.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/misplaced-ordinary-deep.ia +61 -0
- package/fixtures/language/conditions/fail/misplaced-phase.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/misplaced-phase.ia +61 -0
- package/fixtures/language/conditions/fail/misplaced-primary.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/misplaced-primary.ia +62 -0
- package/fixtures/language/conditions/fail/misplaced-severity.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/misplaced-severity.ia +60 -0
- package/fixtures/language/conditions/fail/misplaced-standalone.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/misplaced-standalone.ia +60 -0
- package/fixtures/language/conditions/fail/missing-is.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/missing-is.ia +60 -0
- package/fixtures/language/conditions/fail/mixed-carriers.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/mixed-carriers.ia +61 -0
- package/fixtures/language/conditions/fail/quoted-value.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/quoted-value.ia +60 -0
- package/fixtures/language/conditions/fail/repeated-child.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/repeated-child.ia +62 -0
- package/fixtures/language/conditions/fail/repeated-name.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/repeated-name.ia +60 -0
- package/fixtures/language/conditions/fail/schema-when-block.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/schema-when-block.ia +64 -0
- package/fixtures/language/conditions/fail/unknown-term.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/unknown-term.ia +60 -0
- package/fixtures/language/conditions/fail/unknown-value.diagnostics.json +6 -0
- package/fixtures/language/conditions/fail/unknown-value.ia +60 -0
- package/fixtures/language/conditions/pass/all-carriers-and-dimensions.ia +71 -0
- package/fixtures/language/conditions/pass/all-carriers-and-dimensions.records.json +1131 -0
- package/fixtures/language/contracts/fail/duplicate-requirement-records.diagnostics.json +10 -0
- package/fixtures/language/contracts/fail/duplicate-requirement-records.ia +67 -0
- package/fixtures/language/contracts/fail/duplicate-requirement-sections.diagnostics.json +10 -0
- package/fixtures/language/contracts/fail/duplicate-requirement-sections.ia +64 -0
- package/fixtures/language/contracts/fail/extra-word.diagnostics.json +6 -0
- package/fixtures/language/contracts/fail/extra-word.ia +62 -0
- package/fixtures/language/contracts/fail/id-case.diagnostics.json +6 -0
- package/fixtures/language/contracts/fail/id-case.ia +62 -0
- package/fixtures/language/contracts/fail/id-empty.diagnostics.json +6 -0
- package/fixtures/language/contracts/fail/id-empty.ia +62 -0
- package/fixtures/language/contracts/fail/retired-binds.diagnostics.json +6 -0
- package/fixtures/language/contracts/fail/retired-binds.ia +59 -0
- package/fixtures/language/contracts/fail/retired-schema.diagnostics.json +6 -0
- package/fixtures/language/contracts/fail/retired-schema.ia +62 -0
- package/fixtures/language/contracts/fail/text-reference.diagnostics.json +6 -0
- package/fixtures/language/contracts/fail/text-reference.ia +62 -0
- package/fixtures/language/contracts/fail/text-scalar.diagnostics.json +6 -0
- package/fixtures/language/contracts/fail/text-scalar.ia +62 -0
- package/fixtures/language/contracts/fail/unbound.diagnostics.json +6 -0
- package/fixtures/language/contracts/fail/unbound.ia +60 -0
- package/fixtures/language/contracts/fail/unsupported-child.diagnostics.json +6 -0
- package/fixtures/language/contracts/fail/unsupported-child.ia +63 -0
- package/fixtures/language/contracts/pass/all-requirement-kinds.ia +76 -0
- package/fixtures/language/contracts/pass/all-requirement-kinds.records.json +1101 -0
- package/fixtures/language/edges/fail/identity-fragment.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/identity-fragment.ia +60 -0
- package/fixtures/language/edges/fail/identity-kind.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/identity-kind.ia +60 -0
- package/fixtures/language/edges/fail/identity-short.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/identity-short.ia +60 -0
- package/fixtures/language/edges/fail/missing-target.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/missing-target.ia +60 -0
- package/fixtures/language/edges/fail/source-side-unconsented.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/source-side-unconsented.ia +60 -0
- package/fixtures/language/edges/fail/target-absent.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/target-absent.ia +60 -0
- package/fixtures/language/edges/fail/target-ambiguous.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/target-ambiguous.ia +60 -0
- package/fixtures/language/edges/fail/target-ambiguous.pool.json +26 -0
- package/fixtures/language/edges/fail/target-bare.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/target-bare.ia +60 -0
- package/fixtures/language/edges/fail/target-list.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/target-list.ia +60 -0
- package/fixtures/language/edges/fail/target-quoted.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/target-quoted.ia +60 -0
- package/fixtures/language/edges/fail/target-side-unconsented.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/target-side-unconsented.ia +60 -0
- package/fixtures/language/edges/fail/target-trailing-word.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/target-trailing-word.ia +60 -0
- package/fixtures/language/edges/fail/unknown-verb.diagnostics.json +6 -0
- package/fixtures/language/edges/fail/unknown-verb.ia +60 -0
- package/fixtures/language/edges/pass/all-verbs-and-addresses.ia +114 -0
- package/fixtures/language/edges/pass/all-verbs-and-addresses.records.json +2221 -0
- package/fixtures/language/format/fail/lost-comment.candidate.txt +5 -0
- package/fixtures/language/format/fail/lost-comment.diagnostics.json +3 -0
- package/fixtures/language/format/fail/lost-comment.ia +5 -0
- package/fixtures/language/format/pass/token-spacing.ast.json +100 -0
- package/fixtures/language/format/pass/token-spacing.formatted.txt +7 -0
- package/fixtures/language/format/pass/token-spacing.ia +7 -0
- package/fixtures/language/identity/fail/facet-undeclared.diagnostics.json +1 -0
- package/fixtures/language/identity/fail/facet-undeclared.ia +20 -0
- package/fixtures/language/identity/fail/identity-collision.diagnostics.json +1 -0
- package/fixtures/language/identity/fail/identity-collision.ia +20 -0
- package/fixtures/language/identity/pass/facets.ia +21 -0
- package/fixtures/language/identity/pass/facets.records.json +300 -0
- package/fixtures/language/indent/fail/odd-block-with-prose.diagnostics.json +1 -0
- package/fixtures/language/indent/fail/odd-block-with-prose.ia +6 -0
- package/fixtures/language/indent/fail/odd-block.diagnostics.json +1 -0
- package/fixtures/language/indent/fail/odd-block.ia +4 -0
- package/fixtures/language/indent/fail/odd.diagnostics.json +1 -0
- package/fixtures/language/indent/fail/odd.ia +3 -0
- package/fixtures/language/indent/fail/step-block.diagnostics.json +1 -0
- package/fixtures/language/indent/fail/step-block.ia +4 -0
- package/fixtures/language/indent/fail/step-in-block.diagnostics.json +1 -0
- package/fixtures/language/indent/fail/step-in-block.ia +6 -0
- package/fixtures/language/indent/fail/step-under-header.diagnostics.json +1 -0
- package/fixtures/language/indent/fail/step-under-header.ia +3 -0
- package/fixtures/language/indent/fail/tab-block.diagnostics.json +1 -0
- package/fixtures/language/indent/fail/tab-block.ia +5 -0
- package/fixtures/language/indent/fail/tab.diagnostics.json +1 -0
- package/fixtures/language/indent/fail/tab.ia +3 -0
- package/fixtures/language/indent/fail/under-item.diagnostics.json +1 -0
- package/fixtures/language/indent/fail/under-item.ia +5 -0
- package/fixtures/language/indent/pass/blocks.ast.json +127 -0
- package/fixtures/language/indent/pass/blocks.ia +9 -0
- package/fixtures/language/lists/fail/dash-without-value.diagnostics.json +1 -0
- package/fixtures/language/lists/fail/dash-without-value.ia +4 -0
- package/fixtures/language/lists/fail/empty-item.diagnostics.json +1 -0
- package/fixtures/language/lists/fail/empty-item.ia +4 -0
- package/fixtures/language/lists/fail/item-line-list.diagnostics.json +1 -0
- package/fixtures/language/lists/fail/item-line-list.ia +4 -0
- package/fixtures/language/lists/fail/item-line-prose.diagnostics.json +1 -0
- package/fixtures/language/lists/fail/item-line-prose.ia +4 -0
- package/fixtures/language/lists/fail/missing-separator.diagnostics.json +1 -0
- package/fixtures/language/lists/fail/missing-separator.ia +4 -0
- package/fixtures/language/lists/fail/nested-list.diagnostics.json +1 -0
- package/fixtures/language/lists/fail/nested-list.ia +4 -0
- package/fixtures/language/lists/fail/unterminated.diagnostics.json +1 -0
- package/fixtures/language/lists/fail/unterminated.ia +5 -0
- package/fixtures/language/lists/pass/multi-line.ast.json +117 -0
- package/fixtures/language/lists/pass/multi-line.ia +9 -0
- package/fixtures/language/pragma/fail/missing.diagnostics.json +1 -0
- package/fixtures/language/pragma/fail/missing.ia +1 -0
- package/fixtures/language/pragma/fail/unsupported.diagnostics.json +1 -0
- package/fixtures/language/pragma/fail/unsupported.ia +2 -0
- package/fixtures/language/pragma/pass/minimal.ast.json +20 -0
- package/fixtures/language/pragma/pass/minimal.ia +2 -0
- package/fixtures/language/prose/fail/trailing.diagnostics.json +1 -0
- package/fixtures/language/prose/fail/trailing.ia +4 -0
- package/fixtures/language/prose/fail/unterminated.diagnostics.json +1 -0
- package/fixtures/language/prose/fail/unterminated.ia +5 -0
- package/fixtures/language/prose/pass/paragraphs.ast.json +48 -0
- package/fixtures/language/prose/pass/paragraphs.ia +7 -0
- package/fixtures/language/records/fail/head-after-section.diagnostics.json +1 -0
- package/fixtures/language/records/fail/head-after-section.ia +5 -0
- package/fixtures/language/records/fail/header-discriminator-class.diagnostics.json +1 -0
- package/fixtures/language/records/fail/header-discriminator-class.ia +2 -0
- package/fixtures/language/records/fail/header-extra-token.diagnostics.json +1 -0
- package/fixtures/language/records/fail/header-extra-token.ia +2 -0
- package/fixtures/language/records/fail/header-missing-name.diagnostics.json +1 -0
- package/fixtures/language/records/fail/header-missing-name.ia +2 -0
- package/fixtures/language/records/fail/header-name-class.diagnostics.json +1 -0
- package/fixtures/language/records/fail/header-name-class.ia +2 -0
- package/fixtures/language/records/fail/indented-preamble.diagnostics.json +1 -0
- package/fixtures/language/records/fail/indented-preamble.ia +3 -0
- package/fixtures/language/records/fail/item-under-header.diagnostics.json +1 -0
- package/fixtures/language/records/fail/item-under-header.ia +3 -0
- package/fixtures/language/records/fail/nested-under-header.diagnostics.json +1 -0
- package/fixtures/language/records/fail/nested-under-header.ia +3 -0
- package/fixtures/language/records/fail/toplevel.diagnostics.json +1 -0
- package/fixtures/language/records/fail/toplevel.ia +3 -0
- package/fixtures/language/records/pass/full.ast.json +31 -0
- package/fixtures/language/records/pass/full.ia +11 -0
- package/fixtures/language/refs/fail/discriminator-class.diagnostics.json +1 -0
- package/fixtures/language/refs/fail/discriminator-class.ia +4 -0
- package/fixtures/language/refs/fail/name-class.diagnostics.json +1 -0
- package/fixtures/language/refs/fail/name-class.ia +4 -0
- package/fixtures/language/refs/pass/cell-fragment.ast.json +50 -0
- package/fixtures/language/refs/pass/cell-fragment.ia +4 -0
- package/fixtures/language/refs/pass/fragments.ast.json +104 -0
- package/fixtures/language/refs/pass/fragments.ia +6 -0
- package/fixtures/language/registry/fail/category-missing.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/category-missing.ia +8 -0
- package/fixtures/language/registry/fail/category-unknown.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/category-unknown.ia +9 -0
- package/fixtures/language/registry/fail/condition-in-entry.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/condition-in-entry.ia +9 -0
- package/fixtures/language/registry/fail/condition-on-head.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/condition-on-head.ia +4 -0
- package/fixtures/language/registry/fail/consent-predicate-unknown.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/consent-predicate-unknown.ia +6 -0
- package/fixtures/language/registry/fail/consent-row-malformed.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/consent-row-malformed.ia +6 -0
- package/fixtures/language/registry/fail/discriminator-conflict.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/discriminator-conflict.ia +21 -0
- package/fixtures/language/registry/fail/entry-malformed.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/entry-malformed.ia +6 -0
- package/fixtures/language/registry/fail/facets-missing.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/facets-missing.ia +9 -0
- package/fixtures/language/registry/fail/keyword-reserved.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/keyword-reserved.ia +9 -0
- package/fixtures/language/registry/fail/kind-unknown.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/kind-unknown.ia +9 -0
- package/fixtures/language/registry/fail/provider-missing.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/provider-missing.ia +3 -0
- package/fixtures/language/registry/fail/requires-head-field.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/requires-head-field.ia +5 -0
- package/fixtures/language/registry/fail/retired-interface.diagnostics.json +6 -0
- package/fixtures/language/registry/fail/retired-interface.ia +9 -0
- package/fixtures/language/registry/fail/retired-protocol.diagnostics.json +6 -0
- package/fixtures/language/registry/fail/retired-protocol.ia +9 -0
- package/fixtures/language/registry/fail/retired-shape.diagnostics.json +6 -0
- package/fixtures/language/registry/fail/retired-shape.ia +9 -0
- package/fixtures/language/registry/fail/schema-entry-missing.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/schema-entry-missing.ia +9 -0
- package/fixtures/language/registry/fail/schema-kind-mismatch.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/schema-kind-mismatch.ia +13 -0
- package/fixtures/language/registry/fail/schema-missing.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/schema-missing.ia +9 -0
- package/fixtures/language/registry/fail/system-cycle.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/system-cycle.ia +11 -0
- package/fixtures/language/registry/fail/system-missing.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/system-missing.ia +6 -0
- package/fixtures/language/registry/fail/version-not-semver.diagnostics.json +1 -0
- package/fixtures/language/registry/fail/version-not-semver.ia +4 -0
- package/fixtures/language/registry/pass/requires-order.ia +44 -0
- package/fixtures/language/registry/pass/requires-order.records.json +633 -0
- package/fixtures/language/schema/fail/edge-as-field.diagnostics.json +1 -0
- package/fixtures/language/schema/fail/edge-as-field.ia +7 -0
- package/fixtures/language/schema/fail/edge-cardinality-unknown.diagnostics.json +1 -0
- package/fixtures/language/schema/fail/edge-cardinality-unknown.ia +7 -0
- package/fixtures/language/schema/fail/edge-predicate-unknown.diagnostics.json +1 -0
- package/fixtures/language/schema/fail/edge-predicate-unknown.ia +7 -0
- package/fixtures/language/schema/fail/field-form-unknown.diagnostics.json +1 -0
- package/fixtures/language/schema/fail/field-form-unknown.ia +7 -0
- package/fixtures/language/schema/fail/field-path-malformed.diagnostics.json +1 -0
- package/fixtures/language/schema/fail/field-path-malformed.ia +7 -0
- package/fixtures/language/schema/fail/field-set-not-id.diagnostics.json +1 -0
- package/fixtures/language/schema/fail/field-set-not-id.ia +7 -0
- package/fixtures/language/schema/fail/field-type-unknown.diagnostics.json +1 -0
- package/fixtures/language/schema/fail/field-type-unknown.ia +7 -0
- package/fixtures/language/schema/fail/kind-unknown.diagnostics.json +1 -0
- package/fixtures/language/schema/fail/kind-unknown.ia +5 -0
- package/fixtures/language/schema/fail/lowers-to-missing.diagnostics.json +1 -0
- package/fixtures/language/schema/fail/lowers-to-missing.ia +4 -0
- package/fixtures/language/schema/fail/sections-unclosed.diagnostics.json +1 -0
- package/fixtures/language/schema/fail/sections-unclosed.ia +5 -0
- package/fixtures/language/schema/pass/field-narrowing.ia +13 -0
- package/fixtures/language/schema/pass/field-narrowing.records.json +170 -0
- package/fixtures/language/schema/pass/full-dialect.ia +16 -0
- package/fixtures/language/schema/pass/full-dialect.records.json +179 -0
- package/fixtures/language/selectors/fail/child-condition.diagnostics.json +6 -0
- package/fixtures/language/selectors/fail/child-condition.ia +61 -0
- package/fixtures/language/selectors/fail/dangling-and.diagnostics.json +6 -0
- package/fixtures/language/selectors/fail/dangling-and.ia +60 -0
- package/fixtures/language/selectors/fail/dimension-not-axis.diagnostics.json +6 -0
- package/fixtures/language/selectors/fail/dimension-not-axis.ia +60 -0
- package/fixtures/language/selectors/fail/missing-is.diagnostics.json +6 -0
- package/fixtures/language/selectors/fail/missing-is.ia +60 -0
- package/fixtures/language/selectors/fail/quoted-value.diagnostics.json +6 -0
- package/fixtures/language/selectors/fail/quoted-value.ia +60 -0
- package/fixtures/language/selectors/fail/repeated-axis.diagnostics.json +6 -0
- package/fixtures/language/selectors/fail/repeated-axis.ia +60 -0
- package/fixtures/language/selectors/fail/unknown-axis.diagnostics.json +6 -0
- package/fixtures/language/selectors/fail/unknown-axis.ia +60 -0
- package/fixtures/language/selectors/fail/unknown-value.diagnostics.json +6 -0
- package/fixtures/language/selectors/fail/unknown-value.ia +60 -0
- package/fixtures/language/selectors/fail/wrong-grammar-case.diagnostics.json +6 -0
- package/fixtures/language/selectors/fail/wrong-grammar-case.ia +60 -0
- package/fixtures/language/selectors/pass/all-axes-canonical-values.ia +136 -0
- package/fixtures/language/selectors/pass/all-axes-canonical-values.records.json +2437 -0
- package/fixtures/language/strings/fail/unterminated-block.diagnostics.json +1 -0
- package/fixtures/language/strings/fail/unterminated-block.ia +6 -0
- package/fixtures/language/strings/fail/unterminated.diagnostics.json +1 -0
- package/fixtures/language/strings/fail/unterminated.ia +4 -0
- package/fixtures/language/strings/pass/structural-words.ast.json +21 -0
- package/fixtures/language/strings/pass/structural-words.ia +4 -0
- package/fixtures/language/values/fail/key-missing.diagnostics.json +1 -0
- package/fixtures/language/values/fail/key-missing.ia +4 -0
- package/fixtures/language/values/fail/trailing.diagnostics.json +1 -0
- package/fixtures/language/values/fail/trailing.ia +4 -0
- package/fixtures/language/values/fail/when-empty.diagnostics.json +1 -0
- package/fixtures/language/values/fail/when-empty.ia +4 -0
- package/fixtures/language/values/fail/when-list.diagnostics.json +1 -0
- package/fixtures/language/values/fail/when-list.ia +4 -0
- package/fixtures/language/values/pass/forms.ast.json +177 -0
- package/fixtures/language/values/pass/forms.ia +11 -0
- package/fixtures/language/variants/fail/duplicate-canonical-conjunction.diagnostics.json +14 -0
- package/fixtures/language/variants/fail/duplicate-canonical-conjunction.ia +63 -0
- package/fixtures/language/variants/fail/duplicate-fallback.diagnostics.json +10 -0
- package/fixtures/language/variants/fail/duplicate-fallback.ia +61 -0
- package/fixtures/language/variants/pass/fallback-and-coordinate-families.ia +65 -0
- package/fixtures/language/variants/pass/fallback-and-coordinate-families.records.json +971 -0
- package/fixtures/loop/.ia/src/blocking.ia +8 -0
- package/fixtures/loop/.ia/src/choice-a.ia +9 -0
- package/fixtures/loop/.ia/src/choice-b.ia +9 -0
- package/fixtures/loop/.ia/src/declared-decision.ia +12 -0
- package/fixtures/loop/.ia/src/fallback.ia +9 -0
- package/fixtures/loop/.ia/src/floor/artifact-set.ia +65 -0
- package/fixtures/loop/.ia/src/floor/axis.ia +74 -0
- package/fixtures/loop/.ia/src/floor/cardinality.ia +23 -0
- package/fixtures/loop/.ia/src/floor/category.ia +107 -0
- package/fixtures/loop/.ia/src/floor/dimension.ia +29 -0
- package/fixtures/loop/.ia/src/floor/floor.schema.ia +23 -0
- package/fixtures/loop/.ia/src/floor/intent-shape.ia +73 -0
- package/fixtures/loop/.ia/src/floor/kernel.schema.ia +173 -0
- package/fixtures/loop/.ia/src/floor/kind.ia +59 -0
- package/fixtures/loop/.ia/src/floor/lane.ia +44 -0
- package/fixtures/loop/.ia/src/floor/move.ia +37 -0
- package/fixtures/loop/.ia/src/floor/phase.ia +30 -0
- package/fixtures/loop/.ia/src/floor/placement.ia +42 -0
- package/fixtures/loop/.ia/src/floor/predicate.ia +164 -0
- package/fixtures/loop/.ia/src/floor/primitive.ia +50 -0
- package/fixtures/loop/.ia/src/floor/taxonomy.system.ia +67 -0
- package/fixtures/loop/.ia/src/floor/value-type.ia +44 -0
- package/fixtures/loop/.ia/src/systems/agent-system/records/foreign.ia +9 -0
- package/fixtures/loop/.ia/src/systems/agent-system/records/sample-mandate.ia +8 -0
- package/fixtures/loop/.ia/src/systems/agent-system/schemas/agent.schema.ia +13 -0
- package/fixtures/loop/.ia/src/systems/agent-system/schemas/mandate.schema.ia +12 -0
- package/fixtures/loop/.ia/src/systems/agent-system/steward.ia +9 -0
- package/fixtures/loop/.ia/src/systems/agent-system/system.ia +25 -0
- package/fixtures/loop/.ia/src/systems/compliance-system/cases/foreign-vocabulary.ia +14 -0
- package/fixtures/loop/.ia/src/systems/compliance-system/cases/missing-required-field.ia +14 -0
- package/fixtures/loop/.ia/src/systems/compliance-system/cases/valid-native-record.ia +15 -0
- package/fixtures/loop/.ia/src/systems/compliance-system/checks/instance-schema-check.ia +13 -0
- package/fixtures/loop/.ia/src/systems/compliance-system/contracts/foundation-authoring-contract.ia +15 -0
- package/fixtures/loop/.ia/src/systems/compliance-system/schemas/case.schema.ia +17 -0
- package/fixtures/loop/.ia/src/systems/compliance-system/schemas/check.schema.ia +15 -0
- package/fixtures/loop/.ia/src/systems/compliance-system/schemas/contract.schema.ia +20 -0
- package/fixtures/loop/.ia/src/systems/compliance-system/steward.ia +9 -0
- package/fixtures/loop/.ia/src/systems/compliance-system/system.ia +29 -0
- package/fixtures/loop/.ia/src/systems/governance-system/records/sample-convention.ia +9 -0
- package/fixtures/loop/.ia/src/systems/governance-system/records/sample-principle.ia +9 -0
- package/fixtures/loop/.ia/src/systems/governance-system/records/sample-procedure.ia +44 -0
- package/fixtures/loop/.ia/src/systems/governance-system/records/sample-rule.ia +13 -0
- package/fixtures/loop/.ia/src/systems/governance-system/schemas/convention.schema.ia +13 -0
- package/fixtures/loop/.ia/src/systems/governance-system/schemas/law.schema.ia +13 -0
- package/fixtures/loop/.ia/src/systems/governance-system/schemas/playbook.schema.ia +14 -0
- package/fixtures/loop/.ia/src/systems/governance-system/schemas/principle.schema.ia +13 -0
- package/fixtures/loop/.ia/src/systems/governance-system/steward.ia +9 -0
- package/fixtures/loop/.ia/src/systems/governance-system/system.ia +35 -0
- package/fixtures/loop/.ia/src/systems/session-system/records/sample-session.ia +10 -0
- package/fixtures/loop/.ia/src/systems/session-system/schemas/run.schema.ia +15 -0
- package/fixtures/loop/.ia/src/systems/session-system/steward.ia +9 -0
- package/fixtures/loop/.ia/src/systems/session-system/system.ia +23 -0
- package/fixtures/loop/.ia/src/systems/workspace-system/records/foundation-distribution.ia +8 -0
- package/fixtures/loop/.ia/src/systems/workspace-system/records/foundation-workspace.ia +10 -0
- package/fixtures/loop/.ia/src/systems/workspace-system/schemas/distribution.schema.ia +13 -0
- package/fixtures/loop/.ia/src/systems/workspace-system/schemas/workspace.schema.ia +13 -0
- package/fixtures/loop/.ia/src/systems/workspace-system/steward.ia +9 -0
- package/fixtures/loop/.ia/src/systems/workspace-system/system.ia +26 -0
- package/fixtures/loop/README.md +3 -0
- package/fixtures/loop/SPEC.md +9 -0
- package/fixtures/refusals.ts +434 -0
- package/package.json +129 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/values.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CompiledValue, FieldType, TextForm } from '@inventarch/language';
|
|
2
|
+
/** Whether a schema field type is `list of T`: the one family a key may carry more than once (D3). */
|
|
3
|
+
export declare function isListType(type: FieldType): boolean;
|
|
4
|
+
/** Type predicates over already parsed values, never over IA source. */
|
|
5
|
+
export declare function matchesType(value: CompiledValue, type: FieldType): boolean;
|
|
6
|
+
/** Text-form predicates (W0-L5) over already type-checked text. `iso-date` is `YYYY-MM-DD` and a real calendar date. */
|
|
7
|
+
export declare function matchesForm(text: string, form: TextForm): boolean;
|
|
8
|
+
//# sourceMappingURL=values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAa,MAAM,sBAAsB,CAAC;AAE1F,sGAAsG;AACtG,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAEnD;AACD,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAK1E;AAmBD,wHAAwH;AACxH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAajE"}
|
package/dist/values.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { isId, isKind } from '@inventarch/language';
|
|
2
|
+
/** Whether a schema field type is `list of T`: the one family a key may carry more than once (D3). */
|
|
3
|
+
export function isListType(type) {
|
|
4
|
+
return type.startsWith('list of ');
|
|
5
|
+
}
|
|
6
|
+
/** Type predicates over already parsed values, never over IA source. */
|
|
7
|
+
export function matchesType(value, type) {
|
|
8
|
+
if (isListType(type)) {
|
|
9
|
+
return value.kind === 'list' && value.items.every((item) => matchesScalar(item, type.slice(8)));
|
|
10
|
+
}
|
|
11
|
+
return matchesScalar(value, type);
|
|
12
|
+
}
|
|
13
|
+
function matchesScalar(value, type) {
|
|
14
|
+
if (type === 'ref')
|
|
15
|
+
return value.kind === 'ref';
|
|
16
|
+
if (type === 'flag')
|
|
17
|
+
return value.kind === 'none' || (value.kind === 'scalar' && ['true', 'false'].includes(value.text));
|
|
18
|
+
if (type === 'text')
|
|
19
|
+
return value.kind === 'scalar' || value.kind === 'string' || value.kind === 'prose';
|
|
20
|
+
if (value.kind !== 'scalar' && value.kind !== 'string')
|
|
21
|
+
return false;
|
|
22
|
+
switch (type) {
|
|
23
|
+
case 'id':
|
|
24
|
+
return isId(value.text);
|
|
25
|
+
case 'number':
|
|
26
|
+
return /^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(value.text) && Number.isFinite(Number(value.text));
|
|
27
|
+
case 'qname': {
|
|
28
|
+
const slots = value.text.split('/');
|
|
29
|
+
return slots.length === 4 && slots.every((slot) => /^[a-z][a-z0-9-]*$/.test(slot)) && isKind(slots[1]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** Text-form predicates (W0-L5) over already type-checked text. `iso-date` is `YYYY-MM-DD` and a real calendar date. */
|
|
34
|
+
export function matchesForm(text, form) {
|
|
35
|
+
switch (form) {
|
|
36
|
+
case 'iso-date': {
|
|
37
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(text);
|
|
38
|
+
if (match === null)
|
|
39
|
+
return false;
|
|
40
|
+
const year = Number(match[1]), month = Number(match[2]), day = Number(match[3]);
|
|
41
|
+
const leap = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
42
|
+
const days = [31, leap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1];
|
|
43
|
+
return days !== undefined && day >= 1 && day <= days;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGpD,sGAAsG;AACtG,MAAM,UAAU,UAAU,CAAC,IAAe;IACxC,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AACD,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,KAAoB,EAAE,IAAe;IAC/D,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAc,CAAC,CAAC,CAAC;IAC/G,CAAC;IACD,OAAO,aAAa,CAAC,KAAK,EAAE,IAAiB,CAAC,CAAC;AACjD,CAAC;AACD,SAAS,aAAa,CAAC,KAAoB,EAAE,IAAe;IAC1D,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;IAChD,IAAI,IAAI,KAAK,MAAM;QACjB,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACtG,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;IACzG,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI;YACP,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,iDAAiD,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACnH,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;AACH,CAAC;AAED,wHAAwH;AACxH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,IAAc;IACtD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YACjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC3B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACxB,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACrF,OAAO,IAAI,KAAK,SAAS,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../src/variants.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,YAAY,CAAC;AAoDtD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CA8CvD"}
|
package/dist/variants.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { CONDITION_AXES, valuesFor } from '@inventarch/language';
|
|
2
|
+
import { conditionHolds } from '@inventarch/graph';
|
|
3
|
+
import { finding } from './graph-checks.js';
|
|
4
|
+
import { assess } from './types.js';
|
|
5
|
+
function constraint(variant, node) {
|
|
6
|
+
const cube = new Map();
|
|
7
|
+
for (const term of variant.condition ?? []) {
|
|
8
|
+
if (term.axis === 'provenance' || term.axis === 'artifact-set') {
|
|
9
|
+
if (!conditionHolds([term], node.dimensions, {}))
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
else if (term.axis === 'severity') {
|
|
13
|
+
const values = [undefined, ...valuesFor('severity')].filter((value) => conditionHolds([term], node.dimensions, value === undefined ? {} : { severity: value }));
|
|
14
|
+
if (values.length === 0)
|
|
15
|
+
return undefined;
|
|
16
|
+
cube.set('severity', values);
|
|
17
|
+
}
|
|
18
|
+
else
|
|
19
|
+
cube.set(term.axis, [term.value]);
|
|
20
|
+
}
|
|
21
|
+
return cube;
|
|
22
|
+
}
|
|
23
|
+
const intersects = (a, b) => a.some((value) => b.includes(value));
|
|
24
|
+
/** Find a point in base outside the union of stronger clause cubes. Each split
|
|
25
|
+
* strictly reduces a finite domain; no Cartesian-product allocation or cutoff. */
|
|
26
|
+
function uncovered(base, stronger) {
|
|
27
|
+
const overlaps = stronger.filter((cube) => [...cube].every(([axis, values]) => intersects(base.get(axis), values)));
|
|
28
|
+
if (overlaps.length === 0)
|
|
29
|
+
return Object.freeze(Object.fromEntries([...base].filter(([, values]) => values[0] !== undefined).map(([axis, values]) => [axis, values[0]])));
|
|
30
|
+
if (overlaps.some((cube) => [...cube].every(([axis, values]) => base.get(axis).every((value) => values.includes(value)))))
|
|
31
|
+
return undefined;
|
|
32
|
+
for (const [axis, values] of overlaps[0]) {
|
|
33
|
+
const domain = base.get(axis);
|
|
34
|
+
const inside = domain.filter((value) => values.includes(value)), outside = domain.filter((value) => !values.includes(value));
|
|
35
|
+
if (inside.length === 0 || outside.length === 0)
|
|
36
|
+
continue;
|
|
37
|
+
for (const part of [outside, inside]) {
|
|
38
|
+
const narrowed = new Map(base);
|
|
39
|
+
narrowed.set(axis, part);
|
|
40
|
+
const witness = uncovered(narrowed, overlaps);
|
|
41
|
+
if (witness !== undefined)
|
|
42
|
+
return witness;
|
|
43
|
+
}
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
throw new Error('Finite ambiguity search failed to refine an overlapping region');
|
|
47
|
+
}
|
|
48
|
+
export function validateVariants(node) {
|
|
49
|
+
const families = new Map(), findings = [];
|
|
50
|
+
for (const variant of node.variants) {
|
|
51
|
+
const group = families.get(variant.key) ?? [];
|
|
52
|
+
group.push(variant);
|
|
53
|
+
families.set(variant.key, group);
|
|
54
|
+
}
|
|
55
|
+
for (const [key, family] of [...families].sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))) {
|
|
56
|
+
const clauses = family
|
|
57
|
+
.map((variant) => ({ variant, cube: constraint(variant, node), specificity: variant.condition?.length ?? 0 }))
|
|
58
|
+
.filter((entry) => entry.cube !== undefined)
|
|
59
|
+
.sort((a, b) => a.variant.span.line - b.variant.span.line);
|
|
60
|
+
const axes = CONDITION_AXES.filter((axis) => clauses.some((clause) => clause.cube.has(axis)));
|
|
61
|
+
let found = false;
|
|
62
|
+
for (let i = 0; i < clauses.length && !found; i++)
|
|
63
|
+
for (let j = i + 1; j < clauses.length && !found; j++) {
|
|
64
|
+
const a = clauses[i], b = clauses[j];
|
|
65
|
+
if (a.specificity !== b.specificity)
|
|
66
|
+
continue;
|
|
67
|
+
const base = new Map(axes.map((axis) => [
|
|
68
|
+
axis,
|
|
69
|
+
[undefined, ...valuesFor(axis)].filter((value) => (a.cube.get(axis)?.includes(value) ?? true) && (b.cube.get(axis)?.includes(value) ?? true)),
|
|
70
|
+
]));
|
|
71
|
+
if ([...base.values()].some((values) => values.length === 0))
|
|
72
|
+
continue;
|
|
73
|
+
const witness = uncovered(base, clauses.filter((clause) => clause.specificity > a.specificity).map((clause) => clause.cube));
|
|
74
|
+
if (witness === undefined)
|
|
75
|
+
continue;
|
|
76
|
+
findings.push(finding('IA-COMP-VARIANT-AMBIGUOUS', node, `${key} ties at maximum specificity ${a.specificity} between lines ${a.variant.span.line} and ${b.variant.span.line}; coordinate ${JSON.stringify(witness)}`, a.variant.span.line));
|
|
77
|
+
found = true;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return assess('COMP-VARIANT', node.identity, findings);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.js","sourceRoot":"","sources":["../src/variants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CompiledRecord } from '@inventarch/language';
|
|
2
|
+
import type { HostArtifacts, ProjectionMembership } from './projections.js';
|
|
3
|
+
export declare const WORKSPACE_PROJECTION_MARKER = "<!-- Generated by ia host; edit the cited native records. -->";
|
|
4
|
+
export interface WorkspaceProjectionInput {
|
|
5
|
+
readonly host: 'claude' | 'codex';
|
|
6
|
+
/** HOST_MODES rows from @inventarch/distribution/host-modes, rendered with the literal `<cache>` placeholder. */
|
|
7
|
+
readonly modes: readonly {
|
|
8
|
+
readonly invocation: string;
|
|
9
|
+
readonly meaning: string;
|
|
10
|
+
}[];
|
|
11
|
+
readonly distributions: readonly {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly version: string;
|
|
14
|
+
}[];
|
|
15
|
+
readonly operations: readonly string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Spec §6.1: systems, stewards, distributions, door, launcher modes. No named procedure is required.
|
|
19
|
+
* Shares every refusal condition with renderHostArtifacts through admittedStewards (projections.ts).
|
|
20
|
+
*/
|
|
21
|
+
export declare function renderWorkspaceProjection(records: readonly CompiledRecord[], revision: string, membership: ProjectionMembership, input: WorkspaceProjectionInput): HostArtifacts;
|
|
22
|
+
//# sourceMappingURL=workspace-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-projection.d.ts","sourceRoot":"","sources":["../src/workspace-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,EAAgB,aAAa,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE1F,eAAO,MAAM,2BAA2B,kEAAkE,CAAC;AAC3G,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,iHAAiH;IACjH,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrF,QAAQ,CAAC,aAAa,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrF,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AACD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,oBAAoB,EAChC,KAAK,EAAE,wBAAwB,GAC9B,aAAa,CA2Df"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { assess } from './types.js';
|
|
2
|
+
import { admittedStewards, cite, governanceClauses, invalidAssessment } from './projections.js';
|
|
3
|
+
import { says } from './record-text.js';
|
|
4
|
+
export const WORKSPACE_PROJECTION_MARKER = '<!-- Generated by ia host; edit the cited native records. -->';
|
|
5
|
+
/**
|
|
6
|
+
* Spec §6.1: systems, stewards, distributions, door, launcher modes. No named procedure is required.
|
|
7
|
+
* Shares every refusal condition with renderHostArtifacts through admittedStewards (projections.ts).
|
|
8
|
+
*/
|
|
9
|
+
export function renderWorkspaceProjection(records, revision, membership, input) {
|
|
10
|
+
const admitted = admittedStewards(records, revision, membership);
|
|
11
|
+
if ('artifacts' in admitted)
|
|
12
|
+
return admitted;
|
|
13
|
+
const rows = [], agents = [];
|
|
14
|
+
for (const { system, member, agent } of admitted.systems) {
|
|
15
|
+
rows.push(`- ${system.name}: steward ${agent.name}; ${cite(system)}; ${cite(agent)}.`);
|
|
16
|
+
// Host plugin distribution spec §10 (amends M5.3 §6.2): a steward follows its system into the workspace, authored
|
|
17
|
+
// or installed; admittedStewards already excludes the floor, so every file here has records to ground on.
|
|
18
|
+
if (input.host === 'claude') {
|
|
19
|
+
// A list-form (block) clause renders as bullets; an empty clause is refused, as in renderHostArtifacts.
|
|
20
|
+
const rendered = governanceClauses(agent, ['applies', 'requires']);
|
|
21
|
+
if (!rendered.ok)
|
|
22
|
+
return invalidAssessment(`Steward ${agent.name}: empty ${rendered.key} clause`);
|
|
23
|
+
const clauses = rendered.text;
|
|
24
|
+
// C24, as projections.ts marks adopted sources: a steward whose system is installed or adopted cannot repair its
|
|
25
|
+
// definitions (the steward guard refuses those paths), so it reviews them and authors only local contributions.
|
|
26
|
+
const local = member.root === `.ia/src/systems/${system.name}`;
|
|
27
|
+
const description = local
|
|
28
|
+
? `Use for authoring, reviewing or repairing records owned by ${system.name}.`
|
|
29
|
+
: `Use for reviewing records owned by ${system.name} and for authoring its permitted local contributions.`;
|
|
30
|
+
const immutable = local
|
|
31
|
+
? ''
|
|
32
|
+
: '\nInstalled or adopted definition sources are immutable. Author permitted project contributions in the local system folder; do not edit the cited source paths.\n';
|
|
33
|
+
agents.push({
|
|
34
|
+
path: `.claude/agents/${agent.name}.md`,
|
|
35
|
+
text: `---\nname: ${agent.name}\ndescription: ${JSON.stringify(description)}\n---\n\n${WORKSPACE_PROJECTION_MARKER}\n\nSource revision: ${revision}\n\nSources: ${cite(system)}; ${cite(agent)}.\n\n# ${agent.name}\n\n${says(agent)}\n${clauses ? '\n' + clauses + '\n' : ''}${immutable}`,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const distributions = input.distributions.length
|
|
40
|
+
? input.distributions
|
|
41
|
+
.slice()
|
|
42
|
+
.sort((a, b) => (a.id < b.id ? -1 : 1))
|
|
43
|
+
.map((d) => `- ${d.id} ${d.version}`)
|
|
44
|
+
.join('\n')
|
|
45
|
+
: '- none';
|
|
46
|
+
const modes = input.modes.map((m) => `- \`${m.invocation}\`: ${m.meaning}`).join('\n');
|
|
47
|
+
// Operator decision 2026-09-23: Claude is the host that registers the steward guard; the sentence states its rule, not that it ran.
|
|
48
|
+
const guard = input.host === 'claude'
|
|
49
|
+
? `\n\nWhen the steward guard is registered, edits under .ia/src/systems/<name>/ are accepted only from that system's steward subagent.`
|
|
50
|
+
: '';
|
|
51
|
+
const instructions = `${WORKSPACE_PROJECTION_MARKER}\n\n# IA workspace\n\nSource revision: ${revision}\n\n## Systems and stewards\n\n${rows.join('\n')}${guard}\n\n## Installed distributions\n\n${distributions}\n\n## Reaching the door\n\nThe MCP server \`ia-workspace\` serves this workspace read-only. For one-shot queries run \`ia <operation> --root <workspace>\`, where the operation is one of: ${input.operations.join(', ')}.\n\n## Launcher modes\n\n\`ia doctor\` reports the path of \`<cache>\`.\n\n${modes}\n\n\n## User-level state\n\n~/.ia is the user-level IA home, not a workspace; ia doctor reports it.\n\nThis file is a projection of records. Adding text to it creates no rule; rules are authored records.\n`;
|
|
52
|
+
const skill = `---\nname: ia-authoring\ndescription: Author or review IA records in this workspace.\n---\n\n${WORKSPACE_PROJECTION_MARKER}\n\nSource revision: ${revision}\n\nFind a word and its schema with \`ia vocabulary <word> --schema\`. Check records with \`ia validate\`. Inspect an admitted record with \`ia inspect <identity>\`. Validation establishes conformance to the declared schemas, not design quality.\n`;
|
|
53
|
+
const artifacts = input.host === 'claude'
|
|
54
|
+
? [
|
|
55
|
+
{ path: '.claude/rules/ia-workspace.md', text: instructions },
|
|
56
|
+
{ path: '.claude/skills/ia-authoring/SKILL.md', text: skill },
|
|
57
|
+
...agents,
|
|
58
|
+
]
|
|
59
|
+
: [
|
|
60
|
+
{ path: 'AGENTS.md', text: instructions },
|
|
61
|
+
{ path: '.agents/skills/ia-authoring/SKILL.md', text: skill },
|
|
62
|
+
];
|
|
63
|
+
return Object.freeze({
|
|
64
|
+
assessment: assess('COMP-PROJECTIONS', 'repository', []),
|
|
65
|
+
artifacts: Object.freeze(artifacts.map((a) => Object.freeze(a))),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=workspace-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-projection.js","sourceRoot":"","sources":["../src/workspace-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#! ia 1.0
|
|
2
|
+
@system fixture-system
|
|
3
|
+
provider "conformance"
|
|
4
|
+
version "1.0.0"
|
|
5
|
+
discriminators
|
|
6
|
+
playbook lowers to governance
|
|
7
|
+
category process
|
|
8
|
+
facets [head]
|
|
9
|
+
schema @schema playbook
|
|
10
|
+
law lowers to governance
|
|
11
|
+
category process
|
|
12
|
+
facets [head]
|
|
13
|
+
schema @schema law
|
|
14
|
+
contract lowers to contract
|
|
15
|
+
category process
|
|
16
|
+
facets [head]
|
|
17
|
+
schema @schema contract
|
|
18
|
+
case lowers to check
|
|
19
|
+
category process
|
|
20
|
+
facets [head]
|
|
21
|
+
schema @schema case
|
|
22
|
+
edges
|
|
23
|
+
govern * using *
|
|
24
|
+
enforce * using *
|
|
25
|
+
ground * using *
|
|
26
|
+
constrain * using *
|
|
27
|
+
implement * using *
|
|
28
|
+
produce * using *
|
|
29
|
+
consume * using *
|
|
30
|
+
record-lineage-from * using *
|
|
31
|
+
grant-access-to * using *
|
|
32
|
+
run-before * using *
|
|
33
|
+
trigger * using *
|
|
34
|
+
cite * using *
|
|
35
|
+
supersede * using *
|
|
36
|
+
require * using *
|
|
37
|
+
use * using *
|
|
38
|
+
forbid * using *
|
|
39
|
+
route * using *
|
|
40
|
+
land * using *
|
|
41
|
+
@schema playbook
|
|
42
|
+
lowers to governance
|
|
43
|
+
sections
|
|
44
|
+
open
|
|
45
|
+
@schema law
|
|
46
|
+
lowers to governance
|
|
47
|
+
sections
|
|
48
|
+
open
|
|
49
|
+
@schema contract
|
|
50
|
+
lowers to contract
|
|
51
|
+
sections
|
|
52
|
+
open
|
|
53
|
+
@schema case
|
|
54
|
+
lowers to check
|
|
55
|
+
sections
|
|
56
|
+
open
|
|
57
|
+
@playbook target
|
|
58
|
+
@case example
|
|
59
|
+
scenario
|
|
60
|
+
kind success
|
|
61
|
+
given "input"
|
|
62
|
+
request "act"
|
|
63
|
+
expected "output"
|
|
64
|
+
evaluator "reviewer"
|
|
65
|
+
given "again"
|
|
66
|
+
relationships
|
|
67
|
+
implements @contract signature#REQ-A
|
|
68
|
+
@contract signature
|
|
69
|
+
relationships
|
|
70
|
+
governs @playbook target
|
|
71
|
+
inputs
|
|
72
|
+
REQ-A "text"
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#! ia 1.0
|
|
2
|
+
@system fixture-system
|
|
3
|
+
provider "conformance"
|
|
4
|
+
version "1.0.0"
|
|
5
|
+
discriminators
|
|
6
|
+
playbook lowers to governance
|
|
7
|
+
category process
|
|
8
|
+
facets [head]
|
|
9
|
+
schema @schema playbook
|
|
10
|
+
law lowers to governance
|
|
11
|
+
category process
|
|
12
|
+
facets [head]
|
|
13
|
+
schema @schema law
|
|
14
|
+
contract lowers to contract
|
|
15
|
+
category process
|
|
16
|
+
facets [head]
|
|
17
|
+
schema @schema contract
|
|
18
|
+
case lowers to check
|
|
19
|
+
category process
|
|
20
|
+
facets [head]
|
|
21
|
+
schema @schema case
|
|
22
|
+
edges
|
|
23
|
+
govern * using *
|
|
24
|
+
enforce * using *
|
|
25
|
+
ground * using *
|
|
26
|
+
constrain * using *
|
|
27
|
+
implement * using *
|
|
28
|
+
produce * using *
|
|
29
|
+
consume * using *
|
|
30
|
+
record-lineage-from * using *
|
|
31
|
+
grant-access-to * using *
|
|
32
|
+
run-before * using *
|
|
33
|
+
trigger * using *
|
|
34
|
+
cite * using *
|
|
35
|
+
supersede * using *
|
|
36
|
+
require * using *
|
|
37
|
+
use * using *
|
|
38
|
+
forbid * using *
|
|
39
|
+
route * using *
|
|
40
|
+
land * using *
|
|
41
|
+
@schema playbook
|
|
42
|
+
lowers to governance
|
|
43
|
+
sections
|
|
44
|
+
open
|
|
45
|
+
@schema law
|
|
46
|
+
lowers to governance
|
|
47
|
+
sections
|
|
48
|
+
open
|
|
49
|
+
@schema contract
|
|
50
|
+
lowers to contract
|
|
51
|
+
sections
|
|
52
|
+
open
|
|
53
|
+
@schema case
|
|
54
|
+
lowers to check
|
|
55
|
+
sections
|
|
56
|
+
open
|
|
57
|
+
@playbook target
|
|
58
|
+
@case example
|
|
59
|
+
scenario
|
|
60
|
+
kind success
|
|
61
|
+
given bare
|
|
62
|
+
request "act"
|
|
63
|
+
expected "output"
|
|
64
|
+
evaluator "reviewer"
|
|
65
|
+
relationships
|
|
66
|
+
implements @contract signature#REQ-A
|
|
67
|
+
@contract signature
|
|
68
|
+
relationships
|
|
69
|
+
governs @playbook target
|
|
70
|
+
inputs
|
|
71
|
+
REQ-A "text"
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#! ia 1.0
|
|
2
|
+
@system fixture-system
|
|
3
|
+
provider "conformance"
|
|
4
|
+
version "1.0.0"
|
|
5
|
+
discriminators
|
|
6
|
+
playbook lowers to governance
|
|
7
|
+
category process
|
|
8
|
+
facets [head]
|
|
9
|
+
schema @schema playbook
|
|
10
|
+
law lowers to governance
|
|
11
|
+
category process
|
|
12
|
+
facets [head]
|
|
13
|
+
schema @schema law
|
|
14
|
+
contract lowers to contract
|
|
15
|
+
category process
|
|
16
|
+
facets [head]
|
|
17
|
+
schema @schema contract
|
|
18
|
+
case lowers to check
|
|
19
|
+
category process
|
|
20
|
+
facets [head]
|
|
21
|
+
schema @schema case
|
|
22
|
+
edges
|
|
23
|
+
govern * using *
|
|
24
|
+
enforce * using *
|
|
25
|
+
ground * using *
|
|
26
|
+
constrain * using *
|
|
27
|
+
implement * using *
|
|
28
|
+
produce * using *
|
|
29
|
+
consume * using *
|
|
30
|
+
record-lineage-from * using *
|
|
31
|
+
grant-access-to * using *
|
|
32
|
+
run-before * using *
|
|
33
|
+
trigger * using *
|
|
34
|
+
cite * using *
|
|
35
|
+
supersede * using *
|
|
36
|
+
require * using *
|
|
37
|
+
use * using *
|
|
38
|
+
forbid * using *
|
|
39
|
+
route * using *
|
|
40
|
+
land * using *
|
|
41
|
+
@schema playbook
|
|
42
|
+
lowers to governance
|
|
43
|
+
sections
|
|
44
|
+
open
|
|
45
|
+
@schema law
|
|
46
|
+
lowers to governance
|
|
47
|
+
sections
|
|
48
|
+
open
|
|
49
|
+
@schema contract
|
|
50
|
+
lowers to contract
|
|
51
|
+
sections
|
|
52
|
+
open
|
|
53
|
+
@schema case
|
|
54
|
+
lowers to check
|
|
55
|
+
sections
|
|
56
|
+
open
|
|
57
|
+
@playbook target
|
|
58
|
+
@case example
|
|
59
|
+
verdict "pass"
|
|
60
|
+
scenario
|
|
61
|
+
kind success
|
|
62
|
+
given "input"
|
|
63
|
+
request "act"
|
|
64
|
+
expected "output"
|
|
65
|
+
evaluator "reviewer"
|
|
66
|
+
relationships
|
|
67
|
+
implements @contract signature#REQ-A
|
|
68
|
+
@contract signature
|
|
69
|
+
relationships
|
|
70
|
+
governs @playbook target
|
|
71
|
+
inputs
|
|
72
|
+
REQ-A "text"
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#! ia 1.0
|
|
2
|
+
@system fixture-system
|
|
3
|
+
provider "conformance"
|
|
4
|
+
version "1.0.0"
|
|
5
|
+
discriminators
|
|
6
|
+
playbook lowers to governance
|
|
7
|
+
category process
|
|
8
|
+
facets [head]
|
|
9
|
+
schema @schema playbook
|
|
10
|
+
law lowers to governance
|
|
11
|
+
category process
|
|
12
|
+
facets [head]
|
|
13
|
+
schema @schema law
|
|
14
|
+
contract lowers to contract
|
|
15
|
+
category process
|
|
16
|
+
facets [head]
|
|
17
|
+
schema @schema contract
|
|
18
|
+
case lowers to check
|
|
19
|
+
category process
|
|
20
|
+
facets [head]
|
|
21
|
+
schema @schema case
|
|
22
|
+
edges
|
|
23
|
+
govern * using *
|
|
24
|
+
enforce * using *
|
|
25
|
+
ground * using *
|
|
26
|
+
constrain * using *
|
|
27
|
+
implement * using *
|
|
28
|
+
produce * using *
|
|
29
|
+
consume * using *
|
|
30
|
+
record-lineage-from * using *
|
|
31
|
+
grant-access-to * using *
|
|
32
|
+
run-before * using *
|
|
33
|
+
trigger * using *
|
|
34
|
+
cite * using *
|
|
35
|
+
supersede * using *
|
|
36
|
+
require * using *
|
|
37
|
+
use * using *
|
|
38
|
+
forbid * using *
|
|
39
|
+
route * using *
|
|
40
|
+
land * using *
|
|
41
|
+
@schema playbook
|
|
42
|
+
lowers to governance
|
|
43
|
+
sections
|
|
44
|
+
open
|
|
45
|
+
@schema law
|
|
46
|
+
lowers to governance
|
|
47
|
+
sections
|
|
48
|
+
open
|
|
49
|
+
@schema contract
|
|
50
|
+
lowers to contract
|
|
51
|
+
sections
|
|
52
|
+
open
|
|
53
|
+
@schema case
|
|
54
|
+
lowers to check
|
|
55
|
+
sections
|
|
56
|
+
open
|
|
57
|
+
@playbook target
|
|
58
|
+
@case example
|
|
59
|
+
scenario
|
|
60
|
+
kind success
|
|
61
|
+
given "input"
|
|
62
|
+
request "act"
|
|
63
|
+
expected "output"
|
|
64
|
+
relationships
|
|
65
|
+
implements @contract signature#REQ-A
|
|
66
|
+
@contract signature
|
|
67
|
+
relationships
|
|
68
|
+
governs @playbook target
|
|
69
|
+
inputs
|
|
70
|
+
REQ-A "text"
|