kibi-cli 2.32.0 → 2.35.1

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.
Files changed (164) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +5 -1
  3. package/dist/commands/check-generated.d.ts +5 -1
  4. package/dist/commands/check-generated.d.ts.map +1 -1
  5. package/dist/commands/check-generated.js +24 -35
  6. package/dist/commands/init-helpers.d.ts.map +1 -1
  7. package/dist/commands/init-helpers.js +8 -5
  8. package/dist/commands/migrate.d.ts.map +1 -1
  9. package/dist/commands/migrate.js +23 -5
  10. package/dist/commands/sync/manifest.d.ts +10 -1
  11. package/dist/commands/sync/manifest.d.ts.map +1 -1
  12. package/dist/commands/sync/manifest.js +87 -14
  13. package/dist/commands/sync.d.ts.map +1 -1
  14. package/dist/commands/sync.js +19 -0
  15. package/dist/extractors/markdown.d.ts +1 -1
  16. package/dist/extractors/markdown.d.ts.map +1 -1
  17. package/dist/extractors/symbol-coordinates.js +2 -2
  18. package/dist/extractors/symbols-coordinator.d.ts +2 -4
  19. package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
  20. package/dist/extractors/symbols-coordinator.js +1 -2
  21. package/dist/operations/migration/proof-contract-claims.d.ts +23 -10
  22. package/dist/operations/migration/proof-contract-claims.d.ts.map +1 -1
  23. package/dist/operations/migration/proof-contract-claims.js +35 -2
  24. package/dist/operations/migration/schema6.d.ts.map +1 -1
  25. package/dist/operations/migration/schema6.js +2 -4
  26. package/dist/operations/migration/symbol-coordinates-refresh.d.ts +3 -2
  27. package/dist/operations/migration/symbol-coordinates-refresh.d.ts.map +1 -1
  28. package/dist/operations/migration/symbol-coordinates-refresh.js +4 -3
  29. package/dist/operations/migration/untrack-symbol-coordinates.d.ts +23 -0
  30. package/dist/operations/migration/untrack-symbol-coordinates.d.ts.map +1 -0
  31. package/dist/operations/migration/untrack-symbol-coordinates.js +67 -0
  32. package/dist/operations/modeling/requirement-modeler.d.ts.map +1 -1
  33. package/dist/operations/modeling/requirement-modeler.js +48 -1
  34. package/dist/operations/modeling/requirement-types.d.ts +2 -1
  35. package/dist/operations/modeling/requirement-types.d.ts.map +1 -1
  36. package/dist/operations/modeling/requirement-utils.d.ts +1 -1
  37. package/dist/operations/modeling/requirement-utils.d.ts.map +1 -1
  38. package/dist/operations/modeling/requirement-utils.js +8 -1
  39. package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
  40. package/dist/operations/mutation/source-authoring.js +39 -20
  41. package/dist/operations/proof/claim-bindings.d.ts +18 -0
  42. package/dist/operations/proof/claim-bindings.d.ts.map +1 -1
  43. package/dist/operations/proof/claim-bindings.js +157 -4
  44. package/dist/operations/proof/code-certificates.d.ts +34 -14
  45. package/dist/operations/proof/code-certificates.d.ts.map +1 -1
  46. package/dist/operations/proof/code-certificates.js +266 -157
  47. package/dist/operations/proof/code-models.d.ts +96 -0
  48. package/dist/operations/proof/code-models.d.ts.map +1 -0
  49. package/dist/operations/proof/code-models.js +601 -0
  50. package/dist/operations/proof/code-runner.d.ts +40 -0
  51. package/dist/operations/proof/code-runner.d.ts.map +1 -0
  52. package/dist/operations/proof/code-runner.js +164 -0
  53. package/dist/operations/proof/code-scope.d.ts +3 -0
  54. package/dist/operations/proof/code-scope.d.ts.map +1 -1
  55. package/dist/operations/proof/code-scope.js +26 -2
  56. package/dist/operations/proof/ingest-proof.d.ts.map +1 -1
  57. package/dist/operations/proof/ingest-proof.js +2 -1
  58. package/dist/operations/proof/regular-language.d.ts +89 -0
  59. package/dist/operations/proof/regular-language.d.ts.map +1 -0
  60. package/dist/operations/proof/regular-language.js +943 -0
  61. package/dist/operations/proof/source-code-readers.d.ts +12 -0
  62. package/dist/operations/proof/source-code-readers.d.ts.map +1 -0
  63. package/dist/operations/proof/source-code-readers.js +699 -0
  64. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  65. package/dist/operations/semantic-advisor/analyze-prose.js +2 -1
  66. package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
  67. package/dist/operations/semantic-advisor/strict-count-rules.js +8 -2
  68. package/dist/operations/semantic-advisor/strict-rules.d.ts +8 -0
  69. package/dist/operations/semantic-advisor/strict-rules.d.ts.map +1 -1
  70. package/dist/operations/semantic-advisor/strict-rules.js +231 -1
  71. package/dist/operations/semantic-advisor/types.d.ts +1 -1
  72. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  73. package/dist/prolog.d.ts.map +1 -1
  74. package/dist/prolog.js +13 -3
  75. package/dist/public/operations/catalog.d.ts +156 -13
  76. package/dist/public/operations/catalog.d.ts.map +1 -1
  77. package/dist/public/operations/evidence-floor.js +1 -1
  78. package/dist/public/operations/proof-contract-claims.js +1 -1
  79. package/dist/public/operations/specs/composite.d.ts +16 -3
  80. package/dist/public/operations/specs/composite.d.ts.map +1 -1
  81. package/dist/public/operations/specs/modeling.d.ts +16 -3
  82. package/dist/public/operations/specs/modeling.d.ts.map +1 -1
  83. package/dist/public/operations/specs/modeling.js +22 -3
  84. package/dist/public/operations/specs/mutation-schemas.d.ts +140 -10
  85. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  86. package/dist/public/operations/specs/mutation-schemas.js +14 -3
  87. package/dist/public/operations/specs/upsert.d.ts +140 -10
  88. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  89. package/dist/public/proof-certificates.d.ts +75 -1
  90. package/dist/public/proof-certificates.d.ts.map +1 -1
  91. package/dist/public/proof-certificates.js +212 -0
  92. package/dist/public/proof-protocol.d.ts +143 -10
  93. package/dist/public/proof-protocol.d.ts.map +1 -1
  94. package/dist/public/proof-protocol.js +301 -16
  95. package/dist/public/proof-receipt.d.ts +4 -3
  96. package/dist/public/proof-receipt.d.ts.map +1 -1
  97. package/dist/public/proof-receipt.js +6 -1
  98. package/dist/public/proof-sources.d.ts +102 -0
  99. package/dist/public/proof-sources.d.ts.map +1 -0
  100. package/dist/public/proof-sources.js +1292 -0
  101. package/dist/public/schemas/entity.d.ts.map +1 -1
  102. package/dist/public/schemas/entity.js +21 -1
  103. package/dist/public/skills/kibi-commit-review/SKILL.md +8 -8
  104. package/dist/public/skills/kibi-commit-review/resources/staged-gate.md +6 -6
  105. package/dist/public/skills/kibi-decisions/SKILL.md +5 -2
  106. package/dist/public/skills/kibi-decisions/resources/decision-records.md +4 -1
  107. package/dist/public/skills/kibi-freshness/SKILL.md +2 -2
  108. package/dist/public/skills/kibi-traceability/SKILL.md +3 -2
  109. package/dist/public/skills/kibi-usage/SKILL.md +5 -3
  110. package/dist/public/skills/kibi-usage/resources/proof.md +105 -9
  111. package/dist/report/html-report.css +45 -10
  112. package/dist/report/html-report.d.ts.map +1 -1
  113. package/dist/report/html-report.js +74 -17
  114. package/dist/report/report-view.d.ts +1 -1
  115. package/dist/report/report-view.d.ts.map +1 -1
  116. package/dist/report/report-view.js +1 -0
  117. package/dist/schemas/entity.schema.json +199 -8
  118. package/dist/traceability/evidence-model.d.ts +13 -12
  119. package/dist/traceability/evidence-model.d.ts.map +1 -1
  120. package/dist/traceability/evidence-model.js +1 -1
  121. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  122. package/dist/traceability/staged-diagnostics.js +24 -20
  123. package/dist/traceability/staged-impact-contract.d.ts +4 -4
  124. package/dist/traceability/staged-impact-contract.js +9 -9
  125. package/dist/traceability/staged-symbols-manifest.d.ts +11 -3
  126. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  127. package/dist/traceability/staged-symbols-manifest.js +47 -140
  128. package/dist/types/entities.d.ts +1 -1
  129. package/dist/types/entities.d.ts.map +1 -1
  130. package/dist/utils/rule-registry.generated.d.ts +1 -1
  131. package/dist/utils/rule-registry.generated.js +1 -1
  132. package/dist/utils/schema-version.d.ts +1 -1
  133. package/dist/utils/schema-version.d.ts.map +1 -1
  134. package/dist/utils/schema-version.js +3 -1
  135. package/dist/utils/strict-modeling.d.ts +3 -2
  136. package/dist/utils/strict-modeling.d.ts.map +1 -1
  137. package/dist/utils/strict-modeling.js +37 -4
  138. package/dist/workspace-cwd.d.ts +15 -0
  139. package/dist/workspace-cwd.d.ts.map +1 -0
  140. package/dist/workspace-cwd.js +86 -0
  141. package/package.json +2 -2
  142. package/schema/validation.pl +3 -1
  143. package/src/public/operations/evidence-floor.ts +1 -1
  144. package/src/public/operations/proof-contract-claims.ts +1 -1
  145. package/src/public/operations/specs/modeling.ts +24 -5
  146. package/src/public/operations/specs/mutation-schemas.ts +14 -3
  147. package/src/public/proof-certificates.ts +296 -1
  148. package/src/public/proof-protocol-types.d.ts +54 -2
  149. package/src/public/proof-protocol.ts +396 -20
  150. package/src/public/proof-receipt.ts +8 -2
  151. package/src/public/proof-sources.ts +1656 -0
  152. package/src/public/schemas/entity.ts +32 -2
  153. package/src/public/skills/kibi-commit-review/SKILL.md +8 -8
  154. package/src/public/skills/kibi-commit-review/resources/staged-gate.md +6 -6
  155. package/src/public/skills/kibi-decisions/SKILL.md +5 -2
  156. package/src/public/skills/kibi-decisions/resources/decision-records.md +4 -1
  157. package/src/public/skills/kibi-freshness/SKILL.md +2 -2
  158. package/src/public/skills/kibi-traceability/SKILL.md +3 -2
  159. package/src/public/skills/kibi-usage/SKILL.md +5 -3
  160. package/src/public/skills/kibi-usage/resources/proof.md +105 -9
  161. package/src/schemas/entity.schema.json +199 -8
  162. package/dist/traceability/reviewed-coordinate-refresh.d.ts +0 -10
  163. package/dist/traceability/reviewed-coordinate-refresh.d.ts.map +0 -1
  164. package/dist/traceability/reviewed-coordinate-refresh.js +0 -49
@@ -143,6 +143,8 @@ function implementationOwned(stages) {
143
143
  return productionSymbols.every((symbol) => !missingCoordinates.has(symbol));
144
144
  }
145
145
  function passesProofGate(row, gate) {
146
+ if (gate === "proved")
147
+ return row.evidenceLevel === "proved";
146
148
  if (row.proofStatus === "tested")
147
149
  return true;
148
150
  const stages = record(row.proofStages);
@@ -174,10 +176,16 @@ function proofGates(rows) {
174
176
  "Production ownership is source-bound",
175
177
  ],
176
178
  ["e2e", "E2E", "A scenario-backed end-to-end test exists"],
177
- ["evidence", "Evidence", "Every strict proof stage passes now"],
179
+ ["evidence", "Tested", "Fresh passing receipts cover every scenario"],
180
+ ["proved", "Proved", "Every claim has a re-checked certificate"],
178
181
  ];
182
+ const claims = claimTotals(rows);
183
+ const claimDetail = claims.applicable === 0
184
+ ? ""
185
+ : ` · ${claims.proved.toLocaleString("en-US")} of ${claims.applicable.toLocaleString("en-US")} claims proved`;
179
186
  let candidates = [...rows];
180
- return definitions.map(([key, label, detail]) => {
187
+ return definitions.map(([key, label, baseDetail]) => {
188
+ const detail = key === "proved" ? `${baseDetail}${claimDetail}` : baseDetail;
181
189
  const remainingRows = candidates.filter((row) => passesProofGate(row, key));
182
190
  const gate = {
183
191
  key,
@@ -206,6 +214,25 @@ export function earliestUnmetGate(row) {
206
214
  return "tested";
207
215
  return firstFailingProofGate(["semantic", "scenario", "implementation", "e2e", "evidence"], (gate) => passesProofGate(row, gate));
208
216
  }
217
+ // The rail's last step: a tested requirement still short of a certificate
218
+ // for every claim stops at "proved". Signoff keeps earliestUnmetGate, where
219
+ // tested is the end of the strict chain.
220
+ function reportGate(row) {
221
+ const gate = earliestUnmetGate(row);
222
+ if (gate !== "tested")
223
+ return gate;
224
+ return passesProofGate(row, "proved") ? "tested" : "proved";
225
+ }
226
+ function claimTotals(rows) {
227
+ let proved = 0;
228
+ let applicable = 0;
229
+ for (const row of rows) {
230
+ const claims = record(row.claimSummary);
231
+ proved += count(claims.proved);
232
+ applicable += count(claims.applicable);
233
+ }
234
+ return { proved, applicable };
235
+ }
209
236
  function evidenceStage(passingE2e, testSources, repository) {
210
237
  const evidence = records(passingE2e.receiptEvidence);
211
238
  const passed = evidence.find((item) => item.state === "passed");
@@ -550,7 +577,7 @@ function renderRequirement(row, repository) {
550
577
  const requirementSource = sourceCoordinate({
551
578
  path: text(record(record(row.proofStages).sourceCoordinates).requirementPath, text(row.source)),
552
579
  }) ?? sourceCoordinate({ path: text(row.source) });
553
- const gate = earliestUnmetGate(row);
580
+ const gate = reportGate(row);
554
581
  return `<article class="requirement requirement--${escapeHtml(proofStatus)}" data-state="${rowStates(row)}" data-gate="${escapeHtml(gate)}">
555
582
  <header class="requirement__header">
556
583
  <div>
@@ -594,13 +621,29 @@ function metric(label, value, tone = "") {
594
621
  return `<div class="metric${tone ? ` metric--${tone}` : ""}"><span>${escapeHtml(label)}</span><strong>${value.toLocaleString("en-US")}</strong></div>`;
595
622
  }
596
623
  function renderProofGate(gate, index) {
597
- const state = gate.remaining === 0 ? "blocked" : "active";
624
+ // Proved sits above the default tested floor, so stopping before it is not
625
+ // a block; floors that require proved show up as Below evidence floor.
626
+ const optional = gate.key === "proved";
627
+ const state = optional
628
+ ? "optional"
629
+ : gate.remaining === 0
630
+ ? "blocked"
631
+ : "active";
598
632
  const drop = gate.blocked === 0
599
633
  ? "No drop"
600
- : `−${gate.blocked.toLocaleString("en-US")} blocked here`;
601
- const accessible = `${gate.label}. ${gate.blocked} blocked here. Filter requirements whose earliest unmet proof gate is ${gate.label}.`;
634
+ : optional
635
+ ? `${gate.blocked.toLocaleString("en-US")} tested, not proved`
636
+ : `−${gate.blocked.toLocaleString("en-US")} blocked here`;
637
+ const stopped = optional
638
+ ? `${gate.blocked} tested, not proved`
639
+ : `${gate.blocked} blocked here`;
640
+ // A gate nobody stops at has nothing to show, so it is not a filter.
641
+ const empty = gate.blocked === 0;
642
+ const accessible = empty
643
+ ? `${gate.label}. No requirement stops here.`
644
+ : `${gate.label}. ${stopped}. Filter requirements whose earliest unmet proof gate is ${gate.label}.`;
602
645
  return `<li>
603
- <button type="button" class="proof-gate proof-gate--${state}" data-gate="${escapeHtml(gate.key)}" aria-pressed="false" aria-controls="requirements" aria-label="${escapeHtml(accessible)}">
646
+ <button type="button" class="proof-gate proof-gate--${state}" data-gate="${escapeHtml(gate.key)}" data-label="${escapeHtml(gate.label)}" aria-pressed="false" aria-controls="requirements" aria-label="${escapeHtml(accessible)}"${empty ? " disabled" : ""}>
604
647
  <div class="proof-gate__node"><span>${index + 1}</span></div>
605
648
  <div class="proof-gate__count">${gate.remaining.toLocaleString("en-US")}</div>
606
649
  <div class="proof-gate__label">${escapeHtml(gate.label)}</div>
@@ -694,7 +737,7 @@ export function renderHtmlReport(input) {
694
737
  const filterCounts = reportFilterCounts(currentRows.map((row) => ({
695
738
  text: `${text(row.id)} ${text(row.title)}`,
696
739
  states: rowStates(row).split(" ").filter(Boolean),
697
- earliestGate: earliestUnmetGate(row),
740
+ earliestGate: reportGate(row),
698
741
  })));
699
742
  const identity = reportIdentity({ ...input, repository });
700
743
  const faviconHref = renderKibiFaviconDataUri();
@@ -748,17 +791,17 @@ export function renderHtmlReport(input) {
748
791
  </section>
749
792
  <section class="metrics" aria-label="Requirement health summary">
750
793
  ${metric("Requirements", currentRequirements)}
751
- ${metric("Tested end to end", tested, "good")}
752
794
  ${metric("Proved by certificate", evidenceCount(currentRows, "proved"), evidenceCount(currentRows, "proved") ? "good" : "")}
795
+ ${metric("Tested end to end", tested, "good")}
753
796
  ${metric("Asserted, no current test", evidenceCount(currentRows, "asserted"), evidenceCount(currentRows, "asserted") ? "warn" : "")}
754
797
  ${metric("Unverified", evidenceCount(currentRows, "unverified"), evidenceCount(currentRows, "unverified") ? "warn" : "")}
755
798
  ${metric("Below evidence floor", belowFloor, belowFloor ? "bad" : "good")}
756
799
  ${metric("Pending re-proof", pendingReproof, pendingReproof ? "warn" : "")}
757
- ${metric("Missing scenarios", missingScenarios, missingScenarios ? "warn" : "")}
758
800
  ${metric("Stale E2E evidence", staleEvidence, staleEvidence ? "warn" : "")}
759
- ${metric("Contradictions", contradictions.length, contradictions.length ? "bad" : "")}
760
- ${metric("Unmapped production symbols", unmappedProductionSymbols, unmappedProductionSymbols ? "bad" : "")}
801
+ ${metric("Missing scenarios", missingScenarios, missingScenarios ? "warn" : "")}
761
802
  ${metric("Requirements without implementation", withoutImplementation, withoutImplementation ? "warn" : "")}
803
+ ${metric("Unmapped production symbols", unmappedProductionSymbols, unmappedProductionSymbols ? "bad" : "")}
804
+ ${metric("Contradictions", contradictions.length, contradictions.length ? "bad" : "")}
762
805
  </section>
763
806
  ${renderKbCertificates(input.kbCertificates)}
764
807
  <section>
@@ -772,6 +815,7 @@ export function renderHtmlReport(input) {
772
815
  ${renderFilters(filterCounts)}
773
816
  </div>
774
817
  </div>
818
+ <p class="gate-status" id="gate-status" aria-live="polite" hidden><span></span> <button type="button" class="gate-status__clear">Show all</button></p>
775
819
  <div class="requirements" id="requirements">${currentRows.map((row) => renderRequirement(row, repository)).join("")}</div>
776
820
  <div class="empty" id="empty" aria-live="polite">No requirements match this view.</div>
777
821
  </section>
@@ -788,6 +832,8 @@ export function renderHtmlReport(input) {
788
832
  const filters = [...document.querySelectorAll(".filter")];
789
833
  const gates = [...document.querySelectorAll(".proof-gate")];
790
834
  const empty = document.querySelector("#empty");
835
+ const gateStatus = document.querySelector("#gate-status");
836
+ const gateStatusText = gateStatus.querySelector("span");
791
837
  let activeFilter = "all";
792
838
  let activeGate = "all";
793
839
  const formatRelativeAge = (fromMs, nowMs) => {
@@ -824,7 +870,20 @@ export function renderHtmlReport(input) {
824
870
  if (!card.hidden) visible += 1;
825
871
  }
826
872
  empty.dataset.visible = String(visible === 0);
873
+ const selectedGate = gates.find((candidate) => candidate.dataset.gate === activeGate);
874
+ gateStatus.hidden = selectedGate === undefined;
875
+ if (selectedGate) {
876
+ gateStatusText.textContent = visible + (visible === 1 ? " requirement stops" : " requirements stop") + " at " + (selectedGate.dataset.label || activeGate) + ".";
877
+ }
878
+ };
879
+ const selectGate = (selected) => {
880
+ activeGate = selected;
881
+ for (const candidate of gates) {
882
+ candidate.setAttribute("aria-pressed", String(candidate.dataset.gate === activeGate));
883
+ }
884
+ apply();
827
885
  };
886
+ gateStatus.querySelector("button").addEventListener("click", () => selectGate("all"));
828
887
  search.addEventListener("input", apply);
829
888
  for (const filter of filters) {
830
889
  filter.addEventListener("click", () => {
@@ -836,11 +895,9 @@ export function renderHtmlReport(input) {
836
895
  for (const gate of gates) {
837
896
  gate.addEventListener("click", () => {
838
897
  const selected = gate.dataset.gate || "all";
839
- activeGate = activeGate === selected ? "all" : selected;
840
- for (const candidate of gates) {
841
- candidate.setAttribute("aria-pressed", String(candidate.dataset.gate === activeGate));
842
- }
843
- apply();
898
+ selectGate(activeGate === selected ? "all" : selected);
899
+ // The ledger sits below the fold; bring the filtered rows into view.
900
+ if (activeGate !== "all") gateStatus.scrollIntoView({ behavior: "smooth", block: "start" });
844
901
  });
845
902
  }
846
903
  refreshAges();
@@ -1,6 +1,6 @@
1
1
  export declare const REPORT_FILTERS: readonly ["all", "proved", "tested", "attention", "below_floor", "pending_reproof", "stale", "contradiction"];
2
2
  export type ReportFilter = (typeof REPORT_FILTERS)[number];
3
- export declare const PROOF_GATE_KEYS: readonly ["semantic", "scenario", "implementation", "e2e", "evidence"];
3
+ export declare const PROOF_GATE_KEYS: readonly ["semantic", "scenario", "implementation", "e2e", "evidence", "proved"];
4
4
  export type ProofGateKey = (typeof PROOF_GATE_KEYS)[number];
5
5
  export type RequirementView = Readonly<{
6
6
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"report-view.d.ts","sourceRoot":"","sources":["../../src/report/report-view.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,+GASjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,eAAe,wEAMlB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,YAAY,GAAG,QAAQ,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,YAAY,GAAG,KAAK,CAAC;CAC5B,CAAC,CAAC;AAGH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,eAAe,GACpB,OAAO,CAQT;AAGD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,eAAe,EAAE,GAC/B,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAexC"}
1
+ {"version":3,"file":"report-view.d.ts","sourceRoot":"","sources":["../../src/report/report-view.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,+GASjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,eAAe,kFAOlB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,YAAY,GAAG,QAAQ,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,YAAY,GAAG,KAAK,CAAC;CAC5B,CAAC,CAAC;AAGH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,eAAe,GACpB,OAAO,CAQT;AAGD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,eAAe,EAAE,GAC/B,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAexC"}
@@ -14,6 +14,7 @@ export const PROOF_GATE_KEYS = [
14
14
  "implementation",
15
15
  "e2e",
16
16
  "evidence",
17
+ "proved",
17
18
  ];
18
19
  // implements REQ-kibi-html-health-report
19
20
  export function matchesReportView(row, view) {
@@ -785,13 +785,40 @@
785
785
  "exhaustive",
786
786
  "typecheck",
787
787
  "arithmetic",
788
- "smt"
788
+ "smt",
789
+ "rule",
790
+ "state_machine",
791
+ "regex",
792
+ "source"
789
793
  ],
790
- "description": "What the checker establishes; absent means e2e. exhaustive, typecheck, arithmetic and smt must leave a kibi.code-certificate.v1 that Kibi re-checks before the receipt counts as proved."
794
+ "description": "What the checker establishes; absent means e2e. exhaustive, typecheck, arithmetic, smt, rule, state_machine and regex must leave a kibi.code-certificate.v1 that Kibi re-checks before the receipt counts as proved. source reads the contract's source itself: the run may leave {version, kind: source, test_id, source} or nothing, and Kibi stores its own read as the certificate."
795
+ },
796
+ "source": {
797
+ "type": "object",
798
+ "description": "source: the project source a source proof reads. A project source Kibi reads by itself. reader json or yaml: {file, path?, select?: keys|values|items}. glob: {pattern, capture?, ignore?} (capture true reads what each * matched). openapi: {file, select?: operations|unsecured_operations|security_schemes|responses}. references: {files, extract: env|imports|calls|string_args|thrown|property, callee?, key?, ignore?}. schema: {format: drizzle|prisma|sql, file (drizzle, prisma) or files (sql migrations), exports?, table?, select?: tables|columns|required_columns|nullable_columns|foreign_keys}. routes: {file, export, framework?: hono|express, path_prefix?, names_from?, select?: routes|middleware}. validator: {file, export, select?: fields|required_fields|optional_fields}. Paths are repository-relative. A member Kibi cannot read statically fails the read with its location.",
799
+ "required": [
800
+ "reader"
801
+ ],
802
+ "properties": {
803
+ "reader": {
804
+ "type": "string",
805
+ "enum": [
806
+ "json",
807
+ "yaml",
808
+ "glob",
809
+ "openapi",
810
+ "references",
811
+ "schema",
812
+ "routes",
813
+ "validator"
814
+ ]
815
+ }
816
+ },
817
+ "additionalProperties": true
791
818
  },
792
819
  "domain_source": {
793
820
  "type": "object",
794
- "description": "exhaustive and typecheck: the symbol that defines the finite domain. The proof must import it from its source file; a hand-listed domain downgrades the receipt to example. Kibi reads the export named `export`, or the symbol's title when `export` is absent.",
821
+ "description": "exhaustive and typecheck: the symbol that defines the finite domain (typecheck: also the type whose fields a required_fields fact names). state_machine: the transition table or next-state function. The proof must import it from its source file; a hand-listed domain downgrades the receipt to example. Kibi reads the export named `export`, or the symbol's title when `export` is absent.",
795
822
  "required": [
796
823
  "symbol_id"
797
824
  ],
@@ -824,7 +851,7 @@
824
851
  },
825
852
  "proves": {
826
853
  "type": "array",
827
- "description": "Certificate kinds: the requirement claim keys (CLAIM-...) this certificate proves. Each must be a modeled claim of a current requirement the test reaches through its scenarios. Kibi derives what the certificate must establish from the claim's grounding fact (a set fact for exhaustive or typecheck, a numeric fact for arithmetic or smt); a claim with no such derivation is only attested and never counts as proved.",
854
+ "description": "Certificate kinds: the requirement claim keys (CLAIM-...) this certificate proves. Each must be a modeled claim of a current requirement the test reaches through its scenarios. Kibi derives what the certificate must establish from the claim's grounding fact (a set fact for exhaustive or typecheck, a numeric fact for arithmetic or smt, a rule, predicate or set fact for rule and state_machine, a string fact for regex); a claim with no such derivation is only attested and never counts as proved.",
828
855
  "minItems": 1,
829
856
  "items": {
830
857
  "type": "string",
@@ -834,9 +861,59 @@
834
861
  },
835
862
  "value_source": {
836
863
  "type": "array",
837
- "description": "arithmetic and smt: code constants the assumptions read. Kibi evaluates each export at ingest and requires the certificate to assume the variable equals that value, so the proof is about the code and not only the knowledge base.",
864
+ "description": "arithmetic and smt: code constants the assumptions read. Kibi evaluates each export at ingest and requires the certificate to assume the variable equals that value, so the proof is about the code and not only the knowledge base. With measure count the value is the size of a list, set, map or object export, so a count claim reads the collection itself. An entry {source, measure: count} counts the members Kibi reads from a project source (routes, tables, environment variables).",
838
865
  "minItems": 1,
839
866
  "items": {
867
+ "type": "object",
868
+ "properties": {
869
+ "symbol_id": {
870
+ "type": "string",
871
+ "minLength": 1
872
+ },
873
+ "export": {
874
+ "type": "string",
875
+ "minLength": 1
876
+ },
877
+ "source": {
878
+ "type": "object",
879
+ "description": "A project source Kibi reads by itself. reader json or yaml: {file, path?, select?: keys|values|items}. glob: {pattern, capture?, ignore?} (capture true reads what each * matched). openapi: {file, select?: operations|unsecured_operations|security_schemes|responses}. references: {files, extract: env|imports|calls|string_args|thrown|property, callee?, key?, ignore?}. schema: {format: drizzle|prisma|sql, file (drizzle, prisma) or files (sql migrations), exports?, table?, select?: tables|columns|required_columns|nullable_columns|foreign_keys}. routes: {file, export, framework?: hono|express, path_prefix?, names_from?, select?: routes|middleware}. validator: {file, export, select?: fields|required_fields|optional_fields}. Paths are repository-relative. A member Kibi cannot read statically fails the read with its location.",
880
+ "required": [
881
+ "reader"
882
+ ],
883
+ "properties": {
884
+ "reader": {
885
+ "type": "string",
886
+ "enum": [
887
+ "json",
888
+ "yaml",
889
+ "glob",
890
+ "openapi",
891
+ "references",
892
+ "schema",
893
+ "routes",
894
+ "validator"
895
+ ]
896
+ }
897
+ },
898
+ "additionalProperties": true
899
+ },
900
+ "measure": {
901
+ "type": "string",
902
+ "enum": [
903
+ "value",
904
+ "count"
905
+ ],
906
+ "description": "value (default for an export): the export is a number. count (the only measure of a source): the number of members of a list, set, map or object export, or of a source."
907
+ }
908
+ },
909
+ "additionalProperties": false
910
+ }
911
+ },
912
+ "predicate_source": {
913
+ "type": "object",
914
+ "description": "rule: the code function behind each predicate a claim's rule, predicate or set fact names, keyed by predicate name. Each export takes the predicate's arguments in order and returns a boolean; Kibi calls it on every combination of its argument domains.",
915
+ "minProperties": 1,
916
+ "additionalProperties": {
840
917
  "type": "object",
841
918
  "required": [
842
919
  "symbol_id"
@@ -848,12 +925,116 @@
848
925
  },
849
926
  "export": {
850
927
  "type": "string",
851
- "minLength": 1
928
+ "minLength": 1,
929
+ "description": "The exported function's name in the symbol's source file. Without it Kibi reads the export named by the symbol's title."
930
+ },
931
+ "harness_for": {
932
+ "type": "array",
933
+ "minItems": 1,
934
+ "items": {
935
+ "type": "string",
936
+ "minLength": 1
937
+ },
938
+ "description": "The predicate is a test harness that decides the predicate by driving these code symbols (for example by calling the handler with each role). The symbols must be covered_by the test; a claim the harness proves is bound with scope harness."
852
939
  }
853
940
  },
854
941
  "additionalProperties": false
855
942
  }
856
943
  },
944
+ "domains": {
945
+ "type": "object",
946
+ "description": "rule: the finite domain of each argument type, keyed by type name (an array, Set, Map or object export, or a Python list, set, dict or Enum), or {source} for the members Kibi reads from a project source (every route, every table, every environment variable). state_machine with a next-state function: the `state` and `event` domains it is called on.",
947
+ "minProperties": 1,
948
+ "additionalProperties": {
949
+ "anyOf": [
950
+ {
951
+ "type": "object",
952
+ "required": [
953
+ "symbol_id"
954
+ ],
955
+ "properties": {
956
+ "symbol_id": {
957
+ "type": "string",
958
+ "minLength": 1
959
+ },
960
+ "export": {
961
+ "type": "string",
962
+ "minLength": 1
963
+ }
964
+ },
965
+ "additionalProperties": false
966
+ },
967
+ {
968
+ "type": "object",
969
+ "required": [
970
+ "source"
971
+ ],
972
+ "properties": {
973
+ "source": {
974
+ "type": "object",
975
+ "description": "A project source Kibi reads by itself. reader json or yaml: {file, path?, select?: keys|values|items}. glob: {pattern, capture?, ignore?} (capture true reads what each * matched). openapi: {file, select?: operations|unsecured_operations|security_schemes|responses}. references: {files, extract: env|imports|calls|string_args|thrown|property, callee?, key?, ignore?}. schema: {format: drizzle|prisma|sql, file (drizzle, prisma) or files (sql migrations), exports?, table?, select?: tables|columns|required_columns|nullable_columns|foreign_keys}. routes: {file, export, framework?: hono|express, path_prefix?, names_from?, select?: routes|middleware}. validator: {file, export, select?: fields|required_fields|optional_fields}. Paths are repository-relative. A member Kibi cannot read statically fails the read with its location.",
976
+ "required": [
977
+ "reader"
978
+ ],
979
+ "properties": {
980
+ "reader": {
981
+ "type": "string",
982
+ "enum": [
983
+ "json",
984
+ "yaml",
985
+ "glob",
986
+ "openapi",
987
+ "references",
988
+ "schema",
989
+ "routes",
990
+ "validator"
991
+ ]
992
+ }
993
+ },
994
+ "additionalProperties": true
995
+ }
996
+ },
997
+ "additionalProperties": false
998
+ }
999
+ ]
1000
+ }
1001
+ },
1002
+ "initial_source": {
1003
+ "type": "object",
1004
+ "required": [
1005
+ "symbol_id"
1006
+ ],
1007
+ "properties": {
1008
+ "symbol_id": {
1009
+ "type": "string",
1010
+ "minLength": 1
1011
+ },
1012
+ "export": {
1013
+ "type": "string",
1014
+ "minLength": 1
1015
+ }
1016
+ },
1017
+ "additionalProperties": false,
1018
+ "description": "state_machine: the export holding the initial state (or states), needed for initial_states and reachable_states facts."
1019
+ },
1020
+ "pattern_source": {
1021
+ "type": "object",
1022
+ "required": [
1023
+ "symbol_id"
1024
+ ],
1025
+ "properties": {
1026
+ "symbol_id": {
1027
+ "type": "string",
1028
+ "minLength": 1
1029
+ },
1030
+ "export": {
1031
+ "type": "string",
1032
+ "minLength": 1
1033
+ }
1034
+ },
1035
+ "additionalProperties": false,
1036
+ "description": "regex: the export holding the code's pattern (a RegExp, or a Python re.Pattern) or string constant that a string fact is about."
1037
+ },
857
1038
  "constraint_source": {
858
1039
  "type": "object",
859
1040
  "description": "arithmetic and smt: the typed numeric property_value facts the certificate's assumptions come from. Kibi checks the assumptions (or the query's assertions) are exactly these facts' constraints, so the proof is about the knowledge base, not numbers the test chose.",
@@ -1199,7 +1380,11 @@
1199
1380
  "exhaustive",
1200
1381
  "typecheck",
1201
1382
  "arithmetic",
1202
- "smt"
1383
+ "smt",
1384
+ "rule",
1385
+ "state_machine",
1386
+ "regex",
1387
+ "source"
1203
1388
  ]
1204
1389
  },
1205
1390
  "evidence_level": {
@@ -1254,6 +1439,8 @@
1254
1439
  "type": "string",
1255
1440
  "enum": [
1256
1441
  "code",
1442
+ "source",
1443
+ "harness",
1257
1444
  "intent"
1258
1445
  ]
1259
1446
  },
@@ -1338,7 +1525,11 @@
1338
1525
  "lt",
1339
1526
  "lte",
1340
1527
  "gt",
1341
- "gte"
1528
+ "gte",
1529
+ "matches",
1530
+ "includes",
1531
+ "subset_of",
1532
+ "excludes"
1342
1533
  ]
1343
1534
  },
1344
1535
  "value_type": {
@@ -62,7 +62,7 @@ export interface KibiImpactSymbolsManifestFileDetail {
62
62
  /** Symbol count extraction finds in the staged source content. */
63
63
  expectedCount: number;
64
64
  /**
65
- * Extracted symbols that have a matching staged manifest+coordinates entry
65
+ * Extracted symbols that have a matching staged symbols manifest entry
66
66
  * (`expectedCount - missing.length`); evidence-only entries in `extra` are
67
67
  * not counted.
68
68
  */
@@ -76,20 +76,21 @@ export interface KibiImpactSymbolsManifestFileDetail {
76
76
  extra: string[];
77
77
  }
78
78
  /**
79
- * Deterministic symbol coordinates artifact state for the staged change-set.
79
+ * Whether the staged symbol manifest covers the declarations of the staged
80
+ * behavior files. Coordinates are derived from source, so only titles count.
80
81
  *
81
- * - `not_required`: symbol extraction output did not change for the listed
82
- * staged source paths.
83
- * - `fresh`: a staged coordinate refresh covers the listed source paths.
84
- * - `stale`: coordinate artifact content is reverted, outdated, or otherwise does not match
85
- * the staged symbol extraction result.
86
- * - `missing`: a refresh is required but no staged coordinate artifact exists.
82
+ * - `not_required`: the listed files declare nothing and own no records.
83
+ * - `fresh`: every declaration in the listed files has a manifest record and
84
+ * every granular record names a declaration; this is evidence for their
85
+ * behavior edits.
86
+ * - `stale`: the listed files have uncovered declarations or records whose
87
+ * declaration is gone.
87
88
  */
88
89
  export interface KibiImpactSymbolsManifest {
89
- /** Canonical repo-relative symbol coordinate artifact path. */
90
+ /** Canonical repo-relative symbol manifest path. */
90
91
  path: string;
91
- /** Explicit manifest freshness state. */
92
- state: "not_required" | "fresh" | "stale" | "missing";
92
+ /** Explicit manifest coverage state. */
93
+ state: "not_required" | "fresh" | "stale";
93
94
  /** Repo-relative staged source paths whose symbol output this state describes. */
94
95
  sourcePaths: string[];
95
96
  /**
@@ -157,7 +158,7 @@ export interface KibiImpactEvidence {
157
158
  export declare function getBehaviorSourcePaths(evidence: KibiImpactEvidence): string[];
158
159
  /** Returns staged source paths covered by explicit KB artifacts. */
159
160
  export declare function getKbCoveredSourcePaths(evidence: KibiImpactEvidence): string[];
160
- /** Returns staged source paths covered by a fresh symbol coordinate refresh. */
161
+ /** Returns staged source paths whose declarations the symbol manifest covers. */
161
162
  export declare function getFreshSymbolsManifestSourcePaths(evidence: KibiImpactEvidence): string[];
162
163
  /**
163
164
  * Returns all staged evidence file paths that a later CLI integration can cite
@@ -1 +1 @@
1
- {"version":3,"file":"evidence-model.d.ts","sourceRoot":"","sources":["../../src/traceability/evidence-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence-model.d.ts","sourceRoot":"","sources":["../../src/traceability/evidence-model.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ export function getKbCoveredSourcePaths(evidence) {
30
30
  }
31
31
  return uniqueSorted(evidence.mode.kbArtifacts.flatMap((artifact) => artifact.sourcePaths));
32
32
  }
33
- /** Returns staged source paths covered by a fresh symbol coordinate refresh. */
33
+ /** Returns staged source paths whose declarations the symbol manifest covers. */
34
34
  export function getFreshSymbolsManifestSourcePaths(evidence) {
35
35
  if (evidence.symbolsManifest.state !== "fresh") {
36
36
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"staged-diagnostics.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAGL,KAAK,kBAAkB,EAKxB,MAAM,qBAAqB,CAAC;AAQ7B,MAAM,MAAM,sBAAsB,GAC9B,8BAA8B,GAC9B,wBAAwB,GACxB,8BAA8B,GAC9B,+BAA+B,GAC/B,qBAAqB,GACrB,kCAAkC,GAClC,iCAAiC,GACjC,oCAAoC,GACpC,gCAAgC,GAChC,0BAA0B,GAC1B,2BAA2B,GAC3B,6BAA6B,GAC7B,yBAAyB,GACzB,wCAAwC,GACxC,wBAAwB,CAAC;AAE7B,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,uDAAuD;IACvD,EAAE,EAAE,sBAAsB,CAAC;IAC3B,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,iEAAiE;IACjE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,gDAAgD;IAChD,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAsID,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,kBAAkB,GAC3B,oBAAoB,CAoBtB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,EAC5B,mBAAmB,GAAE,MAAmC,GACvD,oBAAoB,EAAE,CAiDxB"}
1
+ {"version":3,"file":"staged-diagnostics.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAGL,KAAK,kBAAkB,EAKxB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,sBAAsB,GAC9B,8BAA8B,GAC9B,wBAAwB,GACxB,8BAA8B,GAC9B,+BAA+B,GAC/B,qBAAqB,GACrB,kCAAkC,GAClC,iCAAiC,GACjC,oCAAoC,GACpC,gCAAgC,GAChC,0BAA0B,GAC1B,2BAA2B,GAC3B,6BAA6B,GAC7B,yBAAyB,GACzB,wCAAwC,GACxC,wBAAwB,CAAC;AAE7B,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,uDAAuD;IACvD,EAAE,EAAE,sBAAsB,CAAC;IAC3B,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,iEAAiE;IACjE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,gDAAgD;IAChD,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAkJD,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,kBAAkB,GAC3B,oBAAoB,CAoBtB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,EAC5B,mBAAmB,GAAE,MAAmC,GACvD,oBAAoB,EAAE,CA4CxB"}