kibi-cli 2.22.1 → 2.24.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-operation-metadata.d.ts +1 -1
- package/dist/cli-operation-metadata.js +1 -1
- package/dist/cli-register-foundation.d.ts.map +1 -1
- package/dist/cli-register-foundation.js +1 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +51 -3
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +28 -0
- package/dist/commands/migrate.d.ts +10 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +81 -9
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +15 -1
- package/dist/decision-firmness.d.ts +16 -4
- package/dist/decision-firmness.d.ts.map +1 -1
- package/dist/decision-firmness.js +29 -6
- package/dist/extractors/markdown.d.ts.map +1 -1
- package/dist/extractors/markdown.js +39 -36
- package/dist/intent-search.d.ts +2 -0
- package/dist/intent-search.d.ts.map +1 -1
- package/dist/intent-search.js +43 -4
- package/dist/operations/bootstrap/activation.d.ts +7 -1
- package/dist/operations/bootstrap/activation.d.ts.map +1 -1
- package/dist/operations/bootstrap/activation.js +27 -2
- package/dist/operations/bootstrap/candidate-helpers.d.ts +6 -0
- package/dist/operations/bootstrap/candidate-helpers.d.ts.map +1 -1
- package/dist/operations/bootstrap/candidate-helpers.js +19 -0
- package/dist/operations/bootstrap/generate.d.ts.map +1 -1
- package/dist/operations/bootstrap/generate.js +56 -16
- package/dist/operations/bootstrap/guidance-actions.d.ts.map +1 -1
- package/dist/operations/bootstrap/guidance-actions.js +14 -2
- package/dist/operations/bootstrap/guidance.d.ts.map +1 -1
- package/dist/operations/bootstrap/guidance.js +6 -2
- package/dist/operations/bootstrap/intent-claims.d.ts.map +1 -1
- package/dist/operations/bootstrap/intent-claims.js +2 -2
- package/dist/operations/bootstrap/markdown-candidates.d.ts.map +1 -1
- package/dist/operations/bootstrap/markdown-candidates.js +2 -2
- package/dist/operations/bootstrap/presentation.d.ts.map +1 -1
- package/dist/operations/bootstrap/presentation.js +75 -9
- package/dist/operations/bootstrap/types.d.ts +6 -0
- package/dist/operations/bootstrap/types.d.ts.map +1 -1
- package/dist/operations/migration/firm-supersede.d.ts +19 -0
- package/dist/operations/migration/firm-supersede.d.ts.map +1 -0
- package/dist/operations/migration/firm-supersede.js +60 -0
- package/dist/operations/migration/kb-sources.d.ts +8 -5
- package/dist/operations/migration/kb-sources.d.ts.map +1 -1
- package/dist/operations/migration/kb-sources.js +50 -14
- package/dist/operations/migration/schema6.d.ts.map +1 -1
- package/dist/operations/migration/schema6.js +52 -2
- package/dist/operations/migration/source-paths.d.ts +18 -1
- package/dist/operations/migration/source-paths.d.ts.map +1 -1
- package/dist/operations/migration/source-paths.js +111 -16
- package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
- package/dist/operations/modeling/suggest-predicates.js +22 -7
- package/dist/operations/mutation/requirement-semantics.d.ts +19 -1
- package/dist/operations/mutation/requirement-semantics.d.ts.map +1 -1
- package/dist/operations/mutation/requirement-semantics.js +63 -2
- package/dist/operations/mutation/strict-fact.js +1 -1
- package/dist/operations/mutation/upsert.d.ts.map +1 -1
- package/dist/operations/mutation/upsert.js +2 -1
- package/dist/operations/planning/apply-plan.d.ts.map +1 -1
- package/dist/operations/planning/apply-plan.js +22 -2
- package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
- package/dist/operations/semantic-advisor/analyze-prose.js +49 -17
- package/dist/public/impact/analyzer.d.ts.map +1 -1
- package/dist/public/impact/analyzer.js +7 -1
- package/dist/public/impact/diagnostics.d.ts.map +1 -1
- package/dist/public/impact/diagnostics.js +16 -3
- package/dist/public/impact/types.d.ts +2 -0
- package/dist/public/impact/types.d.ts.map +1 -1
- package/dist/public/operations/catalog.d.ts +8 -3
- package/dist/public/operations/catalog.d.ts.map +1 -1
- package/dist/public/operations/check-executor.d.ts.map +1 -1
- package/dist/public/operations/check-executor.js +10 -3
- package/dist/public/operations/check-helpers.d.ts +10 -0
- package/dist/public/operations/check-helpers.d.ts.map +1 -1
- package/dist/public/operations/check-helpers.js +54 -0
- package/dist/public/operations/contracts.d.ts.map +1 -1
- package/dist/public/operations/contracts.js +1 -0
- package/dist/public/operations/decision-firmness.d.ts +14 -0
- package/dist/public/operations/decision-firmness.d.ts.map +1 -1
- package/dist/public/operations/decision-firmness.js +60 -7
- package/dist/public/operations/discovery-executors.d.ts +18 -0
- package/dist/public/operations/discovery-executors.d.ts.map +1 -1
- package/dist/public/operations/discovery-executors.js +80 -8
- package/dist/public/operations/schema6-check-actions.d.ts +4 -0
- package/dist/public/operations/schema6-check-actions.d.ts.map +1 -1
- package/dist/public/operations/schema6-check-actions.js +39 -2
- package/dist/public/operations/source-path-dangling.d.ts +1 -1
- package/dist/public/operations/source-path-dangling.d.ts.map +1 -1
- package/dist/public/operations/source-path-dangling.js +11 -2
- package/dist/public/operations/specs/composite.d.ts +1 -1
- package/dist/public/operations/specs/discovery.d.ts +5 -0
- package/dist/public/operations/specs/discovery.d.ts.map +1 -1
- package/dist/public/operations/specs/discovery.js +5 -0
- package/dist/public/operations/specs/planning.d.ts +1 -1
- package/dist/public/operations/specs/planning.js +1 -1
- package/dist/public/operations/specs/reporting.d.ts.map +1 -1
- package/dist/public/operations/specs/reporting.js +6 -4
- 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 +4 -2
- package/dist/public/operations/specs/upsert.d.ts +1 -1
- package/dist/public/operations/specs/upsert.js +1 -1
- package/dist/public/schemas/entity.js +1 -1
- package/dist/public/skills/kibi-bootstrap/SKILL.md +5 -4
- package/dist/public/skills/kibi-usage/SKILL.md +36 -16
- package/dist/public/skills/kibi-usage/resources/workflows.md +3 -1
- package/dist/schemas/entity.schema.json +1 -1
- package/dist/search-answer.d.ts +14 -0
- package/dist/search-answer.d.ts.map +1 -1
- package/dist/search-answer.js +51 -5
- package/dist/traceability/git-change-snapshot.d.ts +46 -0
- package/dist/traceability/git-change-snapshot.d.ts.map +1 -1
- package/dist/traceability/git-change-snapshot.js +187 -3
- package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
- package/dist/traceability/staged-diagnostics.js +5 -6
- package/dist/traceability/staged-inventory-drift.d.ts +24 -0
- package/dist/traceability/staged-inventory-drift.d.ts.map +1 -0
- package/dist/traceability/staged-inventory-drift.js +84 -0
- package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
- package/dist/traceability/staged-symbols-manifest.js +1 -2
- package/dist/types/entities.d.ts +2 -2
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/utils/content-freshness.d.ts +9 -0
- package/dist/utils/content-freshness.d.ts.map +1 -1
- package/dist/utils/content-freshness.js +33 -0
- package/dist/utils/kb-manifest.d.ts +7 -0
- package/dist/utils/kb-manifest.d.ts.map +1 -1
- package/dist/utils/kb-manifest.js +6 -0
- package/dist/utils/merge-driver-setup.d.ts +10 -0
- package/dist/utils/merge-driver-setup.d.ts.map +1 -0
- package/dist/utils/merge-driver-setup.js +69 -0
- package/dist/utils/rule-registry.generated.d.ts +1 -1
- package/dist/utils/rule-registry.generated.js +1 -1
- package/dist/utils/schema-version.d.ts +1 -1
- package/dist/utils/schema-version.d.ts.map +1 -1
- package/dist/utils/schema-version.js +3 -1
- package/package.json +2 -2
- package/src/public/impact/analyzer.ts +13 -1
- package/src/public/impact/diagnostics.ts +20 -3
- package/src/public/impact/types.ts +2 -0
- package/src/public/operations/check-executor.ts +16 -4
- package/src/public/operations/check-helpers.ts +65 -0
- package/src/public/operations/contracts.ts +1 -0
- package/src/public/operations/decision-firmness.ts +83 -10
- package/src/public/operations/discovery-executors.ts +124 -7
- package/src/public/operations/schema6-check-actions.ts +43 -2
- package/src/public/operations/source-path-dangling.ts +12 -2
- package/src/public/operations/specs/discovery.ts +6 -0
- package/src/public/operations/specs/planning.ts +1 -1
- package/src/public/operations/specs/reporting.ts +6 -4
- package/src/public/operations/specs/semantic.ts +4 -2
- package/src/public/operations/specs/upsert.ts +1 -1
- package/src/public/schemas/entity.ts +1 -1
- package/src/public/skills/kibi-bootstrap/SKILL.md +5 -4
- package/src/public/skills/kibi-usage/SKILL.md +36 -16
- package/src/public/skills/kibi-usage/resources/workflows.md +3 -1
- package/src/schemas/entity.schema.json +1 -1
|
@@ -136,9 +136,11 @@ export function suppressionCounts(rows) {
|
|
|
136
136
|
.map(([reason, count]) => ({ reason, count }))
|
|
137
137
|
.sort((left, right) => right.count - left.count || left.reason.localeCompare(right.reason));
|
|
138
138
|
}
|
|
139
|
+
const EXISTING_REASONS = ["entity_exists"];
|
|
140
|
+
const FILTERED_REASONS = ["filtered_by_entity_type", "below_min_confidence"];
|
|
139
141
|
/** Declared claims per knowledge source against what the plan writes. */
|
|
140
142
|
// implements REQ-bootstrap-intent-claim-accounting
|
|
141
|
-
function claimAccounting(declared, candidates, suppressed) {
|
|
143
|
+
function claimAccounting(declared, candidates, suppressed, signals) {
|
|
142
144
|
return (declared.knowledgeSources ?? []).flatMap((source) => {
|
|
143
145
|
const count = (declared.intentClaims ?? []).filter((claim) => claim.sourceId === source.id).length;
|
|
144
146
|
if (count === 0)
|
|
@@ -146,14 +148,75 @@ function claimAccounting(declared, candidates, suppressed) {
|
|
|
146
148
|
const prefix = `claim:${source.id}:`;
|
|
147
149
|
const planned = candidates.filter((candidate) => candidate.sourceKind === "intent_claim" &&
|
|
148
150
|
candidate.candidateId.startsWith(prefix)).length;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const
|
|
151
|
+
// Rows cite their claim by candidate ID, or by sourceId when the claim
|
|
152
|
+
// never became a candidate (stale source, missing excerpt, activation).
|
|
153
|
+
const sourceRows = suppressed.filter((row) => String(row.candidateId ?? "").startsWith(prefix) ||
|
|
154
|
+
(!row.candidateId && row.sourceId === source.id));
|
|
155
|
+
const rows = (reasons) => sourceRows.filter((row) => reasons.includes(String(row.reason)));
|
|
156
|
+
const existing = rows(EXISTING_REASONS).length;
|
|
152
157
|
// Claims the caller filtered out (entityTypes, minConfidence) are not lost.
|
|
153
|
-
const
|
|
154
|
-
|
|
158
|
+
const filteredRows = rows(FILTERED_REASONS);
|
|
159
|
+
const filtered = filteredRows.length;
|
|
160
|
+
// The rest is not planned; each claim is attributed to one reason, in
|
|
161
|
+
// order, so the counts add up to what was declared.
|
|
162
|
+
let rest = Math.max(0, count - planned - existing - filtered);
|
|
163
|
+
const take = (value) => {
|
|
164
|
+
const taken = Math.min(rest, value);
|
|
165
|
+
rest -= taken;
|
|
166
|
+
return taken;
|
|
167
|
+
};
|
|
168
|
+
const byActivation = take(rows(["suppressed_by_activation"]).length);
|
|
169
|
+
const otherRows = sourceRows.filter((row) => ![
|
|
170
|
+
...EXISTING_REASONS,
|
|
171
|
+
...FILTERED_REASONS,
|
|
172
|
+
"suppressed_by_activation",
|
|
173
|
+
].includes(String(row.reason)));
|
|
174
|
+
const suppressedCount = take(otherRows.length);
|
|
175
|
+
// A claim below minConfidence or invalid at write time also leaves a
|
|
176
|
+
// follow-up; it is already counted by its row.
|
|
177
|
+
const counted = new Set([...filteredRows, ...otherRows].map((row) => String(row.sourcePath)));
|
|
178
|
+
const sourceOnly = take(signals.filter((signal) => signal.evidence.some((line) => line.startsWith(`intent_claim:${source.id}:`)) && !counted.has(signal.sourcePath)).length);
|
|
179
|
+
return [
|
|
180
|
+
{
|
|
181
|
+
source,
|
|
182
|
+
declared: count,
|
|
183
|
+
planned,
|
|
184
|
+
existing,
|
|
185
|
+
filtered,
|
|
186
|
+
byActivation,
|
|
187
|
+
suppressed: suppressedCount,
|
|
188
|
+
sourceOnly,
|
|
189
|
+
unattributed: rest,
|
|
190
|
+
},
|
|
191
|
+
];
|
|
155
192
|
});
|
|
156
193
|
}
|
|
194
|
+
/** One diagnostic line per source that names why claims were not planned. */
|
|
195
|
+
// implements REQ-bootstrap-intent-claim-accounting
|
|
196
|
+
function accountingLine(row, activation) {
|
|
197
|
+
const notPlanned = row.byActivation + row.suppressed + row.sourceOnly + row.unattributed;
|
|
198
|
+
const reasons = [
|
|
199
|
+
...(row.byActivation > 0
|
|
200
|
+
? [
|
|
201
|
+
`${row.byActivation} because bootstrap synthesis is suppressed in ${activation.activationMode}; compile them with kb_compile_intent`,
|
|
202
|
+
]
|
|
203
|
+
: []),
|
|
204
|
+
...(row.suppressed > 0
|
|
205
|
+
? [`${row.suppressed} suppressed (rows in suppressedCandidates)`]
|
|
206
|
+
: []),
|
|
207
|
+
...(row.sourceOnly > 0
|
|
208
|
+
? [
|
|
209
|
+
`${row.sourceOnly} need authoring (sourceOnlySignals; compile them with kb_compile_intent)`,
|
|
210
|
+
]
|
|
211
|
+
: []),
|
|
212
|
+
...(row.unattributed > 0
|
|
213
|
+
? [
|
|
214
|
+
`${row.unattributed} without a suppressedCandidates row or follow-up (see diagnostics)`,
|
|
215
|
+
]
|
|
216
|
+
: []),
|
|
217
|
+
];
|
|
218
|
+
return `Knowledge source ${row.source.id} (${row.source.authority}): ${row.declared} declared claim(s), ${row.planned} planned, ${row.existing} already in the KB, ${row.filtered} filtered out, ${notPlanned} not planned${reasons.length > 0 ? `: ${reasons.join("; ")}` : ""}.`;
|
|
219
|
+
}
|
|
157
220
|
// implements REQ-KIBI-BOOTSTRAP-PLAN, REQ-bootstrap-discovered-candidate-budget, REQ-bootstrap-provenance-stubs
|
|
158
221
|
export function presentBootstrap(input) {
|
|
159
222
|
const declaredContext = normalizeBootstrapContext(input.bootstrapContext);
|
|
@@ -238,10 +301,13 @@ export function presentBootstrap(input) {
|
|
|
238
301
|
candidateId: candidate.candidateId,
|
|
239
302
|
};
|
|
240
303
|
});
|
|
241
|
-
const accounting = claimAccounting(declaredContext, input.candidates, input.suppressedCandidates);
|
|
304
|
+
const accounting = claimAccounting(declaredContext, input.candidates, input.suppressedCandidates, input.sourceOnlySignals);
|
|
242
305
|
const droppedAuthoritative = accounting.filter((row) => row.source.authority === "authoritative" &&
|
|
243
306
|
row.planned + row.existing + row.filtered === 0);
|
|
244
|
-
const status =
|
|
307
|
+
const status =
|
|
308
|
+
// A seeded KB is a handoff unless its plan holds declared claims.
|
|
309
|
+
input.activation.activationState === "root_active_seeded" &&
|
|
310
|
+
input.activation.applyBlocked
|
|
245
311
|
? "handoff"
|
|
246
312
|
: applyBlocked
|
|
247
313
|
? "blocked"
|
|
@@ -277,7 +343,7 @@ export function presentBootstrap(input) {
|
|
|
277
343
|
`Suppressed candidates by reason: ${suppression.map((row) => `${row.reason} ${row.count}`).join(", ")} (rows in suppressedCandidates).`,
|
|
278
344
|
]
|
|
279
345
|
: []),
|
|
280
|
-
...accounting.map((row) =>
|
|
346
|
+
...accounting.map((row) => accountingLine(row, input.activation)),
|
|
281
347
|
];
|
|
282
348
|
const planBody = {
|
|
283
349
|
version: "kibi.bootstrap-plan.v1",
|
|
@@ -105,6 +105,12 @@ export type ActivationPolicy = {
|
|
|
105
105
|
readonly activationMode: ActivationMode;
|
|
106
106
|
readonly applyBlocked: boolean;
|
|
107
107
|
readonly allowCandidateGeneration: boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Whether declared intent claims from bootstrapContext are planned. A
|
|
110
|
+
* seeded KB turns off discovered candidates but still plans these claims.
|
|
111
|
+
* Defaults to allowCandidateGeneration when omitted.
|
|
112
|
+
*/
|
|
113
|
+
readonly allowDeclaredClaims?: boolean;
|
|
108
114
|
readonly reason: string;
|
|
109
115
|
readonly handoffMessage?: string;
|
|
110
116
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/operations/bootstrap/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/operations/bootstrap/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Migration action code for the schema 10 acknowledgement. */
|
|
2
|
+
export declare const FIRM_SUPERSEDE_ACKNOWLEDGE_CODE = "firm_supersede_acknowledge";
|
|
3
|
+
/**
|
|
4
|
+
* Supersede edges recorded before schema 10 that replace a decision which
|
|
5
|
+
* now reads as firm from its origin, by a decision that is not firm, and
|
|
6
|
+
* that the manifest does not acknowledge yet. Nothing in the sources
|
|
7
|
+
* changes: the manifest only records that these supersedes predate the
|
|
8
|
+
* rule. Read-only.
|
|
9
|
+
*/
|
|
10
|
+
export declare function planFirmSupersedeAcknowledgement(workspaceRoot: string): string[];
|
|
11
|
+
/** The manifest list with the edges added, sorted and unique. */
|
|
12
|
+
export declare function mergeFirmSupersedeAcknowledgements(existing: readonly string[] | undefined, edges: readonly string[]): string[];
|
|
13
|
+
/**
|
|
14
|
+
* Record the acknowledged edges in the manifest; returns how many edges
|
|
15
|
+
* were acknowledged. Without a manifest there is no schema to upgrade from,
|
|
16
|
+
* so it refuses rather than report an acknowledgement it did not write.
|
|
17
|
+
*/
|
|
18
|
+
export declare function applyFirmSupersedeAcknowledgement(workspaceRoot: string): number;
|
|
19
|
+
//# sourceMappingURL=firm-supersede.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firm-supersede.d.ts","sourceRoot":"","sources":["../../../src/operations/migration/firm-supersede.ts"],"names":[],"mappings":"AAyBA,+DAA+D;AAE/D,eAAO,MAAM,+BAA+B,+BAA+B,CAAC;AAE5E;;;;;;GAMG;AAEH,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,MAAM,GACpB,MAAM,EAAE,CASV;AAED,iEAAiE;AAEjE,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACvC,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,MAAM,EAAE,CAEV;AAED;;;;GAIG;AAEH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,MAAM,GACpB,MAAM,CAiBR"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Kibi — repo-local, per-branch, queryable long-term memory for software projects
|
|
3
|
+
Copyright (C) 2026 Piotr Franczyk
|
|
4
|
+
|
|
5
|
+
This program is free software: you can redistribute it and/or modify
|
|
6
|
+
it under the terms of the GNU Affero General Public License as published by
|
|
7
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
(at your option) any later version.
|
|
9
|
+
|
|
10
|
+
This program is distributed in the hope that it will be useful,
|
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
GNU Affero General Public License for more details.
|
|
14
|
+
|
|
15
|
+
You should have received a copy of the GNU Affero General Public License
|
|
16
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
18
|
+
import { authoredSupersedes, implicitFirmSupersedes, listDecisionEntities, } from "../../public/operations/decision-firmness.js";
|
|
19
|
+
import { readKbManifest, writeKbManifest } from "../../utils/kb-manifest.js";
|
|
20
|
+
/** Migration action code for the schema 10 acknowledgement. */
|
|
21
|
+
// implements REQ-kb-decision-firmness-from-origin, REQ-cli-schema-migration
|
|
22
|
+
export const FIRM_SUPERSEDE_ACKNOWLEDGE_CODE = "firm_supersede_acknowledge";
|
|
23
|
+
/**
|
|
24
|
+
* Supersede edges recorded before schema 10 that replace a decision which
|
|
25
|
+
* now reads as firm from its origin, by a decision that is not firm, and
|
|
26
|
+
* that the manifest does not acknowledge yet. Nothing in the sources
|
|
27
|
+
* changes: the manifest only records that these supersedes predate the
|
|
28
|
+
* rule. Read-only.
|
|
29
|
+
*/
|
|
30
|
+
// implements REQ-kb-decision-firmness-from-origin, REQ-cli-schema-migration
|
|
31
|
+
export function planFirmSupersedeAcknowledgement(workspaceRoot) {
|
|
32
|
+
const entities = listDecisionEntities(workspaceRoot);
|
|
33
|
+
const known = new Set(readKbManifest(workspaceRoot)?.firmSupersedeAcknowledged ?? []);
|
|
34
|
+
return implicitFirmSupersedes(entities, authoredSupersedes(workspaceRoot, entities)).filter((edge) => !known.has(edge));
|
|
35
|
+
}
|
|
36
|
+
/** The manifest list with the edges added, sorted and unique. */
|
|
37
|
+
// implements REQ-kb-decision-firmness-from-origin
|
|
38
|
+
export function mergeFirmSupersedeAcknowledgements(existing, edges) {
|
|
39
|
+
return [...new Set([...(existing ?? []), ...edges])].sort();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Record the acknowledged edges in the manifest; returns how many edges
|
|
43
|
+
* were acknowledged. Without a manifest there is no schema to upgrade from,
|
|
44
|
+
* so it refuses rather than report an acknowledgement it did not write.
|
|
45
|
+
*/
|
|
46
|
+
// implements REQ-kb-decision-firmness-from-origin, REQ-cli-schema-migration
|
|
47
|
+
export function applyFirmSupersedeAcknowledgement(workspaceRoot) {
|
|
48
|
+
const edges = planFirmSupersedeAcknowledgement(workspaceRoot);
|
|
49
|
+
if (edges.length === 0)
|
|
50
|
+
return 0;
|
|
51
|
+
const manifest = readKbManifest(workspaceRoot);
|
|
52
|
+
if (manifest === null) {
|
|
53
|
+
throw new Error("Cannot acknowledge existing supersedes without .kb/manifest.json; run 'kibi migrate --yes', which writes the manifest and the acknowledgement together.");
|
|
54
|
+
}
|
|
55
|
+
writeKbManifest(workspaceRoot, {
|
|
56
|
+
...manifest,
|
|
57
|
+
firmSupersedeAcknowledged: mergeFirmSupersedeAcknowledgements(manifest.firmSupersedeAcknowledged, edges),
|
|
58
|
+
});
|
|
59
|
+
return edges.length;
|
|
60
|
+
}
|
|
@@ -19,10 +19,11 @@ export type FrontmatterSlice = Readonly<{
|
|
|
19
19
|
eol: "\n" | "\r\n";
|
|
20
20
|
}>;
|
|
21
21
|
/**
|
|
22
|
-
* Split a document
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
22
|
+
* Split a document around its YAML frontmatter: the opening and the closing
|
|
23
|
+
* delimiter are each a whole line holding only `---` (trailing whitespace
|
|
24
|
+
* allowed). A `---` inside a line, such as a Markdown table separator row
|
|
25
|
+
* in a quoted scalar, never ends the frontmatter. Returns null when there is
|
|
26
|
+
* no such opening and closing pair.
|
|
26
27
|
*/
|
|
27
28
|
export declare function sliceFrontmatter(content: string): FrontmatterSlice | null;
|
|
28
29
|
/**
|
|
@@ -36,7 +37,9 @@ export declare function readTopLevelField(frontmatter: string, key: string): unk
|
|
|
36
37
|
* Set one top-level scalar frontmatter key, leaving every other byte of the
|
|
37
38
|
* document unchanged: the key's line is replaced in place, or appended as the
|
|
38
39
|
* last frontmatter key when absent. Returns null when the key spans several
|
|
39
|
-
* lines or the edit would not read back as exactly that change
|
|
40
|
+
* lines or the edit would not read back as exactly that change: the written
|
|
41
|
+
* document is split and parsed again and must yield the same frontmatter and
|
|
42
|
+
* the same body.
|
|
40
43
|
*/
|
|
41
44
|
export declare function withTopLevelField(content: string, key: string, value: string): string | null;
|
|
42
45
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kb-sources.d.ts","sourceRoot":"","sources":["../../../src/operations/migration/kb-sources.ts"],"names":[],"mappings":"AA+BA,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,yBAAyB,CAAC;AAGjC,yEAAyE;AAEzE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAuBH,0EAA0E;AAE1E,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,SAAS,UAAU,EAAiB,GAC1C,gBAAgB,EAAE,CAkBpB;AAED,6DAA6D;AAE7D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH
|
|
1
|
+
{"version":3,"file":"kb-sources.d.ts","sourceRoot":"","sources":["../../../src/operations/migration/kb-sources.ts"],"names":[],"mappings":"AA+BA,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,yBAAyB,CAAC;AAGjC,yEAAyE;AAEzE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAuBH,0EAA0E;AAE1E,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,SAAS,UAAU,EAAiB,GAC1C,gBAAgB,EAAE,CAkBpB;AAED,6DAA6D;AAE7D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH;;;;;;GAMG;AAEH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAezE;AAUD;;;;;GAKG;AAEH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAe3E;AAoDD;;;;;;;GAOG;AAEH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,IAAI,CA0Bf;AAQD;;;;;;GAMG;AAEH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAsBf;AAID;;;;GAIG;AAEH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAY3E;AAqBD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMxD"}
|
|
@@ -65,22 +65,23 @@ export function listLaneMarkdownFiles(workspaceRoot, lanes = ENTITY_LANES) {
|
|
|
65
65
|
return result;
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
68
|
-
* Split a document
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
68
|
+
* Split a document around its YAML frontmatter: the opening and the closing
|
|
69
|
+
* delimiter are each a whole line holding only `---` (trailing whitespace
|
|
70
|
+
* allowed). A `---` inside a line, such as a Markdown table separator row
|
|
71
|
+
* in a quoted scalar, never ends the frontmatter. Returns null when there is
|
|
72
|
+
* no such opening and closing pair.
|
|
72
73
|
*/
|
|
73
74
|
// implements REQ-cli-schema-migration
|
|
74
75
|
export function sliceFrontmatter(content) {
|
|
75
76
|
const leading = content.length - content.trimStart().length;
|
|
76
|
-
|
|
77
|
+
const open = /^---[ \t]*\r?\n/.exec(content.slice(leading));
|
|
78
|
+
if (open === null)
|
|
77
79
|
return null;
|
|
78
|
-
const openEnd =
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const close = content.indexOf("---", leading + 3);
|
|
82
|
-
if (close <= openEnd || content[close - 1] !== "\n")
|
|
80
|
+
const openEnd = leading + open[0].length - 1;
|
|
81
|
+
const match = /^---[ \t]*\r?$/m.exec(content.slice(openEnd + 1));
|
|
82
|
+
if (match === null)
|
|
83
83
|
return null;
|
|
84
|
+
const close = openEnd + 1 + match.index;
|
|
84
85
|
const text = content.slice(openEnd + 1, close);
|
|
85
86
|
return {
|
|
86
87
|
prefix: content.slice(0, openEnd + 1),
|
|
@@ -121,10 +122,22 @@ export function readTopLevelField(frontmatter, key) {
|
|
|
121
122
|
return undefined;
|
|
122
123
|
}
|
|
123
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* A YAML double-quoted scalar for `value` with no run of three dashes, so a
|
|
127
|
+
* reader that splits the document on any `---` still finds the frontmatter
|
|
128
|
+
* intact. Every second dash of a run is written as the `\x2D` escape, which
|
|
129
|
+
* YAML reads back as the same dash.
|
|
130
|
+
*/
|
|
131
|
+
function doubleQuotedScalar(value) {
|
|
132
|
+
return JSON.stringify(value).replace(/-{3,}/g, (run) => [...run].map((dash, index) => (index % 2 === 1 ? "\\x2D" : dash)).join(""));
|
|
133
|
+
}
|
|
124
134
|
function scalarLine(key, value, previous) {
|
|
135
|
+
const quoted = `${key}: ${doubleQuotedScalar(value)}`;
|
|
136
|
+
if (value.includes("---"))
|
|
137
|
+
return quoted;
|
|
125
138
|
const raw = previous.slice(previous.indexOf(":") + 1).trim();
|
|
126
139
|
if (raw.startsWith('"'))
|
|
127
|
-
return
|
|
140
|
+
return quoted;
|
|
128
141
|
if (raw.startsWith("'"))
|
|
129
142
|
return `${key}: '${value.replaceAll("'", "''")}'`;
|
|
130
143
|
try {
|
|
@@ -135,13 +148,35 @@ function scalarLine(key, value, previous) {
|
|
|
135
148
|
catch {
|
|
136
149
|
// Fall through to a quoted scalar.
|
|
137
150
|
}
|
|
138
|
-
return
|
|
151
|
+
return quoted;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Whether `document` reads back, through the same frontmatter split, as
|
|
155
|
+
* exactly `expected` with the closing delimiter and body of `original`
|
|
156
|
+
* unchanged, and without a new `---` in its frontmatter that a reader
|
|
157
|
+
* splitting on any `---` would cut on.
|
|
158
|
+
*/
|
|
159
|
+
function readsBackAs(document, expected, original) {
|
|
160
|
+
const slice = sliceFrontmatter(document);
|
|
161
|
+
if (slice === null || slice.suffix !== original.suffix)
|
|
162
|
+
return false;
|
|
163
|
+
if (slice.text.includes("---") && !original.text.includes("---")) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
try {
|
|
167
|
+
return isDeepStrictEqual(loadYaml(slice.text), expected);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
139
172
|
}
|
|
140
173
|
/**
|
|
141
174
|
* Set one top-level scalar frontmatter key, leaving every other byte of the
|
|
142
175
|
* document unchanged: the key's line is replaced in place, or appended as the
|
|
143
176
|
* last frontmatter key when absent. Returns null when the key spans several
|
|
144
|
-
* lines or the edit would not read back as exactly that change
|
|
177
|
+
* lines or the edit would not read back as exactly that change: the written
|
|
178
|
+
* document is split and parsed again and must yield the same frontmatter and
|
|
179
|
+
* the same body.
|
|
145
180
|
*/
|
|
146
181
|
// implements REQ-cli-schema-migration
|
|
147
182
|
export function withTopLevelField(content, key, value) {
|
|
@@ -169,11 +204,12 @@ export function withTopLevelField(content, key, value) {
|
|
|
169
204
|
const { [key]: _nextValue, ...nextRest } = next;
|
|
170
205
|
if (!isDeepStrictEqual(beforeRest, nextRest))
|
|
171
206
|
return null;
|
|
207
|
+
const document = `${slice.prefix}${text}${slice.suffix}`;
|
|
208
|
+
return readsBackAs(document, next, slice) ? document : null;
|
|
172
209
|
}
|
|
173
210
|
catch {
|
|
174
211
|
return null;
|
|
175
212
|
}
|
|
176
|
-
return `${slice.prefix}${text}${slice.suffix}`;
|
|
177
213
|
}
|
|
178
214
|
function frontmatterRecord(text) {
|
|
179
215
|
const parsed = loadYaml(text);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema6.d.ts","sourceRoot":"","sources":["../../../src/operations/migration/schema6.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema6.d.ts","sourceRoot":"","sources":["../../../src/operations/migration/schema6.ts"],"names":[],"mappings":"AAwBA,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAEL,kCAAkC,EAClC,wBAAwB,EACxB,mBAAmB,EAEnB,wBAAwB,EAOzB,MAAM,kDAAkD,CAAC;AAyD1D,gEAAgE;AAEhE,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,+EAA+E;AAE/E,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,4DAA4D;AAE5D,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD,yEAAyE;AAEzE,eAAO,MAAM,gCAAgC,gCAAgC,CAAC;AAC9E,gEAAgE;AAEhE,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E;;;GAGG;AAEH,eAAO,MAAM,+CAA+C,+CACd,CAAC;AAC/C,iFAAiF;AAEjF,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,yEAAyE;AAEzE,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AAEpE,eAAO,MAAM,gCAAgC,2BAA2B,CAAC;AACzE,OAAO,EACL,kCAAkC,EAClC,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,GACzB,CAAC;AAgLF;;;;;;GAMG;AAEH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,GACpB,eAAe,EAAE,CAqEnB;AAyBD;;;GAGG;AAEH,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,MAAM,GACpB,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAsDnE;AAGD,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,uDAAuD;IACvD,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,CAAC,CAAC;AAEH;;;;;;GAMG;AAEH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,GAAG,wBAAwB,CAuP3B;AAED;;;;;;GAMG;AAEH,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG;IAClE,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC,CAuCA;AAED;;;GAGG;AAEH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,GACpB,eAAe,GAAG,IAAI,CAqBxB;AAED,qEAAqE;AAErE,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,eAAe,CAEjB;AAgDD,KAAK,YAAY,GAAG,QAAQ,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC,CAAC;AAEH,4DAA4D;AAE5D,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAoHf;AAED;;;GAGG;AAEH,eAAO,MAAM,+BAA+B,EAAE,WAAW,CAAC,MAAM,CAK9D,CAAC;AAGH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAYtD,CAAC"}
|
|
@@ -17,10 +17,12 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import path from "node:path";
|
|
19
19
|
import { extractFromMarkdown, } from "../../extractors/markdown.js";
|
|
20
|
+
import { FIRMNESS_FROM_ORIGIN_SCHEMA_VERSION } from "../../public/operations/decision-firmness.js";
|
|
20
21
|
import { migrationAction, } from "../../public/operations/migration-plan.js";
|
|
21
22
|
import { CLOSE_SUPERSEDED_REQUIREMENTS_ACTION_ID, CLOSE_SUPERSEDED_REQUIREMENTS_CODE, MIGRATION_SYNC_ACTION_ID, MIGRATION_SYNC_CODE, SOURCE_PATH_REWRITE_ACTION_ID, SOURCE_PATH_REWRITE_CODE, closeSupersededRequirementsActionInput, exceptionUnapprovedActionInput, migrationSyncActionInput, sourcePathReviewActionInput, sourcePathRewriteActionInput, supersessionCycleReviewActionInput, } from "../../public/operations/schema6-check-actions.js";
|
|
22
23
|
import { readAllShards } from "../../relationships/shards.js";
|
|
23
24
|
import { CONTEXT_MISSING_TAG_CODE, SEMANTIC_TEXT_PIN_CODE, applyContextMissingTags, applySemanticTextPins, countByType, planContextMissingTags, planSemanticTextPins, } from "./entity-body-context.js";
|
|
25
|
+
import { FIRM_SUPERSEDE_ACKNOWLEDGE_CODE, applyFirmSupersedeAcknowledgement, planFirmSupersedeAcknowledgement, } from "./firm-supersede.js";
|
|
24
26
|
import { applyInventoryRederivation, applyInventoryRederivationDroppingGrounding, planInventoryRederivation, } from "./inventory-rederive.js";
|
|
25
27
|
import { listLaneMarkdownFiles } from "./kb-sources.js";
|
|
26
28
|
import { applyOriginBackfill, planOriginBackfill } from "./origin-backfill.js";
|
|
@@ -470,6 +472,40 @@ export function buildSchema6MigrationFragment(input) {
|
|
|
470
472
|
}));
|
|
471
473
|
}
|
|
472
474
|
}
|
|
475
|
+
// Schema 10: a decision without firmness that an agent did not write now
|
|
476
|
+
// reads as firm. Acknowledge supersedes of such decisions recorded before
|
|
477
|
+
// that, so history does not block; new ones must come from a person.
|
|
478
|
+
if (input.currentSchemaVersion === null ||
|
|
479
|
+
input.currentSchemaVersion < FIRMNESS_FROM_ORIGIN_SCHEMA_VERSION) {
|
|
480
|
+
const edges = planFirmSupersedeAcknowledgement(input.workspaceRoot);
|
|
481
|
+
if (edges.length > 0) {
|
|
482
|
+
const id = "firm-supersede-acknowledge";
|
|
483
|
+
// Manifest only, but the bumped schema blocks without it.
|
|
484
|
+
sourceRewriteActionIds.push(id);
|
|
485
|
+
actions.push(migrationAction({
|
|
486
|
+
id,
|
|
487
|
+
code: FIRM_SUPERSEDE_ACKNOWLEDGE_CODE,
|
|
488
|
+
category: "schema",
|
|
489
|
+
safety: "automatic",
|
|
490
|
+
autoApplicable: true,
|
|
491
|
+
invocation: {
|
|
492
|
+
kind: "cli",
|
|
493
|
+
command_argv: ["kibi", "migrate", "--yes"],
|
|
494
|
+
},
|
|
495
|
+
affectedEntityIds: [
|
|
496
|
+
...new Set(edges.map((edge) => edge.split(" -> ")[0] ?? edge)),
|
|
497
|
+
].sort(),
|
|
498
|
+
affectedFiles: [".kb/manifest.json"],
|
|
499
|
+
postconditions: [{ rule: "decision-firm-superseded", findings: 0 }],
|
|
500
|
+
evidence: {
|
|
501
|
+
reason: "Schema 10 reads a requirement or ADR without firmness as firm unless an agent wrote it, and blocks a replacement of a firm decision that is not itself firm. Supersedes recorded before that are acknowledged in the manifest; no firmness is written.",
|
|
502
|
+
count: edges.length,
|
|
503
|
+
edges,
|
|
504
|
+
preserves: "every authored source file",
|
|
505
|
+
},
|
|
506
|
+
}));
|
|
507
|
+
}
|
|
508
|
+
}
|
|
473
509
|
const drift = planInventoryRederivation(input.workspaceRoot);
|
|
474
510
|
for (const plan of drift) {
|
|
475
511
|
const action = plan.safe ? rederiveAction(plan) : reviewAction(plan);
|
|
@@ -568,6 +604,9 @@ export function buildLifecycleRepairActions(workspaceRoot) {
|
|
|
568
604
|
continue;
|
|
569
605
|
actions.push(migrationAction(sourcePathReviewActionInput({
|
|
570
606
|
entityId: repair.entityId,
|
|
607
|
+
...(repair.field === "text_ref"
|
|
608
|
+
? { field: "text_ref" }
|
|
609
|
+
: {}),
|
|
571
610
|
value: repair.value,
|
|
572
611
|
file: repair.file,
|
|
573
612
|
reason: repair.refused,
|
|
@@ -622,12 +661,18 @@ function plannedRecords(value) {
|
|
|
622
661
|
// implements REQ-kibi-schema6-migration
|
|
623
662
|
function plannedRepairs(action) {
|
|
624
663
|
const rewrites = [];
|
|
625
|
-
for (const { entityId, file, from, to } of plannedRecords(action.evidence.rewrites)) {
|
|
664
|
+
for (const { entityId, file, field, from, to } of plannedRecords(action.evidence.rewrites)) {
|
|
626
665
|
if (typeof entityId === "string" &&
|
|
627
666
|
typeof file === "string" &&
|
|
628
667
|
typeof from === "string" &&
|
|
629
668
|
typeof to === "string") {
|
|
630
|
-
rewrites.push({
|
|
669
|
+
rewrites.push({
|
|
670
|
+
entityId,
|
|
671
|
+
file,
|
|
672
|
+
...(field === "text_ref" ? { field } : {}),
|
|
673
|
+
from,
|
|
674
|
+
to,
|
|
675
|
+
});
|
|
631
676
|
}
|
|
632
677
|
}
|
|
633
678
|
const removals = [];
|
|
@@ -661,6 +706,10 @@ export async function applySchema6MigrationAction(action, context) {
|
|
|
661
706
|
applySupersedesReasonAcknowledgement(context.workspaceRoot);
|
|
662
707
|
return;
|
|
663
708
|
}
|
|
709
|
+
case FIRM_SUPERSEDE_ACKNOWLEDGE_CODE: {
|
|
710
|
+
applyFirmSupersedeAcknowledgement(context.workspaceRoot);
|
|
711
|
+
return;
|
|
712
|
+
}
|
|
664
713
|
case SEMANTIC_INVENTORY_REDERIVE_CODE: {
|
|
665
714
|
const requirementId = action.affectedEntityIds[0];
|
|
666
715
|
if (requirementId === undefined)
|
|
@@ -740,6 +789,7 @@ export const SCHEMA6_AUTOMATIC_CODES = new Set([
|
|
|
740
789
|
SEMANTIC_TEXT_PIN_CODE,
|
|
741
790
|
CONTEXT_MISSING_TAG_CODE,
|
|
742
791
|
SUPERSEDES_REASON_ACKNOWLEDGE_CODE,
|
|
792
|
+
FIRM_SUPERSEDE_ACKNOWLEDGE_CODE,
|
|
743
793
|
SEMANTIC_INVENTORY_REDERIVE_CODE,
|
|
744
794
|
ENTITY_ORIGIN_BACKFILL_CODE,
|
|
745
795
|
CLOSE_SUPERSEDED_REQUIREMENTS_CODE,
|
|
@@ -10,10 +10,23 @@
|
|
|
10
10
|
* names the entity's own file or nothing Kibi can map is removed. A value
|
|
11
11
|
* naming another existing workspace path, an entity id or an http(s) URL is
|
|
12
12
|
* provenance and stays.
|
|
13
|
+
*
|
|
14
|
+
* `text_ref` points at independent evidence, so it is never dead data, but
|
|
15
|
+
* the same pre-canonical paths survive in it. A `text_ref` value shaped
|
|
16
|
+
* like one workspace file path (no spaces, a directory and an extension)
|
|
17
|
+
* that names nothing is dangling too: a moved knowledge file is rewritten
|
|
18
|
+
* to its `.kb/` path, and anything else needs a person, because Kibi cannot
|
|
19
|
+
* tell what evidence it meant. Prose, entity ids, URLs and lists in
|
|
20
|
+
* `text_ref` are not paths and are never judged.
|
|
13
21
|
*/
|
|
14
|
-
/**
|
|
22
|
+
/** The authored frontmatter fields that name workspace files. */
|
|
23
|
+
export type SourceField = "source" | "text_ref";
|
|
24
|
+
/** One authored `source` or `text_ref` value and the entity file that carries it. */
|
|
15
25
|
export type AuthoredSourceRef = Readonly<{
|
|
16
26
|
entityId: string;
|
|
27
|
+
field: SourceField;
|
|
28
|
+
/** A `text_ref` that is its requirement's semantic source: rewriting it changes the inventory hash. */
|
|
29
|
+
semanticSource?: boolean;
|
|
17
30
|
/** Workspace-relative, `/`-separated path of the entity's own file. */
|
|
18
31
|
file: string;
|
|
19
32
|
value: unknown;
|
|
@@ -52,6 +65,8 @@ export type SourceRepair = AuthoredSourceRef & Readonly<{
|
|
|
52
65
|
/** Why the value cannot be edited safely; a person must edit it. */
|
|
53
66
|
refused?: string;
|
|
54
67
|
}>;
|
|
68
|
+
/** Whether a `text_ref` value reads as one workspace file path. */
|
|
69
|
+
export declare function isPathShapedTextRef(value: unknown): boolean;
|
|
55
70
|
/** An authored value as plain text, the form plans record and compare. */
|
|
56
71
|
export declare function shownSourceValue(value: unknown): string;
|
|
57
72
|
/**
|
|
@@ -93,6 +108,8 @@ export declare function findSourceRepairs(workspaceRoot: string): SourceRepair[]
|
|
|
93
108
|
export type SourcePathRewrite = Readonly<{
|
|
94
109
|
entityId: string;
|
|
95
110
|
file: string;
|
|
111
|
+
/** The field rewritten; absent means `source`. */
|
|
112
|
+
field?: "text_ref";
|
|
96
113
|
from: string;
|
|
97
114
|
to: string;
|
|
98
115
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-paths.d.ts","sourceRoot":"","sources":["../../../src/operations/migration/source-paths.ts"],"names":[],"mappings":"AA+BA
|
|
1
|
+
{"version":3,"file":"source-paths.d.ts","sourceRoot":"","sources":["../../../src/operations/migration/source-paths.ts"],"names":[],"mappings":"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"}
|