musubix3 0.1.19 → 0.1.21
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/.github/plugin/marketplace.json +2 -2
- package/.github/skills/sdd-change/SKILL.md +28 -45
- package/CHANGELOG.md +126 -0
- package/README-ja.md +171 -5
- package/README.md +185 -8
- package/dist/packages/analysis/src/adapters.d.ts +2 -2
- package/dist/packages/analysis/src/adapters.js +33 -3
- package/dist/packages/analysis/src/adapters.js.map +1 -1
- package/dist/packages/analysis/src/approval-record.js +4 -0
- package/dist/packages/analysis/src/approval-record.js.map +1 -1
- package/dist/packages/analysis/src/approval.d.ts +51 -0
- package/dist/packages/analysis/src/approval.js +341 -2
- package/dist/packages/analysis/src/approval.js.map +1 -1
- package/dist/packages/analysis/src/attestation.js +4 -0
- package/dist/packages/analysis/src/attestation.js.map +1 -1
- package/dist/packages/analysis/src/change-evidence.d.ts +65 -8
- package/dist/packages/analysis/src/change-evidence.js +173 -46
- package/dist/packages/analysis/src/change-evidence.js.map +1 -1
- package/dist/packages/analysis/src/change-waiver.d.ts +46 -13
- package/dist/packages/analysis/src/change-waiver.js +481 -152
- package/dist/packages/analysis/src/change-waiver.js.map +1 -1
- package/dist/packages/analysis/src/change.d.ts +1 -0
- package/dist/packages/analysis/src/change.js +194 -66
- package/dist/packages/analysis/src/change.js.map +1 -1
- package/dist/packages/analysis/src/evidence-merge-guard.d.ts +9 -0
- package/dist/packages/analysis/src/evidence-merge-guard.js +62 -0
- package/dist/packages/analysis/src/evidence-merge-guard.js.map +1 -0
- package/dist/packages/analysis/src/evidence-merge.d.ts +55 -0
- package/dist/packages/analysis/src/evidence-merge.js +1182 -0
- package/dist/packages/analysis/src/evidence-merge.js.map +1 -0
- package/dist/packages/analysis/src/evidence-writer-lock.d.ts +189 -0
- package/dist/packages/analysis/src/evidence-writer-lock.js +843 -0
- package/dist/packages/analysis/src/evidence-writer-lock.js.map +1 -0
- package/dist/packages/analysis/src/files.js +11 -0
- package/dist/packages/analysis/src/files.js.map +1 -1
- package/dist/packages/analysis/src/formal.js +7 -0
- package/dist/packages/analysis/src/formal.js.map +1 -1
- package/dist/packages/analysis/src/gate.d.ts +1 -1
- package/dist/packages/analysis/src/gate.js +23 -6
- package/dist/packages/analysis/src/gate.js.map +1 -1
- package/dist/packages/analysis/src/graph.js +6 -0
- package/dist/packages/analysis/src/graph.js.map +1 -1
- package/dist/packages/analysis/src/index.d.ts +3 -0
- package/dist/packages/analysis/src/index.js +3 -0
- package/dist/packages/analysis/src/index.js.map +1 -1
- package/dist/packages/analysis/src/knowledge.js +4 -0
- package/dist/packages/analysis/src/knowledge.js.map +1 -1
- package/dist/packages/analysis/src/model-correspondence.js +5 -1
- package/dist/packages/analysis/src/model-correspondence.js.map +1 -1
- package/dist/packages/analysis/src/mutation.js +4 -0
- package/dist/packages/analysis/src/mutation.js.map +1 -1
- package/dist/packages/analysis/src/order.d.ts +16 -1
- package/dist/packages/analysis/src/order.js +10 -0
- package/dist/packages/analysis/src/order.js.map +1 -1
- package/dist/packages/analysis/src/performance.js +5 -1
- package/dist/packages/analysis/src/performance.js.map +1 -1
- package/dist/packages/analysis/src/quality-refresh.d.ts +18 -0
- package/dist/packages/analysis/src/quality-refresh.js +312 -0
- package/dist/packages/analysis/src/quality-refresh.js.map +1 -0
- package/dist/packages/analysis/src/tdd.d.ts +86 -3
- package/dist/packages/analysis/src/tdd.js +604 -52
- package/dist/packages/analysis/src/tdd.js.map +1 -1
- package/dist/packages/analysis/src/trace.d.ts +24 -0
- package/dist/packages/analysis/src/trace.js +101 -3
- package/dist/packages/analysis/src/trace.js.map +1 -1
- package/dist/packages/analysis/src/workflow-waiver.d.ts +6 -2
- package/dist/packages/analysis/src/workflow-waiver.js +9 -5
- package/dist/packages/analysis/src/workflow-waiver.js.map +1 -1
- package/dist/packages/analysis/src/workflow.d.ts +1 -1
- package/dist/packages/analysis/src/workflow.js +103 -21
- package/dist/packages/analysis/src/workflow.js.map +1 -1
- package/dist/packages/cli/src/install.js +51 -6
- package/dist/packages/cli/src/install.js.map +1 -1
- package/dist/packages/cli/src/main.js +252 -79
- package/dist/packages/cli/src/main.js.map +1 -1
- package/dist/packages/domain/src/design.js +8 -1
- package/dist/packages/domain/src/design.js.map +1 -1
- package/dist/packages/domain/src/types.d.ts +1 -0
- package/package.json +7 -2
- package/plugin.json +1 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { TddEvidence } from './tdd.js';
|
|
2
1
|
export declare const changePhases: readonly ["impact", "requirements", "design", "red", "implementation", "green", "quality"];
|
|
3
2
|
export type ChangePhase = typeof changePhases[number];
|
|
4
3
|
export interface ChangeFingerprints {
|
|
@@ -31,9 +30,10 @@ export interface ChangeRecord {
|
|
|
31
30
|
requirementIds: string[];
|
|
32
31
|
phases: Partial<Record<ChangePhase, ChangePhaseEvidence>>;
|
|
33
32
|
tddBatches?: ChangeTddBatch[];
|
|
33
|
+
qualityHistory?: ChangePhaseEvidence[];
|
|
34
34
|
}
|
|
35
35
|
export interface ChangeEvidence {
|
|
36
|
-
schemaVersion: 1;
|
|
36
|
+
schemaVersion: 1 | 2;
|
|
37
37
|
changes: ChangeRecord[];
|
|
38
38
|
}
|
|
39
39
|
export interface ChangeCompleteness {
|
|
@@ -45,12 +45,47 @@ export interface ChangeCompleteness {
|
|
|
45
45
|
valid: boolean;
|
|
46
46
|
}
|
|
47
47
|
export declare function loadChangeEvidence(root: string): Promise<ChangeEvidence | null>;
|
|
48
|
+
/** @id CODE-CHANGE-QUALITY-REFRESH-001
|
|
49
|
+
* @implements REQ-CHANGE-QUALITY-REFRESH-001 REQ-CHANGE-QUALITY-REFRESH-003
|
|
50
|
+
* @design DES-CHANGE-QUALITY-REFRESH-001
|
|
51
|
+
*/
|
|
52
|
+
export declare function qualityLineage(change: ChangeRecord): ChangePhaseEvidence[];
|
|
53
|
+
export declare function qualityIdentity(ordinal: number): string;
|
|
54
|
+
export declare function qualityPayloadForIdentity(change: ChangeRecord, identity: string): ChangePhaseEvidence | undefined;
|
|
55
|
+
export declare function qualityOrderIdentity(change: ChangeRecord, checkpoint: ChangePhaseEvidence): string;
|
|
48
56
|
/** @id CODE-CHANGE-REQUIREMENT-BATCHES-001
|
|
49
57
|
* @implements REQ-CHANGE-REQUIREMENT-BATCHES-001 REQ-CHANGE-REQUIREMENT-BATCHES-003 REQ-CHANGE-REQUIREMENT-BATCHES-004
|
|
50
58
|
* @design DES-CHANGE-REQUIREMENT-BATCHES-001
|
|
51
59
|
*/
|
|
52
60
|
export declare function effectiveBatches(change: ChangeRecord): ChangeTddBatch[];
|
|
61
|
+
/** @id CODE-CHANGE-REQUIREMENT-BATCHES-003
|
|
62
|
+
* @implements REQ-CHANGE-REQUIREMENT-BATCHES-005
|
|
63
|
+
* @design DES-CHANGE-REQUIREMENT-BATCHES-002
|
|
64
|
+
*/
|
|
53
65
|
export declare function batchFor(batches: ChangeTddBatch[], requirementId: string): ChangeTddBatch | undefined;
|
|
66
|
+
/** @id CODE-TDD-GREEN-REQUIREMENT-SCOPING-002
|
|
67
|
+
* @implements REQ-TDD-GREEN-REQUIREMENT-SCOPING-003
|
|
68
|
+
* @design DES-TDD-GREEN-REQUIREMENT-SCOPING-002
|
|
69
|
+
* Fail-fast precondition for `tdd red`/`tdd green`, checked by
|
|
70
|
+
* `runTddPhaseUnlocked` (`tdd.ts`) before any side effect. Both phases first
|
|
71
|
+
* share the same "does any candidate change have `phases.design` recorded"
|
|
72
|
+
* check; only once a design-satisfied candidate exists does `green` go on to
|
|
73
|
+
* distinguish a missing `implementation` from a missing `red`. This mirrors
|
|
74
|
+
* `change.ts`'s own `recordChangePhaseUnlocked` phase-precedence rules
|
|
75
|
+
* (`design` before `red` before `implementation` before `green`) so the
|
|
76
|
+
* reported `missingPhase` always names a `change-record` command `change.ts`
|
|
77
|
+
* would itself currently accept.
|
|
78
|
+
*/
|
|
79
|
+
export declare function changeRecordPhasePrecondition(evidence: ChangeEvidence | null, phase: 'red' | 'green', requirementId: string): {
|
|
80
|
+
satisfied: boolean;
|
|
81
|
+
changeId?: string;
|
|
82
|
+
missingPhase?: 'design' | 'red' | 'implementation';
|
|
83
|
+
};
|
|
84
|
+
export declare function currentRequirementIdsForBatch(batches: ChangeTddBatch[], batch: ChangeTddBatch, requirementIds: string[]): string[];
|
|
85
|
+
export declare function currentTddOrderWindow(change: ChangeRecord, requirementId: string): {
|
|
86
|
+
after: number;
|
|
87
|
+
through: number;
|
|
88
|
+
} | undefined;
|
|
54
89
|
/** @id CODE-CHANGE-EVIDENCE-WAIVER-014
|
|
55
90
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-016
|
|
56
91
|
* @design DES-CHANGE-EVIDENCE-WAIVER-001
|
|
@@ -64,12 +99,11 @@ export declare function batchKey(requirementIds: string[]): string;
|
|
|
64
99
|
* @design DES-CHANGE-EVIDENCE-WAIVER-001
|
|
65
100
|
*/
|
|
66
101
|
export declare function batchForKey(batches: ChangeTddBatch[], key: string): ChangeTddBatch | undefined;
|
|
102
|
+
export declare function batchesForKey<T extends {
|
|
103
|
+
requirementIds: string[];
|
|
104
|
+
}>(batches: T[], key: string): T[];
|
|
67
105
|
export declare function requirementsUnchangedCondition(change: ChangeRecord): boolean;
|
|
68
106
|
export declare function designUnchangedCondition(change: ChangeRecord): boolean;
|
|
69
|
-
export declare function hasValidTddCycle(change: ChangeRecord, requirementId: string, tdd: TddEvidence | null): boolean;
|
|
70
|
-
export declare function redUnprovenCondition(change: ChangeRecord, requirementId: string, tdd: TddEvidence | null): boolean;
|
|
71
|
-
export declare function greenUnprovenCondition(change: ChangeRecord, requirementId: string, tdd: TddEvidence | null): boolean;
|
|
72
|
-
export declare function completenessTddUnsatisfiedCondition(change: ChangeRecord, requirementId: string, tdd: TddEvidence | null): boolean;
|
|
73
107
|
/** @id CODE-CHANGE-EVIDENCE-WAIVER-016
|
|
74
108
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-002
|
|
75
109
|
* @design DES-CHANGE-EVIDENCE-WAIVER-001
|
|
@@ -83,9 +117,32 @@ export declare function completenessTddUnsatisfiedCondition(change: ChangeRecord
|
|
|
83
117
|
export declare function recordMissingCondition(root: string, evidence: ChangeEvidence | null, changeId: string): Promise<boolean>;
|
|
84
118
|
export declare function phaseMissingCondition(change: ChangeRecord, phaseName: string): boolean;
|
|
85
119
|
export declare function orderMigrationRequiredPhaseCondition(change: ChangeRecord, phaseName: string): boolean;
|
|
86
|
-
|
|
87
|
-
|
|
120
|
+
/** @id CODE-CHANGE-EVIDENCE-WAIVER-022
|
|
121
|
+
* @implements REQ-CHANGE-EVIDENCE-WAIVER-011
|
|
122
|
+
* @design DES-CHANGE-EVIDENCE-WAIVER-004
|
|
123
|
+
*/
|
|
124
|
+
type BatchOrderState = Pick<ChangeTddBatch, 'requirementIds'> & Partial<Record<'red' | 'implementation' | 'green', {
|
|
125
|
+
order?: number;
|
|
126
|
+
}>>;
|
|
127
|
+
export declare function orderMigrationRequiredBatchItemCondition(batch: BatchOrderState, batchPhaseName: string): boolean;
|
|
128
|
+
export declare function orderMigrationRequiredBatchCondition(change: Pick<ChangeRecord, 'changeId' | 'requirementIds' | 'phases'> & {
|
|
129
|
+
tddBatches?: BatchOrderState[];
|
|
130
|
+
}, batchPhaseName: string, key: string): boolean;
|
|
131
|
+
/** @id CODE-CHANGE-EVIDENCE-WAIVER-024
|
|
132
|
+
* @implements REQ-CHANGE-EVIDENCE-WAIVER-017
|
|
133
|
+
* @design DES-CHANGE-EVIDENCE-WAIVER-004
|
|
134
|
+
* Pure re-derivations of `CHANGE_PHASE_ORDER`'s six transition conditions
|
|
135
|
+
* (GitHub Issue #56), mirroring `orderMigrationRequiredPhaseCondition`'s/
|
|
136
|
+
* `orderMigrationRequiredBatchCondition`'s shape so `evaluateWaiverCondition`
|
|
137
|
+
* never duplicates `change.ts`'s emission-site comparisons.
|
|
138
|
+
*/
|
|
139
|
+
export declare function phaseOrderPhaseCondition(change: ChangeRecord, phaseName: string): boolean;
|
|
140
|
+
export declare function phaseOrderBatchItemCondition(change: Pick<ChangeRecord, 'phases'>, batch: BatchOrderState, batchPhaseName: string): boolean;
|
|
141
|
+
export declare function phaseOrderBatchCondition(change: Pick<ChangeRecord, 'changeId' | 'requirementIds' | 'phases'> & {
|
|
142
|
+
tddBatches?: BatchOrderState[];
|
|
143
|
+
}, batchPhaseName: string, key: string): boolean;
|
|
88
144
|
export declare function testsUnchangedCondition(change: ChangeRecord, batch: ChangeTddBatch): boolean;
|
|
89
145
|
export declare function implementationUnchangedCondition(batch: ChangeTddBatch): boolean;
|
|
90
146
|
export declare function relevantImplementationUnchangedCondition(batch: ChangeTddBatch, requirementId: string): boolean;
|
|
91
147
|
export declare function testChangedAfterRedCondition(batch: ChangeTddBatch): boolean;
|
|
148
|
+
export {};
|
|
@@ -9,10 +9,41 @@ export async function loadChangeEvidence(root) {
|
|
|
9
9
|
if (!await exists(within(root, path)))
|
|
10
10
|
return null;
|
|
11
11
|
const value = JSON.parse(await readText(root, path));
|
|
12
|
-
if (value.schemaVersion
|
|
12
|
+
if (!Number.isInteger(value.schemaVersion) || value.schemaVersion < 1 || !Array.isArray(value.changes)) {
|
|
13
13
|
throw new Error('Invalid change chronology evidence.');
|
|
14
|
+
}
|
|
15
|
+
if (value.schemaVersion > 2) {
|
|
16
|
+
throw new Error(`CHANGE_EVIDENCE_SCHEMA_UNSUPPORTED: schema version ${value.schemaVersion} is not supported.`);
|
|
17
|
+
}
|
|
14
18
|
return value;
|
|
15
19
|
}
|
|
20
|
+
/** @id CODE-CHANGE-QUALITY-REFRESH-001
|
|
21
|
+
* @implements REQ-CHANGE-QUALITY-REFRESH-001 REQ-CHANGE-QUALITY-REFRESH-003
|
|
22
|
+
* @design DES-CHANGE-QUALITY-REFRESH-001
|
|
23
|
+
*/
|
|
24
|
+
export function qualityLineage(change) {
|
|
25
|
+
const quality = change.phases.quality;
|
|
26
|
+
return [...(change.qualityHistory ?? []), ...(quality ? [quality] : [])];
|
|
27
|
+
}
|
|
28
|
+
export function qualityIdentity(ordinal) {
|
|
29
|
+
if (!Number.isInteger(ordinal) || ordinal < 1)
|
|
30
|
+
throw new Error('Quality ordinal must be a positive integer.');
|
|
31
|
+
return ordinal === 1 ? 'quality' : `quality:${ordinal}`;
|
|
32
|
+
}
|
|
33
|
+
export function qualityPayloadForIdentity(change, identity) {
|
|
34
|
+
const match = /^quality(?::([1-9]\d*))?$/.exec(identity);
|
|
35
|
+
if (!match)
|
|
36
|
+
return undefined;
|
|
37
|
+
const ordinal = match[1] === undefined ? 1 : Number(match[1]);
|
|
38
|
+
const lineage = qualityLineage(change);
|
|
39
|
+
return lineage[ordinal - 1];
|
|
40
|
+
}
|
|
41
|
+
export function qualityOrderIdentity(change, checkpoint) {
|
|
42
|
+
const index = qualityLineage(change).findIndex((entry) => entry === checkpoint);
|
|
43
|
+
if (index < 0)
|
|
44
|
+
throw new Error('Quality checkpoint is not part of the supplied change lineage.');
|
|
45
|
+
return qualityIdentity(index + 1);
|
|
46
|
+
}
|
|
16
47
|
/** @id CODE-CHANGE-REQUIREMENT-BATCHES-001
|
|
17
48
|
* @implements REQ-CHANGE-REQUIREMENT-BATCHES-001 REQ-CHANGE-REQUIREMENT-BATCHES-003 REQ-CHANGE-REQUIREMENT-BATCHES-004
|
|
18
49
|
* @design DES-CHANGE-REQUIREMENT-BATCHES-001
|
|
@@ -31,8 +62,76 @@ export function effectiveBatches(change) {
|
|
|
31
62
|
}
|
|
32
63
|
return batches;
|
|
33
64
|
}
|
|
65
|
+
/** @id CODE-CHANGE-REQUIREMENT-BATCHES-003
|
|
66
|
+
* @implements REQ-CHANGE-REQUIREMENT-BATCHES-005
|
|
67
|
+
* @design DES-CHANGE-REQUIREMENT-BATCHES-002
|
|
68
|
+
*/
|
|
34
69
|
export function batchFor(batches, requirementId) {
|
|
35
|
-
|
|
70
|
+
const applicable = batches.filter((batch) => batch.requirementIds.includes(requirementId));
|
|
71
|
+
const ordered = applicable.filter((batch) => Number.isInteger(batch.red?.order));
|
|
72
|
+
if (!ordered.length)
|
|
73
|
+
return applicable[0];
|
|
74
|
+
return ordered.reduce((selected, batch) => batch.red.order >= selected.red.order ? batch : selected);
|
|
75
|
+
}
|
|
76
|
+
/** @id CODE-TDD-GREEN-REQUIREMENT-SCOPING-002
|
|
77
|
+
* @implements REQ-TDD-GREEN-REQUIREMENT-SCOPING-003
|
|
78
|
+
* @design DES-TDD-GREEN-REQUIREMENT-SCOPING-002
|
|
79
|
+
* Fail-fast precondition for `tdd red`/`tdd green`, checked by
|
|
80
|
+
* `runTddPhaseUnlocked` (`tdd.ts`) before any side effect. Both phases first
|
|
81
|
+
* share the same "does any candidate change have `phases.design` recorded"
|
|
82
|
+
* check; only once a design-satisfied candidate exists does `green` go on to
|
|
83
|
+
* distinguish a missing `implementation` from a missing `red`. This mirrors
|
|
84
|
+
* `change.ts`'s own `recordChangePhaseUnlocked` phase-precedence rules
|
|
85
|
+
* (`design` before `red` before `implementation` before `green`) so the
|
|
86
|
+
* reported `missingPhase` always names a `change-record` command `change.ts`
|
|
87
|
+
* would itself currently accept.
|
|
88
|
+
*/
|
|
89
|
+
export function changeRecordPhasePrecondition(evidence, phase, requirementId) {
|
|
90
|
+
const candidates = (evidence?.changes ?? []).filter((change) => change.requirementIds.includes(requirementId));
|
|
91
|
+
const designSatisfied = candidates.filter((change) => change.phases.design);
|
|
92
|
+
if (!designSatisfied.length) {
|
|
93
|
+
return {
|
|
94
|
+
satisfied: false,
|
|
95
|
+
missingPhase: 'design',
|
|
96
|
+
...(candidates[0] ? { changeId: candidates[0].changeId } : {}),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
if (phase === 'red')
|
|
100
|
+
return { satisfied: true };
|
|
101
|
+
const batchesByChange = designSatisfied.map((change) => ({
|
|
102
|
+
change,
|
|
103
|
+
batch: batchFor(effectiveBatches(change), requirementId),
|
|
104
|
+
}));
|
|
105
|
+
if (batchesByChange.some(({ batch }) => batch?.red && batch.implementation)) {
|
|
106
|
+
return { satisfied: true };
|
|
107
|
+
}
|
|
108
|
+
const withRed = batchesByChange.find(({ batch }) => batch?.red);
|
|
109
|
+
if (withRed) {
|
|
110
|
+
return { satisfied: false, changeId: withRed.change.changeId, missingPhase: 'implementation' };
|
|
111
|
+
}
|
|
112
|
+
return { satisfied: false, changeId: designSatisfied[0].changeId, missingPhase: 'red' };
|
|
113
|
+
}
|
|
114
|
+
export function currentRequirementIdsForBatch(batches, batch, requirementIds) {
|
|
115
|
+
// `batch` must be an element of `batches`; callers intentionally share one
|
|
116
|
+
// effectiveBatches() result so duplicate batch keys remain distinguishable.
|
|
117
|
+
return requirementIds.filter((requirementId) => batchFor(batches, requirementId) === batch);
|
|
118
|
+
}
|
|
119
|
+
export function currentTddOrderWindow(change, requirementId) {
|
|
120
|
+
const requirementsOrder = change.phases.requirements?.order;
|
|
121
|
+
const batches = effectiveBatches(change);
|
|
122
|
+
const batch = batchFor(batches, requirementId);
|
|
123
|
+
const currentRedOrder = batch?.red?.order;
|
|
124
|
+
if (!Number.isInteger(requirementsOrder) || !Number.isInteger(currentRedOrder))
|
|
125
|
+
return undefined;
|
|
126
|
+
const previousRedOrders = batches
|
|
127
|
+
.filter((candidate) => candidate.requirementIds.includes(requirementId)
|
|
128
|
+
&& Number.isInteger(candidate.red?.order)
|
|
129
|
+
&& candidate.red.order < currentRedOrder)
|
|
130
|
+
.map((candidate) => candidate.red.order);
|
|
131
|
+
return {
|
|
132
|
+
after: Math.max(requirementsOrder, ...previousRedOrders),
|
|
133
|
+
through: currentRedOrder,
|
|
134
|
+
};
|
|
36
135
|
}
|
|
37
136
|
/** @id CODE-CHANGE-EVIDENCE-WAIVER-014
|
|
38
137
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-016
|
|
@@ -51,6 +150,9 @@ export function batchKey(requirementIds) {
|
|
|
51
150
|
export function batchForKey(batches, key) {
|
|
52
151
|
return batches.find((batch) => batchKey(batch.requirementIds) === key);
|
|
53
152
|
}
|
|
153
|
+
export function batchesForKey(batches, key) {
|
|
154
|
+
return batches.filter((batch) => batchKey(batch.requirementIds) === key);
|
|
155
|
+
}
|
|
54
156
|
// Pure, side-effect-free re-derivations of the exact "would this diagnostic
|
|
55
157
|
// currently fire" conditions used by change.ts's validators. Kept here (with
|
|
56
158
|
// no dependency on change.ts or change-waiver.ts) so change-waiver.ts can
|
|
@@ -67,41 +169,6 @@ export function designUnchangedCondition(change) {
|
|
|
67
169
|
const design = change.phases.design;
|
|
68
170
|
return !!requirements && !!design && requirements.fingerprints.design === design.fingerprints.design;
|
|
69
171
|
}
|
|
70
|
-
export function hasValidTddCycle(change, requirementId, tdd) {
|
|
71
|
-
const requirements = change.phases.requirements;
|
|
72
|
-
const batch = batchFor(effectiveBatches(change), requirementId);
|
|
73
|
-
const red = batch?.red;
|
|
74
|
-
const implementation = batch?.implementation;
|
|
75
|
-
const green = batch?.green;
|
|
76
|
-
const cycles = tdd?.cycles.filter((cycle) => cycle.requirementId === requirementId) ?? [];
|
|
77
|
-
return cycles.some((cycle) => requirements
|
|
78
|
-
&& red
|
|
79
|
-
&& implementation
|
|
80
|
-
&& green
|
|
81
|
-
&& Number.isInteger(requirements.order)
|
|
82
|
-
&& Number.isInteger(red.order)
|
|
83
|
-
&& Number.isInteger(implementation.order)
|
|
84
|
-
&& Number.isInteger(green.order)
|
|
85
|
-
&& Number.isInteger(cycle.red.order)
|
|
86
|
-
&& Number.isInteger(cycle.green?.order)
|
|
87
|
-
&& cycle.red.valid
|
|
88
|
-
&& cycle.green?.valid
|
|
89
|
-
&& cycle.red.order > requirements.order
|
|
90
|
-
&& cycle.red.order <= red.order
|
|
91
|
-
&& cycle.green.order > implementation.order
|
|
92
|
-
&& cycle.green.order <= green.order);
|
|
93
|
-
}
|
|
94
|
-
export function redUnprovenCondition(change, requirementId, tdd) {
|
|
95
|
-
const batch = batchFor(effectiveBatches(change), requirementId);
|
|
96
|
-
return !!batch?.red && !hasValidTddCycle(change, requirementId, tdd);
|
|
97
|
-
}
|
|
98
|
-
export function greenUnprovenCondition(change, requirementId, tdd) {
|
|
99
|
-
const batch = batchFor(effectiveBatches(change), requirementId);
|
|
100
|
-
return !!batch?.green && !hasValidTddCycle(change, requirementId, tdd);
|
|
101
|
-
}
|
|
102
|
-
export function completenessTddUnsatisfiedCondition(change, requirementId, tdd) {
|
|
103
|
-
return !hasValidTddCycle(change, requirementId, tdd);
|
|
104
|
-
}
|
|
105
172
|
const tddBatchPhaseNames = ['red', 'implementation', 'green'];
|
|
106
173
|
/** @id CODE-CHANGE-EVIDENCE-WAIVER-016
|
|
107
174
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-002
|
|
@@ -131,17 +198,77 @@ export function orderMigrationRequiredPhaseCondition(change, phaseName) {
|
|
|
131
198
|
const item = change.phases[phaseName];
|
|
132
199
|
return !!item && !Number.isInteger(item.order);
|
|
133
200
|
}
|
|
134
|
-
export function
|
|
135
|
-
const
|
|
136
|
-
const item = batch?.[batchPhaseName];
|
|
201
|
+
export function orderMigrationRequiredBatchItemCondition(batch, batchPhaseName) {
|
|
202
|
+
const item = batch[batchPhaseName];
|
|
137
203
|
return !!item && !Number.isInteger(item.order);
|
|
138
204
|
}
|
|
139
|
-
export function
|
|
140
|
-
const
|
|
141
|
-
if (
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
205
|
+
export function orderMigrationRequiredBatchCondition(change, batchPhaseName, key) {
|
|
206
|
+
const batches = [...(change.tddBatches ?? [])];
|
|
207
|
+
if (change.phases.red || change.phases.implementation || change.phases.green) {
|
|
208
|
+
const legacyBatch = {
|
|
209
|
+
requirementIds: [...change.requirementIds],
|
|
210
|
+
...(change.phases.red ? { red: change.phases.red } : {}),
|
|
211
|
+
...(change.phases.implementation ? { implementation: change.phases.implementation } : {}),
|
|
212
|
+
...(change.phases.green ? { green: change.phases.green } : {}),
|
|
213
|
+
};
|
|
214
|
+
batches.unshift(legacyBatch);
|
|
215
|
+
}
|
|
216
|
+
return batchesForKey(batches, key)
|
|
217
|
+
.some((batch) => orderMigrationRequiredBatchItemCondition(batch, batchPhaseName));
|
|
218
|
+
}
|
|
219
|
+
/** @id CODE-CHANGE-EVIDENCE-WAIVER-024
|
|
220
|
+
* @implements REQ-CHANGE-EVIDENCE-WAIVER-017
|
|
221
|
+
* @design DES-CHANGE-EVIDENCE-WAIVER-004
|
|
222
|
+
* Pure re-derivations of `CHANGE_PHASE_ORDER`'s six transition conditions
|
|
223
|
+
* (GitHub Issue #56), mirroring `orderMigrationRequiredPhaseCondition`'s/
|
|
224
|
+
* `orderMigrationRequiredBatchCondition`'s shape so `evaluateWaiverCondition`
|
|
225
|
+
* never duplicates `change.ts`'s emission-site comparisons.
|
|
226
|
+
*/
|
|
227
|
+
export function phaseOrderPhaseCondition(change, phaseName) {
|
|
228
|
+
if (phaseName === 'requirements') {
|
|
229
|
+
const requirements = change.phases.requirements;
|
|
230
|
+
const impact = change.phases.impact;
|
|
231
|
+
return requirements?.order !== undefined && impact?.order !== undefined && requirements.order <= impact.order;
|
|
232
|
+
}
|
|
233
|
+
if (phaseName === 'design') {
|
|
234
|
+
const design = change.phases.design;
|
|
235
|
+
const requirements = change.phases.requirements;
|
|
236
|
+
return design?.order !== undefined && requirements?.order !== undefined && design.order <= requirements.order;
|
|
237
|
+
}
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
export function phaseOrderBatchItemCondition(change, batch, batchPhaseName) {
|
|
241
|
+
if (batchPhaseName === 'red') {
|
|
242
|
+
const design = change.phases.design;
|
|
243
|
+
return batch.red?.order !== undefined && design?.order !== undefined && batch.red.order <= design.order;
|
|
244
|
+
}
|
|
245
|
+
if (batchPhaseName === 'implementation') {
|
|
246
|
+
return batch.implementation?.order !== undefined && batch.red?.order !== undefined
|
|
247
|
+
&& batch.implementation.order <= batch.red.order;
|
|
248
|
+
}
|
|
249
|
+
if (batchPhaseName === 'green') {
|
|
250
|
+
return batch.green?.order !== undefined && batch.implementation?.order !== undefined
|
|
251
|
+
&& batch.green.order <= batch.implementation.order;
|
|
252
|
+
}
|
|
253
|
+
if (batchPhaseName === 'quality') {
|
|
254
|
+
const quality = change.phases.quality;
|
|
255
|
+
return quality?.order !== undefined && batch.green?.order !== undefined && quality.order <= batch.green.order;
|
|
256
|
+
}
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
export function phaseOrderBatchCondition(change, batchPhaseName, key) {
|
|
260
|
+
const batches = [...(change.tddBatches ?? [])];
|
|
261
|
+
if (change.phases.red || change.phases.implementation || change.phases.green) {
|
|
262
|
+
const legacyBatch = {
|
|
263
|
+
requirementIds: [...change.requirementIds],
|
|
264
|
+
...(change.phases.red ? { red: change.phases.red } : {}),
|
|
265
|
+
...(change.phases.implementation ? { implementation: change.phases.implementation } : {}),
|
|
266
|
+
...(change.phases.green ? { green: change.phases.green } : {}),
|
|
267
|
+
};
|
|
268
|
+
batches.unshift(legacyBatch);
|
|
269
|
+
}
|
|
270
|
+
return batchesForKey(batches, key)
|
|
271
|
+
.some((batch) => phaseOrderBatchItemCondition(change, batch, batchPhaseName));
|
|
145
272
|
}
|
|
146
273
|
export function testsUnchangedCondition(change, batch) {
|
|
147
274
|
const design = change.phases.design;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-evidence.js","sourceRoot":"","sources":["../../../../packages/analysis/src/change-evidence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"change-evidence.js","sourceRoot":"","sources":["../../../../packages/analysis/src/change-evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { inspectEvidenceOrder } from './order.js';
|
|
|
6
6
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-001 REQ-CHANGE-EVIDENCE-WAIVER-004
|
|
7
7
|
* @design DES-CHANGE-EVIDENCE-WAIVER-001
|
|
8
8
|
*/
|
|
9
|
-
export declare const WAIVABLE_CODES: readonly ["CHANGE_REQUIREMENTS_UNCHANGED", "CHANGE_DESIGN_UNCHANGED", "CHANGE_RED_UNPROVEN", "CHANGE_GREEN_UNPROVEN", "CHANGE_COMPLETENESS_TDD", "CHANGE_RECORD_MISSING", "CHANGE_PHASE_MISSING", "CHANGE_ORDER_MIGRATION_REQUIRED", "CHANGE_TESTS_UNCHANGED", "CHANGE_IMPLEMENTATION_UNCHANGED", "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED", "CHANGE_TEST_CHANGED_AFTER_RED"];
|
|
9
|
+
export declare const WAIVABLE_CODES: readonly ["CHANGE_REQUIREMENTS_UNCHANGED", "CHANGE_DESIGN_UNCHANGED", "CHANGE_RED_UNPROVEN", "CHANGE_GREEN_UNPROVEN", "CHANGE_COMPLETENESS_TDD", "CHANGE_RECORD_MISSING", "CHANGE_PHASE_MISSING", "CHANGE_ORDER_MIGRATION_REQUIRED", "CHANGE_TESTS_UNCHANGED", "CHANGE_IMPLEMENTATION_UNCHANGED", "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED", "CHANGE_TEST_CHANGED_AFTER_RED", "CHANGE_PHASE_ORDER"];
|
|
10
10
|
export type WaivableCode = typeof WAIVABLE_CODES[number];
|
|
11
11
|
/** @id CODE-CHANGE-EVIDENCE-WAIVER-017
|
|
12
12
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-004 REQ-CHANGE-EVIDENCE-WAIVER-016
|
|
@@ -15,12 +15,12 @@ export type WaivableCode = typeof WAIVABLE_CODES[number];
|
|
|
15
15
|
* single `CHANGE_LEVEL_CODES` set, so REQ-004's regime matrix is data, never
|
|
16
16
|
* scattered per-code `if` branches.
|
|
17
17
|
*/
|
|
18
|
-
export declare const NEITHER_KEY_CODES: Set<"CHANGE_REQUIREMENTS_UNCHANGED" | "CHANGE_DESIGN_UNCHANGED" | "CHANGE_RED_UNPROVEN" | "CHANGE_GREEN_UNPROVEN" | "CHANGE_COMPLETENESS_TDD" | "CHANGE_RECORD_MISSING" | "CHANGE_PHASE_MISSING" | "CHANGE_ORDER_MIGRATION_REQUIRED" | "CHANGE_TESTS_UNCHANGED" | "CHANGE_IMPLEMENTATION_UNCHANGED" | "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED" | "CHANGE_TEST_CHANGED_AFTER_RED">;
|
|
19
|
-
export declare const REQUIREMENT_ONLY_CODES: Set<"CHANGE_REQUIREMENTS_UNCHANGED" | "CHANGE_DESIGN_UNCHANGED" | "CHANGE_RED_UNPROVEN" | "CHANGE_GREEN_UNPROVEN" | "CHANGE_COMPLETENESS_TDD" | "CHANGE_RECORD_MISSING" | "CHANGE_PHASE_MISSING" | "CHANGE_ORDER_MIGRATION_REQUIRED" | "CHANGE_TESTS_UNCHANGED" | "CHANGE_IMPLEMENTATION_UNCHANGED" | "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED" | "CHANGE_TEST_CHANGED_AFTER_RED">;
|
|
20
|
-
export declare const DETAIL_ONLY_CODES: Set<"CHANGE_REQUIREMENTS_UNCHANGED" | "CHANGE_DESIGN_UNCHANGED" | "CHANGE_RED_UNPROVEN" | "CHANGE_GREEN_UNPROVEN" | "CHANGE_COMPLETENESS_TDD" | "CHANGE_RECORD_MISSING" | "CHANGE_PHASE_MISSING" | "CHANGE_ORDER_MIGRATION_REQUIRED" | "CHANGE_TESTS_UNCHANGED" | "CHANGE_IMPLEMENTATION_UNCHANGED" | "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED" | "CHANGE_TEST_CHANGED_AFTER_RED">;
|
|
21
|
-
export declare const BOTH_KEYS_CODES: Set<"CHANGE_REQUIREMENTS_UNCHANGED" | "CHANGE_DESIGN_UNCHANGED" | "CHANGE_RED_UNPROVEN" | "CHANGE_GREEN_UNPROVEN" | "CHANGE_COMPLETENESS_TDD" | "CHANGE_RECORD_MISSING" | "CHANGE_PHASE_MISSING" | "CHANGE_ORDER_MIGRATION_REQUIRED" | "CHANGE_TESTS_UNCHANGED" | "CHANGE_IMPLEMENTATION_UNCHANGED" | "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED" | "CHANGE_TEST_CHANGED_AFTER_RED">;
|
|
18
|
+
export declare const NEITHER_KEY_CODES: Set<"CHANGE_REQUIREMENTS_UNCHANGED" | "CHANGE_DESIGN_UNCHANGED" | "CHANGE_RED_UNPROVEN" | "CHANGE_GREEN_UNPROVEN" | "CHANGE_COMPLETENESS_TDD" | "CHANGE_RECORD_MISSING" | "CHANGE_PHASE_MISSING" | "CHANGE_ORDER_MIGRATION_REQUIRED" | "CHANGE_TESTS_UNCHANGED" | "CHANGE_IMPLEMENTATION_UNCHANGED" | "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED" | "CHANGE_TEST_CHANGED_AFTER_RED" | "CHANGE_PHASE_ORDER">;
|
|
19
|
+
export declare const REQUIREMENT_ONLY_CODES: Set<"CHANGE_REQUIREMENTS_UNCHANGED" | "CHANGE_DESIGN_UNCHANGED" | "CHANGE_RED_UNPROVEN" | "CHANGE_GREEN_UNPROVEN" | "CHANGE_COMPLETENESS_TDD" | "CHANGE_RECORD_MISSING" | "CHANGE_PHASE_MISSING" | "CHANGE_ORDER_MIGRATION_REQUIRED" | "CHANGE_TESTS_UNCHANGED" | "CHANGE_IMPLEMENTATION_UNCHANGED" | "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED" | "CHANGE_TEST_CHANGED_AFTER_RED" | "CHANGE_PHASE_ORDER">;
|
|
20
|
+
export declare const DETAIL_ONLY_CODES: Set<"CHANGE_REQUIREMENTS_UNCHANGED" | "CHANGE_DESIGN_UNCHANGED" | "CHANGE_RED_UNPROVEN" | "CHANGE_GREEN_UNPROVEN" | "CHANGE_COMPLETENESS_TDD" | "CHANGE_RECORD_MISSING" | "CHANGE_PHASE_MISSING" | "CHANGE_ORDER_MIGRATION_REQUIRED" | "CHANGE_TESTS_UNCHANGED" | "CHANGE_IMPLEMENTATION_UNCHANGED" | "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED" | "CHANGE_TEST_CHANGED_AFTER_RED" | "CHANGE_PHASE_ORDER">;
|
|
21
|
+
export declare const BOTH_KEYS_CODES: Set<"CHANGE_REQUIREMENTS_UNCHANGED" | "CHANGE_DESIGN_UNCHANGED" | "CHANGE_RED_UNPROVEN" | "CHANGE_GREEN_UNPROVEN" | "CHANGE_COMPLETENESS_TDD" | "CHANGE_RECORD_MISSING" | "CHANGE_PHASE_MISSING" | "CHANGE_ORDER_MIGRATION_REQUIRED" | "CHANGE_TESTS_UNCHANGED" | "CHANGE_IMPLEMENTATION_UNCHANGED" | "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED" | "CHANGE_TEST_CHANGED_AFTER_RED" | "CHANGE_PHASE_ORDER">;
|
|
22
22
|
/** Retained purely for backward-compatible naming inside this module. */
|
|
23
|
-
export declare const CHANGE_LEVEL_CODES: Set<"CHANGE_REQUIREMENTS_UNCHANGED" | "CHANGE_DESIGN_UNCHANGED" | "CHANGE_RED_UNPROVEN" | "CHANGE_GREEN_UNPROVEN" | "CHANGE_COMPLETENESS_TDD" | "CHANGE_RECORD_MISSING" | "CHANGE_PHASE_MISSING" | "CHANGE_ORDER_MIGRATION_REQUIRED" | "CHANGE_TESTS_UNCHANGED" | "CHANGE_IMPLEMENTATION_UNCHANGED" | "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED" | "CHANGE_TEST_CHANGED_AFTER_RED">;
|
|
23
|
+
export declare const CHANGE_LEVEL_CODES: Set<"CHANGE_REQUIREMENTS_UNCHANGED" | "CHANGE_DESIGN_UNCHANGED" | "CHANGE_RED_UNPROVEN" | "CHANGE_GREEN_UNPROVEN" | "CHANGE_COMPLETENESS_TDD" | "CHANGE_RECORD_MISSING" | "CHANGE_PHASE_MISSING" | "CHANGE_ORDER_MIGRATION_REQUIRED" | "CHANGE_TESTS_UNCHANGED" | "CHANGE_IMPLEMENTATION_UNCHANGED" | "CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED" | "CHANGE_TEST_CHANGED_AFTER_RED" | "CHANGE_PHASE_ORDER">;
|
|
24
24
|
export declare function requiresRequirementId(code: WaivableCode): boolean;
|
|
25
25
|
export declare function requiresDetail(code: WaivableCode): boolean;
|
|
26
26
|
export declare const CURRENT_SNAPSHOT_VERSION = 1;
|
|
@@ -57,6 +57,11 @@ export type LoadedChangeWaiverEvidence = {
|
|
|
57
57
|
* regardless of key insertion order.
|
|
58
58
|
*/
|
|
59
59
|
export declare function canonicalJson(value: unknown): string;
|
|
60
|
+
/** @id CODE-CHANGE-EVIDENCE-WAIVER-026
|
|
61
|
+
* @implements REQ-CHANGE-EVIDENCE-WAIVER-011
|
|
62
|
+
* @design DES-CHANGE-EVIDENCE-WAIVER-002
|
|
63
|
+
*/
|
|
64
|
+
export declare function normalizeChangeRecordMissingDocument(text: string, changeId: string, waiverRecord?: Pick<ChangeWaiverRecord, 'code' | 'approver' | 'recordedAt' | 'snapshotHash'>): string;
|
|
60
65
|
/** @id CODE-CHANGE-EVIDENCE-WAIVER-002
|
|
61
66
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-007
|
|
62
67
|
* @design DES-CHANGE-EVIDENCE-WAIVER-001
|
|
@@ -109,7 +114,7 @@ export declare function parseDetail(code: WaivableCode, detail: string | undefin
|
|
|
109
114
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-011 REQ-CHANGE-EVIDENCE-WAIVER-016
|
|
110
115
|
* @design DES-CHANGE-EVIDENCE-WAIVER-002
|
|
111
116
|
*/
|
|
112
|
-
export declare function snapshotPayload(root: string, evidence: ChangeEvidence | null, tdd: TddEvidence | null, order: Awaited<ReturnType<typeof inspectEvidenceOrder>>, changeId: string, code: WaivableCode, requirementId?: string, detail?: string): Promise<unknown | null>;
|
|
117
|
+
export declare function snapshotPayload(root: string, evidence: ChangeEvidence | null, tdd: TddEvidence | null, order: Awaited<ReturnType<typeof inspectEvidenceOrder>>, changeId: string, code: WaivableCode, requirementId?: string, detail?: string, waiverRecord?: Pick<ChangeWaiverRecord, 'code' | 'approver' | 'recordedAt' | 'snapshotHash'>): Promise<unknown | null>;
|
|
113
118
|
/** @id CODE-CHANGE-EVIDENCE-WAIVER-005
|
|
114
119
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-015 REQ-CHANGE-EVIDENCE-WAIVER-016
|
|
115
120
|
* @design DES-CHANGE-EVIDENCE-WAIVER-002
|
|
@@ -124,10 +129,17 @@ export declare function waiverChainValid(waivers: ChangeWaiverRecord[], index: n
|
|
|
124
129
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-006 REQ-CHANGE-EVIDENCE-WAIVER-016
|
|
125
130
|
* @design DES-CHANGE-EVIDENCE-WAIVER-002
|
|
126
131
|
*/
|
|
127
|
-
export declare function waiverLinkage(
|
|
132
|
+
export declare function waiverLinkage(order: Awaited<ReturnType<typeof inspectEvidenceOrder>>, waivers: ChangeWaiverRecord[], index: number): {
|
|
128
133
|
valid: boolean;
|
|
129
134
|
reason?: string;
|
|
130
|
-
}
|
|
135
|
+
};
|
|
136
|
+
export type WaiverCondition = 'true' | 'false' | 'indeterminate';
|
|
137
|
+
export interface WaiverScope {
|
|
138
|
+
changeId: string;
|
|
139
|
+
code: WaivableCode;
|
|
140
|
+
requirementId?: string;
|
|
141
|
+
detail?: string;
|
|
142
|
+
}
|
|
131
143
|
export interface WaiverContext {
|
|
132
144
|
loaded: LoadedChangeWaiverEvidence | null;
|
|
133
145
|
order: Awaited<ReturnType<typeof inspectEvidenceOrder>>;
|
|
@@ -136,7 +148,9 @@ export interface WaiverContext {
|
|
|
136
148
|
reason?: string;
|
|
137
149
|
}>;
|
|
138
150
|
currentHash: Array<string | undefined>;
|
|
151
|
+
condition: Array<WaiverCondition | undefined>;
|
|
139
152
|
}
|
|
153
|
+
export declare function evaluateWaiverCondition(root: string, evidence: ChangeEvidence | null, tdd: TddEvidence | null, order: Awaited<ReturnType<typeof inspectEvidenceOrder>>, scope: WaiverScope): Promise<WaiverCondition>;
|
|
140
154
|
/** @id CODE-CHANGE-EVIDENCE-WAIVER-020
|
|
141
155
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-006 REQ-CHANGE-EVIDENCE-WAIVER-007 REQ-CHANGE-EVIDENCE-WAIVER-010 REQ-CHANGE-EVIDENCE-WAIVER-011
|
|
142
156
|
* @design DES-CHANGE-EVIDENCE-WAIVER-004
|
|
@@ -144,7 +158,17 @@ export interface WaiverContext {
|
|
|
144
158
|
* consults only this fully resolved value, so no diagnostic-emission call
|
|
145
159
|
* site or final malformed/stale pass needs to itself `await` anything.
|
|
146
160
|
*/
|
|
147
|
-
export declare function buildWaiverContext(root: string, evidence: ChangeEvidence | null, tdd: TddEvidence | null
|
|
161
|
+
export declare function buildWaiverContext(root: string, evidence: ChangeEvidence | null, tdd: TddEvidence | null, precomputed?: {
|
|
162
|
+
loaded?: LoadedChangeWaiverEvidence | null;
|
|
163
|
+
order?: Awaited<ReturnType<typeof inspectEvidenceOrder>>;
|
|
164
|
+
}): Promise<WaiverContext>;
|
|
165
|
+
export declare function isWaiverStale(waiverContext: WaiverContext, index: number): boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Selects the greatest-`order` validly linked record within a
|
|
168
|
+
* `changeId`/`code`/`requirementId`/`detail` scope group (REQ-006's
|
|
169
|
+
* supersession rule), returning its index, or -1 if none match/link.
|
|
170
|
+
*/
|
|
171
|
+
export declare function authoritativeWaiverIndex(waiverContext: WaiverContext, scope: WaiverScope): number;
|
|
148
172
|
/** @id CODE-CHANGE-EVIDENCE-WAIVER-008
|
|
149
173
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-006 REQ-CHANGE-EVIDENCE-WAIVER-008 REQ-CHANGE-EVIDENCE-WAIVER-009 REQ-CHANGE-EVIDENCE-WAIVER-016
|
|
150
174
|
* @design DES-CHANGE-EVIDENCE-WAIVER-004
|
|
@@ -154,7 +178,7 @@ export declare function waivedDiagnostic(waiverContext: WaiverContext, code: Wai
|
|
|
154
178
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-006 REQ-CHANGE-EVIDENCE-WAIVER-007 REQ-CHANGE-EVIDENCE-WAIVER-011
|
|
155
179
|
* @design DES-CHANGE-EVIDENCE-WAIVER-004
|
|
156
180
|
*/
|
|
157
|
-
export declare function reportWaiverEvidenceDiagnostics(waiverContext: WaiverContext
|
|
181
|
+
export declare function reportWaiverEvidenceDiagnostics(waiverContext: WaiverContext): Diagnostic[];
|
|
158
182
|
/** @id CODE-CHANGE-EVIDENCE-WAIVER-010
|
|
159
183
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-001 REQ-CHANGE-EVIDENCE-WAIVER-002 REQ-CHANGE-EVIDENCE-WAIVER-003 REQ-CHANGE-EVIDENCE-WAIVER-004 REQ-CHANGE-EVIDENCE-WAIVER-005 REQ-CHANGE-EVIDENCE-WAIVER-010 REQ-CHANGE-EVIDENCE-WAIVER-015 REQ-CHANGE-EVIDENCE-WAIVER-016
|
|
160
184
|
* @design DES-CHANGE-EVIDENCE-WAIVER-001
|
|
@@ -170,7 +194,7 @@ export declare function recordChangeWaiver(root: string, changeId: string, code:
|
|
|
170
194
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-006 REQ-CHANGE-EVIDENCE-WAIVER-012 REQ-CHANGE-EVIDENCE-WAIVER-016
|
|
171
195
|
* @design DES-CHANGE-EVIDENCE-WAIVER-005
|
|
172
196
|
*/
|
|
173
|
-
export declare function activeWaivers(root: string): Promise<Array<{
|
|
197
|
+
export declare function activeWaivers(root: string, precomputed?: WaiverContext): Promise<Array<{
|
|
174
198
|
changeId: string;
|
|
175
199
|
code: string;
|
|
176
200
|
requirementId?: string;
|
|
@@ -179,8 +203,17 @@ export declare function activeWaivers(root: string): Promise<Array<{
|
|
|
179
203
|
reason: string;
|
|
180
204
|
recordedAt: string;
|
|
181
205
|
}>>;
|
|
206
|
+
export declare function evaluateChangeWaiverState(root: string, evidence: ChangeEvidence, tdd: TddEvidence, order: Awaited<ReturnType<typeof inspectEvidenceOrder>>, waivers: ChangeWaiverEvidence): Promise<{
|
|
207
|
+
stale: Array<{
|
|
208
|
+
changeId: string;
|
|
209
|
+
code: string;
|
|
210
|
+
requirementId?: string;
|
|
211
|
+
detail?: string;
|
|
212
|
+
}>;
|
|
213
|
+
authoritative: Map<string, string>;
|
|
214
|
+
}>;
|
|
182
215
|
/** @id CODE-CHANGE-EVIDENCE-WAIVER-012
|
|
183
216
|
* @implements REQ-CHANGE-EVIDENCE-WAIVER-007 REQ-CHANGE-EVIDENCE-WAIVER-011
|
|
184
217
|
* @design DES-CHANGE-EVIDENCE-WAIVER-005
|
|
185
218
|
*/
|
|
186
|
-
export declare function waiverEvidenceDiagnostics(root: string): Promise<Diagnostic[]>;
|
|
219
|
+
export declare function waiverEvidenceDiagnostics(root: string, precomputed?: WaiverContext): Promise<Diagnostic[]>;
|