@sdd-method/sdd-cli 5.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/author-program.d.ts.map +1 -1
- package/dist/author-program.js +10 -2
- package/dist/author-program.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/catalogue/aggregate.d.ts.map +1 -1
- package/dist/lib/catalogue/aggregate.js +45 -8
- package/dist/lib/catalogue/aggregate.js.map +1 -1
- package/dist/lib/catalogue/build.d.ts.map +1 -1
- package/dist/lib/catalogue/build.js +58 -12
- package/dist/lib/catalogue/build.js.map +1 -1
- package/dist/lib/catalogue/builders/adr-governs.js +1 -1
- package/dist/lib/catalogue/builders/adr-governs.js.map +1 -1
- package/dist/lib/catalogue/builders/adrs.js +2 -2
- package/dist/lib/catalogue/builders/adrs.js.map +1 -1
- package/dist/lib/catalogue/builders/contract-revisions.d.ts +13 -0
- package/dist/lib/catalogue/builders/contract-revisions.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/contract-revisions.js +45 -7
- package/dist/lib/catalogue/builders/contract-revisions.js.map +1 -1
- package/dist/lib/catalogue/builders/data-model.js +1 -1
- package/dist/lib/catalogue/builders/data-model.js.map +1 -1
- package/dist/lib/catalogue/builders/entity-archetype.d.ts +24 -0
- package/dist/lib/catalogue/builders/entity-archetype.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/entity-archetype.js +121 -0
- package/dist/lib/catalogue/builders/entity-archetype.js.map +1 -0
- package/dist/lib/catalogue/builders/quality-scores.js +1 -1
- package/dist/lib/catalogue/builders/requirements.js +1 -1
- package/dist/lib/catalogue/builders/requirements.js.map +1 -1
- package/dist/lib/catalogue/canonical-schema.yaml +41 -21
- package/dist/lib/catalogue/retired-catalogues.js +1 -1
- package/dist/lib/catalogue/retired-catalogues.js.map +1 -1
- package/dist/lib/catalogue/rubric-coverage-map.yaml +7 -3
- package/dist/lib/catalogue/schema-loader.d.ts +3 -3
- package/dist/lib/catalogue/schema-loader.d.ts.map +1 -1
- package/dist/lib/catalogue/staleness-verdicts.js +3 -3
- package/dist/lib/catalogue/staleness-verdicts.js.map +1 -1
- package/dist/lib/metamodel/roundtrip-gate.js +1 -1
- package/dist/lib/metamodel/roundtrip-gate.js.map +1 -1
- package/dist/lib/metamodel/schema-projection.d.ts +3 -3
- package/dist/lib/metamodel/schema-projection.d.ts.map +1 -1
- package/dist/lib/metamodel/schema-projection.js +2 -2
- package/dist/lib/metamodel/schema-projection.js.map +1 -1
- package/dist/lib/structure/apply.js +2 -2
- package/dist/lib/structure/apply.js.map +1 -1
- package/dist/lib/structure/archive.d.ts.map +1 -1
- package/dist/lib/structure/archive.js +19 -7
- package/dist/lib/structure/archive.js.map +1 -1
- package/dist/lib/structure/catalogue.d.ts +7 -2
- package/dist/lib/structure/catalogue.d.ts.map +1 -1
- package/dist/lib/structure/catalogue.js +31 -10
- package/dist/lib/structure/catalogue.js.map +1 -1
- package/dist/lib/structure/compose.js +1 -1
- package/dist/lib/structure/compose.js.map +1 -1
- package/dist/lib/structure/effects.js +1 -1
- package/dist/lib/structure/effects.js.map +1 -1
- package/dist/lib/structure/extract.js +3 -3
- package/dist/lib/structure/extract.js.map +1 -1
- package/dist/lib/structure/intended.d.ts +66 -0
- package/dist/lib/structure/intended.d.ts.map +1 -0
- package/dist/lib/structure/intended.js +194 -0
- package/dist/lib/structure/intended.js.map +1 -0
- package/dist/lib/structure/model.js +1 -1
- package/dist/lib/structure/model.js.map +1 -1
- package/dist/lib/structure/render.js +1 -1
- package/dist/lib/structure/render.js.map +1 -1
- package/dist/lib/structure/view.d.ts +3 -1
- package/dist/lib/structure/view.d.ts.map +1 -1
- package/dist/lib/structure/view.js +8 -3
- package/dist/lib/structure/view.js.map +1 -1
- package/dist/lib/validate/agreement-evidence.d.ts +1 -1
- package/dist/lib/validate/agreement-evidence.js +2 -2
- package/dist/lib/validate/agreement-evidence.js.map +1 -1
- package/dist/lib/validate/behaviour-store.d.ts +1 -1
- package/dist/lib/validate/behaviour-store.d.ts.map +1 -1
- package/dist/lib/validate/behaviour-store.js +49 -12
- package/dist/lib/validate/behaviour-store.js.map +1 -1
- package/dist/lib/validate/dispatch.js +1 -1
- package/dist/lib/validate/dispatch.js.map +1 -1
- package/dist/lib/validate/structural-model.d.ts +2 -2
- package/dist/lib/validate/structural-model.d.ts.map +1 -1
- package/dist/lib/validate/structural-model.js +48 -35
- package/dist/lib/validate/structural-model.js.map +1 -1
- package/dist/maintain-program.d.ts.map +1 -1
- package/dist/maintain-program.js +7 -1
- package/dist/maintain-program.js.map +1 -1
- package/dist/maintain-version.json +2 -2
- package/dist/verbs/change.js +2 -2
- package/dist/verbs/change.js.map +1 -1
- package/dist/verbs/migrate-structure.d.ts +6 -0
- package/dist/verbs/migrate-structure.d.ts.map +1 -0
- package/dist/verbs/migrate-structure.js +36 -0
- package/dist/verbs/migrate-structure.js.map +1 -0
- package/dist/verbs/structure.d.ts +0 -3
- package/dist/verbs/structure.d.ts.map +1 -1
- package/dist/verbs/structure.js +5 -34
- package/dist/verbs/structure.js.map +1 -1
- package/dist/verify-version.json +2 -2
- package/package.json +1 -1
- package/scripts/author-acceptance.mjs +5 -1
- package/scripts/author-version.json +2 -2
- package/scripts/build-persona-package.mjs +11 -7
- package/scripts/maintain-acceptance.mjs +8 -1
- package/scripts/maintain-version.json +2 -2
- package/scripts/verify-version.json +2 -2
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
// The catalogue from the structural model, and the model a built catalogue implies (M-ADR 0230 §4.3, §5.3
|
|
2
|
-
//
|
|
1
|
+
// The catalogue from the structural model, and the model a built catalogue implies (M-ADR 0230 §4.3, §5.3).
|
|
2
|
+
// Where an SDD has a model, it is the record of structure, so every structure catalogue is built from it whole:
|
|
3
3
|
// a row per element of the current view, with the model's structure columns;
|
|
4
4
|
// its other columns (every class but structure: derived, declaration, evidence, intent, execution) from the
|
|
5
5
|
// source-built row with the same id;
|
|
6
6
|
// for an element only the model holds, the derived columns the model itself settles (MODEL_DERIVED).
|
|
7
7
|
// What the sources hold and the model does not, and a structure column where they disagree, is reported once per
|
|
8
|
-
// catalogue. The model wins: either finding means the sources moved outside a change.
|
|
8
|
+
// catalogue. The model wins: either finding means the sources moved outside a change. A source row that states an
|
|
9
|
+
// element as an agreed open change adds or modifies it is that change's intended element, not a disagreement: it is
|
|
10
|
+
// listed apart, and catalogued once the change archives. Pure: no file is read or written.
|
|
9
11
|
import { stringify } from "yaml";
|
|
10
|
-
import { FORMAT_VERSION } from "./model.js";
|
|
12
|
+
import { elementKey, FORMAT_VERSION } from "./model.js";
|
|
11
13
|
import { STRUCTURE } from "./view.js";
|
|
12
14
|
/** The view each generated file renders, for a derived path column of an element only the model holds. */
|
|
13
15
|
export const VIEW_PATHS = {
|
|
@@ -44,8 +46,10 @@ function sample(ids) {
|
|
|
44
46
|
/**
|
|
45
47
|
* Replace every structure catalogue's rows with the view's. Rows of other catalogues are returned as they are. Source
|
|
46
48
|
* rows sharing an id are merged first, later values filling earlier gaps, as the keyed-table dedupe would.
|
|
49
|
+
* `intended` holds the elements agreed open changes add or modify (intendedWrites); a source row agreeing with one is
|
|
50
|
+
* pushed to `intendedOut` as `<key> (<change>)` instead of being reported.
|
|
47
51
|
*/
|
|
48
|
-
export function overlayModel(schema, view, rows, findings) {
|
|
52
|
+
export function overlayModel(schema, view, rows, findings, intended = new Map(), intendedOut = []) {
|
|
49
53
|
const out = new Map(rows);
|
|
50
54
|
for (const cat of schema.catalogues) {
|
|
51
55
|
if (cat.sourceOfTruth !== STRUCTURE)
|
|
@@ -66,6 +70,20 @@ export function overlayModel(schema, view, rows, findings) {
|
|
|
66
70
|
const elements = view.get(cat.name) ?? new Map();
|
|
67
71
|
const built = [];
|
|
68
72
|
const differ = [];
|
|
73
|
+
const disagree = (from, e) => structural.filter((c) => cell(from[c]) !== "" && cell(from[c]) !== cell(e.columns[c]));
|
|
74
|
+
// The source row states the element as an agreed open change does; one stating it otherwise is reported as such.
|
|
75
|
+
const differIntended = [];
|
|
76
|
+
const asIntended = (id, from) => {
|
|
77
|
+
const w = intended.get(elementKey(cat.name, id));
|
|
78
|
+
if (w === undefined)
|
|
79
|
+
return false;
|
|
80
|
+
const cols = disagree(from, w.element);
|
|
81
|
+
if (cols.length > 0)
|
|
82
|
+
differIntended.push(`${id} (${cols.join(", ")}; ${w.change})`);
|
|
83
|
+
else
|
|
84
|
+
intendedOut.push(`${elementKey(cat.name, id)} (${w.change})`);
|
|
85
|
+
return true;
|
|
86
|
+
};
|
|
69
87
|
for (const e of elements.values()) {
|
|
70
88
|
const from = source.get(e.id);
|
|
71
89
|
const row = {};
|
|
@@ -73,8 +91,8 @@ export function overlayModel(schema, view, rows, findings) {
|
|
|
73
91
|
for (const [k, v] of Object.entries(from))
|
|
74
92
|
if (!structural.includes(k))
|
|
75
93
|
row[k] = v;
|
|
76
|
-
const cols =
|
|
77
|
-
if (cols.length > 0)
|
|
94
|
+
const cols = disagree(from, e);
|
|
95
|
+
if (cols.length > 0 && !asIntended(e.id, from))
|
|
78
96
|
differ.push(`${e.id} (${cols.join(", ")})`);
|
|
79
97
|
}
|
|
80
98
|
else {
|
|
@@ -85,12 +103,15 @@ export function overlayModel(schema, view, rows, findings) {
|
|
|
85
103
|
row[c] = e.columns[c];
|
|
86
104
|
built.push(row);
|
|
87
105
|
}
|
|
88
|
-
const missing = [...source.keys()].filter((id) => id !== "" && !elements.has(id)).sort();
|
|
106
|
+
const missing = [...source.keys()].filter((id) => id !== "" && !elements.has(id) && !asIntended(id, source.get(id))).sort();
|
|
89
107
|
if (missing.length > 0) {
|
|
90
|
-
findings.add("divergence", `${cat.name}: the sources hold ${missing.length} row(s) the structural model does not (${sample(missing)}); the model is the record of structure, so they are not catalogued. Add them through a change's structural deltas, or remove them from the sources (M-ADR 0230 §4.3
|
|
108
|
+
findings.add("divergence", `${cat.name}: the sources hold ${missing.length} row(s) the structural model does not (${sample(missing)}); the model is the record of structure, so they are not catalogued. Add them through a change's structural deltas, or remove them from the sources (M-ADR 0230 §4.3)`, "warn", `catalogue:${cat.name}`);
|
|
109
|
+
}
|
|
110
|
+
if (differIntended.length > 0) {
|
|
111
|
+
findings.add("divergence", `${cat.name}: ${differIntended.length} source row(s) state an element an agreed open change adds or modifies, and disagree with it: ${sample(differIntended.sort())}. The change's delta is what archives; bring the source into line with it, or the delta with the source (M-ADR 0230 §4.3, §4.7)`, "warn", `catalogue:${cat.name}`);
|
|
91
112
|
}
|
|
92
113
|
if (differ.length > 0) {
|
|
93
|
-
findings.add("divergence", `${cat.name}: ${differ.length} element(s) where the sources and the structural model disagree, catalogued as the model states them: ${sample(differ.sort())}. A source that is a generated view is rendered again; any other is brought into line through a change (M-ADR 0230 §4.3
|
|
114
|
+
findings.add("divergence", `${cat.name}: ${differ.length} element(s) where the sources and the structural model disagree, catalogued as the model states them: ${sample(differ.sort())}. A source that is a generated view is rendered again; any other is brought into line through a change (M-ADR 0230 §4.3)`, "warn", `catalogue:${cat.name}`);
|
|
94
115
|
}
|
|
95
116
|
out.set(cat.name, built);
|
|
96
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../../../src/lib/structure/catalogue.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../../../src/lib/structure/catalogue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Views over the structural model, and how changes compose (M-ADR 0230 §4.5, §4.7
|
|
1
|
+
// Views over the structural model, and how changes compose (M-ADR 0230 §4.5, §4.7).
|
|
2
2
|
// current the model as published
|
|
3
3
|
// at a change current with that change's deltas and those of its dependency closure, dependencies first
|
|
4
4
|
// intended current with every agreed change's deltas
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/lib/structure/compose.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/lib/structure/compose.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// A change's structural effect, and the effect record an archive leaves (M-ADR 0230 §4.6, §4.7
|
|
1
|
+
// A change's structural effect, and the effect record an archive leaves (M-ADR 0230 §4.6, §4.7). Pure reads,
|
|
2
2
|
// so the catalogue builder and the verify-only CLI can carry them; writing the record is apply.ts's.
|
|
3
3
|
import { parseDocument } from "yaml";
|
|
4
4
|
import { elementKey, revision } from "./model.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/lib/structure/effects.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/lib/structure/effects.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// An SDD's first structural model, extracted from its sources (M-ADR 0230 §5.3, §6 step 1
|
|
1
|
+
// An SDD's first structural model, extracted from its sources (M-ADR 0230 §5.3, §6 step 1). The builders
|
|
2
2
|
// already parse the sources: the diagrams, data models, service tables, configuration, traceability manifests,
|
|
3
3
|
// feature trees and groundings. So extraction builds the catalogue from the sources into a scratch directory, and
|
|
4
4
|
// projects the model it implies (modelFromRows). It writes the partition files and an extraction report beside
|
|
@@ -32,9 +32,9 @@ function report(sddId, at, schemaVersion, x, sources, otherFindings) {
|
|
|
32
32
|
const lines = [
|
|
33
33
|
"# Structural model extraction",
|
|
34
34
|
"",
|
|
35
|
-
`Extracted by \`sdd-cli migrate structure\` from ${sddId}'s sources at ${at}, against catalogue schema ${schemaVersion} (M-ADR 0230
|
|
35
|
+
`Extracted by \`sdd-cli migrate structure\` from ${sddId}'s sources at ${at}, against catalogue schema ${schemaVersion} (M-ADR 0230).`,
|
|
36
36
|
"",
|
|
37
|
-
"**Writing this model admits it as the baseline** (M-ADR 0230 §6 step 1). From the moment `openspec/structure/` exists, committed or not, it is the record of structure: the catalogue is built from it, and the structural-model check asks every open change for its structural deltas or a `none.yaml
|
|
37
|
+
"**Writing this model admits it as the baseline** (M-ADR 0230 §6 step 1). From the moment `openspec/structure/` exists, committed or not, it is the record of structure: the catalogue is built from it, and the structural-model check asks every open change for its structural deltas or a `none.yaml`, and fails a change that has neither. Review it against the code before it is written (`sdd-cli migrate structure --dry-run` prints this report and writes nothing), and keep the sources listed below until that review is complete; nothing here changed them. Removing `openspec/structure/` withdraws a model written too soon. After admission, structure changes only through a change's structural deltas, and the diagrams and tables are generated by `sdd-cli structure render`.",
|
|
38
38
|
"",
|
|
39
39
|
"## Elements",
|
|
40
40
|
"",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/lib/structure/extract.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/lib/structure/extract.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,+GAA+G;AAC/G,kHAAkH;AAClH,+GAA+G;AAC/G,mHAAmH;AACnH,qHAAqH;AACrH,qGAAqG;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAElD,kGAAkG;AAClG,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;AActE,SAAS,IAAI,CAAC,OAAe;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnJ,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACrJ,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,4BAA4B,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,sBAAsB,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,EAAU,EAAE,aAAqB,EAAE,CAAyC,EAAE,OAA0B,EAAE,aAA0C;IACjL,MAAM,KAAK,GAAG;QACZ,+BAA+B;QAC/B,EAAE;QACF,mDAAmD,KAAK,iBAAiB,EAAE,8BAA8B,aAAa,gBAAgB;QACtI,EAAE;QACF,qwBAAqwB;QACrwB,EAAE;QACF,aAAa;QACb,EAAE;QACF,0BAA0B;QAC1B,eAAe;QACf,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QACnD,EAAE;QACF,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG;QACjF,EAAE;QACF,wCAAwC;QACxC,EAAE;KACH,CAAC;IACF,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,wFAAwF,EAAE,EAAE,CAAC,CAAC;IAC/J,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,KAAK,CAAC,IAAI,CACR,iLAAiL,EACjL,EAAE,EACF,wCAAwC,EACxC,EAAE,EACF,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,EACrG,EAAE,EACF,gCAAgC,EAChC,EAAE,EACF,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAC7F,EAAE,EACF,kJAAkJ,EAClJ,EAAE,CACH,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,4HAA4H;AAC5H,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,QAAkC,iBAAiB;IACzG,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC3F,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QAC5C,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,iIAAiI,EAAE,CAAC;IACjL,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzE,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,mEAAmE,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,GAAG,KAAK,CAAC,WAAW,iGAAiG,EAAE,CAAC;QAC9R,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmC,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,aAAa,KAAK,SAAS;gBAAE,SAAS;YAC5C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9G,CAAC;QACD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,KAAK,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QACxH,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAU,CAAC,CAAC,CAAC;QAChI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACjI,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,KAAK,MAAM,CAAC,IAAI,IAAI;gBAAE,KAAK,MAAM,GAAG,IAAI,mBAAmB;oBAAE,IAAI,CAAC,CAAC,GAAG,CAAC;wBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvI,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ;YAAE,IAAI,CAAC,CAAC,QAAQ,KAAK,YAAY;gBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzI,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC5D,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IACvJ,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,CAAa;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACzC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { CatalogueRow } from "../catalogue/csv-writer.js";
|
|
2
|
+
import type { CanonicalSchema } from "../catalogue/schema-loader.js";
|
|
3
|
+
import { type Lifecycle, type OpenChange } from "./compose.js";
|
|
4
|
+
import { type Element } from "./model.js";
|
|
5
|
+
export declare const CONTRACTS = "contracts";
|
|
6
|
+
export interface Agreement {
|
|
7
|
+
readonly status: Lifecycle;
|
|
8
|
+
/** `<repo>/<file>` of each contract file the record agrees as new: amended, agreed by digest, relying on none. */
|
|
9
|
+
readonly newContracts: readonly string[];
|
|
10
|
+
}
|
|
11
|
+
/** The change's agreement record (docs/agreements/<change>.yaml): its status, or `unrecorded`, and its new contract files. */
|
|
12
|
+
export declare function readAgreement(repo: string, change: string): Promise<Agreement>;
|
|
13
|
+
/** The open changes (openspec/changes/<change>, not archive/), with their agreement records. */
|
|
14
|
+
export declare function loadOpenChanges(repo: string, problems: string[]): Promise<{
|
|
15
|
+
open: Map<string, OpenChange>;
|
|
16
|
+
newContracts: Map<string, readonly string[]>;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Each open change's additions, and the change that adds each. A contract is identified by its built row: the row
|
|
20
|
+
* whose spec_path is `<repo>/<file>` as the record names it. A new contract with no built row adds nothing, and a
|
|
21
|
+
* reference to it stays unresolved.
|
|
22
|
+
*/
|
|
23
|
+
export declare class Additions {
|
|
24
|
+
private readonly open;
|
|
25
|
+
private readonly own;
|
|
26
|
+
private readonly adder;
|
|
27
|
+
constructor(open: ReadonlyMap<string, OpenChange>, newContracts: ReadonlyMap<string, readonly string[]>, contractRows: readonly CatalogueRow[]);
|
|
28
|
+
/** The open change that adds the element or contract, if one does. */
|
|
29
|
+
addedBy(catalogue: string, id: string): string | undefined;
|
|
30
|
+
/** Whether the element or contract is the change's own addition or one of its dependency closure's. */
|
|
31
|
+
within(change: string, catalogue: string, id: string): boolean;
|
|
32
|
+
/** The contracts the given changes add. */
|
|
33
|
+
contracts(changes: Iterable<string>): Set<string>;
|
|
34
|
+
/** The open changes a source-built row belongs to: its change_id, or a new contract it is or names. */
|
|
35
|
+
ownersOf(schema: CanonicalSchema, catalogue: string, row: CatalogueRow, sddId: string): string[];
|
|
36
|
+
}
|
|
37
|
+
export interface Dangling {
|
|
38
|
+
readonly catalogue: string;
|
|
39
|
+
readonly column: string;
|
|
40
|
+
readonly referencingRow: string;
|
|
41
|
+
readonly value: string;
|
|
42
|
+
readonly target: string;
|
|
43
|
+
}
|
|
44
|
+
export interface Split<F extends Dangling> {
|
|
45
|
+
/** References an open change's own rows make to what that change adds. */
|
|
46
|
+
readonly intended: Array<{
|
|
47
|
+
readonly failure: F;
|
|
48
|
+
readonly change: string;
|
|
49
|
+
}>;
|
|
50
|
+
/** Still dangling; `addedBy` names the open change that adds the target, when one does. */
|
|
51
|
+
readonly dangling: Array<{
|
|
52
|
+
readonly failure: F;
|
|
53
|
+
readonly addedBy?: string;
|
|
54
|
+
}>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Sort a build's dangling references: a row an open change owns, naming that change's addition, resolves in that
|
|
58
|
+
* change's view. Every other stays dangling, including a row nothing ties to the change that adds its target.
|
|
59
|
+
*/
|
|
60
|
+
export declare function splitDangling<F extends Dangling>(schema: CanonicalSchema, rowsByCatalogue: ReadonlyMap<string, readonly CatalogueRow[]>, failures: readonly F[], additions: Additions, sddId: string): Split<F>;
|
|
61
|
+
/** Element key -> the agreed change that adds or modifies it, and the element as that change states it. */
|
|
62
|
+
export declare function intendedWrites(open: ReadonlyMap<string, OpenChange>, agreed: readonly string[]): Map<string, {
|
|
63
|
+
change: string;
|
|
64
|
+
element: Element;
|
|
65
|
+
}>;
|
|
66
|
+
//# sourceMappingURL=intended.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intended.d.ts","sourceRoot":"","sources":["../../../src/lib/structure/intended.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
// What an open change adds, for the references its own content makes (M-ADR 0230 §4.7, §4.11 proof 3).
|
|
2
|
+
// A reference made by an open change resolves against the current view plus that change's additions: the elements its
|
|
3
|
+
// structural deltas ADD, those of the changes in its depends_on closure, and the contracts its agreement record agrees
|
|
4
|
+
// as new files. A reference made by anything else resolves against the current view only, so a current reference that
|
|
5
|
+
// resolves only against an addition is still refused.
|
|
6
|
+
// What ties content to a change is never the reference being resolved:
|
|
7
|
+
// a model element the change's own delta (validateDeltas, viewAt)
|
|
8
|
+
// a source-built row with a change_id that change
|
|
9
|
+
// a contract row the change whose record agrees its file as new
|
|
10
|
+
// a row naming such a contract that change
|
|
11
|
+
// Pure but for reading agreement records.
|
|
12
|
+
import { readdir, readFile } from "node:fs/promises";
|
|
13
|
+
import { join } from "node:path";
|
|
14
|
+
import { parseDocument } from "yaml";
|
|
15
|
+
import { closure } from "./compose.js";
|
|
16
|
+
import { elementKey, loadChangeStructure } from "./model.js";
|
|
17
|
+
export const CONTRACTS = "contracts";
|
|
18
|
+
const LIFECYCLES = ["proposed", "agreed", "withdrawn", "superseded"];
|
|
19
|
+
/** The change's agreement record (docs/agreements/<change>.yaml): its status, or `unrecorded`, and its new contract files. */
|
|
20
|
+
export async function readAgreement(repo, change) {
|
|
21
|
+
let text;
|
|
22
|
+
try {
|
|
23
|
+
text = await readFile(join(repo, "docs", "agreements", `${change}.yaml`), "utf8");
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return { status: "unrecorded", newContracts: [] };
|
|
27
|
+
}
|
|
28
|
+
let record;
|
|
29
|
+
try {
|
|
30
|
+
record = parseDocument(text).toJS()?.agreement_record;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return { status: "unrecorded", newContracts: [] };
|
|
34
|
+
}
|
|
35
|
+
const status = LIFECYCLES.find((s) => s === String(record?.["status"] ?? "")) ?? "unrecorded";
|
|
36
|
+
const newContracts = [];
|
|
37
|
+
const entries = Array.isArray(record?.["contracts"]) ? record["contracts"] : [];
|
|
38
|
+
for (const raw of entries) {
|
|
39
|
+
if (raw === null || typeof raw !== "object")
|
|
40
|
+
continue;
|
|
41
|
+
const e = raw;
|
|
42
|
+
if (e["amended_by_this_change"] !== true)
|
|
43
|
+
continue;
|
|
44
|
+
const files = Array.isArray(e["files"]) ? e["files"].map(String) : e["file"] !== undefined ? [String(e["file"])] : [];
|
|
45
|
+
// agreement-record schema 1.2.0 and later: a file the change relies on carries relies_on, so an agreed file
|
|
46
|
+
// without one is new (1.3.0 states it). An entry with no agrees predates the digests and says nothing either way.
|
|
47
|
+
const digest = (field, f) => {
|
|
48
|
+
const v = e[field];
|
|
49
|
+
return v !== null && typeof v === "object" ? String(v[f] ?? "") : String(v ?? "");
|
|
50
|
+
};
|
|
51
|
+
for (const f of files)
|
|
52
|
+
if (digest("agrees", f) !== "" && digest("relies_on", f) === "")
|
|
53
|
+
newContracts.push(`${String(e["repo"] ?? "")}/${f}`);
|
|
54
|
+
}
|
|
55
|
+
return { status, newContracts };
|
|
56
|
+
}
|
|
57
|
+
/** The open changes (openspec/changes/<change>, not archive/), with their agreement records. */
|
|
58
|
+
export async function loadOpenChanges(repo, problems) {
|
|
59
|
+
let names;
|
|
60
|
+
try {
|
|
61
|
+
names = (await readdir(join(repo, "openspec", "changes"), { withFileTypes: true }))
|
|
62
|
+
.filter((e) => e.isDirectory() && e.name !== "archive")
|
|
63
|
+
.map((e) => e.name)
|
|
64
|
+
.sort();
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
names = [];
|
|
68
|
+
}
|
|
69
|
+
const open = new Map();
|
|
70
|
+
const newContracts = new Map();
|
|
71
|
+
for (const name of names) {
|
|
72
|
+
const agreement = await readAgreement(repo, name);
|
|
73
|
+
open.set(name, { structure: await loadChangeStructure(repo, name, problems), status: agreement.status });
|
|
74
|
+
newContracts.set(name, agreement.newContracts);
|
|
75
|
+
}
|
|
76
|
+
return { open, newContracts };
|
|
77
|
+
}
|
|
78
|
+
const cell = (v) => (v === null || v === undefined ? "" : String(v));
|
|
79
|
+
/**
|
|
80
|
+
* Each open change's additions, and the change that adds each. A contract is identified by its built row: the row
|
|
81
|
+
* whose spec_path is `<repo>/<file>` as the record names it. A new contract with no built row adds nothing, and a
|
|
82
|
+
* reference to it stays unresolved.
|
|
83
|
+
*/
|
|
84
|
+
export class Additions {
|
|
85
|
+
open;
|
|
86
|
+
own = new Map();
|
|
87
|
+
adder = new Map();
|
|
88
|
+
constructor(open, newContracts, contractRows) {
|
|
89
|
+
this.open = open;
|
|
90
|
+
const idByPath = new Map();
|
|
91
|
+
for (const r of contractRows)
|
|
92
|
+
if (cell(r["spec_path"]) !== "")
|
|
93
|
+
idByPath.set(cell(r["spec_path"]), cell(r["id"]));
|
|
94
|
+
for (const [name, oc] of open) {
|
|
95
|
+
const keys = new Set();
|
|
96
|
+
for (const d of oc.structure.deltas)
|
|
97
|
+
for (const e of d.added)
|
|
98
|
+
keys.add(elementKey(e.catalogue, e.id));
|
|
99
|
+
for (const p of newContracts.get(name) ?? []) {
|
|
100
|
+
const id = idByPath.get(p);
|
|
101
|
+
if (id !== undefined && id !== "")
|
|
102
|
+
keys.add(elementKey(CONTRACTS, id));
|
|
103
|
+
}
|
|
104
|
+
this.own.set(name, keys);
|
|
105
|
+
for (const k of keys)
|
|
106
|
+
if (!this.adder.has(k))
|
|
107
|
+
this.adder.set(k, name);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/** The open change that adds the element or contract, if one does. */
|
|
111
|
+
addedBy(catalogue, id) {
|
|
112
|
+
return this.adder.get(elementKey(catalogue, id));
|
|
113
|
+
}
|
|
114
|
+
/** Whether the element or contract is the change's own addition or one of its dependency closure's. */
|
|
115
|
+
within(change, catalogue, id) {
|
|
116
|
+
const key = elementKey(catalogue, id);
|
|
117
|
+
return closure(change, this.open).some((c) => this.own.get(c)?.has(key) ?? false);
|
|
118
|
+
}
|
|
119
|
+
/** The contracts the given changes add. */
|
|
120
|
+
contracts(changes) {
|
|
121
|
+
const out = new Set();
|
|
122
|
+
for (const c of changes)
|
|
123
|
+
for (const k of this.own.get(c) ?? [])
|
|
124
|
+
if (k.startsWith(`${CONTRACTS}/`))
|
|
125
|
+
out.add(k.slice(CONTRACTS.length + 1));
|
|
126
|
+
return out;
|
|
127
|
+
}
|
|
128
|
+
/** The open changes a source-built row belongs to: its change_id, or a new contract it is or names. */
|
|
129
|
+
ownersOf(schema, catalogue, row, sddId) {
|
|
130
|
+
const out = new Set();
|
|
131
|
+
const changeId = cell(row["change_id"]);
|
|
132
|
+
if (changeId !== "") {
|
|
133
|
+
const name = changeId.startsWith(`${sddId}::`) ? changeId.slice(sddId.length + 2) : changeId;
|
|
134
|
+
if (this.open.has(name))
|
|
135
|
+
out.add(name);
|
|
136
|
+
}
|
|
137
|
+
const contractOwner = (id) => {
|
|
138
|
+
const by = this.adder.get(elementKey(CONTRACTS, id));
|
|
139
|
+
if (by !== undefined)
|
|
140
|
+
out.add(by);
|
|
141
|
+
};
|
|
142
|
+
const cat = schema.catalogues.find((c) => c.name === catalogue);
|
|
143
|
+
if (catalogue === CONTRACTS && cat)
|
|
144
|
+
contractOwner(cell(row[cat.primaryKey]));
|
|
145
|
+
for (const fk of cat?.foreignKeys ?? [])
|
|
146
|
+
if (fk.references === `${CONTRACTS}.id` && cell(row[fk.column]) !== "")
|
|
147
|
+
contractOwner(cell(row[fk.column]));
|
|
148
|
+
return [...out].sort();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Sort a build's dangling references: a row an open change owns, naming that change's addition, resolves in that
|
|
153
|
+
* change's view. Every other stays dangling, including a row nothing ties to the change that adds its target.
|
|
154
|
+
*/
|
|
155
|
+
export function splitDangling(schema, rowsByCatalogue, failures, additions, sddId) {
|
|
156
|
+
const intended = [];
|
|
157
|
+
const dangling = [];
|
|
158
|
+
const index = new Map();
|
|
159
|
+
const rowOf = (catalogue, pk) => {
|
|
160
|
+
let byPk = index.get(catalogue);
|
|
161
|
+
if (!byPk) {
|
|
162
|
+
const key = schema.catalogues.find((c) => c.name === catalogue)?.primaryKey ?? "id";
|
|
163
|
+
byPk = new Map((rowsByCatalogue.get(catalogue) ?? []).map((r) => [cell(r[key]), r]));
|
|
164
|
+
index.set(catalogue, byPk);
|
|
165
|
+
}
|
|
166
|
+
return byPk.get(pk);
|
|
167
|
+
};
|
|
168
|
+
for (const f of failures) {
|
|
169
|
+
const [target, column] = f.target.split(".");
|
|
170
|
+
const targetPk = schema.catalogues.find((c) => c.name === target)?.primaryKey;
|
|
171
|
+
const row = rowOf(f.catalogue, f.referencingRow);
|
|
172
|
+
const owner = f.value === "" || column !== targetPk || row === undefined
|
|
173
|
+
? undefined
|
|
174
|
+
: additions.ownersOf(schema, f.catalogue, row, sddId).find((c) => additions.within(c, target, f.value));
|
|
175
|
+
if (owner !== undefined)
|
|
176
|
+
intended.push({ failure: f, change: owner });
|
|
177
|
+
else {
|
|
178
|
+
const by = f.value === "" ? undefined : additions.addedBy(target, f.value);
|
|
179
|
+
dangling.push(by === undefined ? { failure: f } : { failure: f, addedBy: by });
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return { intended, dangling };
|
|
183
|
+
}
|
|
184
|
+
/** Element key -> the agreed change that adds or modifies it, and the element as that change states it. */
|
|
185
|
+
export function intendedWrites(open, agreed) {
|
|
186
|
+
const out = new Map();
|
|
187
|
+
for (const c of agreed) {
|
|
188
|
+
for (const d of open.get(c)?.structure.deltas ?? [])
|
|
189
|
+
for (const e of [...d.added, ...d.modified])
|
|
190
|
+
out.set(elementKey(e.catalogue, e.id), { change: c, element: e });
|
|
191
|
+
}
|
|
192
|
+
return out;
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=intended.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intended.js","sourceRoot":"","sources":["../../../src/lib/structure/intended.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// The structural model and a change's structural deltas (M-ADR 0230 §4.3, §4.4
|
|
1
|
+
// The structural model and a change's structural deltas (M-ADR 0230 §4.3, §4.4). Pure reads, so the
|
|
2
2
|
// verify-only CLI can carry them. The format is docs/method/methods/guides/structural-model-format.md:
|
|
3
3
|
// openspec/structure/<partition>.yaml the model, one file per partition
|
|
4
4
|
// openspec/changes/<change>/structure/<partition>.yaml a change's delta for that partition
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/lib/structure/model.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/lib/structure/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// The generated views of the structural model (M-ADR 0230 §4.3
|
|
1
|
+
// The generated views of the structural model (M-ADR 0230 §4.3): projections, never edited. Each file is
|
|
2
2
|
// rendered from the current view alone, in id order, so the same model renders the same bytes. Its first line names
|
|
3
3
|
// the generator and the digest of the body below it, which tells three states apart:
|
|
4
4
|
// missing the file is absent
|