kibi-cursor 2.6.8 → 2.6.10
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/.cursor-plugin/plugin.json +1 -1
- package/CHANGELOG.md +23 -0
- package/agent-plugin/plugin.json +1 -1
- package/agent-plugin/skills/kibi-usage/SKILL.md +20 -3
- package/agent-plugin/skills/kibi-usage/resources/proof.md +23 -0
- package/dist/.cursor-plugin/plugin.json +1 -1
- package/dist/skills/.canon-hash.json +2 -2
- package/dist/skills/kibi-usage/SKILL.md +20 -3
- package/dist/skills/kibi-usage/resources/proof.md +23 -0
- package/package.json +2 -2
- package/skills/.canon-hash.json +2 -2
- package/skills/kibi-usage/SKILL.md +20 -3
- package/skills/kibi-usage/resources/proof.md +23 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kibi-cursor",
|
|
3
3
|
"displayName": "Kibi",
|
|
4
|
-
"version": "2.6.
|
|
4
|
+
"version": "2.6.10",
|
|
5
5
|
"description": "Optional Cursor adapter for Kibi. Requires project-local kibi-cli, kibi-mcp, and kibi-core (SWI-Prolog is bundled on Linux and macOS) before the bundled MCP server can start.",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|
|
7
7
|
"author": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# kibi-cursor
|
|
2
2
|
|
|
3
|
+
## 2.6.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- e00adf2: Projects set up with kibi-cli before 2.18.0 keep every symbol on one flow-sequence line of `.kb/symbols.yaml`, and the host hooks read none of it: the Claude Code hooks told agents that no symbol in a linked file was tied to a requirement, on every edit, when the opposite was true. The shared hook scanner now reads flow-layout manifests like block ones, the Claude Code edit hook no longer calls a file unowned when the manifest is unreadable or when the coordinate artifact binds a symbol to it that the scanner could not read (it says once per session that the manifest could not be read instead), and a plain `kibi sync` rewrites such a manifest in block layout once, keeping comments and order.
|
|
8
|
+
|
|
9
|
+
Technical summary: `kibi-agent-core` `knowledge-index` gains a flow-collection reader for `symbols: [ … ]` sections (single or multi-line, CRLF safe) and for flow values inside block records, the index reports `manifest` (`missing` | `empty` | `indexed` | `unreadable`), `coordinateFiles` and `unlinkedFiles`, and the cache format moves to v2 so stale indexes rebuild. `kibi-claude` adds `unreadableManifestNote` (once per session) in place of `unownedSourceNote` for an unreadable manifest or a coordinate-bound file with no indexed record; the Claude and Codex hook bundles are rebuilt. `kibi sync` calls `normalizeManifestLayout` on every tracked symbol manifest ahead of its no-op fast path, through the same `blockifySymbolManifest` helper `kb_upsert`'s manifest writer uses.
|
|
10
|
+
|
|
11
|
+
- d973759: The kibi-usage skill (2.15.0) now tells agents to title a symbol after the behavioral member the extractor can find (`ClassName.methodName`, an exported function, or a class). It also explains that linking a coarse file- or module-level symbol to a requirement is refused when the file already has granular behavioral symbols, unless the symbol sets `granularity_reason`, so agents stop retrying refused symbol writes.
|
|
12
|
+
|
|
13
|
+
Technical summary: the "Symbol-First Traceability" section of `kibi-usage/SKILL.md` gains one paragraph on `title` and the granularity gate, listing the allowed `granularity_reason` values (`config-artifact`, `module-level-behavior`, `extractor-miss`, `legacy-link`, `test-suite`). Host skill copies are regenerated.
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [e00adf2]
|
|
16
|
+
- kibi-agent-core@0.3.0
|
|
17
|
+
|
|
18
|
+
## 2.6.9
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- 50b7a65: The kibi-usage skill (2.14.0) now says plainly what moves `proofProven`: only an end-to-end test (by its `verification_scope`) with a fresh passing receipt; unit receipts are recorded but leave the `missing_passing_e2e` gap. Its second-agent recipes now create scenarios with `assumes` links to the facts they rely on, so a new or superseding requirement no longer leaves a "Scenario expects success but assumes nothing" warning. `kibi proof inspect` shows the command each configured integration runs.
|
|
23
|
+
|
|
24
|
+
Technical summary: kibi-usage `resources/proof.md` gains a "What counts toward proofProven" section (scope source, unit/integration receipts, the component-scope UI exception, `coverage_depth` following authored status); recipes 1 and 2 of "Second-agent edits" add `assumes` (sent in the scenario's own write) and `expects` only with `assumes`, and re-pointing or closing the old scenario. `kibi proof inspect --json` adds `currentIntegrations: [{ id, producer, command }]` beside the compatible `currentIntegration`, and the text output lists each integration's command. Host skill copies are regenerated.
|
|
25
|
+
|
|
3
26
|
## 2.6.8
|
|
4
27
|
|
|
5
28
|
### Patch Changes
|
package/agent-plugin/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "kibi",
|
|
4
|
-
"version": "2.6.
|
|
4
|
+
"version": "2.6.10",
|
|
5
5
|
"description": "Repo-local, per-branch, queryable knowledge base. Portable Agent Plugin packaging Kibi's Agent Skills and MCP server.",
|
|
6
6
|
"author": { "name": "Kibi" },
|
|
7
7
|
"homepage": "https://looted.github.io/kibi/",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: kibi-usage
|
|
3
3
|
name: Kibi Usage
|
|
4
4
|
description: Use Kibi's source-first, exact-Git, migration-aware, proof-aware operations safely across MCP or the trusted local CLI, including partial completion repair.
|
|
5
|
-
version: 2.
|
|
5
|
+
version: 2.15.0
|
|
6
6
|
kibiCompatibility: ">=1.0.0"
|
|
7
7
|
tags:
|
|
8
8
|
- kibi
|
|
@@ -237,7 +237,11 @@ authored. Each one is the order the write path accepts.
|
|
|
237
237
|
fact, `requires_predicate` to `relationshipTarget` and `specified_by` to
|
|
238
238
|
its scenario: `specified_by` (req → scenario) is sent in the
|
|
239
239
|
requirement's write, never in the scenario's, so create the scenario
|
|
240
|
-
first
|
|
240
|
+
first, with `assumes` links (scenario → `property_value` fact, sent in
|
|
241
|
+
the scenario's own write) to the values its outcome relies on. Set
|
|
242
|
+
`expects` only on a scenario that has `assumes` links; `expects: success`
|
|
243
|
+
without them only yields `scenario-feasibility-unknown` ("assumes
|
|
244
|
+
nothing"). A
|
|
241
245
|
`modeled` entry and its grounding link must arrive in the same write
|
|
242
246
|
(`modeled semantic_inventory entries (n) must equal logical grounding
|
|
243
247
|
relationships (m)`); a clause not grounded yet stays `status: missing`
|
|
@@ -249,7 +253,12 @@ authored. Each one is the order the write path accepts.
|
|
|
249
253
|
claim_keys must match logical grounding target claim_keys exactly`.
|
|
250
254
|
Prefer supersession for a change of meaning: analyze the new prose,
|
|
251
255
|
write its facts, write the new requirement (`-v2`) with `supersedes` to
|
|
252
|
-
the old one, then set the old one to `status: closed`.
|
|
256
|
+
the old one, then set the old one to `status: closed`. Its scenario
|
|
257
|
+
follows the same rule as in recipe 1: create the new scenario (with
|
|
258
|
+
`assumes` to the `property_value` facts it relies on, and `expects` only
|
|
259
|
+
when it has them) before the `-v2` write that sends `specified_by`, then
|
|
260
|
+
re-point the old scenario (its `assumes` go in its own write) or close
|
|
261
|
+
it. For a wording fix
|
|
253
262
|
that keeps the meaning, re-ground in place: analyze the new prose,
|
|
254
263
|
`kb_upsert` each grounding fact with the new `claim_key`/`claim_text`
|
|
255
264
|
(same fact id), then `kb_upsert` the requirement with the new ledger,
|
|
@@ -400,6 +409,14 @@ Prolog `symbol-coverage` also requires the test to `validates` the requirement
|
|
|
400
409
|
enough. Do not rely on legacy `// implements REQ-<area>-<behavior>` comments as the
|
|
401
410
|
traceability record.
|
|
402
411
|
|
|
412
|
+
Set the symbol's `title` to the behavioral member the extractor can locate in
|
|
413
|
+
`sourceFile`: `ClassName.methodName`, an exported function, or a class, not a
|
|
414
|
+
file or module name. A traceability link (`implements`, `covered_by`, …) from
|
|
415
|
+
a symbol whose `title` names no such member is refused by the granularity gate
|
|
416
|
+
when the file already has granular behavioral symbols, unless the symbol sets
|
|
417
|
+
`granularity_reason` to `config-artifact`, `module-level-behavior`,
|
|
418
|
+
`extractor-miss`, `legacy-link` or `test-suite`.
|
|
419
|
+
|
|
403
420
|
## Complete Logical Coverage
|
|
404
421
|
|
|
405
422
|
Decompose all atomic normative clauses into `claim_key`/`claim_text` entries in
|
|
@@ -97,6 +97,29 @@ Cosmetic edits (descriptions, labels) never stale proof. Execution-relevant
|
|
|
97
97
|
edits (command, artifact, targets, options, bindings, contract) change the
|
|
98
98
|
effective fingerprint and do.
|
|
99
99
|
|
|
100
|
+
## What counts toward proofProven
|
|
101
|
+
|
|
102
|
+
A requirement is proven only by its scenarios' tests, and a scenario test
|
|
103
|
+
counts only when it is an **end-to-end** test with a valid, fresh, passing
|
|
104
|
+
receipt for the current snapshot.
|
|
105
|
+
|
|
106
|
+
- The scope comes from the test entity's `verification_scope`
|
|
107
|
+
(`end_to_end`, `integration`, `unit`), never from the integration id or the
|
|
108
|
+
producer. Without `verification_scope`, a test tagged `e2e` (or whose
|
|
109
|
+
`source` path contains `e2e`) counts as end-to-end; anything else is
|
|
110
|
+
`unknown` scope.
|
|
111
|
+
- A `unit` or `integration` receipt is still recorded on the test entity, but
|
|
112
|
+
it does not move `proofProven` for a behavioural requirement: the
|
|
113
|
+
requirement keeps the `missing_passing_e2e` gap in `proofGaps`. The one
|
|
114
|
+
exception is a scenario whose specifying requirements are all grounded only
|
|
115
|
+
in component-scope UI predicates (`ui_pattern`, `same_pattern`,
|
|
116
|
+
`pattern_marker`); a unit or integration test that renders the component
|
|
117
|
+
may prove it.
|
|
118
|
+
- `coverage_depth` (`kb_coverage`, `kb_find_gaps`) follows the test's
|
|
119
|
+
authored `status` (`passing`) and scope, not its receipts: a passing
|
|
120
|
+
receipt does not change it, and a `passing` status without a fresh receipt
|
|
121
|
+
proves nothing.
|
|
122
|
+
|
|
100
123
|
## Attempt semantics (factual, never optimistic)
|
|
101
124
|
|
|
102
125
|
- `attempts: {status: "complete", entries: [...]}` — known history; the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kibi-cursor",
|
|
3
3
|
"displayName": "Kibi",
|
|
4
|
-
"version": "2.6.
|
|
4
|
+
"version": "2.6.10",
|
|
5
5
|
"description": "Optional Cursor adapter for Kibi. Requires project-local kibi-cli, kibi-mcp, and kibi-core (SWI-Prolog is bundled on Linux and macOS) before the bundled MCP server can start.",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|
|
7
7
|
"author": {
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
"kibi-traceability/resources/operation-access.md": "39f7972ab7f4ae7479e78f7072bb50e8e6c4cdf4f857425f69d2522d37db437c",
|
|
14
14
|
"kibi-traceability/resources/source-authoring.md": "408c6ee2bef1b84e0194c0538ef929c26a0a617e631b2234247388140dbbdd08",
|
|
15
15
|
"kibi-traceability/resources/traceability.md": "38c290a0bc71bd1692e115f22694743946e2f69630e134acfd43cee5f613fb88",
|
|
16
|
-
"kibi-usage/SKILL.md": "
|
|
16
|
+
"kibi-usage/SKILL.md": "82d50af1b0921275be2cf58879d3a5d148ee171ec67d78872fbf1ea385bc8b13",
|
|
17
17
|
"kibi-usage/resources/branch-lifecycle.md": "f1bf359e9826e83c548f3cd0287f8175a62456527b0132b06b3f9f74aa59b7d6",
|
|
18
18
|
"kibi-usage/resources/fact-lanes.md": "e95c4a729264c81dd45100a4915fdf4f2dead19ce1fa0a0667da90b5e18e06ae",
|
|
19
19
|
"kibi-usage/resources/kb-improvement.md": "a8408fce27342bdce6415a6718599e53fe00bb33aa1fd3dc42353ec6f61adcd7",
|
|
20
20
|
"kibi-usage/resources/logic-ir.md": "0e8ce8aad07433ab4803ec169149ff6c4e1cf8cf010af18fa6fd67862d9be807",
|
|
21
21
|
"kibi-usage/resources/operation-access.md": "eb455796c066787ffd3fae8db0db1d3e87a84265a57f06ae61e30103cd6aed66",
|
|
22
|
-
"kibi-usage/resources/proof.md": "
|
|
22
|
+
"kibi-usage/resources/proof.md": "2348819078034dd3df25664c4c707ff98f17520bbbd335bff4f48611cf672bb3",
|
|
23
23
|
"kibi-usage/resources/relationship-directions.md": "0fdd67032c2d15299f772845fc4f807eb9435b09507bd87a5911ab33db2f143d",
|
|
24
24
|
"kibi-usage/resources/source-authoring.md": "a29d411fe86e6e29ce364e4ad5925bda40127c4b328a4c657d5b5f0d9fe98ff1",
|
|
25
25
|
"kibi-usage/resources/ui-requirements.md": "47a42dccbabe1e636d6b89e19e21e1ac0704b6d46a577d913e1482435ab7afb8",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: kibi-usage
|
|
3
3
|
name: Kibi Usage
|
|
4
4
|
description: Use Kibi's source-first, exact-Git, migration-aware, proof-aware operations safely across MCP or the trusted local CLI, including partial completion repair.
|
|
5
|
-
version: 2.
|
|
5
|
+
version: 2.15.0
|
|
6
6
|
kibiCompatibility: ">=1.0.0"
|
|
7
7
|
tags:
|
|
8
8
|
- kibi
|
|
@@ -237,7 +237,11 @@ authored. Each one is the order the write path accepts.
|
|
|
237
237
|
fact, `requires_predicate` to `relationshipTarget` and `specified_by` to
|
|
238
238
|
its scenario: `specified_by` (req → scenario) is sent in the
|
|
239
239
|
requirement's write, never in the scenario's, so create the scenario
|
|
240
|
-
first
|
|
240
|
+
first, with `assumes` links (scenario → `property_value` fact, sent in
|
|
241
|
+
the scenario's own write) to the values its outcome relies on. Set
|
|
242
|
+
`expects` only on a scenario that has `assumes` links; `expects: success`
|
|
243
|
+
without them only yields `scenario-feasibility-unknown` ("assumes
|
|
244
|
+
nothing"). A
|
|
241
245
|
`modeled` entry and its grounding link must arrive in the same write
|
|
242
246
|
(`modeled semantic_inventory entries (n) must equal logical grounding
|
|
243
247
|
relationships (m)`); a clause not grounded yet stays `status: missing`
|
|
@@ -249,7 +253,12 @@ authored. Each one is the order the write path accepts.
|
|
|
249
253
|
claim_keys must match logical grounding target claim_keys exactly`.
|
|
250
254
|
Prefer supersession for a change of meaning: analyze the new prose,
|
|
251
255
|
write its facts, write the new requirement (`-v2`) with `supersedes` to
|
|
252
|
-
the old one, then set the old one to `status: closed`.
|
|
256
|
+
the old one, then set the old one to `status: closed`. Its scenario
|
|
257
|
+
follows the same rule as in recipe 1: create the new scenario (with
|
|
258
|
+
`assumes` to the `property_value` facts it relies on, and `expects` only
|
|
259
|
+
when it has them) before the `-v2` write that sends `specified_by`, then
|
|
260
|
+
re-point the old scenario (its `assumes` go in its own write) or close
|
|
261
|
+
it. For a wording fix
|
|
253
262
|
that keeps the meaning, re-ground in place: analyze the new prose,
|
|
254
263
|
`kb_upsert` each grounding fact with the new `claim_key`/`claim_text`
|
|
255
264
|
(same fact id), then `kb_upsert` the requirement with the new ledger,
|
|
@@ -400,6 +409,14 @@ Prolog `symbol-coverage` also requires the test to `validates` the requirement
|
|
|
400
409
|
enough. Do not rely on legacy `// implements REQ-<area>-<behavior>` comments as the
|
|
401
410
|
traceability record.
|
|
402
411
|
|
|
412
|
+
Set the symbol's `title` to the behavioral member the extractor can locate in
|
|
413
|
+
`sourceFile`: `ClassName.methodName`, an exported function, or a class, not a
|
|
414
|
+
file or module name. A traceability link (`implements`, `covered_by`, …) from
|
|
415
|
+
a symbol whose `title` names no such member is refused by the granularity gate
|
|
416
|
+
when the file already has granular behavioral symbols, unless the symbol sets
|
|
417
|
+
`granularity_reason` to `config-artifact`, `module-level-behavior`,
|
|
418
|
+
`extractor-miss`, `legacy-link` or `test-suite`.
|
|
419
|
+
|
|
403
420
|
## Complete Logical Coverage
|
|
404
421
|
|
|
405
422
|
Decompose all atomic normative clauses into `claim_key`/`claim_text` entries in
|
|
@@ -97,6 +97,29 @@ Cosmetic edits (descriptions, labels) never stale proof. Execution-relevant
|
|
|
97
97
|
edits (command, artifact, targets, options, bindings, contract) change the
|
|
98
98
|
effective fingerprint and do.
|
|
99
99
|
|
|
100
|
+
## What counts toward proofProven
|
|
101
|
+
|
|
102
|
+
A requirement is proven only by its scenarios' tests, and a scenario test
|
|
103
|
+
counts only when it is an **end-to-end** test with a valid, fresh, passing
|
|
104
|
+
receipt for the current snapshot.
|
|
105
|
+
|
|
106
|
+
- The scope comes from the test entity's `verification_scope`
|
|
107
|
+
(`end_to_end`, `integration`, `unit`), never from the integration id or the
|
|
108
|
+
producer. Without `verification_scope`, a test tagged `e2e` (or whose
|
|
109
|
+
`source` path contains `e2e`) counts as end-to-end; anything else is
|
|
110
|
+
`unknown` scope.
|
|
111
|
+
- A `unit` or `integration` receipt is still recorded on the test entity, but
|
|
112
|
+
it does not move `proofProven` for a behavioural requirement: the
|
|
113
|
+
requirement keeps the `missing_passing_e2e` gap in `proofGaps`. The one
|
|
114
|
+
exception is a scenario whose specifying requirements are all grounded only
|
|
115
|
+
in component-scope UI predicates (`ui_pattern`, `same_pattern`,
|
|
116
|
+
`pattern_marker`); a unit or integration test that renders the component
|
|
117
|
+
may prove it.
|
|
118
|
+
- `coverage_depth` (`kb_coverage`, `kb_find_gaps`) follows the test's
|
|
119
|
+
authored `status` (`passing`) and scope, not its receipts: a passing
|
|
120
|
+
receipt does not change it, and a `passing` status without a fresh receipt
|
|
121
|
+
proves nothing.
|
|
122
|
+
|
|
100
123
|
## Attempt semantics (factual, never optimistic)
|
|
101
124
|
|
|
102
125
|
- `attempts: {status: "complete", entries: [...]}` — known history; the
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kibi-cursor",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.10",
|
|
4
4
|
"description": "Kibi Cursor plugin - thin adapter for Cursor MCP integration and editor hooks",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"kibi-agent-core": "^0.
|
|
62
|
+
"kibi-agent-core": "^0.3.0"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@types/node": "latest",
|
package/skills/.canon-hash.json
CHANGED
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
"kibi-traceability/resources/operation-access.md": "39f7972ab7f4ae7479e78f7072bb50e8e6c4cdf4f857425f69d2522d37db437c",
|
|
14
14
|
"kibi-traceability/resources/source-authoring.md": "408c6ee2bef1b84e0194c0538ef929c26a0a617e631b2234247388140dbbdd08",
|
|
15
15
|
"kibi-traceability/resources/traceability.md": "38c290a0bc71bd1692e115f22694743946e2f69630e134acfd43cee5f613fb88",
|
|
16
|
-
"kibi-usage/SKILL.md": "
|
|
16
|
+
"kibi-usage/SKILL.md": "82d50af1b0921275be2cf58879d3a5d148ee171ec67d78872fbf1ea385bc8b13",
|
|
17
17
|
"kibi-usage/resources/branch-lifecycle.md": "f1bf359e9826e83c548f3cd0287f8175a62456527b0132b06b3f9f74aa59b7d6",
|
|
18
18
|
"kibi-usage/resources/fact-lanes.md": "e95c4a729264c81dd45100a4915fdf4f2dead19ce1fa0a0667da90b5e18e06ae",
|
|
19
19
|
"kibi-usage/resources/kb-improvement.md": "a8408fce27342bdce6415a6718599e53fe00bb33aa1fd3dc42353ec6f61adcd7",
|
|
20
20
|
"kibi-usage/resources/logic-ir.md": "0e8ce8aad07433ab4803ec169149ff6c4e1cf8cf010af18fa6fd67862d9be807",
|
|
21
21
|
"kibi-usage/resources/operation-access.md": "eb455796c066787ffd3fae8db0db1d3e87a84265a57f06ae61e30103cd6aed66",
|
|
22
|
-
"kibi-usage/resources/proof.md": "
|
|
22
|
+
"kibi-usage/resources/proof.md": "2348819078034dd3df25664c4c707ff98f17520bbbd335bff4f48611cf672bb3",
|
|
23
23
|
"kibi-usage/resources/relationship-directions.md": "0fdd67032c2d15299f772845fc4f807eb9435b09507bd87a5911ab33db2f143d",
|
|
24
24
|
"kibi-usage/resources/source-authoring.md": "a29d411fe86e6e29ce364e4ad5925bda40127c4b328a4c657d5b5f0d9fe98ff1",
|
|
25
25
|
"kibi-usage/resources/ui-requirements.md": "47a42dccbabe1e636d6b89e19e21e1ac0704b6d46a577d913e1482435ab7afb8",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: kibi-usage
|
|
3
3
|
name: Kibi Usage
|
|
4
4
|
description: Use Kibi's source-first, exact-Git, migration-aware, proof-aware operations safely across MCP or the trusted local CLI, including partial completion repair.
|
|
5
|
-
version: 2.
|
|
5
|
+
version: 2.15.0
|
|
6
6
|
kibiCompatibility: ">=1.0.0"
|
|
7
7
|
tags:
|
|
8
8
|
- kibi
|
|
@@ -237,7 +237,11 @@ authored. Each one is the order the write path accepts.
|
|
|
237
237
|
fact, `requires_predicate` to `relationshipTarget` and `specified_by` to
|
|
238
238
|
its scenario: `specified_by` (req → scenario) is sent in the
|
|
239
239
|
requirement's write, never in the scenario's, so create the scenario
|
|
240
|
-
first
|
|
240
|
+
first, with `assumes` links (scenario → `property_value` fact, sent in
|
|
241
|
+
the scenario's own write) to the values its outcome relies on. Set
|
|
242
|
+
`expects` only on a scenario that has `assumes` links; `expects: success`
|
|
243
|
+
without them only yields `scenario-feasibility-unknown` ("assumes
|
|
244
|
+
nothing"). A
|
|
241
245
|
`modeled` entry and its grounding link must arrive in the same write
|
|
242
246
|
(`modeled semantic_inventory entries (n) must equal logical grounding
|
|
243
247
|
relationships (m)`); a clause not grounded yet stays `status: missing`
|
|
@@ -249,7 +253,12 @@ authored. Each one is the order the write path accepts.
|
|
|
249
253
|
claim_keys must match logical grounding target claim_keys exactly`.
|
|
250
254
|
Prefer supersession for a change of meaning: analyze the new prose,
|
|
251
255
|
write its facts, write the new requirement (`-v2`) with `supersedes` to
|
|
252
|
-
the old one, then set the old one to `status: closed`.
|
|
256
|
+
the old one, then set the old one to `status: closed`. Its scenario
|
|
257
|
+
follows the same rule as in recipe 1: create the new scenario (with
|
|
258
|
+
`assumes` to the `property_value` facts it relies on, and `expects` only
|
|
259
|
+
when it has them) before the `-v2` write that sends `specified_by`, then
|
|
260
|
+
re-point the old scenario (its `assumes` go in its own write) or close
|
|
261
|
+
it. For a wording fix
|
|
253
262
|
that keeps the meaning, re-ground in place: analyze the new prose,
|
|
254
263
|
`kb_upsert` each grounding fact with the new `claim_key`/`claim_text`
|
|
255
264
|
(same fact id), then `kb_upsert` the requirement with the new ledger,
|
|
@@ -400,6 +409,14 @@ Prolog `symbol-coverage` also requires the test to `validates` the requirement
|
|
|
400
409
|
enough. Do not rely on legacy `// implements REQ-<area>-<behavior>` comments as the
|
|
401
410
|
traceability record.
|
|
402
411
|
|
|
412
|
+
Set the symbol's `title` to the behavioral member the extractor can locate in
|
|
413
|
+
`sourceFile`: `ClassName.methodName`, an exported function, or a class, not a
|
|
414
|
+
file or module name. A traceability link (`implements`, `covered_by`, …) from
|
|
415
|
+
a symbol whose `title` names no such member is refused by the granularity gate
|
|
416
|
+
when the file already has granular behavioral symbols, unless the symbol sets
|
|
417
|
+
`granularity_reason` to `config-artifact`, `module-level-behavior`,
|
|
418
|
+
`extractor-miss`, `legacy-link` or `test-suite`.
|
|
419
|
+
|
|
403
420
|
## Complete Logical Coverage
|
|
404
421
|
|
|
405
422
|
Decompose all atomic normative clauses into `claim_key`/`claim_text` entries in
|
|
@@ -97,6 +97,29 @@ Cosmetic edits (descriptions, labels) never stale proof. Execution-relevant
|
|
|
97
97
|
edits (command, artifact, targets, options, bindings, contract) change the
|
|
98
98
|
effective fingerprint and do.
|
|
99
99
|
|
|
100
|
+
## What counts toward proofProven
|
|
101
|
+
|
|
102
|
+
A requirement is proven only by its scenarios' tests, and a scenario test
|
|
103
|
+
counts only when it is an **end-to-end** test with a valid, fresh, passing
|
|
104
|
+
receipt for the current snapshot.
|
|
105
|
+
|
|
106
|
+
- The scope comes from the test entity's `verification_scope`
|
|
107
|
+
(`end_to_end`, `integration`, `unit`), never from the integration id or the
|
|
108
|
+
producer. Without `verification_scope`, a test tagged `e2e` (or whose
|
|
109
|
+
`source` path contains `e2e`) counts as end-to-end; anything else is
|
|
110
|
+
`unknown` scope.
|
|
111
|
+
- A `unit` or `integration` receipt is still recorded on the test entity, but
|
|
112
|
+
it does not move `proofProven` for a behavioural requirement: the
|
|
113
|
+
requirement keeps the `missing_passing_e2e` gap in `proofGaps`. The one
|
|
114
|
+
exception is a scenario whose specifying requirements are all grounded only
|
|
115
|
+
in component-scope UI predicates (`ui_pattern`, `same_pattern`,
|
|
116
|
+
`pattern_marker`); a unit or integration test that renders the component
|
|
117
|
+
may prove it.
|
|
118
|
+
- `coverage_depth` (`kb_coverage`, `kb_find_gaps`) follows the test's
|
|
119
|
+
authored `status` (`passing`) and scope, not its receipts: a passing
|
|
120
|
+
receipt does not change it, and a `passing` status without a fresh receipt
|
|
121
|
+
proves nothing.
|
|
122
|
+
|
|
100
123
|
## Attempt semantics (factual, never optimistic)
|
|
101
124
|
|
|
102
125
|
- `attempts: {status: "complete", entries: [...]}` — known history; the
|