kibi-cli 0.19.0 → 2.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/dist/cli-errors.d.ts +3 -1
- package/dist/cli-errors.d.ts.map +1 -1
- package/dist/cli-errors.js +4 -1
- package/dist/cli-json-command.d.ts +1 -0
- package/dist/cli-json-command.d.ts.map +1 -1
- package/dist/cli-json-command.js +13 -4
- package/dist/cli-operation-loader.d.ts.map +1 -1
- package/dist/cli-operation-loader.js +53 -20
- package/dist/cli-operation-metadata.d.ts +21 -8
- package/dist/cli-operation-metadata.d.ts.map +1 -1
- package/dist/cli-operation-metadata.js +27 -10
- package/dist/cli-protocol.d.ts.map +1 -1
- package/dist/cli-protocol.js +38 -8
- package/dist/cli-register-foundation.d.ts.map +1 -1
- package/dist/cli-register-foundation.js +14 -2
- package/dist/cli-register-maintenance.d.ts.map +1 -1
- package/dist/cli-register-maintenance.js +33 -4
- package/dist/cli-register-proof.d.ts +3 -0
- package/dist/cli-register-proof.d.ts.map +1 -0
- package/dist/cli-register-proof.js +103 -0
- package/dist/cli-register-reporting.d.ts.map +1 -1
- package/dist/cli-register-reporting.js +11 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -8
- package/dist/commands/aggregated-checks.d.ts +1 -2
- package/dist/commands/aggregated-checks.d.ts.map +1 -1
- package/dist/commands/aggregated-checks.js +14 -9
- package/dist/commands/branch.d.ts +37 -0
- package/dist/commands/branch.d.ts.map +1 -1
- package/dist/commands/branch.js +375 -40
- package/dist/commands/check.d.ts +14 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +209 -110
- package/dist/commands/coverage.d.ts +1 -0
- package/dist/commands/coverage.d.ts.map +1 -1
- package/dist/commands/coverage.js +6 -0
- package/dist/commands/discovery-shared.d.ts.map +1 -1
- package/dist/commands/discovery-shared.js +10 -19
- package/dist/commands/doctor.d.ts +26 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +291 -30
- package/dist/commands/engine.d.ts +12 -0
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +50 -7
- package/dist/commands/gc.d.ts +5 -2
- package/dist/commands/gc.d.ts.map +1 -1
- package/dist/commands/gc.js +140 -71
- package/dist/commands/github-init.d.ts +57 -0
- package/dist/commands/github-init.d.ts.map +1 -0
- package/dist/commands/github-init.js +314 -0
- package/dist/commands/init-helpers.d.ts +1 -1
- package/dist/commands/init-helpers.d.ts.map +1 -1
- package/dist/commands/init-helpers.js +109 -28
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +79 -24
- package/dist/commands/legacy-storage-migration.d.ts +54 -0
- package/dist/commands/legacy-storage-migration.d.ts.map +1 -0
- package/dist/commands/legacy-storage-migration.js +277 -0
- package/dist/commands/migrate.d.ts +11 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +249 -96
- package/dist/commands/proof-migrate-legacy.d.ts +7 -0
- package/dist/commands/proof-migrate-legacy.d.ts.map +1 -0
- package/dist/commands/proof-migrate-legacy.js +45 -0
- package/dist/commands/proof-prune.d.ts +8 -0
- package/dist/commands/proof-prune.d.ts.map +1 -0
- package/dist/commands/proof-prune.js +53 -0
- package/dist/commands/prove.d.ts +37 -0
- package/dist/commands/prove.d.ts.map +1 -0
- package/dist/commands/prove.js +470 -0
- package/dist/commands/report.d.ts +24 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +191 -0
- package/dist/commands/sync/cache.d.ts +16 -3
- package/dist/commands/sync/cache.d.ts.map +1 -1
- package/dist/commands/sync/cache.js +111 -4
- package/dist/commands/sync/discovery.d.ts +26 -2
- package/dist/commands/sync/discovery.d.ts.map +1 -1
- package/dist/commands/sync/discovery.js +204 -15
- package/dist/commands/sync/extraction.d.ts +8 -1
- package/dist/commands/sync/extraction.d.ts.map +1 -1
- package/dist/commands/sync/extraction.js +38 -4
- package/dist/commands/sync/manifest.d.ts +9 -6
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +195 -60
- package/dist/commands/sync/persistence.d.ts +4 -1
- package/dist/commands/sync/persistence.d.ts.map +1 -1
- package/dist/commands/sync/persistence.js +26 -12
- package/dist/commands/sync/staging.d.ts +1 -0
- package/dist/commands/sync/staging.d.ts.map +1 -1
- package/dist/commands/sync/staging.js +5 -2
- package/dist/commands/sync/untracked-targets.d.ts +24 -0
- package/dist/commands/sync/untracked-targets.d.ts.map +1 -0
- package/dist/commands/sync/untracked-targets.js +108 -0
- package/dist/commands/sync.d.ts +17 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +375 -106
- package/dist/diagnostics.d.ts +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/engine-daemon.d.ts +3 -1
- package/dist/engine-daemon.d.ts.map +1 -1
- package/dist/engine-daemon.js +49 -20
- package/dist/engine.d.ts +34 -3
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +578 -42
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +5 -6
- package/dist/extractors/manifest.d.ts +13 -1
- package/dist/extractors/manifest.d.ts.map +1 -1
- package/dist/extractors/manifest.js +97 -10
- package/dist/extractors/markdown.d.ts +5 -2
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +47 -12
- package/dist/extractors/playwright-cases.d.ts +24 -0
- package/dist/extractors/playwright-cases.d.ts.map +1 -0
- package/dist/extractors/playwright-cases.js +126 -0
- package/dist/extractors/relationships.d.ts +6 -0
- package/dist/extractors/relationships.d.ts.map +1 -1
- package/dist/extractors/relationships.js +2 -1
- package/dist/extractors/symbol-coordinates.d.ts +81 -3
- package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
- package/dist/extractors/symbol-coordinates.js +389 -51
- package/dist/extractors/symbols-coordinator.js +11 -1
- package/dist/extractors/symbols-ts.d.ts +1 -0
- package/dist/extractors/symbols-ts.d.ts.map +1 -1
- package/dist/extractors/symbols-ts.js +142 -67
- package/dist/intent-search.d.ts +61 -0
- package/dist/intent-search.d.ts.map +1 -0
- package/dist/intent-search.js +437 -0
- package/dist/logic/ir.d.ts +1 -0
- package/dist/logic/ir.d.ts.map +1 -1
- package/dist/logic/ir.js +1 -1
- package/dist/operations/bootstrap/activation.d.ts +5 -0
- package/dist/operations/bootstrap/activation.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/activation.js +58 -33
- package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts.map +1 -1
- package/dist/operations/bootstrap/candidates.d.ts +4 -0
- package/dist/operations/{autopilot → bootstrap}/candidates.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/candidates.js +22 -8
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/discovery-evidence.js +46 -6
- package/dist/operations/{autopilot → bootstrap}/discovery.d.ts +1 -1
- package/dist/operations/bootstrap/discovery.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/discovery.js +21 -14
- package/dist/operations/bootstrap/generate.d.ts +9 -0
- package/dist/operations/bootstrap/generate.d.ts.map +1 -0
- package/dist/operations/bootstrap/generate.js +207 -0
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/guidance-actions.js +4 -4
- package/dist/operations/{autopilot → bootstrap}/guidance.d.ts +3 -2
- package/dist/operations/bootstrap/guidance.d.ts.map +1 -0
- package/dist/operations/{autopilot → bootstrap}/guidance.js +3 -1
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts +2 -2
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/markdown-candidates.js +4 -3
- package/dist/operations/bootstrap/presentation.d.ts +15 -0
- package/dist/operations/bootstrap/presentation.d.ts.map +1 -0
- package/dist/operations/bootstrap/presentation.js +177 -0
- package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts.map +1 -1
- package/dist/operations/{autopilot → bootstrap}/types.d.ts +63 -21
- package/dist/operations/bootstrap/types.d.ts.map +1 -0
- package/dist/operations/bootstrap/types.js +25 -0
- package/dist/operations/modeling/model-requirement.d.ts +5 -0
- package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
- package/dist/operations/modeling/model-requirement.js +57 -63
- package/dist/operations/modeling/predicate-applicability.d.ts +16 -0
- package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-applicability.js +375 -0
- package/dist/operations/modeling/predicate-applyplan.d.ts +13 -2
- package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applyplan.js +100 -3
- package/dist/operations/modeling/predicate-bindings.d.ts +6 -0
- package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-bindings.js +122 -0
- package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-2.js +18 -2
- package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-3.js +17 -1
- package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog-4.js +155 -0
- package/dist/operations/modeling/predicate-catalog-5.d.ts +10 -0
- package/dist/operations/modeling/predicate-catalog-5.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-catalog-5.js +291 -0
- package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-catalog.js +4 -0
- package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-inference-1.js +8 -0
- package/dist/operations/modeling/predicate-inference-launcher.d.ts +10 -0
- package/dist/operations/modeling/predicate-inference-launcher.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-inference-launcher.js +13 -0
- package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-inference.js +4 -0
- package/dist/operations/modeling/predicate-loader.d.ts +1 -0
- package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-loader.js +11 -3
- package/dist/operations/modeling/predicate-ranker.d.ts +8 -1
- package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-ranker.js +159 -24
- package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-score-3.js +6 -0
- package/dist/operations/modeling/predicate-types.d.ts +35 -1
- package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-usage-hints-3.js +40 -0
- package/dist/operations/modeling/predicate-usage-hints-4.d.ts +3 -0
- package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -0
- package/dist/operations/modeling/predicate-usage-hints-4.js +84 -0
- package/dist/operations/modeling/predicate-utils.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-utils.js +2 -0
- package/dist/operations/modeling/suggest-predicates.d.ts +4 -2
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +203 -32
- package/dist/operations/mutation/contradictions.d.ts +2 -1
- package/dist/operations/mutation/contradictions.d.ts.map +1 -1
- package/dist/operations/mutation/contradictions.js +26 -5
- package/dist/operations/mutation/delete.d.ts +3 -0
- package/dist/operations/mutation/delete.d.ts.map +1 -1
- package/dist/operations/mutation/delete.js +483 -19
- package/dist/operations/mutation/entity-projection.d.ts +11 -0
- package/dist/operations/mutation/entity-projection.d.ts.map +1 -0
- package/dist/operations/mutation/entity-projection.js +14 -0
- package/dist/operations/mutation/relationships.d.ts +11 -0
- package/dist/operations/mutation/relationships.d.ts.map +1 -1
- package/dist/operations/mutation/relationships.js +77 -5
- package/dist/operations/mutation/saga.d.ts +51 -0
- package/dist/operations/mutation/saga.d.ts.map +1 -0
- package/dist/operations/mutation/saga.js +67 -0
- package/dist/operations/mutation/serialization.d.ts.map +1 -1
- package/dist/operations/mutation/serialization.js +3 -1
- package/dist/operations/mutation/source-authoring.d.ts +65 -0
- package/dist/operations/mutation/source-authoring.d.ts.map +1 -0
- package/dist/operations/mutation/source-authoring.js +576 -0
- package/dist/operations/mutation/strict-fact.d.ts +1 -0
- package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
- package/dist/operations/mutation/strict-fact.js +8 -5
- package/dist/operations/mutation/symbol-compiler-lock.d.ts +54 -0
- package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -0
- package/dist/operations/mutation/symbol-compiler-lock.js +337 -0
- package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-granularity.js +35 -4
- package/dist/operations/mutation/symbol-refresh.d.ts +19 -1
- package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-refresh.js +227 -63
- package/dist/operations/mutation/types.d.ts +57 -1
- package/dist/operations/mutation/types.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.d.ts +18 -2
- package/dist/operations/mutation/upsert.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.js +403 -32
- package/dist/operations/mutation/validate-upsert.js +2 -2
- package/dist/operations/mutation/validation.d.ts.map +1 -1
- package/dist/operations/mutation/validation.js +47 -4
- package/dist/operations/mutation/warnings.d.ts +1 -0
- package/dist/operations/mutation/warnings.d.ts.map +1 -1
- package/dist/operations/mutation/warnings.js +7 -5
- package/dist/operations/mutation/workspace-mutation-lock.d.ts +60 -0
- package/dist/operations/mutation/workspace-mutation-lock.d.ts.map +1 -0
- package/dist/operations/mutation/workspace-mutation-lock.js +362 -0
- package/dist/operations/planning/apply-plan.d.ts +19 -0
- package/dist/operations/planning/apply-plan.d.ts.map +1 -0
- package/dist/operations/planning/apply-plan.js +1514 -0
- package/dist/operations/planning/compile-intent.d.ts +108 -0
- package/dist/operations/planning/compile-intent.d.ts.map +1 -0
- package/dist/operations/planning/compile-intent.js +618 -0
- package/dist/operations/proof/ingest-proof.d.ts +34 -0
- package/dist/operations/proof/ingest-proof.d.ts.map +1 -0
- package/dist/operations/proof/ingest-proof.js +307 -0
- package/dist/operations/proof/migrate-legacy-receipts.d.ts +30 -0
- package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -0
- package/dist/operations/proof/migrate-legacy-receipts.js +88 -0
- package/dist/operations/proof/prune-receipts.d.ts +35 -0
- package/dist/operations/proof/prune-receipts.d.ts.map +1 -0
- package/dist/operations/proof/prune-receipts.js +91 -0
- package/dist/operations/proof/receipt-document.d.ts +29 -0
- package/dist/operations/proof/receipt-document.d.ts.map +1 -0
- package/dist/operations/proof/receipt-document.js +117 -0
- package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -0
- package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analyze-prose.js +52 -28
- package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/clauses.js +35 -9
- package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/ingestion-boundary.js +7 -3
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +51 -0
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -0
- package/dist/operations/semantic-advisor/predicate-rules-launcher.js +96 -0
- package/dist/operations/semantic-advisor/strict-count-rules.d.ts +2 -0
- package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/strict-count-rules.js +40 -25
- package/dist/operations/semantic-advisor/types.d.ts +13 -5
- package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
- package/dist/prolog/codec.d.ts +13 -1
- package/dist/prolog/codec.d.ts.map +1 -1
- package/dist/prolog/codec.js +269 -153
- package/dist/prolog/error-terms.d.ts +47 -0
- package/dist/prolog/error-terms.d.ts.map +1 -0
- package/dist/prolog/error-terms.js +334 -0
- package/dist/prolog/janitor.d.ts +50 -0
- package/dist/prolog/janitor.d.ts.map +1 -0
- package/dist/prolog/janitor.js +154 -0
- package/dist/prolog/store-lock.d.ts +45 -0
- package/dist/prolog/store-lock.d.ts.map +1 -0
- package/dist/prolog/store-lock.js +195 -0
- package/dist/prolog.d.ts +7 -0
- package/dist/prolog.d.ts.map +1 -1
- package/dist/prolog.js +82 -25
- package/dist/proof/evaluate.d.ts +27 -0
- package/dist/proof/evaluate.d.ts.map +1 -0
- package/dist/proof/evaluate.js +151 -0
- package/dist/proof/inspect.d.ts +12 -0
- package/dist/proof/inspect.d.ts.map +1 -0
- package/dist/proof/inspect.js +236 -0
- package/dist/proof/integrations.d.ts +35 -0
- package/dist/proof/integrations.d.ts.map +1 -0
- package/dist/proof/integrations.js +123 -0
- package/dist/proof/producers/junit-adapter.d.ts +26 -0
- package/dist/proof/producers/junit-adapter.d.ts.map +1 -0
- package/dist/proof/producers/junit-adapter.js +186 -0
- package/dist/proof/producers/playwright-case-id.d.ts +8 -0
- package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
- package/dist/proof/producers/playwright-case-id.js +25 -0
- package/dist/proof/producers/playwright-reporter.d.ts +27 -0
- package/dist/proof/producers/playwright-reporter.d.ts.map +1 -0
- package/dist/proof/producers/playwright-reporter.js +138 -0
- package/dist/proof/producers/tap-adapter.d.ts +10 -0
- package/dist/proof/producers/tap-adapter.d.ts.map +1 -0
- package/dist/proof/producers/tap-adapter.js +200 -0
- package/dist/proof/receipt-outcome.d.ts +2 -0
- package/dist/proof/receipt-outcome.d.ts.map +1 -0
- package/dist/proof/receipt-outcome.js +1 -0
- package/dist/public/branch-resolver.d.ts +1 -0
- package/dist/public/branch-resolver.d.ts.map +1 -1
- package/dist/public/branch-resolver.js +1 -0
- package/dist/public/check-types.d.ts +2 -2
- package/dist/public/check-types.d.ts.map +1 -1
- package/dist/public/check-types.js +16 -16
- package/dist/public/diagnostic-usage.d.ts.map +1 -1
- package/dist/public/diagnostic-usage.js +74 -6
- package/dist/public/distribution-parity.d.ts +7 -1
- package/dist/public/distribution-parity.d.ts.map +1 -1
- package/dist/public/distribution-parity.js +15 -9
- package/dist/public/ignore-policy.d.ts.map +1 -1
- package/dist/public/ignore-policy.js +16 -4
- package/dist/public/impact/coverage-depth-quality.d.ts +7 -1
- package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
- package/dist/public/impact/coverage-depth-quality.js +22 -4
- package/dist/public/impact/diagnostics.d.ts.map +1 -1
- package/dist/public/impact/diagnostics.js +2 -2
- package/dist/public/impact/diff-meaning.d.ts +1 -0
- package/dist/public/impact/diff-meaning.d.ts.map +1 -1
- package/dist/public/impact/diff-meaning.js +5 -2
- package/dist/public/impact/full-kb-quality.d.ts +7 -2
- package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
- package/dist/public/impact/full-kb-quality.js +364 -39
- package/dist/public/impact/manifest.d.ts.map +1 -1
- package/dist/public/impact/manifest.js +2 -5
- package/dist/public/operational-artifacts.d.ts.map +1 -1
- package/dist/public/operational-artifacts.js +7 -1
- package/dist/public/operations/catalog.d.ts +900 -34
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/catalog.js +130 -6
- package/dist/public/operations/check-executor.d.ts +2 -2
- package/dist/public/operations/check-executor.d.ts.map +1 -1
- package/dist/public/operations/check-executor.js +68 -13
- package/dist/public/operations/check-format-shared.d.ts +3 -0
- package/dist/public/operations/check-format-shared.d.ts.map +1 -1
- package/dist/public/operations/check-format-shared.js +3 -0
- package/dist/public/operations/check-helpers.d.ts +27 -2
- package/dist/public/operations/check-helpers.d.ts.map +1 -1
- package/dist/public/operations/check-helpers.js +62 -26
- package/dist/public/operations/contracts.d.ts +18 -0
- package/dist/public/operations/contracts.d.ts.map +1 -0
- package/dist/public/operations/contracts.js +334 -0
- package/dist/public/operations/discovery-entities.d.ts +3 -0
- package/dist/public/operations/discovery-entities.d.ts.map +1 -1
- package/dist/public/operations/discovery-entities.js +4 -0
- package/dist/public/operations/discovery-executors.d.ts +43 -7
- package/dist/public/operations/discovery-executors.d.ts.map +1 -1
- package/dist/public/operations/discovery-executors.js +216 -13
- package/dist/public/operations/index.d.ts +9 -4
- package/dist/public/operations/index.d.ts.map +1 -1
- package/dist/public/operations/index.js +8 -3
- package/dist/public/operations/migration-plan.d.ts +102 -0
- package/dist/public/operations/migration-plan.d.ts.map +1 -0
- package/dist/public/operations/migration-plan.js +539 -0
- package/dist/public/operations/node-ports.d.ts.map +1 -1
- package/dist/public/operations/node-ports.js +71 -11
- package/dist/public/operations/prolog-json.d.ts +14 -0
- package/dist/public/operations/prolog-json.d.ts.map +1 -1
- package/dist/public/operations/prolog-json.js +44 -5
- package/dist/public/operations/repair-plan.d.ts +3 -3
- package/dist/public/operations/repair-plan.d.ts.map +1 -1
- package/dist/public/operations/repair-plan.js +49 -18
- package/dist/public/operations/result-envelope.d.ts +14 -0
- package/dist/public/operations/result-envelope.d.ts.map +1 -0
- package/dist/public/operations/result-envelope.js +106 -0
- package/dist/public/operations/runtime-types.d.ts +102 -7
- package/dist/public/operations/runtime-types.d.ts.map +1 -1
- package/dist/public/operations/source-relationship-parity.d.ts +13 -0
- package/dist/public/operations/source-relationship-parity.d.ts.map +1 -0
- package/dist/public/operations/source-relationship-parity.js +162 -0
- package/dist/public/operations/specs/{autopilot.d.ts → bootstrap.d.ts} +9 -9
- package/dist/public/operations/specs/bootstrap.d.ts.map +1 -0
- package/dist/public/operations/specs/{autopilot.js → bootstrap.js} +8 -7
- package/dist/public/operations/specs/check-rules.generated.d.ts +5 -0
- package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -0
- package/dist/public/operations/specs/check-rules.generated.js +34 -0
- package/dist/public/operations/specs/check.d.ts +9 -4
- package/dist/public/operations/specs/check.d.ts.map +1 -1
- package/dist/public/operations/specs/check.js +10 -21
- package/dist/public/operations/specs/discovery.d.ts +87 -3
- package/dist/public/operations/specs/discovery.d.ts.map +1 -1
- package/dist/public/operations/specs/discovery.js +53 -3
- package/dist/public/operations/specs/modeling.d.ts +3 -3
- package/dist/public/operations/specs/modeling.js +3 -3
- package/dist/public/operations/specs/mutation-schemas.d.ts +251 -14
- package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation-schemas.js +16 -6
- package/dist/public/operations/specs/mutation.d.ts +42 -2
- package/dist/public/operations/specs/mutation.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation.js +26 -2
- package/dist/public/operations/specs/planning.d.ts +279 -0
- package/dist/public/operations/specs/planning.d.ts.map +1 -0
- package/dist/public/operations/specs/planning.js +197 -0
- package/dist/public/operations/specs/proof.d.ts +212 -0
- package/dist/public/operations/specs/proof.d.ts.map +1 -0
- package/dist/public/operations/specs/proof.js +30 -0
- package/dist/public/operations/specs/reporting.d.ts +23 -1
- package/dist/public/operations/specs/reporting.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.js +156 -11
- package/dist/public/operations/specs/upsert.d.ts +265 -14
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/operations/specs/upsert.js +9 -0
- package/dist/public/operations/symbol-repair-plan.d.ts +22 -0
- package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -0
- package/dist/public/operations/symbol-repair-plan.js +238 -0
- package/dist/public/operations/types.d.ts +52 -1
- package/dist/public/operations/types.d.ts.map +1 -1
- package/dist/public/proof-fingerprint.d.ts +54 -0
- package/dist/public/proof-fingerprint.d.ts.map +1 -0
- package/dist/public/proof-fingerprint.js +141 -0
- package/dist/public/proof-protocol.d.ts +354 -0
- package/dist/public/proof-protocol.d.ts.map +1 -0
- package/dist/public/proof-protocol.js +454 -0
- package/dist/public/proof-receipt.d.ts +279 -0
- package/dist/public/proof-receipt.d.ts.map +1 -0
- package/dist/public/proof-receipt.js +377 -0
- package/dist/public/schemas/entity.d.ts.map +1 -1
- package/dist/public/schemas/entity.js +22 -6
- package/dist/public/skills/kibi-bootstrap/SKILL.md +58 -0
- package/dist/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
- package/dist/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
- package/dist/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
- package/dist/public/skills/kibi-freshness/SKILL.md +39 -9
- package/dist/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-freshness/resources/operation-access.md +6 -0
- package/dist/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
- package/dist/public/skills/kibi-traceability/SKILL.md +47 -47
- package/dist/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
- package/dist/public/skills/kibi-traceability/resources/operation-access.md +5 -0
- package/dist/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
- package/dist/public/skills/kibi-traceability/resources/traceability.md +8 -0
- package/dist/public/skills/kibi-usage/SKILL.md +136 -231
- package/dist/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
- package/dist/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
- package/dist/public/skills/kibi-usage/resources/operation-access.md +36 -38
- package/dist/public/skills/kibi-usage/resources/proof.md +105 -0
- package/dist/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
- package/dist/public/skills/kibi-usage/resources/source-authoring.md +31 -0
- package/dist/public/skills/kibi-usage/resources/workflows.md +57 -4
- package/dist/public/symbol-granularity.d.ts +3 -14
- package/dist/public/symbol-granularity.d.ts.map +1 -1
- package/dist/public/symbol-granularity.generated.d.ts +16 -0
- package/dist/public/symbol-granularity.generated.d.ts.map +1 -0
- package/dist/public/symbol-granularity.generated.js +20 -0
- package/dist/public/symbol-granularity.js +6 -46
- package/dist/public/telemetry-acceptance.d.ts +3 -70
- package/dist/public/telemetry-acceptance.d.ts.map +1 -1
- package/dist/public/telemetry-acceptance.js +11 -2
- package/dist/public/telemetry-remediation.js +1 -1
- package/dist/relationships/shards.d.ts +16 -0
- package/dist/relationships/shards.d.ts.map +1 -1
- package/dist/relationships/shards.js +87 -2
- package/dist/report/brand.d.ts +19 -0
- package/dist/report/brand.d.ts.map +1 -0
- package/dist/report/brand.js +112 -0
- package/dist/report/html-report.css +282 -0
- package/dist/report/html-report.d.ts +21 -0
- package/dist/report/html-report.d.ts.map +1 -0
- package/dist/report/html-report.js +700 -0
- package/dist/report/relative-time.d.ts +4 -0
- package/dist/report/relative-time.d.ts.map +1 -0
- package/dist/report/relative-time.js +46 -0
- package/dist/report/report-view.d.ts +17 -0
- package/dist/report/report-view.d.ts.map +1 -0
- package/dist/report/report-view.js +33 -0
- package/dist/report/repository.d.ts +35 -0
- package/dist/report/repository.d.ts.map +1 -0
- package/dist/report/repository.js +151 -0
- package/dist/runtime/cli-runtime.d.ts +2 -0
- package/dist/runtime/cli-runtime.d.ts.map +1 -1
- package/dist/runtime/cli-runtime.js +90 -23
- package/dist/schemas/entity.schema.json +1254 -239
- package/dist/search-ranking.d.ts +1 -0
- package/dist/search-ranking.d.ts.map +1 -1
- package/dist/search-ranking.js +3 -0
- package/dist/traceability/evidence-model.d.ts +30 -2
- package/dist/traceability/evidence-model.d.ts.map +1 -1
- package/dist/traceability/evidence-model.js +2 -2
- package/dist/traceability/git-staged.d.ts +20 -0
- package/dist/traceability/git-staged.d.ts.map +1 -1
- package/dist/traceability/git-staged.js +156 -37
- package/dist/traceability/markdown-validate.d.ts.map +1 -1
- package/dist/traceability/markdown-validate.js +12 -7
- package/dist/traceability/staged-diagnostics.d.ts +7 -0
- package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
- package/dist/traceability/staged-diagnostics.js +78 -7
- package/dist/traceability/staged-file-coverage.d.ts +33 -0
- package/dist/traceability/staged-file-coverage.d.ts.map +1 -0
- package/dist/traceability/staged-file-coverage.js +284 -0
- package/dist/traceability/staged-impact-contract.d.ts +3 -3
- package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
- package/dist/traceability/staged-impact-contract.js +12 -40
- package/dist/traceability/staged-symbols-manifest.d.ts +13 -0
- package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
- package/dist/traceability/staged-symbols-manifest.js +142 -26
- package/dist/traceability/symbol-extract.d.ts +5 -0
- package/dist/traceability/symbol-extract.d.ts.map +1 -1
- package/dist/traceability/symbol-extract.js +1 -1
- package/dist/traceability/temp-kb.d.ts +2 -0
- package/dist/traceability/temp-kb.d.ts.map +1 -1
- package/dist/traceability/temp-kb.js +14 -2
- package/dist/types/entities.d.ts +5 -0
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/utils/branch-resolver.d.ts +25 -10
- package/dist/utils/branch-resolver.d.ts.map +1 -1
- package/dist/utils/branch-resolver.js +124 -38
- package/dist/utils/branch-store-locator.d.ts +23 -0
- package/dist/utils/branch-store-locator.d.ts.map +1 -0
- package/dist/utils/branch-store-locator.js +90 -0
- package/dist/utils/branch-store.d.ts +21 -0
- package/dist/utils/branch-store.d.ts.map +1 -0
- package/dist/utils/branch-store.js +157 -0
- package/dist/utils/config.d.ts +39 -37
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +107 -119
- package/dist/utils/kb-manifest.d.ts +35 -0
- package/dist/utils/kb-manifest.d.ts.map +1 -0
- package/dist/utils/kb-manifest.js +154 -0
- package/dist/utils/kb-paths.d.ts +54 -0
- package/dist/utils/kb-paths.d.ts.map +1 -0
- package/dist/utils/kb-paths.js +125 -0
- package/dist/utils/manifest-paths.d.ts +4 -4
- package/dist/utils/manifest-paths.d.ts.map +1 -1
- package/dist/utils/manifest-paths.js +8 -56
- package/dist/utils/rule-registry.d.ts +42 -24
- package/dist/utils/rule-registry.d.ts.map +1 -1
- package/dist/utils/rule-registry.generated.d.ts +97 -0
- package/dist/utils/rule-registry.generated.d.ts.map +1 -0
- package/dist/utils/rule-registry.generated.js +125 -0
- package/dist/utils/rule-registry.js +52 -148
- package/dist/utils/schema-version.d.ts +5 -5
- package/dist/utils/schema-version.d.ts.map +1 -1
- package/dist/utils/schema-version.js +26 -6
- package/dist/utils/strict-modeling.d.ts +1 -4
- package/dist/utils/strict-modeling.d.ts.map +1 -1
- package/dist/utils/strict-modeling.js +8 -9
- package/package.json +47 -11
- package/schema/config.json +2 -2
- package/schema/manifest.json +26 -0
- package/src/public/branch-resolver.ts +1 -0
- package/src/public/check-types.ts +22 -19
- package/src/public/diagnostic-usage.ts +84 -6
- package/src/public/distribution-parity.ts +17 -9
- package/src/public/ignore-policy.ts +16 -10
- package/src/public/impact/coverage-depth-quality.ts +37 -1
- package/src/public/impact/diagnostics.ts +2 -1
- package/src/public/impact/diff-meaning.ts +11 -4
- package/src/public/impact/full-kb-quality.ts +545 -41
- package/src/public/impact/manifest.ts +2 -4
- package/src/public/operational-artifacts.ts +9 -1
- package/src/public/operations/catalog.ts +153 -10
- package/src/public/operations/check-executor.ts +98 -15
- package/src/public/operations/check-format-shared.ts +6 -0
- package/src/public/operations/check-helpers.ts +74 -35
- package/src/public/operations/contracts.ts +382 -0
- package/src/public/operations/discovery-entities.ts +7 -0
- package/src/public/operations/discovery-executors.ts +315 -25
- package/src/public/operations/index.ts +9 -4
- package/src/public/operations/migration-plan.ts +747 -0
- package/src/public/operations/node-ports.ts +87 -13
- package/src/public/operations/prolog-json.ts +60 -5
- package/src/public/operations/repair-plan.ts +60 -22
- package/src/public/operations/result-envelope.ts +141 -0
- package/src/public/operations/runtime-types.ts +96 -5
- package/src/public/operations/source-relationship-parity.ts +226 -0
- package/src/public/operations/specs/{autopilot.ts → bootstrap.ts} +17 -16
- package/src/public/operations/specs/check-rules.generated.ts +37 -0
- package/src/public/operations/specs/check.ts +14 -22
- package/src/public/operations/specs/discovery.ts +57 -3
- package/src/public/operations/specs/modeling.ts +3 -3
- package/src/public/operations/specs/mutation-schemas.ts +24 -6
- package/src/public/operations/specs/mutation.ts +27 -2
- package/src/public/operations/specs/planning.ts +241 -0
- package/src/public/operations/specs/proof.ts +43 -0
- package/src/public/operations/specs/reporting.ts +193 -12
- package/src/public/operations/specs/upsert.ts +10 -0
- package/src/public/operations/symbol-repair-plan.ts +324 -0
- package/src/public/operations/types.ts +62 -1
- package/src/public/proof-fingerprint.ts +216 -0
- package/src/public/proof-protocol-types.d.ts +96 -0
- package/src/public/proof-protocol.ts +589 -0
- package/src/public/proof-receipt.ts +499 -0
- package/src/public/schemas/entity.ts +27 -6
- package/src/public/skills/kibi-bootstrap/SKILL.md +58 -0
- package/src/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
- package/src/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
- package/src/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
- package/src/public/skills/kibi-freshness/SKILL.md +39 -9
- package/src/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-freshness/resources/operation-access.md +6 -0
- package/src/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
- package/src/public/skills/kibi-traceability/SKILL.md +47 -47
- package/src/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
- package/src/public/skills/kibi-traceability/resources/operation-access.md +5 -0
- package/src/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
- package/src/public/skills/kibi-traceability/resources/traceability.md +8 -0
- package/src/public/skills/kibi-usage/SKILL.md +136 -231
- package/src/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
- package/src/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
- package/src/public/skills/kibi-usage/resources/operation-access.md +36 -38
- package/src/public/skills/kibi-usage/resources/proof.md +105 -0
- package/src/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
- package/src/public/skills/kibi-usage/resources/source-authoring.md +31 -0
- package/src/public/skills/kibi-usage/resources/workflows.md +57 -4
- package/src/public/symbol-granularity.generated.ts +41 -0
- package/src/public/symbol-granularity.ts +35 -59
- package/src/public/telemetry-acceptance-types.d.ts +98 -0
- package/src/public/telemetry-acceptance.ts +30 -93
- package/src/public/telemetry-remediation.ts +1 -1
- package/src/schemas/entity.schema.json +1254 -239
- package/templates/github/kibi-badge.yml +86 -0
- package/templates/github/kibi-report.yml +84 -0
- package/dist/operations/autopilot/activation.d.ts +0 -4
- package/dist/operations/autopilot/activation.d.ts.map +0 -1
- package/dist/operations/autopilot/candidates.d.ts +0 -4
- package/dist/operations/autopilot/discovery.d.ts.map +0 -1
- package/dist/operations/autopilot/generate.d.ts +0 -8
- package/dist/operations/autopilot/generate.d.ts.map +0 -1
- package/dist/operations/autopilot/generate.js +0 -112
- package/dist/operations/autopilot/guidance.d.ts.map +0 -1
- package/dist/operations/autopilot/presentation.d.ts +0 -13
- package/dist/operations/autopilot/presentation.d.ts.map +0 -1
- package/dist/operations/autopilot/presentation.js +0 -91
- package/dist/operations/autopilot/types.d.ts.map +0 -1
- package/dist/operations/autopilot/types.js +0 -8
- package/dist/public/operations/specs/autopilot.d.ts.map +0 -1
- package/dist/public/skills/init-kibi/SKILL.md +0 -62
- package/dist/public/verification-receipt.d.ts +0 -75
- package/dist/public/verification-receipt.d.ts.map +0 -1
- package/dist/public/verification-receipt.js +0 -129
- package/src/public/skills/init-kibi/SKILL.md +0 -62
- package/src/public/verification-receipt.ts +0 -170
- /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.js +0 -0
- /package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts +0 -0
- /package/dist/operations/{autopilot → bootstrap}/requirement-claims.js +0 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { type ProofFingerprintComponents } from "./proof-fingerprint.js";
|
|
2
|
+
import { PROOF_RECEIPT_VERSION, PROOF_RESULT_OUTCOMES, PROOF_RUN_OUTCOMES, type ProofContract } from "./proof-protocol.js";
|
|
3
|
+
export declare const PROOF_RECEIPT_MAX_AGE_SECONDS: number;
|
|
4
|
+
export declare const PROOF_RECEIPT_OUTCOMES: readonly ["passed", "failed", "errored", "cancelled", "skipped", "timed_out", "interrupted"];
|
|
5
|
+
export declare const PROOF_RECEIPT_SCHEMA: {
|
|
6
|
+
readonly type: "object";
|
|
7
|
+
readonly description: "Kibi-derived kibi.proof-receipt.v1. Receipts are never caller-authored; kb_ingest_proof derives them from kibi.proof-run.v1 artifacts.";
|
|
8
|
+
readonly required: readonly ["version", "receipt_id", "test_id", "scope", "outcome", "code_snapshot", "environment_hash", "started_at", "finished_at", "artifact_digest", "contract_hash", "fingerprint", "fingerprint_components", "integration_id", "producer", "command_argv", "run_outcome", "proof_results"];
|
|
9
|
+
readonly properties: {
|
|
10
|
+
readonly version: {
|
|
11
|
+
readonly type: "string";
|
|
12
|
+
readonly const: "kibi.proof-receipt.v1";
|
|
13
|
+
};
|
|
14
|
+
readonly receipt_id: {
|
|
15
|
+
readonly type: "string";
|
|
16
|
+
readonly pattern: "^PR-[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$";
|
|
17
|
+
};
|
|
18
|
+
readonly test_id: {
|
|
19
|
+
readonly type: "string";
|
|
20
|
+
readonly minLength: 1;
|
|
21
|
+
};
|
|
22
|
+
readonly scope: {
|
|
23
|
+
readonly type: "string";
|
|
24
|
+
readonly enum: readonly ["unit", "integration", "end_to_end"];
|
|
25
|
+
};
|
|
26
|
+
readonly outcome: {
|
|
27
|
+
readonly type: "string";
|
|
28
|
+
readonly enum: readonly ["passed", "failed", "errored", "cancelled", "skipped", "timed_out", "interrupted"];
|
|
29
|
+
};
|
|
30
|
+
readonly code_snapshot: {
|
|
31
|
+
readonly type: "string";
|
|
32
|
+
readonly pattern: "^[a-f0-9]{64}$";
|
|
33
|
+
};
|
|
34
|
+
readonly environment_hash: {
|
|
35
|
+
readonly type: "string";
|
|
36
|
+
readonly pattern: "^[a-f0-9]{64}$";
|
|
37
|
+
};
|
|
38
|
+
readonly started_at: {
|
|
39
|
+
readonly type: "string";
|
|
40
|
+
readonly minLength: 1;
|
|
41
|
+
};
|
|
42
|
+
readonly finished_at: {
|
|
43
|
+
readonly type: "string";
|
|
44
|
+
readonly minLength: 1;
|
|
45
|
+
};
|
|
46
|
+
readonly artifact_digest: {
|
|
47
|
+
readonly type: "string";
|
|
48
|
+
readonly pattern: "^[a-f0-9]{64}$";
|
|
49
|
+
};
|
|
50
|
+
readonly contract_hash: {
|
|
51
|
+
readonly type: "string";
|
|
52
|
+
readonly pattern: "^[a-f0-9]{64}$";
|
|
53
|
+
};
|
|
54
|
+
readonly binding_hash: {
|
|
55
|
+
readonly type: "string";
|
|
56
|
+
readonly pattern: "^[a-f0-9]{64}$";
|
|
57
|
+
};
|
|
58
|
+
readonly fingerprint: {
|
|
59
|
+
readonly type: "string";
|
|
60
|
+
readonly pattern: "^[a-f0-9]{64}$";
|
|
61
|
+
};
|
|
62
|
+
readonly fingerprint_components: {
|
|
63
|
+
readonly type: "object";
|
|
64
|
+
readonly required: readonly ["contract", "integration", "command", "bindings", "producer"];
|
|
65
|
+
readonly additionalProperties: false;
|
|
66
|
+
readonly properties: {
|
|
67
|
+
readonly contract: {
|
|
68
|
+
readonly type: "string";
|
|
69
|
+
readonly pattern: "^[a-f0-9]{64}$";
|
|
70
|
+
};
|
|
71
|
+
readonly integration: {
|
|
72
|
+
readonly type: "string";
|
|
73
|
+
readonly pattern: "^[a-f0-9]{64}$";
|
|
74
|
+
};
|
|
75
|
+
readonly command: {
|
|
76
|
+
readonly type: "string";
|
|
77
|
+
readonly pattern: "^[a-f0-9]{64}$";
|
|
78
|
+
};
|
|
79
|
+
readonly bindings: {
|
|
80
|
+
readonly type: "string";
|
|
81
|
+
readonly pattern: "^[a-f0-9]{64}$";
|
|
82
|
+
};
|
|
83
|
+
readonly producer: {
|
|
84
|
+
readonly type: "string";
|
|
85
|
+
readonly pattern: "^[a-f0-9]{64}$";
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
readonly integration_id: {
|
|
90
|
+
readonly type: "string";
|
|
91
|
+
readonly minLength: 1;
|
|
92
|
+
};
|
|
93
|
+
readonly producer: {
|
|
94
|
+
readonly type: "object";
|
|
95
|
+
readonly required: readonly ["name"];
|
|
96
|
+
readonly properties: {
|
|
97
|
+
readonly name: {
|
|
98
|
+
readonly type: "string";
|
|
99
|
+
readonly minLength: 1;
|
|
100
|
+
};
|
|
101
|
+
readonly version: {
|
|
102
|
+
readonly type: "string";
|
|
103
|
+
readonly minLength: 1;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
readonly additionalProperties: false;
|
|
107
|
+
};
|
|
108
|
+
readonly command_argv: {
|
|
109
|
+
readonly type: "array";
|
|
110
|
+
readonly minItems: 1;
|
|
111
|
+
readonly items: {
|
|
112
|
+
readonly type: "string";
|
|
113
|
+
readonly minLength: 1;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
readonly run_outcome: {
|
|
117
|
+
readonly type: "string";
|
|
118
|
+
readonly enum: readonly ["passed", "failed", "errored", "cancelled", "timed_out", "interrupted", "no_results"];
|
|
119
|
+
};
|
|
120
|
+
readonly proof_results: {
|
|
121
|
+
readonly type: "array";
|
|
122
|
+
readonly minItems: 0;
|
|
123
|
+
readonly maxItems: 1000;
|
|
124
|
+
readonly items: {
|
|
125
|
+
readonly type: "object";
|
|
126
|
+
readonly required: readonly ["symbol_id", "target", "outcome", "binding", "attempts"];
|
|
127
|
+
readonly properties: {
|
|
128
|
+
readonly symbol_id: {
|
|
129
|
+
readonly type: "string";
|
|
130
|
+
readonly minLength: 1;
|
|
131
|
+
};
|
|
132
|
+
readonly target: {
|
|
133
|
+
readonly type: "string";
|
|
134
|
+
readonly minLength: 1;
|
|
135
|
+
};
|
|
136
|
+
readonly outcome: {
|
|
137
|
+
readonly type: "string";
|
|
138
|
+
readonly enum: readonly ["passed", "failed", "timed_out", "skipped", "interrupted", "errored"];
|
|
139
|
+
};
|
|
140
|
+
readonly binding: {
|
|
141
|
+
readonly type: "string";
|
|
142
|
+
readonly enum: readonly ["native_case", "aggregate_run"];
|
|
143
|
+
};
|
|
144
|
+
readonly native_id: {
|
|
145
|
+
readonly type: "string";
|
|
146
|
+
readonly minLength: 1;
|
|
147
|
+
};
|
|
148
|
+
readonly attempts: {
|
|
149
|
+
readonly oneOf: readonly [{
|
|
150
|
+
readonly type: "object";
|
|
151
|
+
readonly required: readonly ["status", "entries"];
|
|
152
|
+
readonly properties: {
|
|
153
|
+
readonly status: {
|
|
154
|
+
readonly type: "string";
|
|
155
|
+
readonly const: "complete";
|
|
156
|
+
};
|
|
157
|
+
readonly entries: {
|
|
158
|
+
readonly type: "array";
|
|
159
|
+
readonly minItems: 1;
|
|
160
|
+
readonly items: {
|
|
161
|
+
readonly type: "object";
|
|
162
|
+
readonly required: readonly ["outcome"];
|
|
163
|
+
readonly properties: {
|
|
164
|
+
readonly outcome: {
|
|
165
|
+
readonly type: "string";
|
|
166
|
+
readonly enum: readonly ["passed", "failed", "timed_out", "skipped", "interrupted", "errored"];
|
|
167
|
+
};
|
|
168
|
+
readonly duration_ms: {
|
|
169
|
+
readonly type: "number";
|
|
170
|
+
readonly minimum: 0;
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
readonly additionalProperties: false;
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
readonly additionalProperties: false;
|
|
178
|
+
}, {
|
|
179
|
+
readonly type: "object";
|
|
180
|
+
readonly required: readonly ["status"];
|
|
181
|
+
readonly properties: {
|
|
182
|
+
readonly status: {
|
|
183
|
+
readonly type: "string";
|
|
184
|
+
readonly const: "unavailable";
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
readonly additionalProperties: false;
|
|
188
|
+
}];
|
|
189
|
+
};
|
|
190
|
+
};
|
|
191
|
+
readonly additionalProperties: false;
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
readonly gaps: {
|
|
195
|
+
readonly type: "array";
|
|
196
|
+
readonly items: {
|
|
197
|
+
readonly type: "object";
|
|
198
|
+
readonly required: readonly ["symbol_id", "target", "reason"];
|
|
199
|
+
readonly properties: {
|
|
200
|
+
readonly symbol_id: {
|
|
201
|
+
readonly type: "string";
|
|
202
|
+
readonly minLength: 1;
|
|
203
|
+
};
|
|
204
|
+
readonly target: {
|
|
205
|
+
readonly type: "string";
|
|
206
|
+
readonly minLength: 1;
|
|
207
|
+
};
|
|
208
|
+
readonly reason: {
|
|
209
|
+
readonly type: "string";
|
|
210
|
+
readonly minLength: 1;
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
readonly additionalProperties: false;
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
readonly additionalProperties: false;
|
|
218
|
+
};
|
|
219
|
+
export type ProofReceipt = Readonly<{
|
|
220
|
+
version: typeof PROOF_RECEIPT_VERSION;
|
|
221
|
+
receipt_id: string;
|
|
222
|
+
test_id: string;
|
|
223
|
+
scope: "unit" | "integration" | "end_to_end";
|
|
224
|
+
outcome: (typeof PROOF_RECEIPT_OUTCOMES)[number];
|
|
225
|
+
code_snapshot: string;
|
|
226
|
+
environment_hash: string;
|
|
227
|
+
started_at: string;
|
|
228
|
+
finished_at: string;
|
|
229
|
+
artifact_digest: string;
|
|
230
|
+
contract_hash: string;
|
|
231
|
+
fingerprint: string;
|
|
232
|
+
fingerprint_components: ProofFingerprintComponents;
|
|
233
|
+
integration_id: string;
|
|
234
|
+
producer: {
|
|
235
|
+
readonly name: string;
|
|
236
|
+
readonly version?: string;
|
|
237
|
+
};
|
|
238
|
+
command_argv: readonly string[];
|
|
239
|
+
run_outcome: (typeof PROOF_RUN_OUTCOMES)[number];
|
|
240
|
+
proof_results: readonly {
|
|
241
|
+
readonly symbol_id: string;
|
|
242
|
+
readonly target: string;
|
|
243
|
+
readonly outcome: (typeof PROOF_RESULT_OUTCOMES)[number];
|
|
244
|
+
readonly binding: "native_case" | "aggregate_run";
|
|
245
|
+
readonly native_id?: string;
|
|
246
|
+
readonly attempts: {
|
|
247
|
+
readonly status: "complete";
|
|
248
|
+
readonly entries: readonly {
|
|
249
|
+
readonly outcome: string;
|
|
250
|
+
readonly duration_ms?: number;
|
|
251
|
+
}[];
|
|
252
|
+
} | {
|
|
253
|
+
readonly status: "unavailable";
|
|
254
|
+
};
|
|
255
|
+
}[];
|
|
256
|
+
gaps?: readonly {
|
|
257
|
+
readonly symbol_id: string;
|
|
258
|
+
readonly target: string;
|
|
259
|
+
readonly reason: string;
|
|
260
|
+
}[];
|
|
261
|
+
}>;
|
|
262
|
+
export declare function finishedAtPrecedesStartedAt(startedAt: number | null, finishedAt: number | null): boolean;
|
|
263
|
+
/** Structural validation of one kibi.proof-receipt.v1 entry. */
|
|
264
|
+
export declare function validProofReceiptShape(testId: string, receipt: unknown): boolean;
|
|
265
|
+
/**
|
|
266
|
+
* Full-history validation for proof_receipts: unique ids, per-test binding,
|
|
267
|
+
* supported scope, ordered timestamps, and structurally valid v1 entries.
|
|
268
|
+
*/
|
|
269
|
+
export declare function proofReceiptHistoryErrors(testId: string, verificationScope: unknown, receipts: readonly Readonly<Record<string, unknown>>[]): readonly string[];
|
|
270
|
+
/** The current receipt must match the live scope, contract hash, and fingerprint. */
|
|
271
|
+
export declare function proofReceiptCurrentBindingErrors(testId: string, verificationScope: unknown, receipt: Readonly<Record<string, unknown>>, contract?: ProofContract, fingerprint?: string): readonly string[];
|
|
272
|
+
/**
|
|
273
|
+
* Hard schema cap on stored receipts per test. Ingest appends past this cap by
|
|
274
|
+
* rotating: drop exactly the oldest receipts so the newest evidence stays
|
|
275
|
+
* bound to the test without ever exceeding the cap.
|
|
276
|
+
*/
|
|
277
|
+
export declare const MAX_PROOF_RECEIPTS = 50;
|
|
278
|
+
export declare function appendOnlyProofReceiptHistoryErrors(previous: readonly Readonly<Record<string, unknown>>[], next: readonly Readonly<Record<string, unknown>>[] | undefined): readonly string[];
|
|
279
|
+
//# sourceMappingURL=proof-receipt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof-receipt.d.ts","sourceRoot":"","sources":["../../src/public/proof-receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,0BAA0B,EAGhC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,6BAA6B,QAAmB,CAAC;AAE9D,eAAO,MAAM,sBAAsB,8FAQzB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyIvB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,OAAO,EAAE,OAAO,qBAAqB,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,YAAY,CAAC;IAC7C,OAAO,EAAE,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,0BAA0B,CAAC;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,WAAW,EAAE,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,aAAa,EAAE,SAAS;QACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;QACzD,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,eAAe,CAAC;QAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,QAAQ,EACb;YACE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;YAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS;gBACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;aAC/B,EAAE,CAAC;SACL,GACD;YAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;SAAE,CAAC;KACxC,EAAE,CAAC;IACJ,IAAI,CAAC,EAAE,SAAS;QACd,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,EAAE,CAAC;CACL,CAAC,CAAC;AAEH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAET;AA6ED,gEAAgE;AAChE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACf,OAAO,CAmET;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,OAAO,EAC1B,QAAQ,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,GACrD,SAAS,MAAM,EAAE,CAuCnB;AAED,qFAAqF;AACrF,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,OAAO,EAC1B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC1C,QAAQ,CAAC,EAAE,aAAa,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,SAAS,MAAM,EAAE,CAgCnB;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAoBrC,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,EACtD,IAAI,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,GAC7D,SAAS,MAAM,EAAE,CAqBnB"}
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
import { canonicalJson, proofContractHash, } from "./proof-fingerprint.js";
|
|
2
|
+
import { PROOF_RECEIPT_VERSION, PROOF_RESULT_OUTCOMES, PROOF_RUN_OUTCOMES, } from "./proof-protocol.js";
|
|
3
|
+
export const PROOF_RECEIPT_MAX_AGE_SECONDS = 7 * 24 * 60 * 60;
|
|
4
|
+
export const PROOF_RECEIPT_OUTCOMES = [
|
|
5
|
+
"passed",
|
|
6
|
+
"failed",
|
|
7
|
+
"errored",
|
|
8
|
+
"cancelled",
|
|
9
|
+
"skipped",
|
|
10
|
+
"timed_out",
|
|
11
|
+
"interrupted",
|
|
12
|
+
];
|
|
13
|
+
export const PROOF_RECEIPT_SCHEMA = {
|
|
14
|
+
type: "object",
|
|
15
|
+
description: "Kibi-derived kibi.proof-receipt.v1. Receipts are never caller-authored; kb_ingest_proof derives them from kibi.proof-run.v1 artifacts.",
|
|
16
|
+
required: [
|
|
17
|
+
"version",
|
|
18
|
+
"receipt_id",
|
|
19
|
+
"test_id",
|
|
20
|
+
"scope",
|
|
21
|
+
"outcome",
|
|
22
|
+
"code_snapshot",
|
|
23
|
+
"environment_hash",
|
|
24
|
+
"started_at",
|
|
25
|
+
"finished_at",
|
|
26
|
+
"artifact_digest",
|
|
27
|
+
"contract_hash",
|
|
28
|
+
"fingerprint",
|
|
29
|
+
"fingerprint_components",
|
|
30
|
+
"integration_id",
|
|
31
|
+
"producer",
|
|
32
|
+
"command_argv",
|
|
33
|
+
"run_outcome",
|
|
34
|
+
"proof_results",
|
|
35
|
+
],
|
|
36
|
+
properties: {
|
|
37
|
+
version: { type: "string", const: PROOF_RECEIPT_VERSION },
|
|
38
|
+
receipt_id: {
|
|
39
|
+
type: "string",
|
|
40
|
+
pattern: "^PR-[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$",
|
|
41
|
+
},
|
|
42
|
+
test_id: { type: "string", minLength: 1 },
|
|
43
|
+
scope: { type: "string", enum: ["unit", "integration", "end_to_end"] },
|
|
44
|
+
outcome: { type: "string", enum: [...PROOF_RECEIPT_OUTCOMES] },
|
|
45
|
+
code_snapshot: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
46
|
+
environment_hash: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
47
|
+
started_at: { type: "string", minLength: 1 },
|
|
48
|
+
finished_at: { type: "string", minLength: 1 },
|
|
49
|
+
artifact_digest: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
50
|
+
contract_hash: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
51
|
+
binding_hash: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
52
|
+
fingerprint: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
53
|
+
fingerprint_components: {
|
|
54
|
+
type: "object",
|
|
55
|
+
required: ["contract", "integration", "command", "bindings", "producer"],
|
|
56
|
+
additionalProperties: false,
|
|
57
|
+
properties: {
|
|
58
|
+
contract: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
59
|
+
integration: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
60
|
+
command: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
61
|
+
bindings: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
62
|
+
producer: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
integration_id: { type: "string", minLength: 1 },
|
|
66
|
+
producer: {
|
|
67
|
+
type: "object",
|
|
68
|
+
required: ["name"],
|
|
69
|
+
properties: {
|
|
70
|
+
name: { type: "string", minLength: 1 },
|
|
71
|
+
version: { type: "string", minLength: 1 },
|
|
72
|
+
},
|
|
73
|
+
additionalProperties: false,
|
|
74
|
+
},
|
|
75
|
+
command_argv: {
|
|
76
|
+
type: "array",
|
|
77
|
+
minItems: 1,
|
|
78
|
+
items: { type: "string", minLength: 1 },
|
|
79
|
+
},
|
|
80
|
+
run_outcome: { type: "string", enum: [...PROOF_RUN_OUTCOMES] },
|
|
81
|
+
proof_results: {
|
|
82
|
+
type: "array",
|
|
83
|
+
minItems: 0,
|
|
84
|
+
maxItems: 1000,
|
|
85
|
+
items: {
|
|
86
|
+
type: "object",
|
|
87
|
+
required: ["symbol_id", "target", "outcome", "binding", "attempts"],
|
|
88
|
+
properties: {
|
|
89
|
+
symbol_id: { type: "string", minLength: 1 },
|
|
90
|
+
target: { type: "string", minLength: 1 },
|
|
91
|
+
outcome: { type: "string", enum: [...PROOF_RESULT_OUTCOMES] },
|
|
92
|
+
binding: { type: "string", enum: ["native_case", "aggregate_run"] },
|
|
93
|
+
native_id: { type: "string", minLength: 1 },
|
|
94
|
+
attempts: {
|
|
95
|
+
oneOf: [
|
|
96
|
+
{
|
|
97
|
+
type: "object",
|
|
98
|
+
required: ["status", "entries"],
|
|
99
|
+
properties: {
|
|
100
|
+
status: { type: "string", const: "complete" },
|
|
101
|
+
entries: {
|
|
102
|
+
type: "array",
|
|
103
|
+
minItems: 1,
|
|
104
|
+
items: {
|
|
105
|
+
type: "object",
|
|
106
|
+
required: ["outcome"],
|
|
107
|
+
properties: {
|
|
108
|
+
outcome: {
|
|
109
|
+
type: "string",
|
|
110
|
+
enum: [...PROOF_RESULT_OUTCOMES],
|
|
111
|
+
},
|
|
112
|
+
duration_ms: { type: "number", minimum: 0 },
|
|
113
|
+
},
|
|
114
|
+
additionalProperties: false,
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
additionalProperties: false,
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
type: "object",
|
|
122
|
+
required: ["status"],
|
|
123
|
+
properties: {
|
|
124
|
+
status: { type: "string", const: "unavailable" },
|
|
125
|
+
},
|
|
126
|
+
additionalProperties: false,
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
additionalProperties: false,
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
gaps: {
|
|
135
|
+
type: "array",
|
|
136
|
+
items: {
|
|
137
|
+
type: "object",
|
|
138
|
+
required: ["symbol_id", "target", "reason"],
|
|
139
|
+
properties: {
|
|
140
|
+
symbol_id: { type: "string", minLength: 1 },
|
|
141
|
+
target: { type: "string", minLength: 1 },
|
|
142
|
+
reason: { type: "string", minLength: 1 },
|
|
143
|
+
},
|
|
144
|
+
additionalProperties: false,
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
additionalProperties: false,
|
|
149
|
+
};
|
|
150
|
+
export function finishedAtPrecedesStartedAt(startedAt, finishedAt) {
|
|
151
|
+
return startedAt !== null && finishedAt !== null && finishedAt < startedAt;
|
|
152
|
+
}
|
|
153
|
+
function timestamp(value) {
|
|
154
|
+
if (typeof value !== "string")
|
|
155
|
+
return null;
|
|
156
|
+
if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(value)) {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
const parsed = Date.parse(value);
|
|
160
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
161
|
+
}
|
|
162
|
+
function nonEmptyString(value) {
|
|
163
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
164
|
+
}
|
|
165
|
+
function hex64(value) {
|
|
166
|
+
return typeof value === "string" && /^[a-f0-9]{64}$/.test(value);
|
|
167
|
+
}
|
|
168
|
+
function isRecord(value) {
|
|
169
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
170
|
+
}
|
|
171
|
+
function validAttempts(value) {
|
|
172
|
+
const row = isRecord(value) ? value : null;
|
|
173
|
+
if (!row)
|
|
174
|
+
return false;
|
|
175
|
+
if (row.status === "unavailable")
|
|
176
|
+
return row.entries === undefined;
|
|
177
|
+
if (row.status !== "complete")
|
|
178
|
+
return false;
|
|
179
|
+
if (!Array.isArray(row.entries) || row.entries.length === 0)
|
|
180
|
+
return false;
|
|
181
|
+
return row.entries.every((entry) => {
|
|
182
|
+
const attempt = isRecord(entry) ? entry : null;
|
|
183
|
+
return (attempt !== null &&
|
|
184
|
+
nonEmptyString(attempt.outcome) &&
|
|
185
|
+
PROOF_RESULT_OUTCOMES.includes(String(attempt.outcome)) &&
|
|
186
|
+
(attempt.duration_ms === undefined ||
|
|
187
|
+
(Number.isInteger(attempt.duration_ms) &&
|
|
188
|
+
Number(attempt.duration_ms) >= 0)));
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
function validReceiptProofResult(value) {
|
|
192
|
+
const row = isRecord(value) ? value : null;
|
|
193
|
+
if (!row)
|
|
194
|
+
return false;
|
|
195
|
+
return (nonEmptyString(row.symbol_id) &&
|
|
196
|
+
nonEmptyString(row.target) &&
|
|
197
|
+
PROOF_RESULT_OUTCOMES.includes(String(row.outcome)) &&
|
|
198
|
+
["native_case", "aggregate_run"].includes(String(row.binding)) &&
|
|
199
|
+
(row.native_id === undefined || nonEmptyString(row.native_id)) &&
|
|
200
|
+
validAttempts(row.attempts));
|
|
201
|
+
}
|
|
202
|
+
function validFingerprintComponents(value) {
|
|
203
|
+
const row = isRecord(value) ? value : null;
|
|
204
|
+
if (!row)
|
|
205
|
+
return false;
|
|
206
|
+
return (hex64(row.contract) &&
|
|
207
|
+
hex64(row.integration) &&
|
|
208
|
+
hex64(row.command) &&
|
|
209
|
+
hex64(row.bindings) &&
|
|
210
|
+
hex64(row.producer));
|
|
211
|
+
}
|
|
212
|
+
/** Structural validation of one kibi.proof-receipt.v1 entry. */
|
|
213
|
+
export function validProofReceiptShape(testId, receipt) {
|
|
214
|
+
const row = isRecord(receipt) ? receipt : null;
|
|
215
|
+
if (!row)
|
|
216
|
+
return false;
|
|
217
|
+
if (row.version !== PROOF_RECEIPT_VERSION)
|
|
218
|
+
return false;
|
|
219
|
+
if (typeof row.receipt_id !== "string" ||
|
|
220
|
+
!/^PR-[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$/.test(row.receipt_id))
|
|
221
|
+
return false;
|
|
222
|
+
if (row.test_id !== testId)
|
|
223
|
+
return false;
|
|
224
|
+
if (!["unit", "integration", "end_to_end"].includes(String(row.scope)))
|
|
225
|
+
return false;
|
|
226
|
+
if (!PROOF_RECEIPT_OUTCOMES.includes(String(row.outcome)))
|
|
227
|
+
return false;
|
|
228
|
+
if (!hex64(row.code_snapshot) || !hex64(row.environment_hash))
|
|
229
|
+
return false;
|
|
230
|
+
if (!hex64(row.artifact_digest))
|
|
231
|
+
return false;
|
|
232
|
+
if (!hex64(row.contract_hash) || !hex64(row.fingerprint))
|
|
233
|
+
return false;
|
|
234
|
+
if (row.binding_hash !== undefined &&
|
|
235
|
+
(typeof row.binding_hash !== "string" || !hex64(row.binding_hash))) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
if (!validFingerprintComponents(row.fingerprint_components))
|
|
239
|
+
return false;
|
|
240
|
+
if (!nonEmptyString(row.integration_id))
|
|
241
|
+
return false;
|
|
242
|
+
const producer = isRecord(row.producer) ? row.producer : null;
|
|
243
|
+
if (!producer || !nonEmptyString(producer.name))
|
|
244
|
+
return false;
|
|
245
|
+
if (producer.version !== undefined && !nonEmptyString(producer.version))
|
|
246
|
+
return false;
|
|
247
|
+
if (!Array.isArray(row.command_argv) ||
|
|
248
|
+
row.command_argv.length === 0 ||
|
|
249
|
+
!row.command_argv.every((argument) => nonEmptyString(argument)))
|
|
250
|
+
return false;
|
|
251
|
+
if (!PROOF_RUN_OUTCOMES.includes(String(row.run_outcome)))
|
|
252
|
+
return false;
|
|
253
|
+
if (!Array.isArray(row.proof_results) ||
|
|
254
|
+
!row.proof_results.every(validReceiptProofResult))
|
|
255
|
+
return false;
|
|
256
|
+
if (row.gaps !== undefined) {
|
|
257
|
+
if (!Array.isArray(row.gaps))
|
|
258
|
+
return false;
|
|
259
|
+
if (!row.gaps.every((gap) => isRecord(gap) &&
|
|
260
|
+
nonEmptyString(gap.symbol_id) &&
|
|
261
|
+
nonEmptyString(gap.target) &&
|
|
262
|
+
nonEmptyString(gap.reason)))
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
const startedAt = timestamp(row.started_at);
|
|
266
|
+
const finishedAt = timestamp(row.finished_at);
|
|
267
|
+
if (startedAt === null || finishedAt === null)
|
|
268
|
+
return false;
|
|
269
|
+
return !finishedAtPrecedesStartedAt(startedAt, finishedAt);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Full-history validation for proof_receipts: unique ids, per-test binding,
|
|
273
|
+
* supported scope, ordered timestamps, and structurally valid v1 entries.
|
|
274
|
+
*/
|
|
275
|
+
export function proofReceiptHistoryErrors(testId, verificationScope, receipts) {
|
|
276
|
+
const errors = [];
|
|
277
|
+
if (receipts.length > 0 && typeof verificationScope !== "string") {
|
|
278
|
+
errors.push("verification_scope is required when proof_receipts are present");
|
|
279
|
+
}
|
|
280
|
+
const receiptIds = new Set();
|
|
281
|
+
for (const [index, receipt] of receipts.entries()) {
|
|
282
|
+
const prefix = `proof_receipts[${index}]`;
|
|
283
|
+
const receiptId = receipt.receipt_id;
|
|
284
|
+
if (typeof receiptId === "string") {
|
|
285
|
+
if (receiptIds.has(receiptId)) {
|
|
286
|
+
errors.push(`${prefix}.receipt_id duplicates '${receiptId}'`);
|
|
287
|
+
}
|
|
288
|
+
receiptIds.add(receiptId);
|
|
289
|
+
}
|
|
290
|
+
if (receipt.test_id !== testId) {
|
|
291
|
+
errors.push(`${prefix}.test_id must equal '${testId}'`);
|
|
292
|
+
}
|
|
293
|
+
if (!validProofReceiptShape(testId, receipt)) {
|
|
294
|
+
errors.push(`${prefix} must be a structurally valid kibi.proof-receipt.v1 bound to '${testId}'`);
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
const finishedAt = timestamp(receipt.finished_at);
|
|
298
|
+
if (finishedAt !== null &&
|
|
299
|
+
index > 0 &&
|
|
300
|
+
timestamp(receipts[index - 1]?.finished_at) !== null &&
|
|
301
|
+
finishedAt <= timestamp(receipts[index - 1]?.finished_at)) {
|
|
302
|
+
errors.push(`${prefix}.finished_at must be strictly later than the previous receipt`);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return errors;
|
|
306
|
+
}
|
|
307
|
+
/** The current receipt must match the live scope, contract hash, and fingerprint. */
|
|
308
|
+
export function proofReceiptCurrentBindingErrors(testId, verificationScope, receipt, contract, fingerprint) {
|
|
309
|
+
const errors = [];
|
|
310
|
+
if (receipt.test_id !== testId) {
|
|
311
|
+
errors.push(`proof receipt test_id must equal '${testId}'`);
|
|
312
|
+
}
|
|
313
|
+
if (typeof verificationScope !== "string") {
|
|
314
|
+
errors.push("verification_scope is required for current receipt evidence");
|
|
315
|
+
}
|
|
316
|
+
else if (receipt.scope !== verificationScope) {
|
|
317
|
+
errors.push(`proof receipt scope must equal the current verification_scope '${verificationScope}'`);
|
|
318
|
+
}
|
|
319
|
+
if (contract !== undefined) {
|
|
320
|
+
if (typeof receipt.contract_hash === "string") {
|
|
321
|
+
const expectedHash = proofContractHash(contract);
|
|
322
|
+
if (receipt.contract_hash !== expectedHash) {
|
|
323
|
+
errors.push("proof receipt contract_hash does not match the current proof_contract");
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
if (fingerprint !== undefined &&
|
|
327
|
+
typeof receipt.fingerprint === "string" &&
|
|
328
|
+
receipt.fingerprint !== fingerprint) {
|
|
329
|
+
errors.push("proof receipt fingerprint does not match the current effective execution fingerprint");
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
return errors;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Hard schema cap on stored receipts per test. Ingest appends past this cap by
|
|
336
|
+
* rotating: drop exactly the oldest receipts so the newest evidence stays
|
|
337
|
+
* bound to the test without ever exceeding the cap.
|
|
338
|
+
*/
|
|
339
|
+
export const MAX_PROOF_RECEIPTS = 50;
|
|
340
|
+
function isCapRotation(previous, next) {
|
|
341
|
+
if (next.length !== MAX_PROOF_RECEIPTS)
|
|
342
|
+
return false;
|
|
343
|
+
if (previous.length < MAX_PROOF_RECEIPTS)
|
|
344
|
+
return false;
|
|
345
|
+
const preserved = MAX_PROOF_RECEIPTS - 1;
|
|
346
|
+
for (let index = 0; index < preserved; index++) {
|
|
347
|
+
if (canonicalJson(previous[previous.length - preserved + index]) !==
|
|
348
|
+
canonicalJson(next[index])) {
|
|
349
|
+
return false;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
return true;
|
|
353
|
+
}
|
|
354
|
+
export function appendOnlyProofReceiptHistoryErrors(previous, next) {
|
|
355
|
+
if (previous.length === 0)
|
|
356
|
+
return [];
|
|
357
|
+
if (next === undefined) {
|
|
358
|
+
return [
|
|
359
|
+
"proof_receipts is append-only and cannot be removed from an existing test",
|
|
360
|
+
];
|
|
361
|
+
}
|
|
362
|
+
if (isCapRotation(previous, next))
|
|
363
|
+
return [];
|
|
364
|
+
if (next.length < previous.length) {
|
|
365
|
+
return [
|
|
366
|
+
`proof_receipts is append-only: expected at least ${previous.length} historical receipt(s), received ${next.length}`,
|
|
367
|
+
];
|
|
368
|
+
}
|
|
369
|
+
for (const [index, receipt] of previous.entries()) {
|
|
370
|
+
if (canonicalJson(next[index]) !== canonicalJson(receipt)) {
|
|
371
|
+
return [
|
|
372
|
+
`proof_receipts is append-only: historical receipt at index ${index} was changed, removed, or reordered`,
|
|
373
|
+
];
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return [];
|
|
377
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/public/schemas/entity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/public/schemas/entity.ts"],"names":[],"mappings":"AA4TA,QAAA,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CA8UzC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|