kibi-cli 1.0.1 → 2.1.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 +127 -0
- package/dist/cli-register-reporting.d.ts.map +1 -1
- package/dist/cli-register-reporting.js +7 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +19 -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-generated.d.ts +7 -0
- package/dist/commands/check-generated.d.ts.map +1 -0
- package/dist/commands/check-generated.js +192 -0
- package/dist/commands/check.d.ts +14 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +193 -46
- 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 +170 -23
- package/dist/commands/engine.d.ts +12 -0
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +42 -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 +49 -10
- 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-explain.d.ts +10 -0
- package/dist/commands/proof-explain.d.ts.map +1 -0
- package/dist/commands/proof-explain.js +45 -0
- package/dist/commands/proof-impact.d.ts +7 -0
- package/dist/commands/proof-impact.d.ts.map +1 -0
- package/dist/commands/proof-impact.js +39 -0
- 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.map +1 -1
- package/dist/commands/report.js +18 -3
- 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 +2 -1
- package/dist/commands/sync/manifest.d.ts.map +1 -1
- package/dist/commands/sync/manifest.js +55 -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 +31 -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 +17 -77
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +331 -91
- package/dist/env/bootstrap.d.ts +84 -0
- package/dist/env/bootstrap.d.ts.map +1 -0
- package/dist/env/bootstrap.js +310 -0
- 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 +7 -3
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +60 -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-coordinator.d.ts +8 -0
- package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
- package/dist/extractors/symbols-coordinator.js +40 -0
- package/dist/extractors/symbols-ts.d.ts +9 -19
- package/dist/extractors/symbols-ts.d.ts.map +1 -1
- package/dist/extractors/symbols-ts.js +34 -429
- package/dist/intent-search.d.ts +1 -0
- package/dist/intent-search.d.ts.map +1 -1
- package/dist/intent-search.js +11 -8
- 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 +57 -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 +4 -2
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +82 -22
- 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 +11 -89
- 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 +51 -0
- package/dist/operations/planning/compile-intent.d.ts.map +1 -1
- package/dist/operations/planning/compile-intent.js +133 -17
- package/dist/operations/proof/baseline-diff.d.ts +41 -0
- package/dist/operations/proof/baseline-diff.d.ts.map +1 -0
- package/dist/operations/proof/baseline-diff.js +153 -0
- package/dist/operations/proof/explain.d.ts +75 -0
- package/dist/operations/proof/explain.d.ts.map +1 -0
- package/dist/operations/proof/explain.js +294 -0
- package/dist/operations/proof/impact.d.ts +45 -0
- package/dist/operations/proof/impact.d.ts.map +1 -0
- package/dist/operations/proof/impact.js +118 -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 +348 -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 +92 -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/analysis-receipt.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analysis-receipt.js +3 -9
- 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 +64 -93
- 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/plugin-orchestration.d.ts +63 -0
- package/dist/operations/semantic-advisor/plugin-orchestration.d.ts.map +1 -0
- package/dist/operations/semantic-advisor/plugin-orchestration.js +489 -0
- package/dist/operations/semantic-advisor/predicate-rules-core.d.ts +15 -2
- package/dist/operations/semantic-advisor/predicate-rules-core.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/predicate-rules-core.js +7 -140
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +11 -12
- package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/predicate-rules-launcher.js +6 -94
- package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts +16 -0
- package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/predicate-rules-policy.js +7 -150
- package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts +9 -0
- package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/predicate-rules-product-tail.js +7 -102
- package/dist/operations/semantic-advisor/predicate-rules-product.d.ts +13 -0
- package/dist/operations/semantic-advisor/predicate-rules-product.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/predicate-rules-product.js +7 -133
- 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 +1 -0
- package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
- package/dist/plugins/compose-ontology-packs.d.ts +51 -0
- package/dist/plugins/compose-ontology-packs.d.ts.map +1 -0
- package/dist/plugins/compose-ontology-packs.js +257 -0
- package/dist/plugins/compose-semantic-classifier.d.ts +42 -0
- package/dist/plugins/compose-semantic-classifier.d.ts.map +1 -0
- package/dist/plugins/compose-semantic-classifier.js +211 -0
- package/dist/plugins/external-allowlist.d.ts +10 -0
- package/dist/plugins/external-allowlist.d.ts.map +1 -0
- package/dist/plugins/external-allowlist.js +16 -0
- package/dist/plugins/index.d.ts +9 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +33 -0
- package/dist/plugins/load-plugin.d.ts +19 -0
- package/dist/plugins/load-plugin.d.ts.map +1 -0
- package/dist/plugins/load-plugin.js +59 -0
- package/dist/plugins/project-config.d.ts +28 -0
- package/dist/plugins/project-config.d.ts.map +1 -0
- package/dist/plugins/project-config.js +90 -0
- package/dist/plugins/registry.d.ts +93 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +338 -0
- package/dist/plugins/resolve-package.d.ts +47 -0
- package/dist/plugins/resolve-package.d.ts.map +1 -0
- package/dist/plugins/resolve-package.js +262 -0
- package/dist/plugins/source-analysis-service.d.ts +44 -0
- package/dist/plugins/source-analysis-service.d.ts.map +1 -0
- package/dist/plugins/source-analysis-service.js +232 -0
- 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 +1 -1
- 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/extractors/symbols-coordinator.d.ts +1 -1
- package/dist/public/extractors/symbols-coordinator.d.ts.map +1 -1
- package/dist/public/extractors/symbols-coordinator.js +1 -1
- package/dist/public/impact/analyzer.d.ts +1 -1
- package/dist/public/impact/analyzer.d.ts.map +1 -1
- package/dist/public/impact/analyzer.js +6 -4
- 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 +450 -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 +4 -8
- package/dist/public/operations/check-helpers.d.ts +1 -1
- package/dist/public/operations/check-helpers.d.ts.map +1 -1
- package/dist/public/operations/check-helpers.js +1 -1
- 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 +66 -34
- package/dist/public/operations/discovery-entities.d.ts +15 -0
- package/dist/public/operations/discovery-entities.d.ts.map +1 -1
- package/dist/public/operations/discovery-entities.js +38 -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 +39 -31
- 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/prolog-json.d.ts +1 -1
- package/dist/public/operations/prolog-json.d.ts.map +1 -1
- package/dist/public/operations/prolog-json.js +7 -7
- 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 +21 -1
- 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 +35 -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/discovery.d.ts +3 -0
- package/dist/public/operations/specs/discovery.d.ts.map +1 -1
- package/dist/public/operations/specs/discovery.js +3 -0
- 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 +20 -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/semantic.d.ts +1 -1
- package/dist/public/operations/specs/semantic.d.ts.map +1 -1
- package/dist/public/operations/specs/semantic.js +54 -4
- 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 +121 -4
- package/dist/public/operations/types.d.ts +6 -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 +44 -12
- package/dist/public/skills/kibi-usage/resources/operation-access.md +1 -1
- package/dist/public/skills/kibi-usage/resources/proof.md +150 -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 +53 -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 +1240 -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 +32 -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 +24 -2
- package/dist/traceability/symbol-extract.d.ts.map +1 -1
- package/dist/traceability/symbol-extract.js +64 -208
- 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 +102 -0
- package/dist/utils/rule-registry.generated.d.ts.map +1 -0
- package/dist/utils/rule-registry.generated.js +131 -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 +20 -20
- package/src/public/diagnostic-usage.ts +6 -6
- package/src/public/distribution-parity.ts +17 -10
- package/src/public/extractors/symbols-coordinator.ts +1 -0
- package/src/public/impact/analyzer.ts +15 -12
- 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 +4 -8
- package/src/public/operations/check-helpers.ts +2 -2
- package/src/public/operations/contracts.ts +78 -34
- package/src/public/operations/discovery-entities.ts +53 -0
- package/src/public/operations/discovery-executors.ts +64 -48
- 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/prolog-json.ts +13 -5
- 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 +26 -2
- package/src/public/operations/specs/check-rules.generated.ts +38 -0
- package/src/public/operations/specs/check.ts +12 -21
- package/src/public/operations/specs/discovery.ts +3 -0
- 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/specs/semantic.ts +79 -17
- package/src/public/operations/symbol-repair-plan.ts +166 -7
- package/src/public/operations/types.ts +6 -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 +44 -12
- package/src/public/skills/kibi-usage/resources/operation-access.md +1 -1
- package/src/public/skills/kibi-usage/resources/proof.md +150 -0
- package/src/public/skills/kibi-usage/resources/workflows.md +6 -6
- package/src/public/symbol-granularity.generated.ts +74 -0
- package/src/public/symbol-granularity.ts +34 -59
- 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
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type ProofFingerprintComponents,
|
|
3
|
+
canonicalJson,
|
|
4
|
+
proofContractHash,
|
|
5
|
+
} from "./proof-fingerprint.js";
|
|
6
|
+
import {
|
|
7
|
+
PROOF_RECEIPT_VERSION,
|
|
8
|
+
PROOF_RESULT_OUTCOMES,
|
|
9
|
+
PROOF_RUN_OUTCOMES,
|
|
10
|
+
type ProofContract,
|
|
11
|
+
} from "./proof-protocol.js";
|
|
12
|
+
|
|
13
|
+
export const PROOF_RECEIPT_MAX_AGE_SECONDS = 7 * 24 * 60 * 60;
|
|
14
|
+
|
|
15
|
+
export const PROOF_RECEIPT_OUTCOMES = [
|
|
16
|
+
"passed",
|
|
17
|
+
"failed",
|
|
18
|
+
"errored",
|
|
19
|
+
"cancelled",
|
|
20
|
+
"skipped",
|
|
21
|
+
"timed_out",
|
|
22
|
+
"interrupted",
|
|
23
|
+
] as const;
|
|
24
|
+
|
|
25
|
+
export const PROOF_RECEIPT_SCHEMA = {
|
|
26
|
+
type: "object",
|
|
27
|
+
description:
|
|
28
|
+
"Kibi-derived kibi.proof-receipt.v1. Receipts are never caller-authored; kb_ingest_proof derives them from kibi.proof-run.v1 artifacts.",
|
|
29
|
+
required: [
|
|
30
|
+
"version",
|
|
31
|
+
"receipt_id",
|
|
32
|
+
"test_id",
|
|
33
|
+
"scope",
|
|
34
|
+
"outcome",
|
|
35
|
+
"code_snapshot",
|
|
36
|
+
"environment_hash",
|
|
37
|
+
"started_at",
|
|
38
|
+
"finished_at",
|
|
39
|
+
"artifact_digest",
|
|
40
|
+
"contract_hash",
|
|
41
|
+
"fingerprint",
|
|
42
|
+
"fingerprint_components",
|
|
43
|
+
"integration_id",
|
|
44
|
+
"producer",
|
|
45
|
+
"command_argv",
|
|
46
|
+
"run_outcome",
|
|
47
|
+
"proof_results",
|
|
48
|
+
],
|
|
49
|
+
properties: {
|
|
50
|
+
version: { type: "string", const: PROOF_RECEIPT_VERSION },
|
|
51
|
+
receipt_id: {
|
|
52
|
+
type: "string",
|
|
53
|
+
pattern: "^PR-[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$",
|
|
54
|
+
},
|
|
55
|
+
test_id: { type: "string", minLength: 1 },
|
|
56
|
+
scope: { type: "string", enum: ["unit", "integration", "end_to_end"] },
|
|
57
|
+
outcome: { type: "string", enum: [...PROOF_RECEIPT_OUTCOMES] },
|
|
58
|
+
code_snapshot: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
59
|
+
environment_hash: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
60
|
+
started_at: { type: "string", minLength: 1 },
|
|
61
|
+
finished_at: { type: "string", minLength: 1 },
|
|
62
|
+
artifact_digest: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
63
|
+
contract_hash: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
64
|
+
binding_hash: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
65
|
+
fingerprint: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
66
|
+
fingerprint_components: {
|
|
67
|
+
type: "object",
|
|
68
|
+
required: ["contract", "integration", "command", "bindings", "producer"],
|
|
69
|
+
additionalProperties: false,
|
|
70
|
+
properties: {
|
|
71
|
+
contract: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
72
|
+
integration: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
73
|
+
command: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
74
|
+
bindings: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
75
|
+
producer: { type: "string", pattern: "^[a-f0-9]{64}$" },
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
integration_id: { type: "string", minLength: 1 },
|
|
79
|
+
producer: {
|
|
80
|
+
type: "object",
|
|
81
|
+
required: ["name"],
|
|
82
|
+
properties: {
|
|
83
|
+
name: { type: "string", minLength: 1 },
|
|
84
|
+
version: { type: "string", minLength: 1 },
|
|
85
|
+
},
|
|
86
|
+
additionalProperties: false,
|
|
87
|
+
},
|
|
88
|
+
command_argv: {
|
|
89
|
+
type: "array",
|
|
90
|
+
minItems: 1,
|
|
91
|
+
items: { type: "string", minLength: 1 },
|
|
92
|
+
},
|
|
93
|
+
run_outcome: { type: "string", enum: [...PROOF_RUN_OUTCOMES] },
|
|
94
|
+
proof_results: {
|
|
95
|
+
type: "array",
|
|
96
|
+
minItems: 0,
|
|
97
|
+
maxItems: 1000,
|
|
98
|
+
items: {
|
|
99
|
+
type: "object",
|
|
100
|
+
required: ["symbol_id", "target", "outcome", "binding", "attempts"],
|
|
101
|
+
properties: {
|
|
102
|
+
symbol_id: { type: "string", minLength: 1 },
|
|
103
|
+
target: { type: "string", minLength: 1 },
|
|
104
|
+
outcome: { type: "string", enum: [...PROOF_RESULT_OUTCOMES] },
|
|
105
|
+
binding: { type: "string", enum: ["native_case", "aggregate_run"] },
|
|
106
|
+
native_id: { type: "string", minLength: 1 },
|
|
107
|
+
attempts: {
|
|
108
|
+
oneOf: [
|
|
109
|
+
{
|
|
110
|
+
type: "object",
|
|
111
|
+
required: ["status", "entries"],
|
|
112
|
+
properties: {
|
|
113
|
+
status: { type: "string", const: "complete" },
|
|
114
|
+
entries: {
|
|
115
|
+
type: "array",
|
|
116
|
+
minItems: 1,
|
|
117
|
+
items: {
|
|
118
|
+
type: "object",
|
|
119
|
+
required: ["outcome"],
|
|
120
|
+
properties: {
|
|
121
|
+
outcome: {
|
|
122
|
+
type: "string",
|
|
123
|
+
enum: [...PROOF_RESULT_OUTCOMES],
|
|
124
|
+
},
|
|
125
|
+
duration_ms: { type: "number", minimum: 0 },
|
|
126
|
+
},
|
|
127
|
+
additionalProperties: false,
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
additionalProperties: false,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: "object",
|
|
135
|
+
required: ["status"],
|
|
136
|
+
properties: {
|
|
137
|
+
status: { type: "string", const: "unavailable" },
|
|
138
|
+
},
|
|
139
|
+
additionalProperties: false,
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
additionalProperties: false,
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
gaps: {
|
|
148
|
+
type: "array",
|
|
149
|
+
items: {
|
|
150
|
+
type: "object",
|
|
151
|
+
required: ["symbol_id", "target", "reason"],
|
|
152
|
+
properties: {
|
|
153
|
+
symbol_id: { type: "string", minLength: 1 },
|
|
154
|
+
target: { type: "string", minLength: 1 },
|
|
155
|
+
reason: { type: "string", minLength: 1 },
|
|
156
|
+
},
|
|
157
|
+
additionalProperties: false,
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
additionalProperties: false,
|
|
162
|
+
} as const;
|
|
163
|
+
|
|
164
|
+
export type ProofReceipt = Readonly<{
|
|
165
|
+
version: typeof PROOF_RECEIPT_VERSION;
|
|
166
|
+
receipt_id: string;
|
|
167
|
+
test_id: string;
|
|
168
|
+
scope: "unit" | "integration" | "end_to_end";
|
|
169
|
+
outcome: (typeof PROOF_RECEIPT_OUTCOMES)[number];
|
|
170
|
+
code_snapshot: string;
|
|
171
|
+
environment_hash: string;
|
|
172
|
+
started_at: string;
|
|
173
|
+
finished_at: string;
|
|
174
|
+
artifact_digest: string;
|
|
175
|
+
contract_hash: string;
|
|
176
|
+
fingerprint: string;
|
|
177
|
+
fingerprint_components: ProofFingerprintComponents;
|
|
178
|
+
integration_id: string;
|
|
179
|
+
producer: { readonly name: string; readonly version?: string };
|
|
180
|
+
command_argv: readonly string[];
|
|
181
|
+
run_outcome: (typeof PROOF_RUN_OUTCOMES)[number];
|
|
182
|
+
proof_results: readonly {
|
|
183
|
+
readonly symbol_id: string;
|
|
184
|
+
readonly target: string;
|
|
185
|
+
readonly outcome: (typeof PROOF_RESULT_OUTCOMES)[number];
|
|
186
|
+
readonly binding: "native_case" | "aggregate_run";
|
|
187
|
+
readonly native_id?: string;
|
|
188
|
+
readonly attempts:
|
|
189
|
+
| {
|
|
190
|
+
readonly status: "complete";
|
|
191
|
+
readonly entries: readonly {
|
|
192
|
+
readonly outcome: string;
|
|
193
|
+
readonly duration_ms?: number;
|
|
194
|
+
}[];
|
|
195
|
+
}
|
|
196
|
+
| { readonly status: "unavailable" };
|
|
197
|
+
}[];
|
|
198
|
+
gaps?: readonly {
|
|
199
|
+
readonly symbol_id: string;
|
|
200
|
+
readonly target: string;
|
|
201
|
+
readonly reason: string;
|
|
202
|
+
}[];
|
|
203
|
+
}>;
|
|
204
|
+
|
|
205
|
+
export function finishedAtPrecedesStartedAt(
|
|
206
|
+
startedAt: number | null,
|
|
207
|
+
finishedAt: number | null,
|
|
208
|
+
): boolean {
|
|
209
|
+
return startedAt !== null && finishedAt !== null && finishedAt < startedAt;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
function timestamp(value: unknown): number | null {
|
|
213
|
+
if (typeof value !== "string") return null;
|
|
214
|
+
if (
|
|
215
|
+
!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(
|
|
216
|
+
value,
|
|
217
|
+
)
|
|
218
|
+
) {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
const parsed = Date.parse(value);
|
|
222
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
function nonEmptyString(value: unknown): boolean {
|
|
226
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function hex64(value: unknown): boolean {
|
|
230
|
+
return typeof value === "string" && /^[a-f0-9]{64}$/.test(value);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
234
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function validAttempts(value: unknown): boolean {
|
|
238
|
+
const row = isRecord(value) ? value : null;
|
|
239
|
+
if (!row) return false;
|
|
240
|
+
if (row.status === "unavailable") return row.entries === undefined;
|
|
241
|
+
if (row.status !== "complete") return false;
|
|
242
|
+
if (!Array.isArray(row.entries) || row.entries.length === 0) return false;
|
|
243
|
+
return row.entries.every((entry) => {
|
|
244
|
+
const attempt = isRecord(entry) ? entry : null;
|
|
245
|
+
return (
|
|
246
|
+
attempt !== null &&
|
|
247
|
+
nonEmptyString(attempt.outcome) &&
|
|
248
|
+
(PROOF_RESULT_OUTCOMES as readonly string[]).includes(
|
|
249
|
+
String(attempt.outcome),
|
|
250
|
+
) &&
|
|
251
|
+
(attempt.duration_ms === undefined ||
|
|
252
|
+
(Number.isInteger(attempt.duration_ms) &&
|
|
253
|
+
Number(attempt.duration_ms) >= 0))
|
|
254
|
+
);
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
function validReceiptProofResult(value: unknown): boolean {
|
|
259
|
+
const row = isRecord(value) ? value : null;
|
|
260
|
+
if (!row) return false;
|
|
261
|
+
return (
|
|
262
|
+
nonEmptyString(row.symbol_id) &&
|
|
263
|
+
nonEmptyString(row.target) &&
|
|
264
|
+
(PROOF_RESULT_OUTCOMES as readonly string[]).includes(
|
|
265
|
+
String(row.outcome),
|
|
266
|
+
) &&
|
|
267
|
+
(["native_case", "aggregate_run"] as readonly string[]).includes(
|
|
268
|
+
String(row.binding),
|
|
269
|
+
) &&
|
|
270
|
+
(row.native_id === undefined || nonEmptyString(row.native_id)) &&
|
|
271
|
+
validAttempts(row.attempts)
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
function validFingerprintComponents(value: unknown): boolean {
|
|
276
|
+
const row = isRecord(value) ? value : null;
|
|
277
|
+
if (!row) return false;
|
|
278
|
+
return (
|
|
279
|
+
hex64(row.contract) &&
|
|
280
|
+
hex64(row.integration) &&
|
|
281
|
+
hex64(row.command) &&
|
|
282
|
+
hex64(row.bindings) &&
|
|
283
|
+
hex64(row.producer)
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/** Structural validation of one kibi.proof-receipt.v1 entry. */
|
|
288
|
+
export function validProofReceiptShape(
|
|
289
|
+
testId: string,
|
|
290
|
+
receipt: unknown,
|
|
291
|
+
): boolean {
|
|
292
|
+
const row = isRecord(receipt) ? receipt : null;
|
|
293
|
+
if (!row) return false;
|
|
294
|
+
if (row.version !== PROOF_RECEIPT_VERSION) return false;
|
|
295
|
+
if (
|
|
296
|
+
typeof row.receipt_id !== "string" ||
|
|
297
|
+
!/^PR-[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$/.test(row.receipt_id)
|
|
298
|
+
)
|
|
299
|
+
return false;
|
|
300
|
+
if (row.test_id !== testId) return false;
|
|
301
|
+
if (
|
|
302
|
+
!(["unit", "integration", "end_to_end"] as readonly string[]).includes(
|
|
303
|
+
String(row.scope),
|
|
304
|
+
)
|
|
305
|
+
)
|
|
306
|
+
return false;
|
|
307
|
+
if (
|
|
308
|
+
!(PROOF_RECEIPT_OUTCOMES as readonly string[]).includes(String(row.outcome))
|
|
309
|
+
)
|
|
310
|
+
return false;
|
|
311
|
+
if (!hex64(row.code_snapshot) || !hex64(row.environment_hash)) return false;
|
|
312
|
+
if (!hex64(row.artifact_digest)) return false;
|
|
313
|
+
if (!hex64(row.contract_hash) || !hex64(row.fingerprint)) return false;
|
|
314
|
+
if (
|
|
315
|
+
row.binding_hash !== undefined &&
|
|
316
|
+
(typeof row.binding_hash !== "string" || !hex64(row.binding_hash))
|
|
317
|
+
) {
|
|
318
|
+
return false;
|
|
319
|
+
}
|
|
320
|
+
if (!validFingerprintComponents(row.fingerprint_components)) return false;
|
|
321
|
+
if (!nonEmptyString(row.integration_id)) return false;
|
|
322
|
+
const producer = isRecord(row.producer) ? row.producer : null;
|
|
323
|
+
if (!producer || !nonEmptyString(producer.name)) return false;
|
|
324
|
+
if (producer.version !== undefined && !nonEmptyString(producer.version))
|
|
325
|
+
return false;
|
|
326
|
+
if (
|
|
327
|
+
!Array.isArray(row.command_argv) ||
|
|
328
|
+
row.command_argv.length === 0 ||
|
|
329
|
+
!row.command_argv.every((argument) => nonEmptyString(argument))
|
|
330
|
+
)
|
|
331
|
+
return false;
|
|
332
|
+
if (
|
|
333
|
+
!(PROOF_RUN_OUTCOMES as readonly string[]).includes(String(row.run_outcome))
|
|
334
|
+
)
|
|
335
|
+
return false;
|
|
336
|
+
if (
|
|
337
|
+
!Array.isArray(row.proof_results) ||
|
|
338
|
+
!row.proof_results.every(validReceiptProofResult)
|
|
339
|
+
)
|
|
340
|
+
return false;
|
|
341
|
+
if (row.gaps !== undefined) {
|
|
342
|
+
if (!Array.isArray(row.gaps)) return false;
|
|
343
|
+
if (
|
|
344
|
+
!row.gaps.every(
|
|
345
|
+
(gap) =>
|
|
346
|
+
isRecord(gap) &&
|
|
347
|
+
nonEmptyString(gap.symbol_id) &&
|
|
348
|
+
nonEmptyString(gap.target) &&
|
|
349
|
+
nonEmptyString(gap.reason),
|
|
350
|
+
)
|
|
351
|
+
)
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
const startedAt = timestamp(row.started_at);
|
|
355
|
+
const finishedAt = timestamp(row.finished_at);
|
|
356
|
+
if (startedAt === null || finishedAt === null) return false;
|
|
357
|
+
return !finishedAtPrecedesStartedAt(startedAt, finishedAt);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Full-history validation for proof_receipts: unique ids, per-test binding,
|
|
362
|
+
* supported scope, ordered timestamps, and structurally valid v1 entries.
|
|
363
|
+
*/
|
|
364
|
+
export function proofReceiptHistoryErrors(
|
|
365
|
+
testId: string,
|
|
366
|
+
verificationScope: unknown,
|
|
367
|
+
receipts: readonly Readonly<Record<string, unknown>>[],
|
|
368
|
+
): readonly string[] {
|
|
369
|
+
const errors: string[] = [];
|
|
370
|
+
if (receipts.length > 0 && typeof verificationScope !== "string") {
|
|
371
|
+
errors.push(
|
|
372
|
+
"verification_scope is required when proof_receipts are present",
|
|
373
|
+
);
|
|
374
|
+
}
|
|
375
|
+
const receiptIds = new Set<string>();
|
|
376
|
+
for (const [index, receipt] of receipts.entries()) {
|
|
377
|
+
const prefix = `proof_receipts[${index}]`;
|
|
378
|
+
const receiptId = receipt.receipt_id;
|
|
379
|
+
if (typeof receiptId === "string") {
|
|
380
|
+
if (receiptIds.has(receiptId)) {
|
|
381
|
+
errors.push(`${prefix}.receipt_id duplicates '${receiptId}'`);
|
|
382
|
+
}
|
|
383
|
+
receiptIds.add(receiptId);
|
|
384
|
+
}
|
|
385
|
+
if (receipt.test_id !== testId) {
|
|
386
|
+
errors.push(`${prefix}.test_id must equal '${testId}'`);
|
|
387
|
+
}
|
|
388
|
+
if (!validProofReceiptShape(testId, receipt)) {
|
|
389
|
+
errors.push(
|
|
390
|
+
`${prefix} must be a structurally valid kibi.proof-receipt.v1 bound to '${testId}'`,
|
|
391
|
+
);
|
|
392
|
+
continue;
|
|
393
|
+
}
|
|
394
|
+
const finishedAt = timestamp(receipt.finished_at);
|
|
395
|
+
if (
|
|
396
|
+
finishedAt !== null &&
|
|
397
|
+
index > 0 &&
|
|
398
|
+
timestamp(receipts[index - 1]?.finished_at) !== null &&
|
|
399
|
+
finishedAt <= (timestamp(receipts[index - 1]?.finished_at) as number)
|
|
400
|
+
) {
|
|
401
|
+
errors.push(
|
|
402
|
+
`${prefix}.finished_at must be strictly later than the previous receipt`,
|
|
403
|
+
);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
return errors;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/** The current receipt must match the live scope, contract hash, and fingerprint. */
|
|
410
|
+
export function proofReceiptCurrentBindingErrors(
|
|
411
|
+
testId: string,
|
|
412
|
+
verificationScope: unknown,
|
|
413
|
+
receipt: Readonly<Record<string, unknown>>,
|
|
414
|
+
contract?: ProofContract,
|
|
415
|
+
fingerprint?: string,
|
|
416
|
+
): readonly string[] {
|
|
417
|
+
const errors: string[] = [];
|
|
418
|
+
if (receipt.test_id !== testId) {
|
|
419
|
+
errors.push(`proof receipt test_id must equal '${testId}'`);
|
|
420
|
+
}
|
|
421
|
+
if (typeof verificationScope !== "string") {
|
|
422
|
+
errors.push("verification_scope is required for current receipt evidence");
|
|
423
|
+
} else if (receipt.scope !== verificationScope) {
|
|
424
|
+
errors.push(
|
|
425
|
+
`proof receipt scope must equal the current verification_scope '${verificationScope}'`,
|
|
426
|
+
);
|
|
427
|
+
}
|
|
428
|
+
if (contract !== undefined) {
|
|
429
|
+
if (typeof receipt.contract_hash === "string") {
|
|
430
|
+
const expectedHash = proofContractHash(contract);
|
|
431
|
+
if (receipt.contract_hash !== expectedHash) {
|
|
432
|
+
errors.push(
|
|
433
|
+
"proof receipt contract_hash does not match the current proof_contract",
|
|
434
|
+
);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
if (
|
|
438
|
+
fingerprint !== undefined &&
|
|
439
|
+
typeof receipt.fingerprint === "string" &&
|
|
440
|
+
receipt.fingerprint !== fingerprint
|
|
441
|
+
) {
|
|
442
|
+
errors.push(
|
|
443
|
+
"proof receipt fingerprint does not match the current effective execution fingerprint",
|
|
444
|
+
);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
return errors;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* Hard schema cap on stored receipts per test. Ingest appends past this cap by
|
|
452
|
+
* rotating: drop exactly the oldest receipts so the newest evidence stays
|
|
453
|
+
* bound to the test without ever exceeding the cap.
|
|
454
|
+
*/
|
|
455
|
+
export const MAX_PROOF_RECEIPTS = 50;
|
|
456
|
+
|
|
457
|
+
function isCapRotation(
|
|
458
|
+
previous: readonly Readonly<Record<string, unknown>>[],
|
|
459
|
+
next: readonly Readonly<Record<string, unknown>>[],
|
|
460
|
+
): boolean {
|
|
461
|
+
if (next.length !== MAX_PROOF_RECEIPTS) return false;
|
|
462
|
+
if (previous.length < MAX_PROOF_RECEIPTS) return false;
|
|
463
|
+
const preserved = MAX_PROOF_RECEIPTS - 1;
|
|
464
|
+
for (let index = 0; index < preserved; index++) {
|
|
465
|
+
if (
|
|
466
|
+
canonicalJson(previous[previous.length - preserved + index]) !==
|
|
467
|
+
canonicalJson(next[index])
|
|
468
|
+
) {
|
|
469
|
+
return false;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
return true;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
export function appendOnlyProofReceiptHistoryErrors(
|
|
476
|
+
previous: readonly Readonly<Record<string, unknown>>[],
|
|
477
|
+
next: readonly Readonly<Record<string, unknown>>[] | undefined,
|
|
478
|
+
): readonly string[] {
|
|
479
|
+
if (previous.length === 0) return [];
|
|
480
|
+
if (next === undefined) {
|
|
481
|
+
return [
|
|
482
|
+
"proof_receipts is append-only and cannot be removed from an existing test",
|
|
483
|
+
];
|
|
484
|
+
}
|
|
485
|
+
if (isCapRotation(previous, next)) return [];
|
|
486
|
+
if (next.length < previous.length) {
|
|
487
|
+
return [
|
|
488
|
+
`proof_receipts is append-only: expected at least ${previous.length} historical receipt(s), received ${next.length}`,
|
|
489
|
+
];
|
|
490
|
+
}
|
|
491
|
+
for (const [index, receipt] of previous.entries()) {
|
|
492
|
+
if (canonicalJson(next[index]) !== canonicalJson(receipt)) {
|
|
493
|
+
return [
|
|
494
|
+
`proof_receipts is append-only: historical receipt at index ${index} was changed, removed, or reordered`,
|
|
495
|
+
];
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
return [];
|
|
499
|
+
}
|
|
@@ -16,12 +16,13 @@
|
|
|
16
16
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
import {
|
|
20
|
+
PROOF_BINDINGS_SCHEMA,
|
|
21
|
+
PROOF_CONTRACT_SCHEMA,
|
|
22
|
+
} from "../proof-protocol.js";
|
|
23
|
+
import { PROOF_RECEIPT_SCHEMA } from "../proof-receipt.js";
|
|
19
24
|
// Typed fact field enums per proposal
|
|
20
25
|
import { SYMBOL_ROLES, type SymbolRole } from "../symbol-granularity.js";
|
|
21
|
-
import {
|
|
22
|
-
VERIFICATION_CONTRACT_SCHEMA,
|
|
23
|
-
VERIFICATION_RECEIPT_SCHEMA,
|
|
24
|
-
} from "../verification-receipt.js";
|
|
25
26
|
|
|
26
27
|
type FactKind =
|
|
27
28
|
| "subject"
|
|
@@ -359,6 +360,17 @@ const entitySchema: Record<string, unknown> = {
|
|
|
359
360
|
severity: { type: "string" },
|
|
360
361
|
links: { type: "array", items: { type: "string" } },
|
|
361
362
|
text_ref: { type: "string" },
|
|
363
|
+
proof_exempt: {
|
|
364
|
+
type: "boolean",
|
|
365
|
+
description:
|
|
366
|
+
"Requirement-only. Marks a current requirement as intentionally outside E2E-proof scope; requires proof_exempt_reason.",
|
|
367
|
+
},
|
|
368
|
+
proof_exempt_reason: {
|
|
369
|
+
type: "string",
|
|
370
|
+
minLength: 1,
|
|
371
|
+
description:
|
|
372
|
+
"Requirement-only. Required when proof_exempt is true; surfaces as the applicability reason in coverage rows.",
|
|
373
|
+
},
|
|
362
374
|
semantic_text: {
|
|
363
375
|
type: "string",
|
|
364
376
|
description:
|
|
@@ -457,10 +469,11 @@ const entitySchema: Record<string, unknown> = {
|
|
|
457
469
|
type: "string",
|
|
458
470
|
enum: ["internal", "consumer"] satisfies VerificationPerspective[],
|
|
459
471
|
},
|
|
460
|
-
|
|
461
|
-
|
|
472
|
+
proof_contract: PROOF_CONTRACT_SCHEMA,
|
|
473
|
+
proof_bindings: PROOF_BINDINGS_SCHEMA,
|
|
474
|
+
proof_receipts: {
|
|
462
475
|
type: "array",
|
|
463
|
-
items:
|
|
476
|
+
items: PROOF_RECEIPT_SCHEMA,
|
|
464
477
|
},
|
|
465
478
|
type: {
|
|
466
479
|
type: "string",
|
|
@@ -601,14 +614,15 @@ const entitySchema: Record<string, unknown> = {
|
|
|
601
614
|
anyOf: [
|
|
602
615
|
{ required: ["verification_scope"] },
|
|
603
616
|
{ required: ["verification_perspective"] },
|
|
604
|
-
{ required: ["
|
|
605
|
-
{ required: ["
|
|
617
|
+
{ required: ["proof_contract"] },
|
|
618
|
+
{ required: ["proof_bindings"] },
|
|
619
|
+
{ required: ["proof_receipts"] },
|
|
606
620
|
],
|
|
607
621
|
},
|
|
608
622
|
},
|
|
609
623
|
},
|
|
610
624
|
{
|
|
611
|
-
if: { required: ["
|
|
625
|
+
if: { required: ["proof_receipts"] },
|
|
612
626
|
// biome-ignore lint/suspicious/noThenProperty: JSON Schema conditional keyword.
|
|
613
627
|
then: { required: ["verification_scope"] },
|
|
614
628
|
},
|
|
@@ -625,6 +639,8 @@ const entitySchema: Record<string, unknown> = {
|
|
|
625
639
|
{ required: ["semantic_inventory_version"] },
|
|
626
640
|
{ required: ["semantic_source_field"] },
|
|
627
641
|
{ required: ["semantic_source_hash"] },
|
|
642
|
+
{ required: ["proof_exempt"] },
|
|
643
|
+
{ required: ["proof_exempt_reason"] },
|
|
628
644
|
],
|
|
629
645
|
},
|
|
630
646
|
},
|
|
@@ -39,7 +39,7 @@ echo '{}' | npx --no-install kibi status --input -
|
|
|
39
39
|
matching `branch.json`; a `legacy_compat` attachment is read-only until an
|
|
40
40
|
explicit old/new migration is approved.
|
|
41
41
|
- Inspect bounded `staleReasons` (indexed source missing/newer or documentation
|
|
42
|
-
source newer) and `
|
|
42
|
+
source newer) and `proofSnapshotChanges`. Kibi deliberately reports
|
|
43
43
|
editor/config paths such as editor dot-directories; do not silently ignore them.
|
|
44
44
|
- Use `kb_query`, or `query --input`, with `sourceFile` and text references for source-linked discovery.
|
|
45
45
|
- Re-run `kb_search`, or `search --input`, after sync gaps or stale context are detected.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: kibi-usage
|
|
3
3
|
name: Kibi Usage
|
|
4
4
|
description: Use Kibi's source-first, exact-Git, migration-aware, proof-aware operations safely across MCP or the trusted local CLI, including partial completion repair.
|
|
5
|
-
version: 2.1.
|
|
5
|
+
version: 2.1.3
|
|
6
6
|
kibiCompatibility: ">=1.0.0"
|
|
7
7
|
tags:
|
|
8
8
|
- kibi
|
|
@@ -19,6 +19,7 @@ resources:
|
|
|
19
19
|
- resources/relationship-directions.md
|
|
20
20
|
- resources/fact-lanes.md
|
|
21
21
|
- resources/workflows.md
|
|
22
|
+
- resources/proof.md
|
|
22
23
|
- resources/ui-requirements.md
|
|
23
24
|
- resources/logic-ir.md
|
|
24
25
|
- resources/kb-improvement.md
|
|
@@ -67,13 +68,30 @@ mutability, and Prolog requirements of each operation.
|
|
|
67
68
|
Kibi never Git-stages or commits those files. Do not read or edit `.kb`
|
|
68
69
|
directly.
|
|
69
70
|
5. Finish with targeted and final `kb_check`, then read status/coverage and
|
|
70
|
-
|
|
71
|
+
report the five independent closeout fields (not one inferred success flag).
|
|
71
72
|
|
|
72
73
|
Run `kb_check` with specific rules during iteration and the unfiltered final
|
|
73
74
|
check. Never fire `kb_upsert` calls in parallel; create or confirm endpoint
|
|
74
75
|
entities before linking them. The canonical MCP names are `kb_search`,
|
|
75
76
|
`kb_query`, `kb_upsert`, and `kb_check`.
|
|
76
77
|
|
|
78
|
+
For a task that explicitly supplies a malformed concrete mutation payload, locate and read that public request artifact before choosing an entity, preserving its exact entity ID, type, requested changes, and every intended relationship and endpoint. Do not substitute a seeded or convenient entity for the requested target. Start with kb_search, then exact-filter those targets with kb_query, and run kb_validate_upsert on that same payload; validation is not completion. Correct only diagnosed pre-commit errors and revalidate the corrected payload. Once authorized, apply the identical corrected and authorized payload with kb_upsert. If it returns committed_with_repairs, treat the mutation as committed, follow only the required repair actions, and neither retry it nor trigger unrelated semantic backfill for a schema-only repair. Exact-read every changed entity and relationship endpoint with kb_query, then finish with an unfiltered kb_check followed by a final kb_status.
|
|
79
|
+
|
|
80
|
+
## Closeout fields
|
|
81
|
+
|
|
82
|
+
End every task with these five independent fields:
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
taskOutcome: complete | interim | blocked
|
|
86
|
+
kbState: clean_fresh | stale | dirty | legacy_compat | not_evaluated
|
|
87
|
+
verificationState: fresh | dirty | unavailable | not_evaluated
|
|
88
|
+
proofState: proven | mixed | unresolved | not_evaluated
|
|
89
|
+
limitationDisposition: none | accepted | unaccepted | not_applicable
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
`taskOutcome` is whether the requested work finished. The other fields are
|
|
93
|
+
observed system state. A clean check can coexist with unresolved proof.
|
|
94
|
+
|
|
77
95
|
## Exact Git attachment
|
|
78
96
|
|
|
79
97
|
The active ref is the exact KB identity. `KIBI_BRANCH` is used verbatim; Git's
|
|
@@ -114,22 +132,36 @@ safe normative claims; use `observation` or `meta` for bug/workaround notes and
|
|
|
114
132
|
`flag` only for actual runtime/config gates. Requirements require scenarios,
|
|
115
133
|
tests, symbol ownership, and fresh proof-bearing receipts before claiming proof.
|
|
116
134
|
For an existing product KB that needs semantic backfill, read
|
|
117
|
-
`resources/kb-improvement.md
|
|
135
|
+
`resources/kb-improvement.md`, and `resources/proof.md` for the proof workflow.
|
|
136
|
+
When a proof ratchet fails, follow Debugging proof regressions in
|
|
137
|
+
`resources/proof.md`: use `kibi proof explain` and compare current proof state
|
|
138
|
+
to committed `proof/baseline.json` with `kibi proof impact`.
|
|
118
139
|
|
|
119
140
|
## Predicate Ontology Decision Tree
|
|
120
141
|
|
|
121
|
-
Call `kb_semantic_advisor
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
142
|
+
Call `kb_semantic_advisor` on the complete prose before encoding a clause.
|
|
143
|
+
Set requirement `logic_claims` to exactly the assertive `claim_key` values.
|
|
144
|
+
For each relational clause, call `kb_suggest_predicates` with that clause and
|
|
145
|
+
`existingLogicClaims`. If lexical rank is a false positive, retry with the
|
|
146
|
+
reviewed `schemaId`. If `binding_status` is `incomplete`, supply
|
|
147
|
+
`argumentBindings` and retry. Persist `fact_kind: predicate` with the same
|
|
148
|
+
`claim_key` / `claim_text`, then link `REQ -> fact` with `requires_predicate`.
|
|
149
|
+
Use `kb_model_requirement` for strict scalar clauses. Use
|
|
150
|
+
`fact_kind: observation` only for a true ontology gap. The manifest is not
|
|
151
|
+
grounding: run `logic-coverage` so each key binds to one ground fact.
|
|
152
|
+
Relationship direction is fixed, and every `from` in a relationship batch
|
|
153
|
+
must equal the upserted entity ID.
|
|
154
|
+
|
|
155
|
+
For conditional relational claims, after the initial `kb_suggest_predicates` and before any `kb_upsert`—including one needed for a missing schema—call read-only `kb_model_requirement` to preview suitable scalar or typed-rule modeling. Treat the preview as advisory: do not apply an irrelevant result or create unrequested facts, and retain an approved ground-predicate plan when it captures the whole claim. Preserve supplied arity, ordered argument roles, polarity, bound values, and one claim key per actual assertion; never split arguments across clauses or schemas or alter values to force uniqueness.
|
|
127
156
|
|
|
128
157
|
## Symbol-First Traceability
|
|
129
158
|
|
|
130
|
-
Represent implementation ownership with a `symbol` entity
|
|
131
|
-
|
|
132
|
-
|
|
159
|
+
Represent implementation ownership with a `symbol` entity that has
|
|
160
|
+
`sourceFile`, `implements` to the requirement, and `covered_by` to the test.
|
|
161
|
+
Prolog `symbol-coverage` also requires the test to `validates` the requirement
|
|
162
|
+
(or the requirement `verified_by` the test). `covered_by` alone is not
|
|
163
|
+
enough. Do not rely on legacy `// implements REQ-xxx` comments as the
|
|
164
|
+
traceability record.
|
|
133
165
|
|
|
134
166
|
## Complete Logical Coverage
|
|
135
167
|
|
|
@@ -26,7 +26,7 @@ per operation. Effects are authoritative for mutability and adapter annotations.
|
|
|
26
26
|
| `kb_sparql_remote` | `sparql-remote` | --input JSON | read | no | network-read | peer; capability-selected | kibi.kb_sparql_remote.v1 | no | safe | yes | yes |
|
|
27
27
|
| `kb_compile_intent` | `compile-intent` | --input JSON | read | yes | kb-read, workspace-read | peer; capability-selected | kibi.kb_compile_intent.v1 | no | safe | no | yes |
|
|
28
28
|
| `kb_apply_plan` | `apply-plan` | --input JSON | write | yes | kb-read, kb-write, workspace-read, workspace-write | peer; capability-selected | kibi.kb_apply_plan.v1 | yes | unsafe | no | yes |
|
|
29
|
-
| `
|
|
29
|
+
| `kb_ingest_proof` | `ingest-proof` | --input JSON | write | yes | kb-read, kb-write, workspace-read | peer; capability-selected | kibi.kb_ingest_proof.v1 | yes | unsafe | no | yes |
|
|
30
30
|
|
|
31
31
|
## JSON execution recipe
|
|
32
32
|
|