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
|
@@ -6,19 +6,21 @@ import { readManifestWithCoordinateOverlay } from "../../extractors/manifest.js"
|
|
|
6
6
|
import { extractManifestSymbolRecords } from "../../extractors/manifest.js";
|
|
7
7
|
import { escapeAtom } from "../../prolog/codec.js";
|
|
8
8
|
import { loadEntities } from "../../public/operations/discovery-entities.js";
|
|
9
|
-
import {
|
|
9
|
+
import { appendOnlyProofReceiptHistoryErrors } from "../../public/proof-receipt.js";
|
|
10
10
|
import { appendRelationship, computeShardPath, } from "../../relationships/shards.js";
|
|
11
11
|
import { resolveBranchAttachment } from "../../utils/branch-resolver.js";
|
|
12
12
|
import { analyzeSemanticAdvisorInput } from "../semantic-advisor/analyze-prose.js";
|
|
13
13
|
import { assertLogicalGroundingClaimKeys, assertSemanticInventoryBoundary, } from "../semantic-advisor/ingestion-boundary.js";
|
|
14
14
|
import { buildUpsertCommitGoal, formatUpsertError } from "./contradictions.js";
|
|
15
15
|
import { existingRelationships, validateLiveRelationshipTargets, validateRelationshipSources, validateStrictLanePairing, validateSupersedesSourceHistory, } from "./relationships.js";
|
|
16
|
+
import { MutationSaga } from "./saga.js";
|
|
16
17
|
import { writePendingSourceReceipt, writeSourceForUpsert, } from "./source-authoring.js";
|
|
17
18
|
import { acquireSymbolCompilerLock, releaseSymbolCompilerLock, } from "./symbol-compiler-lock.js";
|
|
18
19
|
import { validateSymbolGranularity } from "./symbol-granularity.js";
|
|
19
20
|
import { refreshSymbolCoordinatesForManifest } from "./symbol-refresh.js";
|
|
20
21
|
import { validateUpsertInput } from "./validation.js";
|
|
21
22
|
import { scenarioCoverageWarnings } from "./warnings.js";
|
|
23
|
+
import { acquireWorkspaceMutationLock, releaseWorkspaceMutationLock, } from "./workspace-mutation-lock.js";
|
|
22
24
|
function requireProlog(context) {
|
|
23
25
|
if (context.prolog === undefined) {
|
|
24
26
|
throw new Error("Upsert operation requires a Prolog runtime");
|
|
@@ -90,18 +92,18 @@ function restoreRelationshipShard(shardPath, before, expectedAfterHash) {
|
|
|
90
92
|
}
|
|
91
93
|
writeFileSync(shardPath, before, "utf8");
|
|
92
94
|
}
|
|
93
|
-
export async function
|
|
95
|
+
export async function validateAppendOnlyProofReceipts(entity, context) {
|
|
94
96
|
if (entity.type !== "test")
|
|
95
97
|
return;
|
|
96
98
|
const existing = await loadEntities(requireProlog(context), {
|
|
97
99
|
id: String(entity.id),
|
|
98
100
|
type: "test",
|
|
99
101
|
});
|
|
100
|
-
const previous = receiptRecords(existing[0]?.
|
|
102
|
+
const previous = receiptRecords(existing[0]?.proof_receipts);
|
|
101
103
|
if (!previous || previous.length === 0)
|
|
102
104
|
return;
|
|
103
|
-
const next = receiptRecords(entity.
|
|
104
|
-
const errors =
|
|
105
|
+
const next = receiptRecords(entity.proof_receipts);
|
|
106
|
+
const errors = appendOnlyProofReceiptHistoryErrors(previous, next);
|
|
105
107
|
if (errors.length > 0) {
|
|
106
108
|
throw new Error(`Entity validation failed: ${errors.join("; ")}`);
|
|
107
109
|
}
|
|
@@ -159,7 +161,7 @@ function reextractCanonicalSymbolEntity(symbolId, authoredRelativePath, workspac
|
|
|
159
161
|
: { sourceFile: result.sourceFile }),
|
|
160
162
|
};
|
|
161
163
|
}
|
|
162
|
-
export async function executeUpsert(input, context) {
|
|
164
|
+
export async function executeUpsert(input, context, options = {}) {
|
|
163
165
|
const branchAttachment = context.branchAttachment ?? resolveBranchAttachment(context.workspaceRoot);
|
|
164
166
|
if ("error" in branchAttachment) {
|
|
165
167
|
throw new Error(`Unable to resolve KB branch: ${branchAttachment.error}`);
|
|
@@ -169,22 +171,31 @@ export async function executeUpsert(input, context) {
|
|
|
169
171
|
throw new Error(`Upsert blocked: KB is attached through legacy branch storage (${branchAttachment.gitBranch} -> ${branchAttachment.kbBranch}). Run 'kibi branch migrate --from ${branchAttachment.kbBranch} --to ${branchAttachment.gitBranch} --apply' first.`);
|
|
170
172
|
}
|
|
171
173
|
const prolog = requireProlog(context);
|
|
174
|
+
// Declared compensation list for the multi-surface mutation. Steps register
|
|
175
|
+
// as they succeed (authored source -> relationship shards -> coordinates);
|
|
176
|
+
// a failure rolls them back in reverse under the symbol compiler lock, and
|
|
177
|
+
// the compiled commit marks the point of no return.
|
|
178
|
+
const saga = new MutationSaga();
|
|
172
179
|
let sourceWrite = null;
|
|
173
180
|
let commitEntity;
|
|
174
|
-
let sourceRolledBack = false;
|
|
175
|
-
let compiledCommitted = false;
|
|
176
181
|
let relationshipCount = 0;
|
|
177
182
|
let changeKind = null;
|
|
178
183
|
let semanticAdvisor;
|
|
179
184
|
let compilerLock;
|
|
180
|
-
let
|
|
185
|
+
let sourceMutationLock;
|
|
181
186
|
let operationFailure;
|
|
182
187
|
const relationshipShardBefore = new Map();
|
|
183
188
|
const relationshipShardAfterHash = new Map();
|
|
184
189
|
const holdsSymbolCompilerLock = input.type === "symbol" &&
|
|
185
190
|
context.fs !== undefined &&
|
|
186
191
|
context.sourceFirst !== false;
|
|
192
|
+
const holdsSourceMutationLock = context.fs !== undefined &&
|
|
193
|
+
context.sourceFirst !== false &&
|
|
194
|
+
context.sourceMutationLockHeld !== true;
|
|
187
195
|
try {
|
|
196
|
+
if (holdsSourceMutationLock) {
|
|
197
|
+
sourceMutationLock = await acquireWorkspaceMutationLock(context.workspaceRoot);
|
|
198
|
+
}
|
|
188
199
|
if (holdsSymbolCompilerLock) {
|
|
189
200
|
// Symbol source publication, coordinate refresh, canonical
|
|
190
201
|
// re-extraction, and the RDF commit form one read-modify-write cycle.
|
|
@@ -193,7 +204,9 @@ export async function executeUpsert(input, context) {
|
|
|
193
204
|
compilerLock = await acquireSymbolCompilerLock(context.workspaceRoot);
|
|
194
205
|
}
|
|
195
206
|
const validated = validateUpsertInput(input, context.clock());
|
|
196
|
-
|
|
207
|
+
if (options.allowReceiptsPrune !== true) {
|
|
208
|
+
await validateAppendOnlyProofReceipts(validated.entity, context);
|
|
209
|
+
}
|
|
197
210
|
validateRelationshipSources(input.id, validated.relationships);
|
|
198
211
|
await validateSymbolGranularity(validated.entity, validated.relationships, context);
|
|
199
212
|
const relationships = await effectiveRelationships(input, validated.entity, validated.relationships, context);
|
|
@@ -227,8 +240,14 @@ export async function executeUpsert(input, context) {
|
|
|
227
240
|
// when configuration has zero or multiple writable targets, rather
|
|
228
241
|
// than silently creating compiled-only state.
|
|
229
242
|
existing === undefined) {
|
|
230
|
-
sourceWrite = await writeSourceForUpsert(input, validated.entity, existing, context);
|
|
243
|
+
sourceWrite = await writeSourceForUpsert(input, validated.entity, existing, context, options.sourceDocumentOverride);
|
|
231
244
|
if (sourceWrite !== null) {
|
|
245
|
+
const sourceStep = sourceWrite;
|
|
246
|
+
saga.add({
|
|
247
|
+
name: "authored-source",
|
|
248
|
+
rollback: () => sourceStep.rollback(),
|
|
249
|
+
onError: "capture",
|
|
250
|
+
});
|
|
232
251
|
// The authored path is the entity's canonical identity. Runtime
|
|
233
252
|
// transport provenance (mcp://...) must never survive a source-first
|
|
234
253
|
// write or a later delete/sync cycle.
|
|
@@ -243,6 +262,17 @@ export async function executeUpsert(input, context) {
|
|
|
243
262
|
// the compiled transaction so a failed commit can restore exact bytes and
|
|
244
263
|
// a successful commit never leaves a compiled-only relationship behind.
|
|
245
264
|
if (context.fs !== undefined && validated.relationships.length > 0) {
|
|
265
|
+
// Register the rollback before appending so a failure on any shard (for
|
|
266
|
+
// example the second write of a multi-shard batch) unwinds the shards
|
|
267
|
+
// that were already appended.
|
|
268
|
+
saga.add({
|
|
269
|
+
name: "relationship-shards",
|
|
270
|
+
rollback: () => {
|
|
271
|
+
for (const [shardPath, before] of relationshipShardBefore) {
|
|
272
|
+
restoreRelationshipShard(shardPath, before, relationshipShardAfterHash.get(shardPath) ?? null);
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
});
|
|
246
276
|
for (const relationship of validated.relationships) {
|
|
247
277
|
const type = typeof relationship.type === "string" ? relationship.type : "";
|
|
248
278
|
const from = typeof relationship.from === "string" ? relationship.from : input.id;
|
|
@@ -276,7 +306,14 @@ export async function executeUpsert(input, context) {
|
|
|
276
306
|
context.sourceFirst !== false &&
|
|
277
307
|
sourceWrite !== null) {
|
|
278
308
|
const refresh = await refreshSymbolCoordinatesForManifest(input.id, path.resolve(context.workspaceRoot, sourceWrite.receipt.path), context);
|
|
279
|
-
coordinatePublication = refresh.publication;
|
|
309
|
+
const coordinatePublication = refresh.publication;
|
|
310
|
+
if (coordinatePublication !== undefined) {
|
|
311
|
+
saga.add({
|
|
312
|
+
name: "symbol-coordinates",
|
|
313
|
+
rollback: () => coordinatePublication.rollback(),
|
|
314
|
+
onError: "capture",
|
|
315
|
+
});
|
|
316
|
+
}
|
|
280
317
|
if (!refresh.found || refresh.outcome === "removed") {
|
|
281
318
|
throw new Error(`Coordinate refresh could not find ${input.id} in the authored symbol manifest`);
|
|
282
319
|
}
|
|
@@ -299,14 +336,9 @@ export async function executeUpsert(input, context) {
|
|
|
299
336
|
});
|
|
300
337
|
const written = await prolog.query(transaction);
|
|
301
338
|
if (!written.success) {
|
|
302
|
-
|
|
303
|
-
sourceRolledBack = sourceWrite !== null;
|
|
304
|
-
for (const [shardPath, before] of relationshipShardBefore) {
|
|
305
|
-
restoreRelationshipShard(shardPath, before, relationshipShardAfterHash.get(shardPath) ?? null);
|
|
306
|
-
}
|
|
307
|
-
throw new Error(formatUpsertError(input.id, written.error));
|
|
339
|
+
throw new Error(formatUpsertError(input.id, written.error, written.errorRecord));
|
|
308
340
|
}
|
|
309
|
-
|
|
341
|
+
saga.markCommitted();
|
|
310
342
|
// The combined commit is the sole mutation boundary. Invalidate reads only
|
|
311
343
|
// after Prolog reports success so a failed/rolled-back commit does not
|
|
312
344
|
// disturb callers' view of the current snapshot.
|
|
@@ -322,7 +354,17 @@ export async function executeUpsert(input, context) {
|
|
|
322
354
|
for (const [shardPath, before] of relationshipShardBefore) {
|
|
323
355
|
const afterHash = fileHash(shardPath);
|
|
324
356
|
const beforeHash = before === null ? null : textHash(before);
|
|
325
|
-
|
|
357
|
+
const expectedAfterHash = relationshipShardAfterHash.get(shardPath) ?? null;
|
|
358
|
+
if (afterHash === null) {
|
|
359
|
+
if (expectedAfterHash !== null) {
|
|
360
|
+
const relative = path
|
|
361
|
+
.relative(context.workspaceRoot, shardPath)
|
|
362
|
+
.replaceAll("\\", "/");
|
|
363
|
+
shardWarnings.push(`Relationship shard vanished after write: ${relative}`);
|
|
364
|
+
}
|
|
365
|
+
continue;
|
|
366
|
+
}
|
|
367
|
+
if (afterHash === beforeHash)
|
|
326
368
|
continue;
|
|
327
369
|
const relative = path
|
|
328
370
|
.relative(context.workspaceRoot, shardPath)
|
|
@@ -393,37 +435,12 @@ export async function executeUpsert(input, context) {
|
|
|
393
435
|
};
|
|
394
436
|
}
|
|
395
437
|
catch (error) {
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
coordinateRollbackError = rollbackError;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
if (!compiledCommitted) {
|
|
406
|
-
for (const [shardPath, before] of relationshipShardBefore) {
|
|
407
|
-
try {
|
|
408
|
-
restoreRelationshipShard(shardPath, before, relationshipShardAfterHash.get(shardPath) ?? null);
|
|
409
|
-
}
|
|
410
|
-
catch {
|
|
411
|
-
// Preserve the original failure; the next check/sync reports any
|
|
412
|
-
// canonical source path that could not be restored.
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
if (!compiledCommitted && sourceWrite !== null && !sourceRolledBack) {
|
|
417
|
-
try {
|
|
418
|
-
await sourceWrite.rollback();
|
|
419
|
-
sourceRolledBack = true;
|
|
420
|
-
}
|
|
421
|
-
catch {
|
|
422
|
-
// Preserve the original mutation error; the recovery journal can
|
|
423
|
-
// reconcile a failed source rollback on the next sync.
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
if (compiledCommitted) {
|
|
438
|
+
// Roll back every completed pre-commit surface in reverse order, exactly
|
|
439
|
+
// once. After the compiled commit this is a no-op: post-commit failures
|
|
440
|
+
// return committed-with-repairs results instead of undoing committed
|
|
441
|
+
// state.
|
|
442
|
+
const rollbackFailures = await saga.rollback();
|
|
443
|
+
if (saga.committed) {
|
|
427
444
|
const detail = error instanceof Error ? error.message : String(error);
|
|
428
445
|
return {
|
|
429
446
|
content: [
|
|
@@ -461,8 +478,18 @@ export async function executeUpsert(input, context) {
|
|
|
461
478
|
},
|
|
462
479
|
};
|
|
463
480
|
}
|
|
464
|
-
|
|
465
|
-
|
|
481
|
+
const coordinateFailure = rollbackFailures.find((failure) => failure.step === "symbol-coordinates");
|
|
482
|
+
if (coordinateFailure !== undefined) {
|
|
483
|
+
const failure = new AggregateError([error, coordinateFailure.error], `Upsert failed and coordinate artifact rollback failed for ${input.id}`);
|
|
484
|
+
operationFailure = { error: failure };
|
|
485
|
+
throw failure;
|
|
486
|
+
}
|
|
487
|
+
const sourceFailure = rollbackFailures.find((failure) => failure.step === "authored-source");
|
|
488
|
+
if (sourceFailure !== undefined) {
|
|
489
|
+
const rollbackMessage = sourceFailure.error instanceof Error
|
|
490
|
+
? sourceFailure.error.message
|
|
491
|
+
: String(sourceFailure.error);
|
|
492
|
+
const failure = new AggregateError([error, sourceFailure.error], `Upsert failed and authored source rollback failed for ${input.id}: ${rollbackMessage}`);
|
|
466
493
|
operationFailure = { error: failure };
|
|
467
494
|
throw failure;
|
|
468
495
|
}
|
|
@@ -476,6 +503,11 @@ export async function executeUpsert(input, context) {
|
|
|
476
503
|
throw failure;
|
|
477
504
|
}
|
|
478
505
|
finally {
|
|
479
|
-
|
|
506
|
+
try {
|
|
507
|
+
releaseSymbolCompilerLock(compilerLock, operationFailure, saga.committed);
|
|
508
|
+
}
|
|
509
|
+
finally {
|
|
510
|
+
releaseWorkspaceMutationLock(sourceMutationLock, operationFailure, saga.committed);
|
|
511
|
+
}
|
|
480
512
|
}
|
|
481
513
|
}
|
|
@@ -2,12 +2,12 @@ import { analyzeSemanticAdvisorInput } from "../semantic-advisor/analyze-prose.j
|
|
|
2
2
|
import { assertLogicalGroundingClaimKeys, assertSemanticInventoryBoundary, validateSemanticInventoryBoundary, } from "../semantic-advisor/ingestion-boundary.js";
|
|
3
3
|
import { validateLiveRelationshipTargets, validateRelationshipSources, } from "./relationships.js";
|
|
4
4
|
import { validateSymbolGranularity } from "./symbol-granularity.js";
|
|
5
|
-
import { effectiveRelationships,
|
|
5
|
+
import { effectiveRelationships, validateAppendOnlyProofReceipts, } from "./upsert.js";
|
|
6
6
|
import { validateUpsertInput } from "./validation.js";
|
|
7
7
|
export async function executeValidateUpsert(input, context) {
|
|
8
8
|
try {
|
|
9
9
|
const validated = validateUpsertInput(input, context.clock());
|
|
10
|
-
await
|
|
10
|
+
await validateAppendOnlyProofReceipts(validated.entity, context);
|
|
11
11
|
validateRelationshipSources(input.id, validated.relationships);
|
|
12
12
|
await validateSymbolGranularity(validated.entity, validated.relationships, context);
|
|
13
13
|
const previewSemantic = analyzeSemanticAdvisorInput({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/validation.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAO5C,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkF/D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,IAAI,GACR,eAAe,CA0DjB;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import Ajv from "ajv";
|
|
2
|
+
import { proofReceiptHistoryErrors } from "../../public/proof-receipt.js";
|
|
2
3
|
import entitySchema from "../../public/schemas/entity.js";
|
|
3
4
|
import relationshipSchema from "../../public/schemas/relationship.js";
|
|
4
5
|
// implements REQ-kibi-operation-interface-parity
|
|
5
6
|
import { SYMBOL_ROLES, isAllowedGranularityReason, } from "../../public/symbol-granularity.js";
|
|
6
|
-
import { verificationReceiptHistoryErrors } from "../../public/verification-receipt.js";
|
|
7
7
|
import { semanticClaimKey } from "../semantic-advisor/clauses.js";
|
|
8
8
|
import { factKindShapeHints, validateFactModelingShape, valueFieldHint, } from "./strict-fact.js";
|
|
9
9
|
const ajv = new Ajv({ strict: false });
|
|
@@ -86,9 +86,11 @@ export function validateUpsertInput(input, now) {
|
|
|
86
86
|
if (!validateEntity(entity)) {
|
|
87
87
|
throw new Error(`Entity validation failed: ${formatEntityErrors(entity, validateEntity.errors ?? [])}`);
|
|
88
88
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
validateSymbolSourceFile(entity);
|
|
90
|
+
validateProofExemptionPairing(entity);
|
|
91
|
+
if (entity.type === "test" && Array.isArray(entity.proof_receipts)) {
|
|
92
|
+
const receipts = entity.proof_receipts.filter((value) => typeof value === "object" && value !== null && !Array.isArray(value));
|
|
93
|
+
const receiptErrors = proofReceiptHistoryErrors(input.id, entity.verification_scope, receipts);
|
|
92
94
|
if (receiptErrors.length > 0) {
|
|
93
95
|
throw new Error(`Entity validation failed: ${receiptErrors.join("; ")}`);
|
|
94
96
|
}
|
|
@@ -114,3 +116,43 @@ export function validateUpsertInput(input, now) {
|
|
|
114
116
|
return { entity, relationships };
|
|
115
117
|
}
|
|
116
118
|
export { isAllowedGranularityReason };
|
|
119
|
+
/**
|
|
120
|
+
* A symbol whose sourceFile points into .kb/ can publish coordinates to the
|
|
121
|
+
* artifact, but the engine never merges coordinates for KB-internal paths —
|
|
122
|
+
* coverage then reports missing_symbol_coordinates forever with no signal.
|
|
123
|
+
* Reject the configuration at upsert time instead.
|
|
124
|
+
*/
|
|
125
|
+
function validateSymbolSourceFile(entity) {
|
|
126
|
+
if (entity.type !== "symbol")
|
|
127
|
+
return;
|
|
128
|
+
const sourceFile = entity.sourceFile;
|
|
129
|
+
if (typeof sourceFile !== "string" || sourceFile.trim() === "")
|
|
130
|
+
return;
|
|
131
|
+
const normalized = sourceFile.replaceAll("\\", "/").trim();
|
|
132
|
+
if (normalized === ".kb" || normalized.startsWith(".kb/")) {
|
|
133
|
+
throw new Error(`Entity validation failed: symbol sourceFile must point at a real code file in the workspace, not into the knowledge base ('${sourceFile}'). Coordinates for .kb/ paths are never merged into the engine, so coverage would report missing_symbol_coordinates permanently. Point the symbol at the implementing or verifying code file instead.`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* proof_exempt parks a current requirement outside E2E-proof scope. Without a
|
|
138
|
+
* reason the requirement would disappear from the proof ladder silently, so
|
|
139
|
+
* the exemption only exists with its justification attached (mirrored in
|
|
140
|
+
* requirement_proof.pl, which ignores an exemption without a reason).
|
|
141
|
+
*/
|
|
142
|
+
function validateProofExemptionPairing(entity) {
|
|
143
|
+
if (entity.type !== "req")
|
|
144
|
+
return;
|
|
145
|
+
const flag = entity.proof_exempt;
|
|
146
|
+
const isExempt = flag === true ||
|
|
147
|
+
flag === "true" ||
|
|
148
|
+
flag === "yes" ||
|
|
149
|
+
flag === "on" ||
|
|
150
|
+
flag === 1 ||
|
|
151
|
+
flag === "1";
|
|
152
|
+
if (!isExempt)
|
|
153
|
+
return;
|
|
154
|
+
const reason = entity.proof_exempt_reason;
|
|
155
|
+
if (typeof reason !== "string" || reason.trim() === "") {
|
|
156
|
+
throw new Error("Entity validation failed: proof_exempt requires a non-empty proof_exempt_reason explaining why the requirement is outside E2E-proof scope");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { PrologPort } from "../../public/operations/runtime-types.js";
|
|
2
2
|
import type { RelationshipInput } from "./types.js";
|
|
3
|
+
export declare function scenarioCoverageWarning(entityId: string): readonly string[];
|
|
3
4
|
export declare function scenarioCoverageWarnings(prolog: PrologPort, relationships: readonly RelationshipInput[], entityType: string, entityId: string): Promise<readonly string[]>;
|
|
4
5
|
//# sourceMappingURL=warnings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/warnings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/warnings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAI3E;AAGD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,SAAS,iBAAiB,EAAE,EAC3C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAU5B"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { escapeAtom } from "../../prolog/codec.js";
|
|
2
|
+
export function scenarioCoverageWarning(entityId) {
|
|
3
|
+
return [
|
|
4
|
+
`Scenario-backed coverage: verified_by(${entityId},test) is valid but will not satisfy symbol-coverage because ${entityId} has specified_by a scenario. Use verified_by(scenario,test) or validates(test,scenario) instead.`,
|
|
5
|
+
];
|
|
6
|
+
}
|
|
2
7
|
// implements REQ-kibi-operation-interface-parity
|
|
3
8
|
export async function scenarioCoverageWarnings(prolog, relationships, entityType, entityId) {
|
|
4
9
|
if (entityType !== "req")
|
|
@@ -7,11 +12,8 @@ export async function scenarioCoverageWarnings(prolog, relationships, entityType
|
|
|
7
12
|
if (relationship.type !== "verified_by")
|
|
8
13
|
continue;
|
|
9
14
|
const result = await prolog.query(`once(kb_relationship(specified_by, '${escapeAtom(entityId)}', ScenarioId))`);
|
|
10
|
-
if (result.success)
|
|
11
|
-
return
|
|
12
|
-
`Scenario-backed coverage: verified_by(${entityId},test) is valid but will not satisfy symbol-coverage because ${entityId} has specified_by a scenario. Use verified_by(scenario,test) or validates(test,scenario) instead.`,
|
|
13
|
-
];
|
|
14
|
-
}
|
|
15
|
+
if (result.success)
|
|
16
|
+
return scenarioCoverageWarning(entityId);
|
|
15
17
|
}
|
|
16
18
|
return [];
|
|
17
19
|
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export interface WorkspaceMutationLockFileSystem {
|
|
2
|
+
readonly mkdirSync: (target: string, options?: {
|
|
3
|
+
readonly recursive?: boolean;
|
|
4
|
+
}) => void;
|
|
5
|
+
readonly readFileSync: (target: string) => string;
|
|
6
|
+
readonly writeFileSync: (target: string, data: string, options: {
|
|
7
|
+
readonly encoding: "utf8";
|
|
8
|
+
readonly flag: "wx";
|
|
9
|
+
}) => void;
|
|
10
|
+
readonly unlinkSync: (target: string) => void;
|
|
11
|
+
readonly rmdirSync: (target: string) => void;
|
|
12
|
+
}
|
|
13
|
+
export interface WorkspaceMutationLockOptions {
|
|
14
|
+
readonly lockFileRelative?: string;
|
|
15
|
+
readonly timeoutMs?: number;
|
|
16
|
+
readonly now?: () => number;
|
|
17
|
+
readonly sleep?: (ms: number) => Promise<void>;
|
|
18
|
+
readonly fileSystem?: WorkspaceMutationLockFileSystem;
|
|
19
|
+
readonly isProcessAlive?: (pid: number) => boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare class WorkspaceMutationLockError extends Error {
|
|
22
|
+
readonly name = "WorkspaceMutationLockError";
|
|
23
|
+
}
|
|
24
|
+
export interface WorkspaceMutationLockHandle {
|
|
25
|
+
/**
|
|
26
|
+
* Remove this handle's validated owner metadata and then its empty lock
|
|
27
|
+
* directory. Transient cleanup errors are retried; exhausted or permanent
|
|
28
|
+
* failures leave the lock fail-closed and may require verified manual
|
|
29
|
+
* cleanup. Successful release is idempotent, and a stale handle never
|
|
30
|
+
* removes a different owner token.
|
|
31
|
+
*/
|
|
32
|
+
readonly release: () => void;
|
|
33
|
+
}
|
|
34
|
+
export declare function releaseWorkspaceMutationLock(handle: WorkspaceMutationLockHandle | undefined, operationFailure?: {
|
|
35
|
+
readonly error: unknown;
|
|
36
|
+
}, committed?: boolean): void;
|
|
37
|
+
/**
|
|
38
|
+
* Classify the failure of an operation whose authoritative commit already
|
|
39
|
+
* happened. Typed operation errors keep their code and retryability; generic
|
|
40
|
+
* failures are wrapped immediately as non-retryable so callers never read a
|
|
41
|
+
* committed mutation as an invitation to retry.
|
|
42
|
+
*/
|
|
43
|
+
export declare function classifySourceMutationFailure(operation: string, error: unknown, committed: boolean): unknown;
|
|
44
|
+
/**
|
|
45
|
+
* Acquire the workspace workspace mutation lock without a callback shape, for
|
|
46
|
+
* operations whose lock must span several awaits (source publication,
|
|
47
|
+
* coordinate refresh, canonical re-extraction, and the RDF commit).
|
|
48
|
+
*/
|
|
49
|
+
export declare function acquireWorkspaceMutationLock(workspaceRoot: string, options?: WorkspaceMutationLockOptions): Promise<WorkspaceMutationLockHandle>;
|
|
50
|
+
/**
|
|
51
|
+
* Run `operation` while holding the workspace mutation lock.
|
|
52
|
+
*
|
|
53
|
+
* Atomic directory creation is the sole lock authority. Owner metadata is
|
|
54
|
+
* release authorization and diagnostics. Every existing target, including a
|
|
55
|
+
* legacy file or a directory with missing/corrupt metadata, blocks or fails
|
|
56
|
+
* closed without mutating the lock path. Release failures propagate so
|
|
57
|
+
* successful work is never reported unlocked.
|
|
58
|
+
*/
|
|
59
|
+
export declare function withWorkspaceMutationLock<T>(workspaceRoot: string, operation: () => Promise<T>, options?: WorkspaceMutationLockOptions): Promise<T>;
|
|
60
|
+
//# sourceMappingURL=workspace-mutation-lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-mutation-lock.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/workspace-mutation-lock.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,SAAS,EAAE,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KACvC,IAAI,CAAC;IACV,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,QAAQ,CAAC,aAAa,EAAE,CACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;KAAE,KACxD,IAAI,CAAC;IACV,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAeD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,+BAA+B,CAAC;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACpD;AAGD,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,SAAkB,IAAI,gCAAgC;CACvD;AAwMD,MAAM,WAAW,2BAA2B;IAC1C;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAGD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,2BAA2B,GAAG,SAAS,EAC/C,gBAAgB,CAAC,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAC9C,SAAS,UAAQ,GAChB,IAAI,CAoBN;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,OAAO,GACjB,OAAO,CAWT;AAED;;;;GAIG;AAEH,wBAAsB,4BAA4B,CAChD,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,2BAA2B,CAAC,CA4KtC;AAED;;;;;;;;GAQG;AAEH,wBAAsB,yBAAyB,CAAC,CAAC,EAC/C,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,CAAC,CAAC,CAWZ"}
|