@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":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAyB,MAAM,YAAY,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,cAA8B,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AACD,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;CAAE,CAAC;AACrG,MAAM,MAAM,qBAAqB,GAC7B;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAChC;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzC;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;CAC9C;AACD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAClD;AACD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,CAAC;CACtC;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,SAAS,cAAc,EAAE,CAAC;IACjF;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AACD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AACD,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAC1F;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC;AAC5D,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,iGAAiG;IACjG,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;CACtF;AAgBD,eAAO,MAAM,YAAY,QAAkC,CAAC;AAI5D,eAAO,MAAM,MAAM,QAA0B,CAAC;AAM9C,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5D;AA+JD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,CA6ElG;AACD,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAG/E;AACD,wBAAgB,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEzF;AACD,mGAAmG;AACnG,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAIjG;AACD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,MAAM,EACV,qBAAqB,EAAE,MAAM,GAC5B,cAAc,GAAG,SAAS,CAE5B;AACD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,OAAO,EAAE,gBAAgB,EACzB,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GACtC,gBAAgB,CAAC,CAAC,CAAC,CAyBrB"}
|
package/dist/catalog.js
ADDED
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { CHECK_IDS } from './check-ids.js';
|
|
2
|
+
import { compareText, deepFreeze, exactKeys, record, sanitized, sha256 } from './shape.js';
|
|
3
|
+
import { assess } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Current catalog format (C25). Any minor of major 1 is accepted but must use exactly the v1 fields, so a minor
|
|
6
|
+
* that adds behavior is refused rather than ignored; the declared minor is part of the catalog digest.
|
|
7
|
+
*/
|
|
8
|
+
export const EVALUATOR_CATALOG_FORMAT = 'ia-evaluator-catalog/1.0';
|
|
9
|
+
/** Evaluator invocation-contract majors this package understands. */
|
|
10
|
+
export const EVALUATOR_CONTRACT_MAJORS = Object.freeze([1]);
|
|
11
|
+
const ENTRY_KEYS = [
|
|
12
|
+
'id',
|
|
13
|
+
'contractVersion',
|
|
14
|
+
'implementationVersion',
|
|
15
|
+
'implementationDigest',
|
|
16
|
+
'inputSchemaId',
|
|
17
|
+
'outputSchemaId',
|
|
18
|
+
'supportedScopes',
|
|
19
|
+
'effects',
|
|
20
|
+
'environmentProfile',
|
|
21
|
+
'limits',
|
|
22
|
+
'evidencePolicy',
|
|
23
|
+
'availability',
|
|
24
|
+
];
|
|
25
|
+
export const EVALUATOR_ID = /^[a-z][a-z0-9]*(-[a-z0-9]+)+$/;
|
|
26
|
+
const TOKEN = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;
|
|
27
|
+
const CODEC_ID = /^[a-z][a-z0-9]*(-[a-z0-9]+)*@[1-9][0-9]*$/;
|
|
28
|
+
const SEMVER = /^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$/;
|
|
29
|
+
export const DIGEST = /^sha256:[0-9a-f]{64}$/;
|
|
30
|
+
const FORMAT = /^ia-evaluator-catalog\/([0-9]+)\.([0-9]+)$/;
|
|
31
|
+
const RESERVED_ID = /^[A-Za-z][A-Za-z0-9]*(-[A-Za-z0-9]+)*$/;
|
|
32
|
+
const catalogs = new WeakSet();
|
|
33
|
+
const catalogCodecs = new WeakMap();
|
|
34
|
+
export function compareVersions(a, b) {
|
|
35
|
+
const x = a.split('.').map(Number), y = b.split('.').map(Number);
|
|
36
|
+
for (let i = 0; i < 3; i++)
|
|
37
|
+
if (x[i] !== y[i])
|
|
38
|
+
return (x[i] ?? 0) - (y[i] ?? 0);
|
|
39
|
+
return 0;
|
|
40
|
+
}
|
|
41
|
+
const positive = (value) => typeof value === 'number' && Number.isSafeInteger(value) && value > 0;
|
|
42
|
+
function tokens(value, nonempty) {
|
|
43
|
+
if (!Array.isArray(value) ||
|
|
44
|
+
(nonempty && value.length === 0) ||
|
|
45
|
+
!value.every((t) => typeof t === 'string' && TOKEN.test(t)) ||
|
|
46
|
+
new Set(value).size !== value.length)
|
|
47
|
+
return undefined;
|
|
48
|
+
return [...value].sort(compareText);
|
|
49
|
+
}
|
|
50
|
+
function note(code, line, message, path = '<catalog>') {
|
|
51
|
+
return { code, severity: 'error', path, line, message: `${path}:${line}: ${message}` };
|
|
52
|
+
}
|
|
53
|
+
function checkEntry(raw, line, reserved, codecs) {
|
|
54
|
+
const invalid = (message, code = 'IA-COMP-CATALOG-ENTRY-INVALID') => ({
|
|
55
|
+
finding: note(code, line, message),
|
|
56
|
+
});
|
|
57
|
+
if (!record(raw))
|
|
58
|
+
return invalid('Catalog entry must be an object');
|
|
59
|
+
const unknown = Object.keys(raw)
|
|
60
|
+
.filter((k) => !ENTRY_KEYS.includes(k))
|
|
61
|
+
.sort(compareText), missing = ENTRY_KEYS.filter((k) => !Object.hasOwn(raw, k));
|
|
62
|
+
if (unknown.length > 0 || missing.length > 0)
|
|
63
|
+
return invalid(`Catalog entry fields must be exactly the v1 set${unknown.length > 0 ? `; unknown: ${unknown.join(', ')}` : ''}${missing.length > 0 ? `; missing: ${missing.join(', ')}` : ''}`);
|
|
64
|
+
const e = raw, { id } = e;
|
|
65
|
+
if (typeof id !== 'string')
|
|
66
|
+
return invalid('Catalog entry id must be text');
|
|
67
|
+
if (reserved.has(id.toUpperCase()) || id.toLowerCase().startsWith('comp-'))
|
|
68
|
+
return invalid(`Catalog entry ${sanitized(id, 80) ? id : '<id>'} would override a built-in check id or the reserved comp namespace`, 'IA-COMP-CATALOG-BUILTIN-OVERRIDE');
|
|
69
|
+
if (!EVALUATOR_ID.test(id))
|
|
70
|
+
return invalid('Catalog entry id must be a lowercase namespaced id such as acme-strict-typing');
|
|
71
|
+
for (const key of ['contractVersion', 'implementationVersion'])
|
|
72
|
+
if (typeof e[key] !== 'string' || !SEMVER.test(e[key]))
|
|
73
|
+
return invalid(`${id}: ${key} must be MAJOR.MINOR.PATCH`);
|
|
74
|
+
const major = Number(e.contractVersion.split('.')[0]);
|
|
75
|
+
if (!EVALUATOR_CONTRACT_MAJORS.includes(major))
|
|
76
|
+
return invalid(`${id}: evaluator contract major ${major} is not supported (supported: ${EVALUATOR_CONTRACT_MAJORS.join(', ')})`, 'IA-COMP-CATALOG-VERSION');
|
|
77
|
+
if (typeof e.implementationDigest !== 'string' || !DIGEST.test(e.implementationDigest))
|
|
78
|
+
return invalid(`${id}: implementationDigest must be sha256:<64 lowercase hex>`);
|
|
79
|
+
for (const key of ['inputSchemaId', 'outputSchemaId']) {
|
|
80
|
+
const codec = e[key];
|
|
81
|
+
if (typeof codec !== 'string' || !CODEC_ID.test(codec))
|
|
82
|
+
return invalid(`${id}: ${key} must be a codec id such as name@1`);
|
|
83
|
+
if (!codecs.has(codec))
|
|
84
|
+
return invalid(`${id}: ${key} ${codec} is not a host-registered codec`, 'IA-COMP-CATALOG-CODEC-UNKNOWN');
|
|
85
|
+
}
|
|
86
|
+
const supportedScopes = tokens(e.supportedScopes, true), effects = tokens(e.effects, false);
|
|
87
|
+
if (supportedScopes === undefined)
|
|
88
|
+
return invalid(`${id}: supportedScopes must be a nonempty list of unique ids`);
|
|
89
|
+
if (effects === undefined)
|
|
90
|
+
return invalid(`${id}: effects must be a list of unique ids`);
|
|
91
|
+
const profile = e.environmentProfile;
|
|
92
|
+
if (!exactKeys(profile, ['id', 'credentials']) ||
|
|
93
|
+
typeof profile.id !== 'string' ||
|
|
94
|
+
!TOKEN.test(profile.id) ||
|
|
95
|
+
(profile.credentials !== 'none' && profile.credentials !== 'scoped'))
|
|
96
|
+
return invalid(`${id}: environmentProfile must be {id, credentials: none | scoped}; ambient credentials are never declared`);
|
|
97
|
+
const limits = e.limits;
|
|
98
|
+
if (!exactKeys(limits, ['timeoutMs', 'memoryBytes', 'outputBytes', 'concurrency']) ||
|
|
99
|
+
!Object.values(limits).every(positive))
|
|
100
|
+
return invalid(`${id}: limits require positive integer timeoutMs, memoryBytes, outputBytes and concurrency`, 'IA-COMP-CATALOG-LIMITS');
|
|
101
|
+
const policy = e.evidencePolicy;
|
|
102
|
+
let evidencePolicy;
|
|
103
|
+
if (exactKeys(policy, ['kind']) && policy.kind === 'fresh-run')
|
|
104
|
+
evidencePolicy = { kind: 'fresh-run' };
|
|
105
|
+
else if (exactKeys(policy, ['kind', 'maxAgeMs', 'environmentSensitive']) &&
|
|
106
|
+
policy.kind === 'reusable' &&
|
|
107
|
+
positive(policy.maxAgeMs) &&
|
|
108
|
+
typeof policy.environmentSensitive === 'boolean')
|
|
109
|
+
evidencePolicy = { kind: 'reusable', maxAgeMs: policy.maxAgeMs, environmentSensitive: policy.environmentSensitive };
|
|
110
|
+
else
|
|
111
|
+
return invalid(`${id}: evidencePolicy must be {kind: fresh-run} or {kind: reusable, maxAgeMs, environmentSensitive}`);
|
|
112
|
+
const availability = e.availability;
|
|
113
|
+
let status;
|
|
114
|
+
if (exactKeys(availability, ['status']) && availability.status === 'supported')
|
|
115
|
+
status = { status: 'supported' };
|
|
116
|
+
else if (exactKeys(availability, ['status', 'reason']) &&
|
|
117
|
+
(availability.status === 'unavailable' || availability.status === 'revoked') &&
|
|
118
|
+
sanitized(availability.reason))
|
|
119
|
+
status = { status: availability.status, reason: availability.reason };
|
|
120
|
+
else
|
|
121
|
+
return invalid(`${id}: availability must be {status: supported} or {status: unavailable | revoked, reason} with a sanitized single-line reason`);
|
|
122
|
+
return {
|
|
123
|
+
entry: {
|
|
124
|
+
id,
|
|
125
|
+
contractVersion: e.contractVersion,
|
|
126
|
+
implementationVersion: e.implementationVersion,
|
|
127
|
+
implementationDigest: e.implementationDigest,
|
|
128
|
+
inputSchemaId: e.inputSchemaId,
|
|
129
|
+
outputSchemaId: e.outputSchemaId,
|
|
130
|
+
supportedScopes,
|
|
131
|
+
effects,
|
|
132
|
+
environmentProfile: { id: profile.id, credentials: profile.credentials },
|
|
133
|
+
limits: {
|
|
134
|
+
timeoutMs: limits.timeoutMs,
|
|
135
|
+
memoryBytes: limits.memoryBytes,
|
|
136
|
+
outputBytes: limits.outputBytes,
|
|
137
|
+
concurrency: limits.concurrency,
|
|
138
|
+
},
|
|
139
|
+
evidencePolicy,
|
|
140
|
+
availability: status,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function codecMap(codecs) {
|
|
145
|
+
const map = new Map();
|
|
146
|
+
for (const [key, codec] of Array.isArray(codecs)
|
|
147
|
+
? codecs.map((c) => [c.id, c])
|
|
148
|
+
: [...codecs]) {
|
|
149
|
+
if (key !== codec.id ||
|
|
150
|
+
!CODEC_ID.test(key) ||
|
|
151
|
+
typeof codec.validate !== 'function' ||
|
|
152
|
+
(codec.normalize !== undefined && typeof codec.normalize !== 'function') ||
|
|
153
|
+
map.has(key))
|
|
154
|
+
throw new TypeError(`Invalid or duplicate host codec registration ${String(key)}`);
|
|
155
|
+
map.set(key, Object.freeze({
|
|
156
|
+
id: codec.id,
|
|
157
|
+
validate: codec.validate,
|
|
158
|
+
...(codec.normalize === undefined ? {} : { normalize: codec.normalize }),
|
|
159
|
+
}));
|
|
160
|
+
}
|
|
161
|
+
return map;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Pure v1 catalog constructor (C25). Refuses unknown format majors, malformed entries, invalid limits,
|
|
165
|
+
* unknown codecs, built-in overrides, duplicate id/version, digest disagreement and more than one
|
|
166
|
+
* supported implementation of an id. The result is frozen and carries a deterministic digest.
|
|
167
|
+
*/
|
|
168
|
+
export function createEvaluatorCatalog(input, options) {
|
|
169
|
+
const codecs = codecMap(options.codecs), extra = options.builtins;
|
|
170
|
+
if (extra !== undefined &&
|
|
171
|
+
(!Array.isArray(extra) || !extra.every((id) => typeof id === 'string' && RESERVED_ID.test(id))))
|
|
172
|
+
throw new TypeError('options.builtins must be a list of reserved ids such as APPS-CHECK');
|
|
173
|
+
const builtins = Object.freeze([...CHECK_IDS]);
|
|
174
|
+
const reserved = Object.freeze([...new Set((extra ?? []))]
|
|
175
|
+
.filter((id) => !CHECK_IDS.includes(id))
|
|
176
|
+
.sort(compareText));
|
|
177
|
+
const refuse = (findings) => Object.freeze({ ok: false, assessment: assess('COMP-CATALOG', 'catalog', findings) });
|
|
178
|
+
const raw = input, format = exactKeys(raw, ['format', 'entries']) && typeof raw.format === 'string' ? FORMAT.exec(raw.format) : null;
|
|
179
|
+
if (format === null || format[1] !== '1' || !Array.isArray(input.entries))
|
|
180
|
+
return refuse([
|
|
181
|
+
note('IA-COMP-CATALOG-VERSION', 1, `Unsupported evaluator catalog; expected exactly {format: ${EVALUATOR_CATALOG_FORMAT.replace(/\.0$/, '.x')}, entries: [...]}`),
|
|
182
|
+
]);
|
|
183
|
+
const reservedUpper = new Set([...builtins, ...reserved].map((id) => id.toUpperCase())), findings = [], entries = [];
|
|
184
|
+
input.entries.forEach((item, index) => {
|
|
185
|
+
const checked = checkEntry(item, index + 1, reservedUpper, codecs);
|
|
186
|
+
if ('finding' in checked)
|
|
187
|
+
findings.push(checked.finding);
|
|
188
|
+
else
|
|
189
|
+
entries.push({ entry: checked.entry, line: index + 1 });
|
|
190
|
+
});
|
|
191
|
+
const byVersion = new Map(), supported = new Map();
|
|
192
|
+
for (const { entry, line } of entries) {
|
|
193
|
+
const key = `${entry.id}@${entry.implementationVersion}`, previous = byVersion.get(key);
|
|
194
|
+
if (previous !== undefined) {
|
|
195
|
+
findings.push(previous.implementationDigest === entry.implementationDigest
|
|
196
|
+
? note('IA-COMP-CATALOG-DUPLICATE', line, `Duplicate catalog entry ${key}`)
|
|
197
|
+
: note('IA-COMP-CATALOG-DIGEST-CONFLICT', line, `Catalog entries for ${key} disagree on implementationDigest`));
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
byVersion.set(key, entry);
|
|
201
|
+
if (entry.availability.status !== 'supported')
|
|
202
|
+
continue;
|
|
203
|
+
if (supported.has(entry.id))
|
|
204
|
+
findings.push(note('IA-COMP-CATALOG-DUPLICATE', line, `More than one supported implementation of ${entry.id}; revoke or mark the others unavailable`));
|
|
205
|
+
supported.set(entry.id, entry);
|
|
206
|
+
}
|
|
207
|
+
if (findings.length > 0)
|
|
208
|
+
return refuse(findings.sort((a, b) => a.line - b.line || compareText(a.code, b.code)));
|
|
209
|
+
const sorted = [...byVersion.values()].sort((a, b) => compareText(a.id, b.id) || compareVersions(a.implementationVersion, b.implementationVersion));
|
|
210
|
+
const catalog = deepFreeze({
|
|
211
|
+
format: input.format,
|
|
212
|
+
digest: sha256({ format: input.format, entries: sorted, builtins, reserved }),
|
|
213
|
+
entries: sorted,
|
|
214
|
+
builtins,
|
|
215
|
+
reserved,
|
|
216
|
+
});
|
|
217
|
+
catalogs.add(catalog);
|
|
218
|
+
catalogCodecs.set(catalog, codecs);
|
|
219
|
+
return Object.freeze({ ok: true, catalog, assessment: assess('COMP-CATALOG', 'catalog', []) });
|
|
220
|
+
}
|
|
221
|
+
/** True only for a catalog returned by createEvaluatorCatalog in this module instance. */
|
|
222
|
+
export function isEvaluatorCatalog(value) {
|
|
223
|
+
return typeof value === 'object' && value !== null && catalogs.has(value);
|
|
224
|
+
}
|
|
225
|
+
export function assertCatalog(value) {
|
|
226
|
+
if (!isEvaluatorCatalog(value))
|
|
227
|
+
throw new TypeError('An evaluator catalog must be constructed by createEvaluatorCatalog');
|
|
228
|
+
}
|
|
229
|
+
export function codecOf(catalog, id) {
|
|
230
|
+
return catalogCodecs.get(catalog)?.get(id);
|
|
231
|
+
}
|
|
232
|
+
/** The entry check.runs selects: the supported implementation, else the highest listed version. */
|
|
233
|
+
export function selectEvaluator(catalog, id) {
|
|
234
|
+
assertCatalog(catalog);
|
|
235
|
+
const listed = catalog.entries.filter((e) => e.id === id);
|
|
236
|
+
return listed.find((e) => e.availability.status === 'supported') ?? listed.at(-1);
|
|
237
|
+
}
|
|
238
|
+
export function catalogEntry(catalog, id, implementationVersion) {
|
|
239
|
+
return catalog.entries.find((e) => e.id === id && e.implementationVersion === implementationVersion);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Associate trusted host implementations with supported entries, keyed `${id}@${implementationDigest}` (EVAL-02).
|
|
243
|
+
* Any key naming an unknown, substituted, unavailable or revoked implementation refuses the whole binding. The host
|
|
244
|
+
* must bind before it invokes anything; binding invokes nothing, and admission separately checks every receipt's
|
|
245
|
+
* evaluator id, version and digest against the catalog (C28), so an unbound or substituted run cannot pass.
|
|
246
|
+
*/
|
|
247
|
+
export function bindEvaluators(catalog, implementations) {
|
|
248
|
+
assertCatalog(catalog);
|
|
249
|
+
const findings = [], bound = new Map();
|
|
250
|
+
for (const [key, implementation] of [...implementations].sort(([a], [b]) => compareText(a, b))) {
|
|
251
|
+
const at = key.lastIndexOf('@'), id = key.slice(0, at), digest = key.slice(at + 1);
|
|
252
|
+
const entry = catalog.entries.find((e) => e.id === id && e.implementationDigest === digest);
|
|
253
|
+
if (at <= 0 || entry === undefined || entry.availability.status !== 'supported')
|
|
254
|
+
findings.push(note('IA-COMP-EVALUATOR-SUBSTITUTED', 1, `Host implementation ${sanitized(key, 120) ? key : '<key>'} does not match a supported catalog id and implementation digest`, '<bindings>'));
|
|
255
|
+
else
|
|
256
|
+
bound.set(key, implementation);
|
|
257
|
+
}
|
|
258
|
+
if (findings.length > 0)
|
|
259
|
+
bound.clear();
|
|
260
|
+
return Object.freeze({
|
|
261
|
+
assessment: assess('COMP-CATALOG', 'bindings', findings),
|
|
262
|
+
implementation: (id, digest) => bound.get(`${id}@${digest}`),
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** The built-in compliance evaluators (C16). A leaf module so catalog code can import it without a cycle. */
|
|
2
|
+
export declare const CHECK_IDS: readonly ["COMP-PARSE", "COMP-SCHEMA", "COMP-SYSTEM", "COMP-SCHEMA-ENROLLED", "COMP-CONSENT-DECLARED", "COMP-CONSENT", "COMP-IDENTITY", "COMP-SELECTOR", "COMP-VARIANT", "COMP-COVERAGE", "COMP-FRAGMENT", "COMP-ADOPTION", "COMP-KERNEL", "COMP-FIXTURES", "COMP-STEWARD", "COMP-BOOTSTRAP", "COMP-CHECK"];
|
|
3
|
+
export declare const isBuiltinCheck: (id: string) => boolean;
|
|
4
|
+
//# sourceMappingURL=check-ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-ids.d.ts","sourceRoot":"","sources":["../src/check-ids.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAC7G,eAAO,MAAM,SAAS,6SAkBX,CAAC;AACZ,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,KAAG,OAAwD,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** The built-in compliance evaluators (C16). A leaf module so catalog code can import it without a cycle. */
|
|
2
|
+
export const CHECK_IDS = Object.freeze([
|
|
3
|
+
'COMP-PARSE',
|
|
4
|
+
'COMP-SCHEMA',
|
|
5
|
+
'COMP-SYSTEM',
|
|
6
|
+
'COMP-SCHEMA-ENROLLED',
|
|
7
|
+
'COMP-CONSENT-DECLARED',
|
|
8
|
+
'COMP-CONSENT',
|
|
9
|
+
'COMP-IDENTITY',
|
|
10
|
+
'COMP-SELECTOR',
|
|
11
|
+
'COMP-VARIANT',
|
|
12
|
+
'COMP-COVERAGE',
|
|
13
|
+
'COMP-FRAGMENT',
|
|
14
|
+
'COMP-ADOPTION',
|
|
15
|
+
'COMP-KERNEL',
|
|
16
|
+
'COMP-FIXTURES',
|
|
17
|
+
'COMP-STEWARD',
|
|
18
|
+
'COMP-BOOTSTRAP',
|
|
19
|
+
'COMP-CHECK',
|
|
20
|
+
]);
|
|
21
|
+
export const isBuiltinCheck = (id) => CHECK_IDS.includes(id);
|
|
22
|
+
//# sourceMappingURL=check-ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-ids.js","sourceRoot":"","sources":["../src/check-ids.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAC7G,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,YAAY;IACZ,aAAa;IACb,aAAa;IACb,sBAAsB;IACtB,uBAAuB;IACvB,cAAc;IACd,eAAe;IACf,eAAe;IACf,cAAc;IACd,eAAe;IACf,eAAe;IACf,eAAe;IACf,aAAa;IACb,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,YAAY;CACJ,CAAC,CAAC;AACZ,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAU,EAAW,EAAE,CAAE,SAA+B,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import type { EvaluatorCatalog } from './catalog.js';
|
|
2
|
+
import type { Obligation, ObligationResolution } from './obligations.js';
|
|
3
|
+
import type { Assessment, Finding, Verdict } from './types.js';
|
|
4
|
+
/** Current receipt format (C28). Any other value refuses. */
|
|
5
|
+
export declare const EVIDENCE_RECEIPT_FORMAT = "ia-evidence-receipt/1";
|
|
6
|
+
export declare const EVIDENCE_RESULTS: readonly ["passed", "failed", "unavailable", "error", "cancelled", "not-evaluated", "not-applicable"];
|
|
7
|
+
export type EvidenceResult = (typeof EVIDENCE_RESULTS)[number];
|
|
8
|
+
export type ReceiptTrust = 'local-unsigned' | 'service-associated';
|
|
9
|
+
export interface CandidateDigests {
|
|
10
|
+
readonly candidate: string;
|
|
11
|
+
readonly native: string;
|
|
12
|
+
readonly code: string;
|
|
13
|
+
readonly policy: string;
|
|
14
|
+
readonly dependency: string;
|
|
15
|
+
}
|
|
16
|
+
export interface EnvironmentIdentity {
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly toolchain: string;
|
|
19
|
+
}
|
|
20
|
+
export interface EvaluatorIdentity {
|
|
21
|
+
readonly id: string;
|
|
22
|
+
readonly implementationVersion: string;
|
|
23
|
+
readonly implementationDigest: string;
|
|
24
|
+
}
|
|
25
|
+
export interface EvidenceReceipt {
|
|
26
|
+
readonly format: typeof EVIDENCE_RECEIPT_FORMAT;
|
|
27
|
+
readonly receiptId: string;
|
|
28
|
+
readonly attemptId: string;
|
|
29
|
+
readonly obligationId: string;
|
|
30
|
+
readonly subject: string;
|
|
31
|
+
readonly inputDigest: string;
|
|
32
|
+
readonly digests: CandidateDigests;
|
|
33
|
+
readonly environment: EnvironmentIdentity;
|
|
34
|
+
readonly evaluator: EvaluatorIdentity;
|
|
35
|
+
readonly catalogDigest: string;
|
|
36
|
+
readonly policyRevision: string;
|
|
37
|
+
readonly observedAt: string;
|
|
38
|
+
readonly completedAt: string;
|
|
39
|
+
readonly result: EvidenceResult;
|
|
40
|
+
readonly evidenceDigest: string;
|
|
41
|
+
readonly issuer: string;
|
|
42
|
+
/** A claim only: local-unsigned is a local diagnostic, and service-associated counts only when the host verifier accepts it (D3). */
|
|
43
|
+
readonly trust: ReceiptTrust;
|
|
44
|
+
}
|
|
45
|
+
/** The current transition's captured identities and trust policy, supplied by the trusted host. */
|
|
46
|
+
export interface ReceiptContext {
|
|
47
|
+
readonly catalog: EvaluatorCatalog;
|
|
48
|
+
readonly attemptId: string;
|
|
49
|
+
readonly policyRevision: string;
|
|
50
|
+
readonly digests: CandidateDigests;
|
|
51
|
+
readonly environment: EnvironmentIdentity;
|
|
52
|
+
/** Required, no default (D3): the weakest receipt trust this host accepts. */
|
|
53
|
+
readonly minimumTrust: ReceiptTrust;
|
|
54
|
+
/** Trusted host code that authenticates a service-associated receipt; without it such a receipt refuses. The issuer string never elevates trust. */
|
|
55
|
+
readonly verifyServiceReceipt?: (receipt: EvidenceReceipt) => boolean;
|
|
56
|
+
}
|
|
57
|
+
export interface ReceiptExpectation extends ReceiptContext {
|
|
58
|
+
readonly obligation: Obligation;
|
|
59
|
+
}
|
|
60
|
+
export interface AdmissionContext extends ReceiptContext {
|
|
61
|
+
/** A resolution digest the host pinned out of band; required to admit a resolution not issued in this process (D2). */
|
|
62
|
+
readonly expectedResolutionDigest?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface ReceiptValidation {
|
|
65
|
+
readonly valid: boolean;
|
|
66
|
+
readonly receipt?: EvidenceReceipt;
|
|
67
|
+
readonly key?: string;
|
|
68
|
+
readonly trust?: ReceiptTrust;
|
|
69
|
+
readonly findings: readonly Finding[];
|
|
70
|
+
}
|
|
71
|
+
export type EvaluatorObservation = {
|
|
72
|
+
readonly kind: 'completed';
|
|
73
|
+
readonly byteLength: number;
|
|
74
|
+
readonly output: unknown;
|
|
75
|
+
} | {
|
|
76
|
+
readonly kind: 'timeout' | 'crashed' | 'cancelled' | 'unavailable';
|
|
77
|
+
};
|
|
78
|
+
export interface EvaluatorOutcome {
|
|
79
|
+
readonly result: EvidenceResult;
|
|
80
|
+
readonly evidence?: unknown;
|
|
81
|
+
readonly evidenceDigest: string;
|
|
82
|
+
readonly diagnostics: readonly string[];
|
|
83
|
+
readonly findings: readonly Finding[];
|
|
84
|
+
}
|
|
85
|
+
export interface ObligationDecision {
|
|
86
|
+
readonly obligationId: string;
|
|
87
|
+
readonly requirement: string;
|
|
88
|
+
readonly evaluator: string;
|
|
89
|
+
readonly required: boolean;
|
|
90
|
+
readonly status: 'satisfied' | 'not-applicable' | 'blocked' | 'optional-unevaluated' | 'optional-failed';
|
|
91
|
+
readonly result: EvidenceResult;
|
|
92
|
+
readonly receiptId?: string;
|
|
93
|
+
/** Trust of the receipt this decision relied on (D3). */
|
|
94
|
+
readonly trust?: ReceiptTrust;
|
|
95
|
+
}
|
|
96
|
+
export interface TransitionDecision {
|
|
97
|
+
readonly admitted: boolean;
|
|
98
|
+
readonly subject: string;
|
|
99
|
+
readonly minimumTrust: ReceiptTrust;
|
|
100
|
+
/** Weakest trust among receipts that satisfied an obligation, or none. */
|
|
101
|
+
readonly reliedTrust: ReceiptTrust | 'none';
|
|
102
|
+
readonly decisions: readonly ObligationDecision[];
|
|
103
|
+
readonly assessment: Assessment;
|
|
104
|
+
}
|
|
105
|
+
/** sha256 of the canonical serialization of JSON evidence (stableSerialize). */
|
|
106
|
+
export declare function evidenceDigest(value: unknown): string;
|
|
107
|
+
/**
|
|
108
|
+
* EVAL-04 deduplication key: candidate, obligation, evaluator, policy revision and digest, the relevant environment
|
|
109
|
+
* ({id, toolchain} or toolchain only, nothing else) and, for fresh-run, the transition attempt.
|
|
110
|
+
*/
|
|
111
|
+
export declare function evidenceKey(obligation: Obligation, context: Pick<ReceiptContext, 'attemptId' | 'policyRevision' | 'digests' | 'environment'>): string;
|
|
112
|
+
/**
|
|
113
|
+
* Validate one receipt against the current obligation and captured identities (C28, EVAL-03/04). `now` is an
|
|
114
|
+
* explicit ISO-8601 UTC instant; no clock is read. Refuses stale inputs, wrong subject/code/toolchain, forged,
|
|
115
|
+
* substituted or revoked evaluators, expired reuse, fresh-run reuse from another attempt and trust that the host
|
|
116
|
+
* verifier did not establish or that is below minimumTrust (D3).
|
|
117
|
+
*/
|
|
118
|
+
export declare function validateReceipt(receipt: unknown, expectation: ReceiptExpectation, now: string): ReceiptValidation;
|
|
119
|
+
/**
|
|
120
|
+
* Convert a host's observation of one catalog evaluator run into a bounded result (C28, EVAL-Q07). Timeouts,
|
|
121
|
+
* crashes, oversized output, an unreadable or non-JSON envelope, codec rejection or failure and evaluator-claimed
|
|
122
|
+
* results other than passed/failed become `error` with fixed compliance-authored diagnostics; no evaluator text is
|
|
123
|
+
* echoed for them. Failed diagnostics are bounded and redacted. Never throws for evaluator output; throws TypeError
|
|
124
|
+
* for a built-in obligation (use adaptBuiltinVerdict). Performs no execution.
|
|
125
|
+
*/
|
|
126
|
+
export declare function acceptEvaluatorOutput(catalog: EvaluatorCatalog, obligation: Obligation, observation: EvaluatorObservation, options?: {
|
|
127
|
+
readonly secrets?: readonly string[];
|
|
128
|
+
}): EvaluatorOutcome;
|
|
129
|
+
/**
|
|
130
|
+
* Adapt a built-in compliance verdict to the result envelope (C28, spec §5): pass → passed, fail → failed,
|
|
131
|
+
* not-evaluated or no verdict → not-evaluated, so unevaluated built-in outcomes are preserved. Throws TypeError for
|
|
132
|
+
* a catalog obligation or a verdict for a different check.
|
|
133
|
+
*/
|
|
134
|
+
export declare function adaptBuiltinVerdict(obligation: Obligation, verdictInput: Verdict | undefined): EvaluatorOutcome;
|
|
135
|
+
/**
|
|
136
|
+
* Pure success-transition decision (C28, spec §3). Admits only a verified resolution (D2) resolved against the same
|
|
137
|
+
* catalog and policy in which every required, applicable obligation has a valid passed receipt of at least
|
|
138
|
+
* minimumTrust (D3) as its latest valid result. failed, unavailable, error, cancelled, not-evaluated and
|
|
139
|
+
* evaluator-claimed not-applicable block a required obligation; resolver not-applicable with evidence does not.
|
|
140
|
+
* Optional obligations never block and stay visible as optional-unevaluated or optional-failed. No scheduling,
|
|
141
|
+
* persistence or execution happens here. Host implementations must be bound (bindEvaluators) before invocation;
|
|
142
|
+
* admission itself checks receipts' evaluator digests against the catalog.
|
|
143
|
+
*/
|
|
144
|
+
export declare function admitTransition(resolution: ObligationResolution, receipts: readonly unknown[], context: AdmissionContext, now: string): TransitionDecision;
|
|
145
|
+
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"}
|