@sdd-method/sdd-cli 1.30.0 → 1.31.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.
- package/dist/lib/snapshot/advance.d.ts +26 -1
- package/dist/lib/snapshot/advance.d.ts.map +1 -1
- package/dist/lib/snapshot/advance.js +143 -17
- package/dist/lib/snapshot/advance.js.map +1 -1
- package/dist/lib/snapshot/catalogue-diff.d.ts +8 -2
- package/dist/lib/snapshot/catalogue-diff.d.ts.map +1 -1
- package/dist/lib/snapshot/catalogue-diff.js +32 -11
- package/dist/lib/snapshot/catalogue-diff.js.map +1 -1
- package/dist/lib/snapshot/diff.d.ts +10 -0
- package/dist/lib/snapshot/diff.d.ts.map +1 -1
- package/dist/lib/snapshot/diff.js +14 -1
- package/dist/lib/snapshot/diff.js.map +1 -1
- package/dist/lib/snapshot/fold.d.ts +7 -0
- package/dist/lib/snapshot/fold.d.ts.map +1 -1
- package/dist/lib/snapshot/fold.js +67 -3
- package/dist/lib/snapshot/fold.js.map +1 -1
- package/dist/lib/snapshot/land.d.ts.map +1 -1
- package/dist/lib/snapshot/land.js +8 -2
- package/dist/lib/snapshot/land.js.map +1 -1
- package/dist/lib/snapshot/manifest.d.ts +4 -0
- package/dist/lib/snapshot/manifest.d.ts.map +1 -1
- package/dist/lib/snapshot/manifest.js +7 -0
- package/dist/lib/snapshot/manifest.js.map +1 -1
- package/dist/lib/snapshot/targets.d.ts +8 -1
- package/dist/lib/snapshot/targets.d.ts.map +1 -1
- package/dist/lib/snapshot/targets.js +29 -3
- package/dist/lib/snapshot/targets.js.map +1 -1
- package/dist/lib/snapshot/verify.d.ts.map +1 -1
- package/dist/lib/snapshot/verify.js +4 -1
- package/dist/lib/snapshot/verify.js.map +1 -1
- package/dist/verbs/snapshot.d.ts +6 -0
- package/dist/verbs/snapshot.d.ts.map +1 -1
- package/dist/verbs/snapshot.js +16 -5
- package/dist/verbs/snapshot.js.map +1 -1
- package/package.json +2 -2
|
@@ -7,6 +7,10 @@ export interface AdvanceInputs {
|
|
|
7
7
|
to: string;
|
|
8
8
|
members?: readonly string[];
|
|
9
9
|
migrateHistory?: boolean;
|
|
10
|
+
/** Write the history row for a pin already moved by hand, without moving it. */
|
|
11
|
+
recordOnly?: boolean;
|
|
12
|
+
/** Per-member prose appended to the composed notes. */
|
|
13
|
+
notes?: ReadonlyMap<string, string>;
|
|
10
14
|
}
|
|
11
15
|
interface Plan {
|
|
12
16
|
key: string;
|
|
@@ -16,14 +20,35 @@ interface Plan {
|
|
|
16
20
|
metadataText: string;
|
|
17
21
|
entry: Record<string, unknown>;
|
|
18
22
|
metadata: Record<string, string>;
|
|
23
|
+
movePin: boolean;
|
|
24
|
+
priorFolder?: string;
|
|
19
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Hand-written prose in a member's evidence files that still names the prior
|
|
28
|
+
* baseline or its folder: comment lines anywhere, and non-field lines of the
|
|
29
|
+
* metadata. The tool never rewrites prose — this is a list, not a control.
|
|
30
|
+
*/
|
|
31
|
+
export declare function staleProse(dir: string, priorId: string | null | undefined, priorFolder: string | undefined): Promise<string[]>;
|
|
32
|
+
/**
|
|
33
|
+
* The snapshot identity of a metadata file, deriving what the folder-name
|
|
34
|
+
* convention `<repo>-<branch>@<rev>` makes certain: the revision always, the
|
|
35
|
+
* branch only when the suffix is a known branch name. What was derived is
|
|
36
|
+
* returned so the caller can say so.
|
|
37
|
+
*/
|
|
38
|
+
export declare function identityOf(metadata: Record<string, unknown>): {
|
|
39
|
+
fields: Record<string, string>;
|
|
40
|
+
derived: string[];
|
|
41
|
+
missing: string[];
|
|
42
|
+
};
|
|
20
43
|
export declare function runSnapshotAdvance(inputs: AdvanceInputs, write: Writer): Promise<{
|
|
21
44
|
exitCode: number;
|
|
22
45
|
}>;
|
|
23
46
|
/** Convert a legacy `entries:` history. Only `phase: scan` rows convert mechanically. */
|
|
24
47
|
export declare function migrateLegacy(legacy: {
|
|
25
48
|
entries?: unknown[];
|
|
26
|
-
}, metadata: Record<string, unknown>): Record<string, unknown
|
|
49
|
+
}, metadata: Record<string, unknown>): Record<string, unknown> & {
|
|
50
|
+
derived: string[];
|
|
51
|
+
};
|
|
27
52
|
/** Re-point a source_path at another baseline and folder; null if it has no dated segment. */
|
|
28
53
|
export declare function repoint(sourcePath: string, newBaseline: string, newFolder: string): string | null;
|
|
29
54
|
export declare function advance(inputs: AdvanceInputs, write: Writer): Promise<Plan[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance.d.ts","sourceRoot":"","sources":["../../../src/lib/snapshot/advance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"advance.d.ts","sourceRoot":"","sources":["../../../src/lib/snapshot/advance.ts"],"names":[],"mappings":"AAyCA,KAAK,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAElC,eAAO,MAAM,gBAAgB,qCAAsC,CAAC;AACpE,eAAO,MAAM,OAAO,gEAAiE,CAAC;AAEtF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uDAAuD;IACvD,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,UAAU,IAAI;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAepI;AAID;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAsBtI;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAY5G;AAgBD,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CA4BjJ;AAgBD,8FAA8F;AAC9F,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKjG;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAkLnF;AAMD,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAQjG;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAavF"}
|
|
@@ -6,7 +6,14 @@
|
|
|
6
6
|
// - no `impact` recorded (step 5a not done);
|
|
7
7
|
// - a legacy `entries:` history, unless --migrate-history converts it first;
|
|
8
8
|
// - a `phase:` key or a `reverse_status` outside {classified, reversed};
|
|
9
|
-
// - a source_path with no dated baseline segment (the area is not folded)
|
|
9
|
+
// - a source_path with no dated baseline segment (the area is not folded);
|
|
10
|
+
// - a finding of the member still unclassified (step 5 before step 8);
|
|
11
|
+
// - a pin already at the target revision, moved by hand before the tool
|
|
12
|
+
// existed (--record-only writes the row without moving it), or at a
|
|
13
|
+
// revision that is neither the prior baseline's nor the target's.
|
|
14
|
+
// `impact: none` is decided from the two MANIFESTS (same revision at T0 and
|
|
15
|
+
// T1), never from the pin: a pin moved by hand already holds T1's revision, and
|
|
16
|
+
// reading it would record a changed member as unchanged.
|
|
10
17
|
// It checks everything before it writes anything, and it only ever APPENDS:
|
|
11
18
|
// after writing it re-reads each history and asserts the prior entries are
|
|
12
19
|
// unchanged and exactly one was added. Entries are never cut or rewritten —
|
|
@@ -20,9 +27,66 @@ import { parse, parseDocument, stringify } from "yaml";
|
|
|
20
27
|
// reflows every long string in the file, so an evidence pin would arrive with
|
|
21
28
|
// unrelated churn in lines the tool had no business touching.
|
|
22
29
|
import { deltaPath } from "./diff.js";
|
|
23
|
-
import { SnapshotError, exists, isIsoDate, readManifest, splitFolder, } from "./manifest.js";
|
|
30
|
+
import { SnapshotError, credentialNotice, exists, isIsoDate, readManifest, splitFolder, } from "./manifest.js";
|
|
24
31
|
export const REVERSE_STATUSES = ["classified", "reversed"];
|
|
25
32
|
export const IMPACTS = ["none", "repo-minor", "repo-major", "product-major"];
|
|
33
|
+
/**
|
|
34
|
+
* Hand-written prose in a member's evidence files that still names the prior
|
|
35
|
+
* baseline or its folder: comment lines anywhere, and non-field lines of the
|
|
36
|
+
* metadata. The tool never rewrites prose — this is a list, not a control.
|
|
37
|
+
*/
|
|
38
|
+
export async function staleProse(dir, priorId, priorFolder) {
|
|
39
|
+
const needles = [priorId, priorFolder].filter((x) => typeof x === "string" && x !== "");
|
|
40
|
+
if (needles.length === 0)
|
|
41
|
+
return [];
|
|
42
|
+
const out = [];
|
|
43
|
+
for (const name of ["reverse-metadata.yaml", "reverse-history.yaml"]) {
|
|
44
|
+
const file = join(dir, name);
|
|
45
|
+
if (!(await exists(file)))
|
|
46
|
+
continue;
|
|
47
|
+
const lines = (await readFile(file, "utf8")).split("\n");
|
|
48
|
+
// History ENTRIES name the prior baseline by design; only its comments are prose.
|
|
49
|
+
lines.forEach((line, i) => {
|
|
50
|
+
const prose = name === "reverse-history.yaml" ? /^\s*#/.test(line) : !/^[A-Za-z_][\w-]*:\s*\S*\s*$/.test(line) || /^notes:/.test(line);
|
|
51
|
+
if (prose && needles.some((n) => line.includes(n)))
|
|
52
|
+
out.push(`${name}:${i + 1}`);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
const BRANCH = /-(master|main|develop|trunk)$/;
|
|
58
|
+
/**
|
|
59
|
+
* The snapshot identity of a metadata file, deriving what the folder-name
|
|
60
|
+
* convention `<repo>-<branch>@<rev>` makes certain: the revision always, the
|
|
61
|
+
* branch only when the suffix is a known branch name. What was derived is
|
|
62
|
+
* returned so the caller can say so.
|
|
63
|
+
*/
|
|
64
|
+
export function identityOf(metadata) {
|
|
65
|
+
const str = (v) => (v === undefined || v === null || v === "" ? undefined : String(v));
|
|
66
|
+
const folder = str(metadata.exported_folder_name);
|
|
67
|
+
const split = folder ? splitFolder(folder) : null;
|
|
68
|
+
const derived = [];
|
|
69
|
+
let rev = str(metadata.source_revision);
|
|
70
|
+
if (!rev && split) {
|
|
71
|
+
rev = split.revision;
|
|
72
|
+
derived.push("source_revision");
|
|
73
|
+
}
|
|
74
|
+
let branch = str(metadata.exported_branch);
|
|
75
|
+
if (!branch && split) {
|
|
76
|
+
branch = split.stem.match(BRANCH)?.[1];
|
|
77
|
+
if (branch)
|
|
78
|
+
derived.push("exported_branch");
|
|
79
|
+
}
|
|
80
|
+
const fields = {};
|
|
81
|
+
const missing = [];
|
|
82
|
+
for (const [k, v] of [["exported_folder_name", folder], ["exported_branch", branch], ["source_revision", rev], ["source_path", str(metadata.source_path)]]) {
|
|
83
|
+
if (v)
|
|
84
|
+
fields[k] = v;
|
|
85
|
+
else
|
|
86
|
+
missing.push(k);
|
|
87
|
+
}
|
|
88
|
+
return { fields, derived, missing };
|
|
89
|
+
}
|
|
26
90
|
export async function runSnapshotAdvance(inputs, write) {
|
|
27
91
|
try {
|
|
28
92
|
const plans = await advance(inputs, write);
|
|
@@ -61,17 +125,21 @@ export function migrateLegacy(legacy, metadata) {
|
|
|
61
125
|
throw new SnapshotError(`legacy history has ${other.length} row(s) with phase other than 'scan' (${[...new Set(other.map((e) => String(e.phase)))].join(", ")}): ` +
|
|
62
126
|
"which snapshot each describes cannot be derived, so convert those by hand");
|
|
63
127
|
}
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
128
|
+
const id = identityOf(metadata);
|
|
129
|
+
if (id.missing.length > 0) {
|
|
130
|
+
throw new SnapshotError(`cannot migrate: reverse-metadata.yaml has no ${id.missing.join(", ")}, and the folder name does not supply it` +
|
|
131
|
+
(id.missing.includes("exported_folder_name") || id.missing.includes("source_path")
|
|
132
|
+
? " — if the area was folded, re-point the evidence pins first (`snapshot fold --sdd-path`, or by hand)"
|
|
133
|
+
: ""));
|
|
134
|
+
}
|
|
68
135
|
return {
|
|
136
|
+
derived: id.derived,
|
|
69
137
|
canonical_repo_key: metadata.canonical_repo_key,
|
|
70
138
|
history: entries.map((e) => ({
|
|
71
|
-
...
|
|
139
|
+
...id.fields,
|
|
72
140
|
scanned_at: e.date,
|
|
73
141
|
reverse_status: "reversed",
|
|
74
|
-
notes: `${String(e.notes ?? "").trim()} (Migrated from the legacy entries: shape — originally phase: ${String(e.phase ?? "unset")}, actor: ${String(e.actor ?? "unset")}; identity fields taken from reverse-metadata.yaml at migration.)`.trim(),
|
|
142
|
+
notes: `${String(e.notes ?? "").trim()} (Migrated from the legacy entries: shape — originally phase: ${String(e.phase ?? "unset")}, actor: ${String(e.actor ?? "unset")}; identity fields taken from reverse-metadata.yaml at migration${id.derived.length > 0 ? `, ${id.derived.join(" and ")} derived from the folder name` : ""}.)`.trim(),
|
|
75
143
|
})),
|
|
76
144
|
};
|
|
77
145
|
}
|
|
@@ -106,6 +174,12 @@ export async function advance(inputs, write) {
|
|
|
106
174
|
throw new SnapshotError(`no ${dp}: the pin advances after the delta is recorded (run snapshot diff, then classify)`);
|
|
107
175
|
}
|
|
108
176
|
const delta = parse(await readFile(dp, "utf8"));
|
|
177
|
+
const fromId = delta.from_snapshot ?? t1.prior_snapshot;
|
|
178
|
+
const t0 = fromId ? await readManifest(areaRoot, fromId) : null;
|
|
179
|
+
const t0Rev = new Map((t0?.members ?? []).map((x) => [x.canonical_repo_key, x.source_revision]));
|
|
180
|
+
const notice = credentialNotice(t1);
|
|
181
|
+
if (notice)
|
|
182
|
+
write(`${notice}\n`);
|
|
109
183
|
if (!delta.impact)
|
|
110
184
|
throw new SnapshotError(`${dp} has no impact: classify first (delta-reverse.md §5a)`);
|
|
111
185
|
const impactOk = (v) => IMPACTS.includes(v);
|
|
@@ -139,8 +213,31 @@ export async function advance(inputs, write) {
|
|
|
139
213
|
continue;
|
|
140
214
|
}
|
|
141
215
|
try {
|
|
142
|
-
|
|
216
|
+
// Legacy rows describe the snapshot the pin held when they were written. If
|
|
217
|
+
// the pin was moved to T1 by hand, that was T0 — so T0's identity, never
|
|
218
|
+
// the current pin's, or a pre-T1 scan row would claim T1's revision.
|
|
219
|
+
let source = metadata;
|
|
220
|
+
const t0m = t0?.members.find((x) => x.canonical_repo_key === key);
|
|
221
|
+
const pinnedNow = identityOf(metadata).fields.source_revision;
|
|
222
|
+
if (t0m && pinnedNow === m.source_revision && t0m.source_revision !== m.source_revision) {
|
|
223
|
+
const t0Path = repoint(String(metadata.source_path ?? ""), t0m.carried_from ?? t0.snapshot_id, t0m.exported_folder_name);
|
|
224
|
+
source = { ...metadata, exported_folder_name: t0m.exported_folder_name, source_revision: t0m.source_revision, exported_branch: undefined, source_path: t0Path ?? undefined };
|
|
225
|
+
write(`${key}: pin was moved by hand, so its legacy rows take ${fromId}'s identity (${t0m.exported_folder_name})\n`);
|
|
226
|
+
}
|
|
227
|
+
const mig = migrateLegacy(history, source);
|
|
228
|
+
// A row cannot describe a baseline observed after it was written.
|
|
229
|
+
const rows = mig.history;
|
|
230
|
+
const baseline = String(rows[0]?.source_path ?? "").split("/").find((p) => isIsoDate(p));
|
|
231
|
+
const early = rows.filter((e) => baseline !== undefined && String(e.scanned_at) < baseline);
|
|
232
|
+
if (early.length > 0) {
|
|
233
|
+
throw new SnapshotError(`${early.length} legacy row(s) dated before baseline ${baseline}, the one their identity would name — which snapshot they describe must be set by hand`);
|
|
234
|
+
}
|
|
235
|
+
const { derived, ...doc } = mig;
|
|
236
|
+
// The key the evidence dir was matched by, where the metadata does not carry one.
|
|
237
|
+
history = { ...doc, canonical_repo_key: doc.canonical_repo_key ?? key };
|
|
143
238
|
migrated = true;
|
|
239
|
+
for (const d of derived)
|
|
240
|
+
write(`${key}: ${d} derived from folder name ${metadata.exported_folder_name}\n`);
|
|
144
241
|
}
|
|
145
242
|
catch (e) {
|
|
146
243
|
problems.push(`${hFile}: ${e.message}`);
|
|
@@ -160,12 +257,33 @@ export async function advance(inputs, write) {
|
|
|
160
257
|
problems.push(`${mFile}: source_path '${metadata.source_path}' has no dated baseline segment — fold the area first`);
|
|
161
258
|
continue;
|
|
162
259
|
}
|
|
163
|
-
const
|
|
260
|
+
const priorRev = t0Rev.get(key);
|
|
261
|
+
const pinned = identityOf(metadata).fields.source_revision;
|
|
262
|
+
const sameRevision = priorRev !== undefined && priorRev === m.source_revision;
|
|
263
|
+
let movePin = true;
|
|
264
|
+
if (pinned === m.source_revision && !sameRevision) {
|
|
265
|
+
if (!inputs.recordOnly) {
|
|
266
|
+
problems.push(`${key}: pin is already at ${to} (${m.source_revision}), moved before this run — pass --record-only to write its history row without moving it`);
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
movePin = false;
|
|
270
|
+
}
|
|
271
|
+
else if (priorRev !== undefined && pinned !== undefined && pinned !== priorRev && pinned !== m.source_revision) {
|
|
272
|
+
problems.push(`${key}: pin is at ${pinned}, which is neither ${fromId} (${priorRev}) nor ${to} (${m.source_revision})`);
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
164
275
|
const impact = sameRevision ? "none" : (changed.get(key)?.impact ?? delta.impact);
|
|
165
276
|
if (!impactOk(impact))
|
|
166
277
|
problems.push(`${dp}: ${key} impact '${impact}' is not one of ${IMPACTS.join(", ")}`);
|
|
167
|
-
const
|
|
168
|
-
const
|
|
278
|
+
const mine = (delta.findings ?? []).filter((f) => f.member === key);
|
|
279
|
+
const unclassified = mine.filter((f) => f.classification === null || f.classification === undefined).map((f) => f.id);
|
|
280
|
+
if (unclassified.length > 0) {
|
|
281
|
+
problems.push(`${key}: ${unclassified.length} finding(s) not yet classified (${unclassified.join(", ")}) — classify before the pin advances (delta-reverse.md §5)`);
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
const findingNotes = mine.map((f) => `${f.id} [${f.classification}]${f.summary ? `: ${f.summary}` : ""}${f.spec_impact ? ` — spec: ${f.spec_impact}` : ""}`);
|
|
285
|
+
const extra = inputs.notes?.get(key);
|
|
286
|
+
const branch = splitFolder(m.exported_folder_name)?.stem.match(BRANCH)?.[1] ?? metadata.exported_branch;
|
|
169
287
|
const entry = {
|
|
170
288
|
exported_folder_name: m.exported_folder_name,
|
|
171
289
|
...(branch ? { exported_branch: branch } : {}),
|
|
@@ -176,10 +294,11 @@ export async function advance(inputs, write) {
|
|
|
176
294
|
impact,
|
|
177
295
|
...(sameRevision
|
|
178
296
|
? { impact_rationale: `re-observed at the same revision (${describeReverification(m)})` }
|
|
179
|
-
: delta.impact_rationale
|
|
180
|
-
? { impact_rationale: delta.impact_rationale }
|
|
297
|
+
: (changed.get(key)?.impact_rationale ?? delta.impact_rationale)
|
|
298
|
+
? { impact_rationale: changed.get(key)?.impact_rationale ?? delta.impact_rationale }
|
|
181
299
|
: {}),
|
|
182
|
-
notes:
|
|
300
|
+
notes: `${movePin ? "advanced" : "recorded (pin moved by hand before this run)"} to ${to} from ${fromId} by sdd-cli snapshot advance.` +
|
|
301
|
+
`${extra ? ` ${extra}` : ""} Findings: ${findingNotes.length > 0 ? findingNotes.join("; ") : "none"}.`,
|
|
183
302
|
};
|
|
184
303
|
plans.push({
|
|
185
304
|
key,
|
|
@@ -195,6 +314,10 @@ export async function advance(inputs, write) {
|
|
|
195
314
|
scanned_at: scannedAt,
|
|
196
315
|
...(branch ? { exported_branch: branch } : {}),
|
|
197
316
|
},
|
|
317
|
+
movePin,
|
|
318
|
+
...(t0?.members.find((x) => x.canonical_repo_key === key)?.exported_folder_name
|
|
319
|
+
? { priorFolder: t0.members.find((x) => x.canonical_repo_key === key).exported_folder_name }
|
|
320
|
+
: {}),
|
|
198
321
|
});
|
|
199
322
|
}
|
|
200
323
|
if (problems.length > 0)
|
|
@@ -213,8 +336,11 @@ export async function advance(inputs, write) {
|
|
|
213
336
|
if (after.length !== before.length + 1 || !isDeepStrictEqual(after.slice(0, before.length), before)) {
|
|
214
337
|
throw new Error(`${hFile}: post-write check failed — prior entries changed or not exactly one appended`);
|
|
215
338
|
}
|
|
216
|
-
|
|
217
|
-
|
|
339
|
+
if (p.movePin)
|
|
340
|
+
await writeFile(join(p.dir, "reverse-metadata.yaml"), setTopLevelScalars(p.metadataText, p.metadata));
|
|
341
|
+
write(`${p.key}: ${p.migrated ? "history migrated, " : ""}${p.movePin ? "pin →" : "row recorded, pin already at"} ${p.metadata.exported_folder_name} (impact ${String(p.entry.impact)})\n`);
|
|
342
|
+
for (const s of await staleProse(p.dir, fromId, p.priorFolder))
|
|
343
|
+
write(` prose may be stale — ${s}\n`);
|
|
218
344
|
}
|
|
219
345
|
return plans;
|
|
220
346
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance.js","sourceRoot":"","sources":["../../../src/lib/snapshot/advance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"advance.js","sourceRoot":"","sources":["../../../src/lib/snapshot/advance.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,14 @@ export interface CatalogueDiffInputs {
|
|
|
8
8
|
export declare function changedFiles(sddPath: string, ref: string): Promise<string[]>;
|
|
9
9
|
/** The changed files that must be attributed: minus catalogues and advance's pin bookkeeping. */
|
|
10
10
|
export declare function changedSourceFiles(sddPath: string, ref: string): Promise<string[]>;
|
|
11
|
-
export
|
|
12
|
-
|
|
11
|
+
export interface AttributionTarget {
|
|
12
|
+
artefact: string;
|
|
13
|
+
precise: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** Every target, and whether it is precise (file / confirmed grain, or hand-written) or a repo-grain mention. */
|
|
16
|
+
export declare function targetSet(delta: unknown): AttributionTarget[];
|
|
17
|
+
/** "precise" | "mention" | null — how, if at all, a changed file is attributed. */
|
|
18
|
+
export declare function attributed(file: string, targets: readonly AttributionTarget[]): "precise" | "mention" | null;
|
|
13
19
|
export declare function rowDelta(before: readonly string[], after: readonly string[]): {
|
|
14
20
|
added: number;
|
|
15
21
|
removed: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalogue-diff.d.ts","sourceRoot":"","sources":["../../../src/lib/snapshot/catalogue-diff.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"catalogue-diff.d.ts","sourceRoot":"","sources":["../../../src/lib/snapshot/catalogue-diff.ts"],"names":[],"mappings":"AAiCA,KAAK,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAElC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,4DAA4D;AAC5D,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIlF;AAED,iGAAiG;AACjG,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAExF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,iHAAiH;AACjH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAgB7D;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAI5G;AAYD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAYhH;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAqDhH"}
|
|
@@ -11,7 +11,13 @@
|
|
|
11
11
|
// Attribution is at file grain because catalogue rows carry no source-file
|
|
12
12
|
// provenance, so "every row names a finding" is not checkable:
|
|
13
13
|
// - every SDD source file changed since <ref> must appear in some finding's
|
|
14
|
-
// targets (the pin bookkeeping `snapshot advance` writes is exempt)
|
|
14
|
+
// targets (the pin bookkeeping `snapshot advance` writes is exempt), through
|
|
15
|
+
// a PRECISE target: grain `file`, grain `confirmed` (narrowed by hand), or a
|
|
16
|
+
// plain string written by hand. A file reached only through a `repo`-grain
|
|
17
|
+
// target is attributed BY MENTION ONLY, and fails: a repo-grain target names
|
|
18
|
+
// every artefact that mentions the member, so in a component-heavy SDD it
|
|
19
|
+
// covers almost any edit and the check would pass by construction. Narrowing
|
|
20
|
+
// is bounded by the files actually edited, not by the targets routed;
|
|
15
21
|
// - catalogue rows that changed while NO file changed (bookkeeping included)
|
|
16
22
|
// are unattributed by construction — the builder moved, not the snapshot.
|
|
17
23
|
// Exit 1 on any unattributed change.
|
|
@@ -37,21 +43,32 @@ export async function changedFiles(sddPath, ref) {
|
|
|
37
43
|
export async function changedSourceFiles(sddPath, ref) {
|
|
38
44
|
return (await changedFiles(sddPath, ref)).filter((p) => !EXEMPT.some((re) => re.test(p)));
|
|
39
45
|
}
|
|
46
|
+
/** Every target, and whether it is precise (file / confirmed grain, or hand-written) or a repo-grain mention. */
|
|
40
47
|
export function targetSet(delta) {
|
|
41
48
|
const findings = delta?.findings ?? [];
|
|
42
|
-
const out = new
|
|
49
|
+
const out = new Map();
|
|
43
50
|
for (const f of findings) {
|
|
44
51
|
for (const t of f.targets ?? []) {
|
|
52
|
+
let artefact = null;
|
|
53
|
+
let precise = true;
|
|
45
54
|
if (typeof t === "string")
|
|
46
|
-
|
|
47
|
-
else if (t && typeof t === "object" && typeof t.artefact === "string")
|
|
48
|
-
|
|
55
|
+
artefact = t;
|
|
56
|
+
else if (t && typeof t === "object" && typeof t.artefact === "string") {
|
|
57
|
+
artefact = t.artefact;
|
|
58
|
+
precise = t.grain !== "repo";
|
|
59
|
+
}
|
|
60
|
+
if (artefact !== null)
|
|
61
|
+
out.set(artefact, (out.get(artefact) ?? false) || precise);
|
|
49
62
|
}
|
|
50
63
|
}
|
|
51
|
-
return [...out];
|
|
64
|
+
return [...out].map(([artefact, precise]) => ({ artefact, precise }));
|
|
52
65
|
}
|
|
66
|
+
/** "precise" | "mention" | null — how, if at all, a changed file is attributed. */
|
|
53
67
|
export function attributed(file, targets) {
|
|
54
|
-
|
|
68
|
+
const hits = targets.filter((t) => t.artefact === file || (t.artefact.endsWith("/") && file.startsWith(t.artefact)));
|
|
69
|
+
if (hits.length === 0)
|
|
70
|
+
return null;
|
|
71
|
+
return hits.some((t) => t.precise) ? "precise" : "mention";
|
|
55
72
|
}
|
|
56
73
|
async function rowSets(dir) {
|
|
57
74
|
const out = new Map();
|
|
@@ -105,14 +122,18 @@ export async function runCatalogueDiff(inputs, write) {
|
|
|
105
122
|
}
|
|
106
123
|
const all = (await changedFiles(sddPath, from)).filter((p) => !p.startsWith("catalogues/"));
|
|
107
124
|
const files = all.filter((p) => !EXEMPT.some((re) => re.test(p)));
|
|
108
|
-
const unattributed = files.filter((f) =>
|
|
109
|
-
|
|
125
|
+
const unattributed = files.filter((f) => attributed(f, targets) === null);
|
|
126
|
+
const byMention = files.filter((f) => attributed(f, targets) === "mention");
|
|
127
|
+
write(`\nsource files changed since ${from}: ${files.length} — ${files.length - unattributed.length - byMention.length} attributed precisely, ` +
|
|
128
|
+
`${byMention.length} by mention only, ${unattributed.length} unattributed\n`);
|
|
129
|
+
for (const f of byMention)
|
|
130
|
+
write(` BY MENTION ONLY ${f} — narrow the target that names it (grain: confirmed) or record the finding it belongs to\n`);
|
|
110
131
|
for (const f of unattributed)
|
|
111
132
|
write(` UNATTRIBUTED ${f}\n`);
|
|
112
133
|
write(`\ncatalogues with changed rows: ${changedCatalogues.length}\n`);
|
|
113
134
|
for (const [name, d] of changedCatalogues)
|
|
114
135
|
write(` ${name}: +${d.added} -${d.removed}\n`);
|
|
115
|
-
let failed = unattributed.length > 0;
|
|
136
|
+
let failed = unattributed.length > 0 || byMention.length > 0;
|
|
116
137
|
// Exempt files (the pin bookkeeping) are excused from attribution, not from
|
|
117
138
|
// feeding catalogues: they count here, or advance's own edits look like drift.
|
|
118
139
|
if (all.length === 0 && changedCatalogues.length > 0) {
|
|
@@ -123,7 +144,7 @@ export async function runCatalogueDiff(inputs, write) {
|
|
|
123
144
|
write("\nFAIL: each unattributed change is an unrecorded finding or an unintended edit — resolve which\n");
|
|
124
145
|
return { exitCode: 1 };
|
|
125
146
|
}
|
|
126
|
-
write("\nPASS: every changed source file is a target of some finding\n");
|
|
147
|
+
write("\nPASS: every changed source file is a precise target of some finding\n");
|
|
127
148
|
return { exitCode: 0 };
|
|
128
149
|
}
|
|
129
150
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalogue-diff.js","sourceRoot":"","sources":["../../../src/lib/snapshot/catalogue-diff.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6DAA6D;AAC7D,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,iFAAiF;AACjF,4EAA4E;AAC5E,iFAAiF;AACjF,eAAe;AACf,EAAE;AACF,2EAA2E;AAC3E,+DAA+D;AAC/D,8EAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"catalogue-diff.js","sourceRoot":"","sources":["../../../src/lib/snapshot/catalogue-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,9 +58,19 @@ export interface DeltaYaml {
|
|
|
58
58
|
members_unchanged: number;
|
|
59
59
|
disposition: string | null;
|
|
60
60
|
impact: string | null;
|
|
61
|
+
/** delta-reverse §3: how the prior baseline's provenance stands — copied from its provenance.yaml. */
|
|
62
|
+
t0_provenance: {
|
|
63
|
+
result: string;
|
|
64
|
+
verified_at?: string;
|
|
65
|
+
waiver?: unknown;
|
|
66
|
+
};
|
|
67
|
+
/** delta-reverse §9: reverse-quality scores this change leaves stale — judgement, filled by hand. */
|
|
68
|
+
stale_scores: unknown[];
|
|
61
69
|
findings: DeltaFinding[];
|
|
62
70
|
open_questions: unknown[];
|
|
63
71
|
}
|
|
72
|
+
/** The prior baseline's provenance as `snapshot verify` recorded it, or an explicit "not verified". */
|
|
73
|
+
export declare function provenanceOf(areaRoot: string, id: string): Promise<DeltaYaml["t0_provenance"]>;
|
|
64
74
|
export declare function deltaPath(areaRoot: string, id: string): string;
|
|
65
75
|
/** Findings that already carry judgement — the reason diff will not rewrite. */
|
|
66
76
|
export declare function judgedFindings(existing: unknown): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/lib/snapshot/diff.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,KAAK,gBAAgB,EAOtB,MAAM,eAAe,CAAC;AAEvB,KAAK,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAElC,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAQrE,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAClE,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,KAAK,CAAC;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAChK,aAAa,EAAE,KAAK,CAAC;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1E,eAAe,EAAE,KAAK,CAAC;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,eAAe,EAAE,KAAK,CAAC;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrG,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,cAAc,EAAE,OAAO,EAAE,CAAC;CAC3B;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE,CAW1D;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBtG;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/lib/snapshot/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,14 @@ export function evidenceClass(path) {
|
|
|
33
33
|
return name;
|
|
34
34
|
return "source";
|
|
35
35
|
}
|
|
36
|
+
/** The prior baseline's provenance as `snapshot verify` recorded it, or an explicit "not verified". */
|
|
37
|
+
export async function provenanceOf(areaRoot, id) {
|
|
38
|
+
const p = join(areaRoot, id, "provenance.yaml");
|
|
39
|
+
if (!(await exists(p)))
|
|
40
|
+
return { result: "not verified — run `sdd-cli snapshot verify` on this baseline (delta-reverse §3)" };
|
|
41
|
+
const r = (parse(await readFile(p, "utf8")) ?? {});
|
|
42
|
+
return { result: String(r.result ?? "unknown"), ...(r.verified_at ? { verified_at: String(r.verified_at) } : {}), ...(r.waiver ? { waiver: r.waiver } : {}) };
|
|
43
|
+
}
|
|
36
44
|
export function deltaPath(areaRoot, id) {
|
|
37
45
|
return join(areaRoot, id, "delta.yaml");
|
|
38
46
|
}
|
|
@@ -74,7 +82,10 @@ export async function snapshotDiff(inputs) {
|
|
|
74
82
|
const t0 = await readManifest(areaRoot, fromId);
|
|
75
83
|
const out = deltaPath(areaRoot, to);
|
|
76
84
|
if (await exists(out)) {
|
|
77
|
-
const
|
|
85
|
+
const existing = parse(await readFile(out, "utf8"));
|
|
86
|
+
const judged = judgedFindings(existing);
|
|
87
|
+
if (Array.isArray(existing?.stale_scores) && existing.stale_scores.length > 0)
|
|
88
|
+
judged.push("stale_scores");
|
|
78
89
|
if (judged.length > 0) {
|
|
79
90
|
throw new SnapshotError(`${out} already holds judgement on ${judged.length} finding(s) (${judged.slice(0, 5).join(", ")}${judged.length > 5 ? ", …" : ""}) — diff will not overwrite it`);
|
|
80
91
|
}
|
|
@@ -105,6 +116,8 @@ export async function computeDelta(areaRoot, t0, t1) {
|
|
|
105
116
|
members_unchanged: 0,
|
|
106
117
|
disposition: null,
|
|
107
118
|
impact: null,
|
|
119
|
+
t0_provenance: await provenanceOf(areaRoot, t0.snapshot_id),
|
|
120
|
+
stale_scores: [],
|
|
108
121
|
findings: [],
|
|
109
122
|
open_questions: [],
|
|
110
123
|
};
|