kibi-cli 1.0.1 → 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.js +3 -3
- package/dist/cli-operation-metadata.d.ts +4 -3
- package/dist/cli-operation-metadata.d.ts.map +1 -1
- package/dist/cli-operation-metadata.js +7 -5
- package/dist/cli-protocol.js +1 -1
- package/dist/cli-register-maintenance.d.ts.map +1 -1
- package/dist/cli-register-maintenance.js +7 -0
- 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 +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -10
- package/dist/commands/branch.d.ts +1 -0
- package/dist/commands/branch.d.ts.map +1 -1
- package/dist/commands/branch.js +8 -4
- package/dist/commands/check.d.ts +14 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +190 -44
- 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/doctor.d.ts +22 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +48 -22
- package/dist/commands/engine.d.ts +12 -0
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +40 -0
- package/dist/commands/github-init.d.ts +1 -0
- package/dist/commands/github-init.d.ts.map +1 -1
- package/dist/commands/github-init.js +9 -5
- package/dist/commands/init-helpers.d.ts.map +1 -1
- package/dist/commands/init-helpers.js +38 -5
- package/dist/commands/migrate.d.ts +4 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +7 -7
- 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.js +1 -1
- package/dist/commands/sync/discovery.d.ts +3 -0
- package/dist/commands/sync/discovery.d.ts.map +1 -1
- package/dist/commands/sync/discovery.js +36 -28
- package/dist/commands/sync/manifest.d.ts +1 -1
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +53 -21
- 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 +25 -14
- 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 +11 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +74 -30
- 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 +14 -76
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +197 -30
- package/dist/extractors/manifest.d.ts +5 -0
- package/dist/extractors/manifest.d.ts.map +1 -1
- package/dist/extractors/manifest.js +46 -1
- package/dist/extractors/markdown.d.ts +5 -3
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +41 -24
- package/dist/extractors/playwright-cases.js +1 -1
- package/dist/extractors/relationships.d.ts +6 -0
- package/dist/extractors/relationships.d.ts.map +1 -1
- package/dist/extractors/relationships.js +1 -1
- package/dist/extractors/symbol-coordinates.d.ts.map +1 -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 +1 -0
- package/dist/intent-search.d.ts.map +1 -1
- package/dist/intent-search.js +7 -3
- 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 +2 -1
- package/dist/operations/bootstrap/activation.d.ts.map +1 -1
- package/dist/operations/bootstrap/activation.js +11 -3
- package/dist/operations/bootstrap/generate.d.ts +2 -1
- package/dist/operations/bootstrap/generate.d.ts.map +1 -1
- package/dist/operations/bootstrap/generate.js +6 -3
- package/dist/operations/bootstrap/guidance.d.ts +1 -0
- package/dist/operations/bootstrap/guidance.d.ts.map +1 -1
- package/dist/operations/bootstrap/guidance.js +1 -1
- 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 +53 -46
- package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-applicability.js +103 -4
- 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-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-loader.d.ts +1 -0
- package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-loader.js +4 -3
- package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
- package/dist/operations/modeling/predicate-ranker.js +4 -1
- package/dist/operations/modeling/predicate-types.d.ts +1 -1
- package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
- 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/suggest-predicates.d.ts +3 -1
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +52 -19
- 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 +100 -32
- package/dist/operations/mutation/relationships.d.ts +1 -0
- package/dist/operations/mutation/relationships.d.ts.map +1 -1
- package/dist/operations/mutation/relationships.js +6 -4
- 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 -2
- package/dist/operations/mutation/source-authoring.d.ts +5 -1
- package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
- package/dist/operations/mutation/source-authoring.js +79 -46
- 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 +5 -2
- package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-compiler-lock.js +65 -2
- package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-granularity.js +2 -2
- package/dist/operations/mutation/symbol-refresh.d.ts +1 -0
- package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
- package/dist/operations/mutation/symbol-refresh.js +10 -8
- 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 +86 -54
- 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 +46 -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 +8 -106
- package/dist/operations/planning/apply-plan.d.ts.map +1 -1
- package/dist/operations/planning/apply-plan.js +113 -36
- package/dist/operations/planning/compile-intent.d.ts +2 -0
- package/dist/operations/planning/compile-intent.d.ts.map +1 -1
- package/dist/operations/planning/compile-intent.js +70 -14
- 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 +46 -26
- package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/clauses.js +20 -7
- 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/prolog/codec.d.ts +13 -1
- package/dist/prolog/codec.d.ts.map +1 -1
- package/dist/prolog/codec.js +269 -154
- 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 +55 -17
- 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/{public → proof/producers}/playwright-case-id.d.ts +1 -1
- package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
- package/dist/{public → proof/producers}/playwright-case-id.js +3 -3
- 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/diagnostic-usage.js +6 -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 -10
- package/dist/public/impact/coverage-depth-quality.d.ts +1 -0
- package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
- package/dist/public/impact/coverage-depth-quality.js +1 -1
- 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 +5 -2
- package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
- package/dist/public/impact/full-kb-quality.js +329 -64
- package/dist/public/operations/catalog.d.ts +447 -196
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/catalog.js +6 -4
- package/dist/public/operations/check-executor.d.ts.map +1 -1
- package/dist/public/operations/check-executor.js +3 -7
- package/dist/public/operations/contracts.d.ts +7 -0
- package/dist/public/operations/contracts.d.ts.map +1 -1
- package/dist/public/operations/contracts.js +31 -22
- 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 +9 -9
- package/dist/public/operations/discovery-executors.d.ts.map +1 -1
- package/dist/public/operations/discovery-executors.js +17 -14
- package/dist/public/operations/index.d.ts +1 -1
- package/dist/public/operations/index.d.ts.map +1 -1
- package/dist/public/operations/index.js +1 -1
- package/dist/public/operations/migration-plan.d.ts +4 -3
- package/dist/public/operations/migration-plan.d.ts.map +1 -1
- package/dist/public/operations/migration-plan.js +23 -21
- package/dist/public/operations/node-ports.js +6 -6
- 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 -19
- package/dist/public/operations/result-envelope.d.ts +1 -0
- package/dist/public/operations/result-envelope.d.ts.map +1 -1
- package/dist/public/operations/result-envelope.js +12 -10
- package/dist/public/operations/runtime-types.d.ts +5 -0
- package/dist/public/operations/runtime-types.d.ts.map +1 -1
- 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 +7 -2
- package/dist/public/operations/specs/check.d.ts.map +1 -1
- package/dist/public/operations/specs/check.js +8 -20
- package/dist/public/operations/specs/mutation-schemas.d.ts +257 -163
- package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
- package/dist/public/operations/specs/mutation-schemas.js +15 -7
- package/dist/public/operations/specs/planning.d.ts +9 -0
- package/dist/public/operations/specs/planning.d.ts.map +1 -1
- package/dist/public/operations/specs/planning.js +6 -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 +19 -0
- package/dist/public/operations/specs/reporting.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.js +112 -12
- package/dist/public/operations/specs/upsert.d.ts +257 -163
- package/dist/public/operations/specs/upsert.d.ts.map +1 -1
- package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
- package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -1
- package/dist/public/operations/symbol-repair-plan.js +118 -3
- package/dist/public/operations/types.d.ts +1 -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 +21 -7
- package/dist/public/skills/kibi-freshness/SKILL.md +1 -1
- package/dist/public/skills/kibi-usage/SKILL.md +41 -12
- package/dist/public/skills/kibi-usage/resources/operation-access.md +1 -1
- package/dist/public/skills/kibi-usage/resources/proof.md +105 -0
- package/dist/public/skills/kibi-usage/resources/workflows.md +6 -6
- 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 -47
- package/dist/public/telemetry-acceptance.d.ts +3 -77
- package/dist/public/telemetry-acceptance.d.ts.map +1 -1
- package/dist/public/telemetry-acceptance.js +4 -2
- package/dist/public/telemetry-remediation.js +1 -1
- package/dist/report/html-report.css +282 -0
- package/dist/report/html-report.d.ts +4 -2
- package/dist/report/html-report.d.ts.map +1 -1
- package/dist/report/html-report.js +37 -300
- 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 +14 -7
- package/dist/schemas/entity.schema.json +355 -215
- 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 +28 -0
- package/dist/traceability/evidence-model.d.ts.map +1 -1
- 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 +145 -1
- 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.js +4 -4
- 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 +138 -27
- 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 +13 -4
- package/dist/types/entities.d.ts +5 -3
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/utils/branch-resolver.d.ts +1 -0
- package/dist/utils/branch-resolver.d.ts.map +1 -1
- package/dist/utils/branch-resolver.js +7 -4
- package/dist/utils/branch-store.d.ts +6 -0
- package/dist/utils/branch-store.d.ts.map +1 -1
- package/dist/utils/branch-store.js +27 -0
- package/dist/utils/kb-paths.d.ts +1 -1
- package/dist/utils/kb-paths.d.ts.map +1 -1
- package/dist/utils/kb-paths.js +1 -1
- package/dist/utils/rule-registry.d.ts +1 -11
- 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 +12 -113
- package/dist/utils/strict-modeling.d.ts +1 -0
- package/dist/utils/strict-modeling.d.ts.map +1 -1
- package/dist/utils/strict-modeling.js +1 -1
- package/package.json +8 -11
- package/src/public/diagnostic-usage.ts +6 -6
- package/src/public/distribution-parity.ts +17 -10
- package/src/public/impact/coverage-depth-quality.ts +1 -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 +463 -72
- package/src/public/operations/catalog.ts +10 -4
- package/src/public/operations/check-executor.ts +3 -7
- package/src/public/operations/contracts.ts +38 -22
- package/src/public/operations/discovery-entities.ts +7 -0
- package/src/public/operations/discovery-executors.ts +26 -23
- package/src/public/operations/index.ts +1 -1
- package/src/public/operations/migration-plan.ts +32 -25
- package/src/public/operations/node-ports.ts +6 -6
- package/src/public/operations/repair-plan.ts +60 -23
- package/src/public/operations/result-envelope.ts +15 -10
- package/src/public/operations/runtime-types.ts +5 -0
- package/src/public/operations/specs/check-rules.generated.ts +37 -0
- package/src/public/operations/specs/check.ts +12 -21
- package/src/public/operations/specs/mutation-schemas.ts +22 -9
- package/src/public/operations/specs/planning.ts +7 -0
- package/src/public/operations/specs/proof.ts +43 -0
- package/src/public/operations/specs/reporting.ts +140 -13
- package/src/public/operations/symbol-repair-plan.ts +163 -3
- package/src/public/operations/types.ts +1 -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 +26 -10
- package/src/public/skills/kibi-freshness/SKILL.md +1 -1
- package/src/public/skills/kibi-usage/SKILL.md +41 -12
- package/src/public/skills/kibi-usage/resources/operation-access.md +1 -1
- package/src/public/skills/kibi-usage/resources/proof.md +105 -0
- package/src/public/skills/kibi-usage/resources/workflows.md +6 -6
- package/src/public/symbol-granularity.generated.ts +41 -0
- package/src/public/symbol-granularity.ts +35 -60
- package/src/public/telemetry-acceptance-types.d.ts +98 -0
- package/src/public/telemetry-acceptance.ts +22 -100
- package/src/public/telemetry-remediation.ts +1 -1
- package/src/schemas/entity.schema.json +355 -215
- package/dist/cli-register-verification.d.ts +0 -3
- package/dist/cli-register-verification.d.ts.map +0 -1
- package/dist/cli-register-verification.js +0 -16
- package/dist/commands/verify.d.ts +0 -10
- package/dist/commands/verify.d.ts.map +0 -1
- package/dist/commands/verify.js +0 -126
- package/dist/operations/verification/ingest-verification.d.ts +0 -29
- package/dist/operations/verification/ingest-verification.d.ts.map +0 -1
- package/dist/operations/verification/ingest-verification.js +0 -192
- package/dist/public/operations/specs/verification.d.ts +0 -78
- package/dist/public/operations/specs/verification.d.ts.map +0 -1
- package/dist/public/operations/specs/verification.js +0 -62
- package/dist/public/playwright-case-id.d.ts.map +0 -1
- package/dist/public/verification-receipt.d.ts +0 -242
- package/dist/public/verification-receipt.d.ts.map +0 -1
- package/dist/public/verification-receipt.js +0 -296
- package/dist/verification/playwright-reporter.d.ts +0 -21
- package/dist/verification/playwright-reporter.d.ts.map +0 -1
- package/dist/verification/playwright-reporter.js +0 -114
- package/src/public/operations/specs/verification.ts +0 -78
- package/src/public/playwright-case-id.ts +0 -35
- package/src/public/verification-receipt.ts +0 -412
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { coarseCoordinateSpan } from "../../extractors/symbol-coordinates.js";
|
|
4
|
+
import {
|
|
5
|
+
type ManifestSymbolEntry,
|
|
6
|
+
analyzeSourceText,
|
|
7
|
+
enrichSymbolCoordinates,
|
|
8
|
+
} from "../../extractors/symbols-coordinator.js";
|
|
9
|
+
import { isCoarseGranularityReason } from "../symbol-granularity.js";
|
|
4
10
|
import { loadEntities } from "./discovery-entities.js";
|
|
5
11
|
import type { OperationContext } from "./runtime-types.js";
|
|
6
12
|
|
|
@@ -31,6 +37,152 @@ function coordinatesPresent(
|
|
|
31
37
|
].every((value) => Number.isInteger(value) && Number(value) >= 0);
|
|
32
38
|
}
|
|
33
39
|
|
|
40
|
+
export type CoordinateRepairEvidence = Readonly<{
|
|
41
|
+
symbolId: string;
|
|
42
|
+
sourceFile: string | null;
|
|
43
|
+
refreshable: boolean;
|
|
44
|
+
reason:
|
|
45
|
+
| "extractable"
|
|
46
|
+
| "coarse_anchor"
|
|
47
|
+
| "extractor_miss"
|
|
48
|
+
| "source_unavailable";
|
|
49
|
+
suggestion: string;
|
|
50
|
+
}>;
|
|
51
|
+
|
|
52
|
+
/** Preview the same extraction and explicit coarse fallback used by refresh. */
|
|
53
|
+
export async function inspectCoordinateRepairs(
|
|
54
|
+
symbols: readonly Readonly<Record<string, unknown>>[],
|
|
55
|
+
workspaceRoot: string,
|
|
56
|
+
): Promise<Map<string, CoordinateRepairEvidence>> {
|
|
57
|
+
const entries: ManifestSymbolEntry[] = symbols.map((symbol) => {
|
|
58
|
+
const sourceFile = sourceFileOf(symbol);
|
|
59
|
+
return {
|
|
60
|
+
id: String(symbol.id),
|
|
61
|
+
title: typeof symbol.title === "string" ? symbol.title : "",
|
|
62
|
+
...(sourceFile === null ? {} : { sourceFile }),
|
|
63
|
+
...(typeof symbol.granularity_reason === "string"
|
|
64
|
+
? { granularity_reason: symbol.granularity_reason }
|
|
65
|
+
: {}),
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
const enriched = await enrichSymbolCoordinates(entries, workspaceRoot);
|
|
69
|
+
return new Map(
|
|
70
|
+
entries.map((entry, index) => {
|
|
71
|
+
const sourceFile = entry.sourceFile ?? null;
|
|
72
|
+
let source: string | null = null;
|
|
73
|
+
if (sourceFile) {
|
|
74
|
+
try {
|
|
75
|
+
source = readFileSync(
|
|
76
|
+
path.resolve(workspaceRoot, sourceFile),
|
|
77
|
+
"utf8",
|
|
78
|
+
);
|
|
79
|
+
} catch {
|
|
80
|
+
/* A missing or unreadable source requires authored repair. */
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const extracted =
|
|
84
|
+
entry.title.length > 0 && coordinatesPresent(enriched[index] ?? {});
|
|
85
|
+
const coarse =
|
|
86
|
+
source !== null &&
|
|
87
|
+
sourceFile !== null &&
|
|
88
|
+
isCoarseGranularityReason(entry.granularity_reason) &&
|
|
89
|
+
coarseCoordinateSpan(sourceFile, entry.title, source) !== null;
|
|
90
|
+
const reason =
|
|
91
|
+
source === null
|
|
92
|
+
? "source_unavailable"
|
|
93
|
+
: extracted
|
|
94
|
+
? "extractable"
|
|
95
|
+
: coarse
|
|
96
|
+
? "coarse_anchor"
|
|
97
|
+
: "extractor_miss";
|
|
98
|
+
const refreshable = source !== null && (extracted || coarse);
|
|
99
|
+
return [
|
|
100
|
+
entry.id,
|
|
101
|
+
{
|
|
102
|
+
symbolId: entry.id,
|
|
103
|
+
sourceFile,
|
|
104
|
+
refreshable,
|
|
105
|
+
reason,
|
|
106
|
+
suggestion: refreshable
|
|
107
|
+
? "Refresh and persist current symbol coordinates."
|
|
108
|
+
: source === null
|
|
109
|
+
? "Repair sourceFile to point to readable implementation code before refreshing."
|
|
110
|
+
: "Query and validate the symbol, then author a resolvable title/sourceFile or an explicit granularity_reason: extractor-miss (or another intentional coarse anchor) through kb_upsert before refreshing.",
|
|
111
|
+
},
|
|
112
|
+
];
|
|
113
|
+
}),
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** Attach current extraction evidence before constructing requirement repairs. */
|
|
118
|
+
export async function addCoordinateRepairEvidence(
|
|
119
|
+
rows: readonly Readonly<Record<string, unknown>>[],
|
|
120
|
+
context: OperationContext,
|
|
121
|
+
): Promise<readonly Readonly<Record<string, unknown>>[]> {
|
|
122
|
+
const missingByRow = rows.map((row) => {
|
|
123
|
+
const stages = row.proofStages as
|
|
124
|
+
| { sourceCoordinates?: { missingSymbols?: unknown } }
|
|
125
|
+
| undefined;
|
|
126
|
+
const missing = stages?.sourceCoordinates?.missingSymbols;
|
|
127
|
+
return Array.isArray(missing)
|
|
128
|
+
? missing.filter((id): id is string => typeof id === "string")
|
|
129
|
+
: [];
|
|
130
|
+
});
|
|
131
|
+
const ids = new Set(missingByRow.flat());
|
|
132
|
+
if (ids.size === 0 || !context.prolog) return rows;
|
|
133
|
+
const symbols = (
|
|
134
|
+
await loadEntities(context.prolog, { type: "symbol" })
|
|
135
|
+
).filter((symbol) => ids.has(String(symbol.id)));
|
|
136
|
+
const evidence = await inspectCoordinateRepairs(
|
|
137
|
+
symbols,
|
|
138
|
+
context.workspaceRoot,
|
|
139
|
+
);
|
|
140
|
+
return rows.map((row, index) => {
|
|
141
|
+
const missing = missingByRow[index] ?? [];
|
|
142
|
+
if (missing.length === 0) return row;
|
|
143
|
+
const coordinateRepairs = missing.map(
|
|
144
|
+
(id) =>
|
|
145
|
+
evidence.get(id) ?? {
|
|
146
|
+
symbolId: id,
|
|
147
|
+
sourceFile: null,
|
|
148
|
+
refreshable: false,
|
|
149
|
+
reason: "source_unavailable",
|
|
150
|
+
suggestion: "Query and repair the missing symbol before refreshing.",
|
|
151
|
+
},
|
|
152
|
+
);
|
|
153
|
+
const stages = row.proofStages as Record<string, Record<string, unknown>>;
|
|
154
|
+
return {
|
|
155
|
+
...row,
|
|
156
|
+
...(Array.isArray(row.proofRepairs)
|
|
157
|
+
? {
|
|
158
|
+
proofRepairs: row.proofRepairs.map((repair) =>
|
|
159
|
+
repair?.gap === "missing_symbol_coordinates" &&
|
|
160
|
+
coordinateRepairs.some((item) => !item.refreshable)
|
|
161
|
+
? {
|
|
162
|
+
...repair,
|
|
163
|
+
action: [
|
|
164
|
+
...new Set(
|
|
165
|
+
coordinateRepairs
|
|
166
|
+
.filter((item) => !item.refreshable)
|
|
167
|
+
.map((item) => item.suggestion),
|
|
168
|
+
),
|
|
169
|
+
].join(" "),
|
|
170
|
+
}
|
|
171
|
+
: repair,
|
|
172
|
+
),
|
|
173
|
+
}
|
|
174
|
+
: {}),
|
|
175
|
+
proofStages: {
|
|
176
|
+
...stages,
|
|
177
|
+
sourceCoordinates: {
|
|
178
|
+
...stages.sourceCoordinates,
|
|
179
|
+
coordinateRepairs,
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
|
|
34
186
|
function currentCandidates(
|
|
35
187
|
entity: Readonly<Record<string, unknown>>,
|
|
36
188
|
symbols: readonly Readonly<Record<string, unknown>>[],
|
|
@@ -92,6 +244,7 @@ export async function buildSymbolRepairPlan(
|
|
|
92
244
|
absolute,
|
|
93
245
|
readFileSync(absolute, "utf8"),
|
|
94
246
|
);
|
|
247
|
+
if (analysis.providerId === null) continue;
|
|
95
248
|
extractedByPath.set(
|
|
96
249
|
source,
|
|
97
250
|
analysis.symbols.map((candidate) => ({
|
|
@@ -100,10 +253,14 @@ export async function buildSymbolRepairPlan(
|
|
|
100
253
|
})),
|
|
101
254
|
);
|
|
102
255
|
} catch {
|
|
103
|
-
|
|
256
|
+
// An unavailable extractor cannot establish that a declaration is absent.
|
|
104
257
|
}
|
|
105
258
|
}
|
|
106
259
|
|
|
260
|
+
const coordinateEvidence = await inspectCoordinateRepairs(
|
|
261
|
+
symbols.filter((symbol) => !coordinatesPresent(symbol)),
|
|
262
|
+
context.workspaceRoot,
|
|
263
|
+
);
|
|
107
264
|
const repairs = rows.flatMap((row) => {
|
|
108
265
|
if (row.type !== "symbol") return [];
|
|
109
266
|
const entity = symbols.find((candidate) => candidate.id === row.id);
|
|
@@ -133,7 +290,9 @@ export async function buildSymbolRepairPlan(
|
|
|
133
290
|
: extractionProvesAbsent && entity.symbol_origin === "extracted"
|
|
134
291
|
? "delete_obsolete_symbol"
|
|
135
292
|
: !coordinatesPresent(entity)
|
|
136
|
-
?
|
|
293
|
+
? coordinateEvidence.get(String(entity.id))?.refreshable === true
|
|
294
|
+
? "refresh_coordinates"
|
|
295
|
+
: "review"
|
|
137
296
|
: candidates.length > 0
|
|
138
297
|
? "remap"
|
|
139
298
|
: "review";
|
|
@@ -151,6 +310,7 @@ export async function buildSymbolRepairPlan(
|
|
|
151
310
|
? extractedByPath.has(source)
|
|
152
311
|
: false,
|
|
153
312
|
autoApply: false,
|
|
313
|
+
coordinateRepair: coordinateEvidence.get(String(entity.id)),
|
|
154
314
|
},
|
|
155
315
|
},
|
|
156
316
|
];
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
ProofBinding,
|
|
5
|
+
ProofContract,
|
|
6
|
+
ProofEnvironment,
|
|
7
|
+
} from "./proof-protocol.js";
|
|
8
|
+
|
|
9
|
+
/** Cosmetic integration-config keys that never participate in proof identity. */
|
|
10
|
+
const COSMETIC_KEYS = new Set([
|
|
11
|
+
"description",
|
|
12
|
+
"label",
|
|
13
|
+
"labels",
|
|
14
|
+
"comment",
|
|
15
|
+
"comments",
|
|
16
|
+
"displayName",
|
|
17
|
+
"display_name",
|
|
18
|
+
"docs",
|
|
19
|
+
"notes",
|
|
20
|
+
]);
|
|
21
|
+
|
|
22
|
+
export function stripCosmetic(value: unknown): unknown {
|
|
23
|
+
if (Array.isArray(value)) return value.map(stripCosmetic);
|
|
24
|
+
if (value !== null && typeof value === "object") {
|
|
25
|
+
const source = value as Record<string, unknown>;
|
|
26
|
+
const result: Record<string, unknown> = {};
|
|
27
|
+
for (const key of Object.keys(source).sort()) {
|
|
28
|
+
if (COSMETIC_KEYS.has(key)) continue;
|
|
29
|
+
result[key] = stripCosmetic(source[key]);
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function canonicalJson(value: unknown): string {
|
|
37
|
+
if (value === undefined) return "null";
|
|
38
|
+
if (Array.isArray(value)) {
|
|
39
|
+
return `[${value.map(canonicalJson).join(",")}]`;
|
|
40
|
+
}
|
|
41
|
+
if (value !== null && typeof value === "object") {
|
|
42
|
+
return `{${Object.entries(value)
|
|
43
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
44
|
+
.map(([key, child]) => `${JSON.stringify(key)}:${canonicalJson(child)}`)
|
|
45
|
+
.join(",")}}`;
|
|
46
|
+
}
|
|
47
|
+
return JSON.stringify(value);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function sha256(value: string): string {
|
|
51
|
+
return createHash("sha256").update(value).digest("hex");
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function jsonDigest(value: unknown): string {
|
|
55
|
+
return sha256(canonicalJson(value));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Kibi canonicalizes the typed environment and derives the environment hash itself. */
|
|
59
|
+
export function environmentHash(environment: ProofEnvironment): string {
|
|
60
|
+
return jsonDigest(stripCosmetic(environment));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function proofContractHash(contract: ProofContract): string {
|
|
64
|
+
return jsonDigest(contract);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Per-contract receipt binding: hashes what the receipt's validity actually
|
|
69
|
+
* depends on — the test's proof contract and the test's authored document
|
|
70
|
+
* with any receipt block removed — so a receipt stays valid while unrelated
|
|
71
|
+
* workspace state changes, and goes stale the moment the test's own contract
|
|
72
|
+
* or document does. Callers pass the receipt-stripped document content.
|
|
73
|
+
*/
|
|
74
|
+
// implements REQ-kibi-proof-evidence-protocol
|
|
75
|
+
export interface ReceiptCodeScopeEntry {
|
|
76
|
+
readonly symbolId: string;
|
|
77
|
+
readonly sourceHash: string;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function receiptBindingHash(
|
|
81
|
+
contract: ProofContract,
|
|
82
|
+
receiptStrippedTestDocument: string,
|
|
83
|
+
codeScope: readonly ReceiptCodeScopeEntry[] = [],
|
|
84
|
+
): string {
|
|
85
|
+
const scope = codeScope
|
|
86
|
+
.map((entry) => ({
|
|
87
|
+
symbolId: entry.symbolId,
|
|
88
|
+
sourceHash: entry.sourceHash,
|
|
89
|
+
}))
|
|
90
|
+
.sort((left, right) => left.symbolId.localeCompare(right.symbolId));
|
|
91
|
+
return jsonDigest({
|
|
92
|
+
binding: "kibi.receipt-binding.v1",
|
|
93
|
+
contract: proofContractHash(contract),
|
|
94
|
+
testDoc: createHash("sha256")
|
|
95
|
+
.update(receiptStrippedTestDocument)
|
|
96
|
+
.digest("hex"),
|
|
97
|
+
codeScope: scope,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export type ProofIntegrationExecution = Readonly<{
|
|
102
|
+
id: string;
|
|
103
|
+
producer: string;
|
|
104
|
+
producer_version?: string;
|
|
105
|
+
command: readonly string[];
|
|
106
|
+
artifact?: string;
|
|
107
|
+
targets?: readonly string[];
|
|
108
|
+
options?: Record<string, unknown>;
|
|
109
|
+
}>;
|
|
110
|
+
|
|
111
|
+
export type ProofFingerprintComponents = Readonly<{
|
|
112
|
+
contract: string;
|
|
113
|
+
integration: string;
|
|
114
|
+
command: string;
|
|
115
|
+
bindings: string;
|
|
116
|
+
producer: string;
|
|
117
|
+
}>;
|
|
118
|
+
|
|
119
|
+
export type ProofFingerprint = Readonly<{
|
|
120
|
+
fingerprint: string;
|
|
121
|
+
components: ProofFingerprintComponents;
|
|
122
|
+
}>;
|
|
123
|
+
|
|
124
|
+
function integrationExecutionProjection(
|
|
125
|
+
integration: ProofIntegrationExecution,
|
|
126
|
+
): Record<string, unknown> {
|
|
127
|
+
return {
|
|
128
|
+
id: integration.id,
|
|
129
|
+
producer: integration.producer,
|
|
130
|
+
...(integration.producer_version !== undefined
|
|
131
|
+
? { producer_version: integration.producer_version }
|
|
132
|
+
: {}),
|
|
133
|
+
command: [...integration.command],
|
|
134
|
+
...(integration.artifact !== undefined
|
|
135
|
+
? { artifact: integration.artifact }
|
|
136
|
+
: {}),
|
|
137
|
+
...(integration.targets !== undefined
|
|
138
|
+
? { targets: [...integration.targets] }
|
|
139
|
+
: {}),
|
|
140
|
+
...(integration.options !== undefined
|
|
141
|
+
? { options: stripCosmetic(integration.options) }
|
|
142
|
+
: {}),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function normalizedBindings(
|
|
147
|
+
bindings: readonly ProofBinding[],
|
|
148
|
+
): readonly ProofBinding[] {
|
|
149
|
+
return [...bindings]
|
|
150
|
+
.map((binding) => ({
|
|
151
|
+
symbol_id: binding.symbol_id,
|
|
152
|
+
target: binding.target,
|
|
153
|
+
...(binding.native_id !== undefined
|
|
154
|
+
? { native_id: binding.native_id }
|
|
155
|
+
: {}),
|
|
156
|
+
...(binding.aliases !== undefined
|
|
157
|
+
? { aliases: [...binding.aliases] }
|
|
158
|
+
: {}),
|
|
159
|
+
...(binding.source_file !== undefined
|
|
160
|
+
? { source_file: binding.source_file }
|
|
161
|
+
: {}),
|
|
162
|
+
...(binding.line !== undefined ? { line: binding.line } : {}),
|
|
163
|
+
}))
|
|
164
|
+
.sort((left, right) =>
|
|
165
|
+
`${left.target}\0${left.symbol_id}`.localeCompare(
|
|
166
|
+
`${right.target}\0${right.symbol_id}`,
|
|
167
|
+
),
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* The effective proof fingerprint binds a receipt to everything that changes
|
|
173
|
+
* what executes or how evidence maps to obligations: the semantic contract,
|
|
174
|
+
* the integration's execution semantics, the exact command, and the bindings.
|
|
175
|
+
* Cosmetic metadata is excluded, so editing a description never stales proof.
|
|
176
|
+
*/
|
|
177
|
+
export function effectiveProofFingerprint(input: {
|
|
178
|
+
contract: ProofContract;
|
|
179
|
+
integration: ProofIntegrationExecution;
|
|
180
|
+
bindings: readonly ProofBinding[];
|
|
181
|
+
}): ProofFingerprint {
|
|
182
|
+
const integrationProjection = integrationExecutionProjection(
|
|
183
|
+
input.integration,
|
|
184
|
+
);
|
|
185
|
+
const components: ProofFingerprintComponents = {
|
|
186
|
+
contract: proofContractHash(input.contract),
|
|
187
|
+
integration: jsonDigest(integrationProjection),
|
|
188
|
+
command: jsonDigest([...input.integration.command]),
|
|
189
|
+
bindings: jsonDigest(normalizedBindings(input.bindings)),
|
|
190
|
+
producer: jsonDigest({
|
|
191
|
+
producer: input.integration.producer,
|
|
192
|
+
...(input.integration.producer_version !== undefined
|
|
193
|
+
? { version: input.integration.producer_version }
|
|
194
|
+
: {}),
|
|
195
|
+
}),
|
|
196
|
+
};
|
|
197
|
+
return { fingerprint: jsonDigest(components), components };
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export const FINGERPRINT_COMPONENT_NAMES = [
|
|
201
|
+
"contract",
|
|
202
|
+
"integration",
|
|
203
|
+
"command",
|
|
204
|
+
"bindings",
|
|
205
|
+
"producer",
|
|
206
|
+
] as const;
|
|
207
|
+
|
|
208
|
+
/** Names the fingerprint components that drifted between two executions. */
|
|
209
|
+
export function fingerprintDrift(
|
|
210
|
+
previous: ProofFingerprintComponents,
|
|
211
|
+
current: ProofFingerprintComponents,
|
|
212
|
+
): string[] {
|
|
213
|
+
return FINGERPRINT_COMPONENT_NAMES.filter(
|
|
214
|
+
(name) => previous[name] !== current[name],
|
|
215
|
+
);
|
|
216
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// implements REQ-kibi-proof-evidence-protocol
|
|
2
|
+
export type ProofRunOutcome =
|
|
3
|
+
| "passed"
|
|
4
|
+
| "failed"
|
|
5
|
+
| "errored"
|
|
6
|
+
| "cancelled"
|
|
7
|
+
| "timed_out"
|
|
8
|
+
| "interrupted"
|
|
9
|
+
| "no_results";
|
|
10
|
+
|
|
11
|
+
export type ProofResultOutcome =
|
|
12
|
+
| "passed"
|
|
13
|
+
| "failed"
|
|
14
|
+
| "timed_out"
|
|
15
|
+
| "skipped"
|
|
16
|
+
| "interrupted"
|
|
17
|
+
| "errored";
|
|
18
|
+
|
|
19
|
+
export type ProofBindingKind = "native_case" | "aggregate_run";
|
|
20
|
+
export type AttemptsStatus = "complete" | "unavailable";
|
|
21
|
+
export type RunFailurePhase =
|
|
22
|
+
| "setup"
|
|
23
|
+
| "collection"
|
|
24
|
+
| "execution"
|
|
25
|
+
| "teardown"
|
|
26
|
+
| "infrastructure";
|
|
27
|
+
export type SuccessPolicy = "all_required_first_attempt";
|
|
28
|
+
|
|
29
|
+
export type ProofAttempt = Readonly<{
|
|
30
|
+
outcome: ProofResultOutcome;
|
|
31
|
+
duration_ms?: number;
|
|
32
|
+
}>;
|
|
33
|
+
|
|
34
|
+
export type ProofAttempts = Readonly<
|
|
35
|
+
| { status: "complete"; entries: readonly ProofAttempt[] }
|
|
36
|
+
| { status: "unavailable" }
|
|
37
|
+
>;
|
|
38
|
+
|
|
39
|
+
export type ProofResult = Readonly<{
|
|
40
|
+
symbol_id: string;
|
|
41
|
+
target: string;
|
|
42
|
+
outcome: ProofResultOutcome;
|
|
43
|
+
binding: ProofBindingKind;
|
|
44
|
+
native_id?: string;
|
|
45
|
+
attempts: ProofAttempts;
|
|
46
|
+
diagnostics?: readonly string[];
|
|
47
|
+
}>;
|
|
48
|
+
|
|
49
|
+
export type ProducerProvenance = Readonly<{
|
|
50
|
+
name: string;
|
|
51
|
+
version?: string;
|
|
52
|
+
}>;
|
|
53
|
+
|
|
54
|
+
export type ProofEnvironment = Readonly<Record<string, unknown>>;
|
|
55
|
+
|
|
56
|
+
export type ProofRun = Readonly<{
|
|
57
|
+
outcome: ProofRunOutcome;
|
|
58
|
+
exit_code: number;
|
|
59
|
+
started_at: string;
|
|
60
|
+
finished_at: string;
|
|
61
|
+
failure_phase?: RunFailurePhase;
|
|
62
|
+
}>;
|
|
63
|
+
|
|
64
|
+
export type ProofRunArtifact = Readonly<{
|
|
65
|
+
version: "kibi.proof-run.v1";
|
|
66
|
+
producer: ProducerProvenance;
|
|
67
|
+
executor?: ProducerProvenance;
|
|
68
|
+
command_argv: readonly string[];
|
|
69
|
+
code_snapshot: string;
|
|
70
|
+
environment: ProofEnvironment;
|
|
71
|
+
run: ProofRun;
|
|
72
|
+
proof_results: readonly ProofResult[];
|
|
73
|
+
integration?: string;
|
|
74
|
+
diagnostics?: readonly string[];
|
|
75
|
+
}>;
|
|
76
|
+
|
|
77
|
+
export type ProofObligation = Readonly<{
|
|
78
|
+
symbol_id: string;
|
|
79
|
+
target: string;
|
|
80
|
+
}>;
|
|
81
|
+
|
|
82
|
+
export type ProofContract = Readonly<{
|
|
83
|
+
version: "kibi.proof-contract.v1";
|
|
84
|
+
integration: string;
|
|
85
|
+
required_proofs: readonly ProofObligation[];
|
|
86
|
+
success_policy: SuccessPolicy;
|
|
87
|
+
}>;
|
|
88
|
+
|
|
89
|
+
export type ProofBinding = Readonly<{
|
|
90
|
+
symbol_id: string;
|
|
91
|
+
target: string;
|
|
92
|
+
native_id?: string;
|
|
93
|
+
aliases?: readonly string[];
|
|
94
|
+
source_file?: string;
|
|
95
|
+
line?: number;
|
|
96
|
+
}>;
|