@sun-asterisk/sungen 3.3.0-alpha.1 → 3.3.0-alpha.3
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/capabilities/discover.d.ts +4 -0
- package/dist/capabilities/discover.d.ts.map +1 -1
- package/dist/capabilities/discover.js +16 -2
- package/dist/capabilities/discover.js.map +1 -1
- package/dist/cli/commands/audit.js +1 -1
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/contract-derive-command.d.ts +3 -2
- package/dist/cli/commands/contract-derive-command.d.ts.map +1 -1
- package/dist/cli/commands/contract-derive-command.js +3 -3
- package/dist/cli/commands/contract-derive-command.js.map +1 -1
- package/dist/cli/commands/contract.d.ts +3 -0
- package/dist/cli/commands/contract.d.ts.map +1 -1
- package/dist/cli/commands/contract.js +35 -5
- package/dist/cli/commands/contract.js.map +1 -1
- package/dist/cli/commands/delivery.d.ts.map +1 -1
- package/dist/cli/commands/delivery.js +9 -2
- package/dist/cli/commands/delivery.js.map +1 -1
- package/dist/cli/commands/journey.js +2 -2
- package/dist/cli/commands/journey.js.map +1 -1
- package/dist/cli/commands/next.d.ts.map +1 -1
- package/dist/cli/commands/next.js +8 -6
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/project-sungen-invocation.d.ts +7 -0
- package/dist/cli/project-sungen-invocation.d.ts.map +1 -0
- package/dist/cli/project-sungen-invocation.js +76 -0
- package/dist/cli/project-sungen-invocation.js.map +1 -0
- package/dist/contract/accept-opaque-steps.d.ts +3 -0
- package/dist/contract/accept-opaque-steps.d.ts.map +1 -0
- package/dist/contract/accept-opaque-steps.js +114 -0
- package/dist/contract/accept-opaque-steps.js.map +1 -0
- package/dist/contract/approve-contract.d.ts +8 -1
- package/dist/contract/approve-contract.d.ts.map +1 -1
- package/dist/contract/approve-contract.js +6 -0
- package/dist/contract/approve-contract.js.map +1 -1
- package/dist/contract/build-contract-verdict.js +2 -2
- package/dist/contract/build-contract-verdict.js.map +1 -1
- package/dist/contract/build-trace-conformance.d.ts +5 -1
- package/dist/contract/build-trace-conformance.d.ts.map +1 -1
- package/dist/contract/build-trace-conformance.js +9 -4
- package/dist/contract/build-trace-conformance.js.map +1 -1
- package/dist/contract/classify-contract-change.d.ts +3 -2
- package/dist/contract/classify-contract-change.d.ts.map +1 -1
- package/dist/contract/classify-contract-change.js.map +1 -1
- package/dist/contract/classify-trace-conformance.d.ts +18 -3
- package/dist/contract/classify-trace-conformance.d.ts.map +1 -1
- package/dist/contract/classify-trace-conformance.js +64 -17
- package/dist/contract/classify-trace-conformance.js.map +1 -1
- package/dist/contract/contract-schema.d.ts +21 -0
- package/dist/contract/contract-schema.d.ts.map +1 -1
- package/dist/contract/contract-schema.js +25 -3
- package/dist/contract/contract-schema.js.map +1 -1
- package/dist/contract/contracts-lock-file.d.ts.map +1 -1
- package/dist/contract/contracts-lock-file.js +1 -0
- package/dist/contract/contracts-lock-file.js.map +1 -1
- package/dist/contract/derive-free-feature.d.ts +8 -0
- package/dist/contract/derive-free-feature.d.ts.map +1 -1
- package/dist/contract/derive-free-feature.js +10 -1
- package/dist/contract/derive-free-feature.js.map +1 -1
- package/dist/contract/project-contract-blockers.d.ts.map +1 -1
- package/dist/contract/project-contract-blockers.js +4 -2
- package/dist/contract/project-contract-blockers.js.map +1 -1
- package/dist/contract/record-contract-approval.d.ts +16 -1
- package/dist/contract/record-contract-approval.d.ts.map +1 -1
- package/dist/contract/record-contract-approval.js +29 -1
- package/dist/contract/record-contract-approval.js.map +1 -1
- package/dist/contract/render-free-gherkin.d.ts +2 -0
- package/dist/contract/render-free-gherkin.d.ts.map +1 -1
- package/dist/contract/render-free-gherkin.js +6 -0
- package/dist/contract/render-free-gherkin.js.map +1 -1
- package/dist/contract/trace/collect-trace-evidence.d.ts +8 -3
- package/dist/contract/trace/collect-trace-evidence.d.ts.map +1 -1
- package/dist/contract/trace/collect-trace-evidence.js +66 -35
- package/dist/contract/trace/collect-trace-evidence.js.map +1 -1
- package/dist/contract/trace/read-file-once.d.ts +20 -0
- package/dist/contract/trace/read-file-once.d.ts.map +1 -0
- package/dist/contract/trace/read-file-once.js +135 -0
- package/dist/contract/trace/read-file-once.js.map +1 -0
- package/dist/contract/trace/select-final-attempt.d.ts +2 -2
- package/dist/contract/trace/select-final-attempt.d.ts.map +1 -1
- package/dist/contract/trace/select-final-attempt.js +3 -3
- package/dist/contract/trace/select-final-attempt.js.map +1 -1
- package/dist/contract/trace/test-step-join.d.ts +3 -3
- package/dist/contract/trace/test-step-join.d.ts.map +1 -1
- package/dist/contract/trace/test-step-join.js +2 -2
- package/dist/contract/trace/test-step-join.js.map +1 -1
- package/dist/contract/trace/trace-file-reader.d.ts +14 -2
- package/dist/contract/trace/trace-file-reader.d.ts.map +1 -1
- package/dist/contract/trace/trace-file-reader.js +27 -45
- package/dist/contract/trace/trace-file-reader.js.map +1 -1
- package/dist/contract/trace/trace-run-record.d.ts +6 -3
- package/dist/contract/trace/trace-run-record.d.ts.map +1 -1
- package/dist/contract/trace/trace-run-record.js +23 -17
- package/dist/contract/trace/trace-run-record.js.map +1 -1
- package/dist/contract/trace/trace-steps.js +1 -1
- package/dist/contract/trace/trace-steps.js.map +1 -1
- package/dist/contract/trace/trace-zip-limits.d.ts +5 -1
- package/dist/contract/trace/trace-zip-limits.d.ts.map +1 -1
- package/dist/contract/trace/trace-zip-limits.js +6 -2
- package/dist/contract/trace/trace-zip-limits.js.map +1 -1
- package/dist/contract/verify-approval-decisions.d.ts.map +1 -1
- package/dist/contract/verify-approval-decisions.js +9 -4
- package/dist/contract/verify-approval-decisions.js.map +1 -1
- package/dist/decisions/confirmed-decision-commands.d.ts +11 -0
- package/dist/decisions/confirmed-decision-commands.d.ts.map +1 -1
- package/dist/decisions/confirmed-decision-commands.js +21 -3
- package/dist/decisions/confirmed-decision-commands.js.map +1 -1
- package/dist/decisions/human-confirmation.d.ts +2 -0
- package/dist/decisions/human-confirmation.d.ts.map +1 -1
- package/dist/decisions/human-confirmation.js +6 -0
- package/dist/decisions/human-confirmation.js.map +1 -1
- package/dist/exporters/matrix/xlsx-cells.js +1 -1
- package/dist/exporters/matrix/xlsx-cells.js.map +1 -1
- package/dist/graph/evaluate-graph.d.ts +3 -1
- package/dist/graph/evaluate-graph.d.ts.map +1 -1
- package/dist/graph/evaluate-graph.js +8 -5
- package/dist/graph/evaluate-graph.js.map +1 -1
- package/dist/graph/node-decl.d.ts +7 -0
- package/dist/graph/node-decl.d.ts.map +1 -1
- package/dist/graph/node-decl.js.map +1 -1
- package/dist/graph/nodes/test-case-contract-nodes.d.ts +3 -1
- package/dist/graph/nodes/test-case-contract-nodes.d.ts.map +1 -1
- package/dist/graph/nodes/test-case-contract-nodes.js +7 -4
- package/dist/graph/nodes/test-case-contract-nodes.js.map +1 -1
- package/dist/graph/nodes/unit-contract-node.d.ts +2 -1
- package/dist/graph/nodes/unit-contract-node.d.ts.map +1 -1
- package/dist/graph/nodes/unit-contract-node.js +8 -1
- package/dist/graph/nodes/unit-contract-node.js.map +1 -1
- package/dist/graph/nodes/unit-design-nodes.d.ts.map +1 -1
- package/dist/graph/nodes/unit-design-nodes.js +2 -1
- package/dist/graph/nodes/unit-design-nodes.js.map +1 -1
- package/dist/harness/catalog/gate-rules.yaml +2 -2
- package/dist/harness/gates/audit-report-verification.d.ts +15 -6
- package/dist/harness/gates/audit-report-verification.d.ts.map +1 -1
- package/dist/harness/gates/audit-report-verification.js +49 -20
- package/dist/harness/gates/audit-report-verification.js.map +1 -1
- package/dist/harness/gates/delivery-checklist.js +2 -2
- package/dist/harness/gates/delivery-checklist.js.map +1 -1
- package/dist/harness/gates/delivery-decision-gate.d.ts +4 -0
- package/dist/harness/gates/delivery-decision-gate.d.ts.map +1 -1
- package/dist/harness/gates/delivery-decision-gate.js +26 -1
- package/dist/harness/gates/delivery-decision-gate.js.map +1 -1
- package/dist/harness/gates/delivery-decision-step.d.ts +4 -1
- package/dist/harness/gates/delivery-decision-step.d.ts.map +1 -1
- package/dist/harness/gates/delivery-decision-step.js +17 -2
- package/dist/harness/gates/delivery-decision-step.js.map +1 -1
- package/dist/harness/journey.d.ts +19 -0
- package/dist/harness/journey.d.ts.map +1 -1
- package/dist/harness/journey.js +94 -11
- package/dist/harness/journey.js.map +1 -1
- package/dist/harness/provenance.d.ts +29 -0
- package/dist/harness/provenance.d.ts.map +1 -1
- package/dist/harness/provenance.js +109 -9
- package/dist/harness/provenance.js.map +1 -1
- package/dist/hooks/guard-protected-paths.d.ts.map +1 -1
- package/dist/hooks/guard-protected-paths.js +3 -2
- package/dist/hooks/guard-protected-paths.js.map +1 -1
- package/dist/hooks/guard-rules.d.ts +1 -1
- package/dist/hooks/guard-tty-spoof-rule.d.ts +1 -1
- package/dist/hooks/guard-tty-spoof-rule.js +2 -2
- package/dist/hooks/guard-tty-spoof-rule.js.map +1 -1
- package/dist/hooks/hand-back-core.d.ts +5 -3
- package/dist/hooks/hand-back-core.d.ts.map +1 -1
- package/dist/hooks/hand-back-core.js +17 -10
- package/dist/hooks/hand-back-core.js.map +1 -1
- package/dist/hooks/session-start-unit-state-hook.d.ts.map +1 -1
- package/dist/hooks/session-start-unit-state-hook.js +5 -3
- package/dist/hooks/session-start-unit-state-hook.js.map +1 -1
- package/dist/orchestrator/assets-drift.d.ts +5 -0
- package/dist/orchestrator/assets-drift.d.ts.map +1 -1
- package/dist/orchestrator/assets-drift.js +12 -3
- package/dist/orchestrator/assets-drift.js.map +1 -1
- package/dist/orchestrator/project-initializer.d.ts.map +1 -1
- package/dist/orchestrator/project-initializer.js +1 -0
- package/dist/orchestrator/project-initializer.js.map +1 -1
- package/dist/orchestrator/templates/ai-src/commands/create-test.md +2 -2
- package/dist/orchestrator/templates/ai-src/commands/run-test.md +1 -1
- package/package.json +3 -3
- package/src/capabilities/discover.ts +15 -2
- package/src/cli/commands/audit.ts +1 -1
- package/src/cli/commands/contract-derive-command.ts +7 -6
- package/src/cli/commands/contract.ts +36 -5
- package/src/cli/commands/delivery.ts +7 -2
- package/src/cli/commands/journey.ts +4 -4
- package/src/cli/commands/next.ts +8 -6
- package/src/cli/index.ts +1 -1
- package/src/cli/project-sungen-invocation.ts +39 -0
- package/src/contract/accept-opaque-steps.ts +114 -0
- package/src/contract/approve-contract.ts +10 -3
- package/src/contract/build-contract-verdict.ts +2 -2
- package/src/contract/build-trace-conformance.ts +8 -3
- package/src/contract/classify-contract-change.ts +3 -3
- package/src/contract/classify-trace-conformance.ts +76 -22
- package/src/contract/contract-schema.ts +31 -2
- package/src/contract/contracts-lock-file.ts +1 -0
- package/src/contract/derive-free-feature.ts +12 -2
- package/src/contract/project-contract-blockers.ts +4 -2
- package/src/contract/record-contract-approval.ts +41 -1
- package/src/contract/render-free-gherkin.ts +5 -0
- package/src/contract/trace/collect-trace-evidence.ts +67 -30
- package/src/contract/trace/read-file-once.ts +95 -0
- package/src/contract/trace/select-final-attempt.ts +3 -3
- package/src/contract/trace/test-step-join.ts +6 -5
- package/src/contract/trace/trace-file-reader.ts +34 -13
- package/src/contract/trace/trace-run-record.ts +17 -11
- package/src/contract/trace/trace-steps.ts +1 -1
- package/src/contract/trace/trace-zip-limits.ts +6 -2
- package/src/contract/verify-approval-decisions.ts +9 -5
- package/src/decisions/confirmed-decision-commands.ts +25 -4
- package/src/decisions/human-confirmation.ts +5 -0
- package/src/exporters/matrix/xlsx-cells.ts +1 -1
- package/src/graph/evaluate-graph.ts +9 -5
- package/src/graph/node-decl.ts +7 -0
- package/src/graph/nodes/test-case-contract-nodes.ts +9 -4
- package/src/graph/nodes/unit-contract-node.ts +8 -1
- package/src/graph/nodes/unit-design-nodes.ts +2 -1
- package/src/harness/catalog/gate-rules.yaml +2 -2
- package/src/harness/gates/audit-report-verification.ts +51 -23
- package/src/harness/gates/delivery-checklist.ts +2 -2
- package/src/harness/gates/delivery-decision-gate.ts +29 -1
- package/src/harness/gates/delivery-decision-step.ts +19 -3
- package/src/harness/journey.ts +95 -13
- package/src/harness/provenance.ts +99 -11
- package/src/hooks/guard-protected-paths.ts +3 -2
- package/src/hooks/guard-rules.ts +1 -1
- package/src/hooks/guard-tty-spoof-rule.ts +3 -3
- package/src/hooks/hand-back-core.ts +17 -11
- package/src/hooks/session-start-unit-state-hook.ts +5 -3
- package/src/orchestrator/assets-drift.ts +12 -5
- package/src/orchestrator/project-initializer.ts +1 -0
- package/src/orchestrator/templates/ai-src/commands/create-test.md +2 -2
- package/src/orchestrator/templates/ai-src/commands/run-test.md +1 -1
|
@@ -33,7 +33,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.auditPassed = exports.auditCounts = exports.AUDIT_REPORT_KEYS =
|
|
36
|
+
exports.auditPassed = exports.auditCounts = exports.AUDIT_REPORT_KEYS = void 0;
|
|
37
|
+
exports.rulesProblem = rulesProblem;
|
|
37
38
|
exports.auditReportPath = auditReportPath;
|
|
38
39
|
exports.currentDecisionsHash = currentDecisionsHash;
|
|
39
40
|
exports.verifyAuditReport = verifyAuditReport;
|
|
@@ -46,33 +47,60 @@ exports.auditNotCountedReason = auditNotCountedReason;
|
|
|
46
47
|
* status `gateStatus` is PASS|FAIL and agrees with the integer `exitCode` (0 | 2)
|
|
47
48
|
* inputs `inputsHash` equals the hash of today's inputs + decisions (audit-input-hash.ts)
|
|
48
49
|
* decisions `decisionsHash` equals today's — otherwise the audit is stale: re-audit
|
|
50
|
+
* rules `provenance.catalogHash` and `provenance.rulesHash` are the running sungen's — other
|
|
51
|
+
* catalogs or another AUDIT_RULES_VERSION scored it (a 3.2 PASS can be a 3.3 FAIL on the
|
|
52
|
+
* same files): stale, re-audit. Missing → stale (fail closed). The package VERSION
|
|
53
|
+
* alone is not a reason: a newer sungen with the same rules gives the same verdict (W4)
|
|
49
54
|
* verdict gateStatus re-evaluated from the report's own terms (audit-gate-terms.ts) under the
|
|
50
55
|
* overrides in force — a flipped gateStatus + exitCode is `verdict-mismatch` (tester m1)
|
|
51
56
|
* Anything else counts as NEVER AUDITED, not as clean; only an explicit `gateStatus: PASS` passes.
|
|
52
57
|
* These checks are anti-STALENESS and anti-casual-tamper, NOT anti-forgery: a writer of audit.json can
|
|
53
58
|
* recompute the hashes, and one who rewrites every finding, gap and verdict is out of scope here.
|
|
54
59
|
*
|
|
55
|
-
* Legacy (DOS-11.4): a report written before these fields existed carries none of exitCode /
|
|
56
|
-
* inputsHash / decisionsHash / gateOverrides
|
|
57
|
-
*
|
|
58
|
-
*
|
|
60
|
+
* Legacy (DOS-11.4, #933): a report written before these fields existed carries none of exitCode /
|
|
61
|
+
* inputsHash / decisionsHash / gateOverrides, so nothing in it can vouch for today's inputs. It reads
|
|
62
|
+
* STALE — one `sungen audit` records a current one. (It used to count while no input file was newer:
|
|
63
|
+
* a fresh checkout gives every file the checkout's mtime, so that proved nothing and an old PASS was
|
|
64
|
+
* trusted.) A legacy report claiming a PASS its own fields contradict is invalid. A report carrying
|
|
65
|
+
* SOME of the fields is malformed.
|
|
59
66
|
*/
|
|
60
67
|
const fs = __importStar(require("fs"));
|
|
61
68
|
const path = __importStar(require("path"));
|
|
62
69
|
const resolve_unit_1 = require("../../cli/resolve-unit");
|
|
63
70
|
const unit_paths_1 = require("../unit-paths");
|
|
71
|
+
const provenance_1 = require("../provenance");
|
|
64
72
|
const audit_input_hash_1 = require("./audit-input-hash");
|
|
65
73
|
const audit_gate_verdict_1 = require("./audit-gate-verdict");
|
|
66
74
|
const audit_gate_terms_1 = require("./audit-gate-terms");
|
|
67
75
|
const decisions_hash_1 = require("./decisions-hash");
|
|
68
76
|
const unit_gate_overrides_1 = require("./unit-gate-overrides");
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
/** A string field of the report's provenance, or null when it does not say. */
|
|
78
|
+
function provenanceField(r, key) {
|
|
79
|
+
const v = r.provenance && typeof r.provenance === 'object' ? r.provenance[key] : undefined;
|
|
80
|
+
return typeof v === 'string' && v ? v : null;
|
|
81
|
+
}
|
|
82
|
+
const writtenBy = (r) => provenanceField(r, 'sungenVersion');
|
|
83
|
+
/** What getProvenance writes when it could not read a catalog — never a match, on either side. */
|
|
84
|
+
const UNKNOWN = 'unknown';
|
|
85
|
+
/**
|
|
86
|
+
* Why the rules a report was scored by (`was`) cannot be taken as this sungen's (`now`), or null when
|
|
87
|
+
* they are the same KNOWN rules. Missing or `unknown` on either side is a problem (fail closed):
|
|
88
|
+
* unknown == unknown proves nothing.
|
|
89
|
+
*/
|
|
90
|
+
function rulesProblem(was, now) {
|
|
91
|
+
if (!was.catalogHash || !was.rulesHash)
|
|
92
|
+
return 'it does not say which rules scored it (no provenance.catalogHash / rulesHash)';
|
|
93
|
+
if ([was.catalogHash, was.rulesHash].includes(UNKNOWN))
|
|
94
|
+
return 'the rules that scored it are unknown (provenance says "unknown")';
|
|
95
|
+
if (!now.catalogHash || !now.rulesHash || [now.catalogHash, now.rulesHash].includes(UNKNOWN))
|
|
96
|
+
return 'this sungen cannot read its own rules (catalog or rules hash unknown), so it trusts no report';
|
|
97
|
+
if (was.catalogHash === now.catalogHash && was.rulesHash === now.rulesHash)
|
|
73
98
|
return null;
|
|
74
|
-
|
|
75
|
-
|
|
99
|
+
return `scored by other rules (catalog ${was.catalogHash} · rules ${was.rulesHash}) than this sungen's (catalog ${now.catalogHash} · rules ${now.rulesHash})`;
|
|
100
|
+
}
|
|
101
|
+
/** Why a current-format report was judged by other rules than this sungen's, or null when the same. */
|
|
102
|
+
function otherRules(r) {
|
|
103
|
+
return rulesProblem({ catalogHash: provenanceField(r, 'catalogHash'), rulesHash: provenanceField(r, 'rulesHash') }, (0, provenance_1.getProvenance)());
|
|
76
104
|
}
|
|
77
105
|
const OBJ = 'object';
|
|
78
106
|
/** Every top-level key `runAudit` writes (tests/gates/audit-report-trust.run.ts keeps this in step). */
|
|
@@ -152,19 +180,20 @@ function verifyAuditReport(projectRoot, unit) {
|
|
|
152
180
|
if (schema.length)
|
|
153
181
|
return result('invalid', schema);
|
|
154
182
|
if (!P0_KEYS.some((k) => k in r)) {
|
|
155
|
-
if (current !== decisions_hash_1.EMPTY_DECISIONS_HASH) {
|
|
156
|
-
return result('stale', [{ code: 'legacy-with-overrides', message: 'written by an earlier sungen (no decisionsHash) and a gate-override now applies to this unit' }]);
|
|
157
|
-
}
|
|
158
|
-
const newer = newerLegacyInput(file, unitDir, unit);
|
|
159
|
-
if (newer)
|
|
160
|
-
return result('stale', [{ code: 'legacy-inputs-newer', message: `written by an earlier sungen and ${path.basename(newer)} changed after it` }]);
|
|
161
183
|
// A legacy report predates gateSensorError, so only a stored PASS its own fields contradict is caught.
|
|
162
184
|
const sources = (0, audit_gate_terms_1.termSourcesOf)(r, false);
|
|
163
185
|
if (r.gateStatus === 'PASS' && sources && (0, audit_gate_terms_1.recomputeAuditGateStatus)(sources, overrides) === 'FAIL')
|
|
164
186
|
return result('invalid', [verdictMismatch(r)]);
|
|
165
|
-
|
|
187
|
+
const by = `written by ${writtenBy(r) ? `sungen ${writtenBy(r)}` : 'an earlier sungen'}`;
|
|
188
|
+
if (current !== decisions_hash_1.EMPTY_DECISIONS_HASH) {
|
|
189
|
+
return result('stale', [{ code: 'legacy-with-overrides', message: `${by} (no decisionsHash) and a gate-override now applies to this unit` }]);
|
|
190
|
+
}
|
|
191
|
+
return result('stale', [{ code: 'legacy-unverified', message: `${by}, before inputsHash existed — its inputs cannot be verified` }]);
|
|
166
192
|
}
|
|
167
193
|
const stale = [];
|
|
194
|
+
const rules = otherRules(r);
|
|
195
|
+
if (rules)
|
|
196
|
+
stale.push({ code: 'rules-changed', message: `${writtenBy(r) ? `written by sungen ${writtenBy(r)}, ` : ''}${rules}` });
|
|
168
197
|
if (r.decisionsHash !== current)
|
|
169
198
|
stale.push({ code: 'decisions-changed', message: 'the gate-override decisions changed since this audit' });
|
|
170
199
|
if (!unitDir)
|
|
@@ -188,8 +217,8 @@ function verdictProblem(r, overrides) {
|
|
|
188
217
|
return { code: 'bad-type', message: 'the gate terms (gate.gaps, depth/claim/spec verdicts, taxonomyMismatch, gateSensorError, reusedScenarioIds) are incomplete' };
|
|
189
218
|
return (0, audit_gate_terms_1.recomputeAuditGateStatus)(sources, overrides) === r.gateStatus ? null : verdictMismatch(r);
|
|
190
219
|
}
|
|
191
|
-
/** Whether the report may be used at all
|
|
192
|
-
const auditCounts = (v) => v.state === 'verified'
|
|
220
|
+
/** Whether the report may be used at all: only a verified one. */
|
|
221
|
+
const auditCounts = (v) => v.state === 'verified';
|
|
193
222
|
exports.auditCounts = auditCounts;
|
|
194
223
|
/** Only an explicit `gateStatus: PASS` on a report that counts passes; a score never does. */
|
|
195
224
|
const auditPassed = (v) => (0, exports.auditCounts)(v) && v.report?.gateStatus === 'PASS';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-report-verification.js","sourceRoot":"","sources":["../../../src/harness/gates/audit-report-verification.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"audit-report-verification.js","sourceRoot":"","sources":["../../../src/harness/gates/audit-report-verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,10 +31,10 @@ function auditBox(projectRoot, u) {
|
|
|
31
31
|
if (!(0, audit_report_verification_1.auditCounts)(v))
|
|
32
32
|
return box('audit', 'fail', (0, audit_report_verification_1.auditNotCountedReason)(v, u.unitName));
|
|
33
33
|
const overall = v.report?.score?.overall;
|
|
34
|
-
const how =
|
|
34
|
+
const how = "verified against today's inputs";
|
|
35
35
|
return v.report?.gateStatus === 'PASS'
|
|
36
36
|
? box('audit', 'pass', `PASS ${overall ?? '?'}/10 — ${how}`)
|
|
37
|
-
: box('audit', 'fail', `FAIL ${overall ?? '?'}/10 — \`sungen audit\` exits 2 (${how})`);
|
|
37
|
+
: box('audit', 'fail', `FAIL ${overall ?? '?'}/10 — \`sungen audit\` exits 2 (${how}); an official delivery is blocked until it passes — --preview renders a draft`);
|
|
38
38
|
}
|
|
39
39
|
/** The compiler prints progress on stdout; the checklist keeps the delivery output to itself. */
|
|
40
40
|
async function quietly(fn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-checklist.js","sourceRoot":"","sources":["../../../src/harness/gates/delivery-checklist.ts"],"names":[],"mappings":";;AAyGA,sCAEC;AAID,0CAQC;AAvHD;;;;;;;;;;;GAWG;AACH,kFAA6E;AAC7E,8DAA6D;AAC7D,4EAAiE;AACjE,yEAA+D;AAC/D,mEAA8D;AAC9D,kDAA2D;AAC3D,2EAAoG;AACpG,qEAAqE;AAOrE,8GAA8G;AAC9G,MAAM,wBAAwB,GAAG,MAAO,CAAC;AACzC,MAAM,GAAG,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9G,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,KAAe,EAAE,QAAgB,EAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAE3G,SAAS,QAAQ,CAAC,WAAmB,EAAE,CAAgB;IACrD,MAAM,CAAC,GAAG,IAAA,6CAAiB,EAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,IAAA,uCAAW,EAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAA,iDAAqB,EAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvF,MAAM,OAAO,GAAI,CAAC,CAAC,MAAM,EAAE,KAA0C,EAAE,OAAO,CAAC;IAC/E,MAAM,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"delivery-checklist.js","sourceRoot":"","sources":["../../../src/harness/gates/delivery-checklist.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,10 @@ export interface DeliveryDecisionGate {
|
|
|
11
11
|
blocking: string[];
|
|
12
12
|
/** Units with no trusted audit — a real delivery stops on them, --preview / --check warn. */
|
|
13
13
|
untrustedAudits: string[];
|
|
14
|
+
/** Units whose trusted audit FAILs (#935) — a real delivery stops on them, --preview / --check warn. */
|
|
15
|
+
failingAudits: string[];
|
|
16
|
+
/** The unit's audit does not let it be delivered officially (untrusted or FAIL): its render is a DRAFT. */
|
|
17
|
+
auditDraft(unitDir: string): boolean;
|
|
14
18
|
notes: string[];
|
|
15
19
|
inRun: Array<InRunDecision & {
|
|
16
20
|
unit: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-decision-gate.d.ts","sourceRoot":"","sources":["../../../src/harness/gates/delivery-decision-gate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delivery-decision-gate.d.ts","sourceRoot":"","sources":["../../../src/harness/gates/delivery-decision-gate.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,kBAAkB,EAAgD,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3H,OAAO,EAAiE,aAAa,EAA2B,MAAM,yBAAyB,CAAC;AAChJ,OAAO,EAA+B,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAG/E,MAAM,WAAW,eAAe;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AAWjH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6FAA6F;IAC7F,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,wGAAwG;IACxG,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,2GAA2G;IAC3G,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACxD,wFAAwF;IACxF,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpD,YAAY,IAAI,MAAM,EAAE,CAAC;IACzB,kHAAkH;IAClH,aAAa,CAAC,EAAE,eAAe,CAAC;CACjC;AAeD,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,oBAAoB,CAgE5G;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAEzE"}
|
|
@@ -12,21 +12,38 @@ exports.inRunLines = inRunLines;
|
|
|
12
12
|
* no trusted no audit report, or one that does not count (stale, invalid, verdict-mismatch):
|
|
13
13
|
* audit a real delivery stops and asks for `sungen audit` (owner decision 2026-10-22);
|
|
14
14
|
* `--preview` / `--check` go on with a warning — the caller decides (`untrustedAudits`)
|
|
15
|
+
* failing a trusted audit whose verdict is FAIL (`sungen audit` exits 2): the same — a real
|
|
16
|
+
* audit delivery stops, naming the failing gate rules (#935, owner decision); `--preview`
|
|
17
|
+
* renders a DRAFT, `--check` reports it (`failingAudits`)
|
|
15
18
|
* It also hands each target its gate rules (catalog + overrides) for the matrix gates, and the
|
|
16
19
|
* override rows the XLSX may show. With no decision in reach nothing here changes the delivery.
|
|
17
20
|
*/
|
|
18
21
|
const decision_integrity_check_1 = require("../../decisions/decision-integrity-check");
|
|
19
22
|
const decision_file_1 = require("../../decisions/decision-file");
|
|
20
23
|
const audit_report_verification_1 = require("./audit-report-verification");
|
|
24
|
+
const audit_gate_terms_1 = require("./audit-gate-terms");
|
|
21
25
|
const gate_override_report_1 = require("./gate-override-report");
|
|
22
26
|
const gate_override_scope_1 = require("./gate-override-scope");
|
|
23
27
|
const in_run_decision_check_1 = require("./in-run-decision-check");
|
|
24
28
|
const resolve_rule_1 = require("./resolve-rule");
|
|
25
29
|
const unit_gate_overrides_1 = require("./unit-gate-overrides");
|
|
26
30
|
const reachOf = (scope) => [`qa/decisions/`, ...(scope ? [`qa/${scope}/decisions/`] : [])];
|
|
31
|
+
/** The audit gate rules a FAIL report's own terms violate under the unit's overrides, gaps named. */
|
|
32
|
+
function failingGateRules(report, overrides) {
|
|
33
|
+
const sources = (0, audit_gate_terms_1.termSourcesOf)(report, true);
|
|
34
|
+
if (!sources)
|
|
35
|
+
return 'its gate terms';
|
|
36
|
+
const gaps = sources.gate.gaps
|
|
37
|
+
.map((g) => `${g.status === 'shallow' ? 'SHALLOW' : 'MISSING'}: ${String(g.theme)}`);
|
|
38
|
+
const rules = (0, audit_gate_terms_1.auditGateTerms)(sources).filter((t) => !t.holds && (0, resolve_rule_1.resolveRule)(t.rule, overrides.context).blocking)
|
|
39
|
+
.map((t) => (t.rule === 'audit.viewpoint-coverage' && gaps.length ? `${t.rule} (${gaps.join(', ')})` : t.rule));
|
|
40
|
+
return rules.join(', ') || 'its gate terms';
|
|
41
|
+
}
|
|
27
42
|
function evaluateDeliveryDecisions(projectRoot, refs) {
|
|
28
43
|
const blocking = [];
|
|
29
44
|
const untrustedAudits = [];
|
|
45
|
+
const failingAudits = [];
|
|
46
|
+
const draftDirs = new Set();
|
|
30
47
|
const notes = [];
|
|
31
48
|
const inRun = [];
|
|
32
49
|
const units = new Map();
|
|
@@ -43,10 +60,16 @@ function evaluateDeliveryDecisions(projectRoot, refs) {
|
|
|
43
60
|
units.set(ref.unitDir, { ref, resultsPaths: [ref.resultsPath], overrides, rules: (0, resolve_rule_1.trackGateRules)(overrides.context), auditTriggered });
|
|
44
61
|
for (const r of overrides.rejected)
|
|
45
62
|
blocking.push(`${ref.label}: gate.override-rejected — ${r.decisionId} (${r.path}): ${r.reason}`);
|
|
63
|
+
const flag = /[\\/]qa[\\/]api[\\/]/.test(ref.unitDir) ? '--api' : '--screen';
|
|
46
64
|
if (!(0, audit_report_verification_1.auditCounts)(audit)) {
|
|
47
65
|
const why = audit.state === 'absent' ? 'no audit report' : `the audit is ${audit.state === 'stale' ? 'stale' : 'not trusted'}: ${audit.problems.map((p) => p.message).join('; ')}`;
|
|
48
|
-
const flag = /[\\/]qa[\\/]api[\\/]/.test(ref.unitDir) ? '--api' : '--screen';
|
|
49
66
|
untrustedAudits.push(`${ref.label}: ${why} — re-run \`sungen audit ${flag} ${ref.unitName}\``);
|
|
67
|
+
draftDirs.add(ref.unitDir);
|
|
68
|
+
}
|
|
69
|
+
else if (audit.report?.gateStatus !== 'PASS') {
|
|
70
|
+
const overall = audit.report?.score?.overall;
|
|
71
|
+
failingAudits.push(`${ref.label}: FAIL ${overall ?? '?'}/10 on ${failingGateRules(audit.report, overrides)} — fix the suite, then re-run \`sungen audit ${flag} ${ref.unitName}\``);
|
|
72
|
+
draftDirs.add(ref.unitDir);
|
|
50
73
|
}
|
|
51
74
|
for (const n of audit.notes)
|
|
52
75
|
notes.push(`${ref.label}: ${n}`);
|
|
@@ -75,6 +98,8 @@ function evaluateDeliveryDecisions(projectRoot, refs) {
|
|
|
75
98
|
return {
|
|
76
99
|
blocking,
|
|
77
100
|
untrustedAudits,
|
|
101
|
+
failingAudits,
|
|
102
|
+
auditDraft: (dir) => draftDirs.has(dir),
|
|
78
103
|
notes,
|
|
79
104
|
inRun,
|
|
80
105
|
rulesFor: (dir) => units.get(dir)?.rules,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-decision-gate.js","sourceRoot":"","sources":["../../../src/harness/gates/delivery-decision-gate.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"delivery-decision-gate.js","sourceRoot":"","sources":["../../../src/harness/gates/delivery-decision-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,10 @@ export interface DeliveryDecisionStepInput {
|
|
|
8
8
|
argv: string[];
|
|
9
9
|
io: ConfirmationIO;
|
|
10
10
|
log: (line: string) => void;
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* A real export needs, per unit, a trusted audit (owner decision 2026-10-22) that PASSes (#935);
|
|
13
|
+
* false for --preview / --check, which go on with a warning (a DRAFT render / a report).
|
|
14
|
+
*/
|
|
12
15
|
requireTrustedAudit: boolean;
|
|
13
16
|
}
|
|
14
17
|
/** The gate when the delivery may proceed; null when it must stop (already explained on `log`). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-decision-step.d.ts","sourceRoot":"","sources":["../../../src/harness/gates/delivery-decision-step.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAqE,MAAM,oCAAoC,CAAC;AACvI,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAyC,MAAM,0BAA0B,CAAC;AAGxH,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,iFAAiF;IACjF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,EAAE,EAAE,cAAc,CAAC;IACnB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B
|
|
1
|
+
{"version":3,"file":"delivery-decision-step.d.ts","sourceRoot":"","sources":["../../../src/harness/gates/delivery-decision-step.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAqE,MAAM,oCAAoC,CAAC;AACvI,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAyC,MAAM,0BAA0B,CAAC;AAGxH,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,iFAAiF;IACjF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,EAAE,EAAE,cAAc,CAAC;IACnB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,mGAAmG;AACnG,wBAAsB,uBAAuB,CAAC,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA8DhH"}
|
|
@@ -21,6 +21,8 @@ async function runDeliveryDecisionStep(i) {
|
|
|
21
21
|
i.log(` - ${b}`);
|
|
22
22
|
return null;
|
|
23
23
|
}
|
|
24
|
+
// Every reason to stop is listed before stopping, so one run names all of them (audit and in-run).
|
|
25
|
+
let blocked = false;
|
|
24
26
|
if (gate.untrustedAudits.length) {
|
|
25
27
|
i.log(i.requireTrustedAudit
|
|
26
28
|
? `✗ Delivery blocked — ${gate.untrustedAudits.length} unit(s) without a trusted audit (a delivery stands on an audit that matches today's suite):`
|
|
@@ -29,11 +31,22 @@ async function runDeliveryDecisionStep(i) {
|
|
|
29
31
|
i.log(` - ${u}`);
|
|
30
32
|
if (i.requireTrustedAudit) {
|
|
31
33
|
i.log(' Or render a watermarked draft with --preview.');
|
|
32
|
-
|
|
34
|
+
blocked = true;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (gate.failingAudits.length) {
|
|
38
|
+
i.log(i.requireTrustedAudit
|
|
39
|
+
? `✗ Delivery blocked — ${gate.failingAudits.length} unit(s) whose audit FAILs (\`sungen audit\` exits 2; an official delivery stands on a passing audit):`
|
|
40
|
+
: `⚠ Rendering ${gate.failingAudits.length} unit(s) whose audit FAILs — a draft, not an official delivery:`);
|
|
41
|
+
for (const u of gate.failingAudits)
|
|
42
|
+
i.log(` - ${u}`);
|
|
43
|
+
if (i.requireTrustedAudit) {
|
|
44
|
+
i.log(' Fix the suite and re-run the audit, or render a watermarked draft with --preview.');
|
|
45
|
+
blocked = true;
|
|
33
46
|
}
|
|
34
47
|
}
|
|
35
48
|
if (gate.inRun.length === 0)
|
|
36
|
-
return gate;
|
|
49
|
+
return blocked ? null : gate;
|
|
37
50
|
const acceptCommand = (0, human_confirmation_1.formatCommand)([...i.argv, '--accept-in-run']);
|
|
38
51
|
if (!i.acceptInRun) {
|
|
39
52
|
i.log(`✗ Delivery blocked — ${gate.inRun.length} decision(s) recorded during the run (${in_run_decision_check_1.IN_RUN_RULE}, hard):`);
|
|
@@ -43,6 +56,8 @@ async function runDeliveryDecisionStep(i) {
|
|
|
43
56
|
i.log(` ${acceptCommand}`);
|
|
44
57
|
return null;
|
|
45
58
|
}
|
|
59
|
+
if (blocked)
|
|
60
|
+
return null; // nothing to accept on top of a delivery the audit already stops
|
|
46
61
|
try {
|
|
47
62
|
await (0, human_confirmation_1.requireTypedConfirmation)({
|
|
48
63
|
what: `deliver with ${gate.inRun.length} decision(s) recorded during the run (${in_run_decision_check_1.IN_RUN_RULE})`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-decision-step.js","sourceRoot":"","sources":["../../../src/harness/gates/delivery-decision-step.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"delivery-decision-step.js","sourceRoot":"","sources":["../../../src/harness/gates/delivery-decision-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,18 @@ export interface JourneyReport {
|
|
|
45
45
|
* A read-only checkout gets the same board without throwing.
|
|
46
46
|
*/
|
|
47
47
|
export declare function runJourney(projectRoot: string, unit: string): JourneyReport;
|
|
48
|
+
/** The single human gate (DOS §3.4, S5): given with `--signoff`, never waived (#936). */
|
|
49
|
+
export declare const SIGNOFF_OBLIGATION = "OB-signoff";
|
|
50
|
+
export declare const signoffCommand: (unit: string) => string;
|
|
51
|
+
/** "Never audited" (T3): a unit is measured by `sungen audit`, never waived through (review W2). */
|
|
52
|
+
export declare const CREATE_OBLIGATION = "OB-create";
|
|
53
|
+
/**
|
|
54
|
+
* Throws unless `obId` is an obligation of the board that a waiver can accept. Refused in every state,
|
|
55
|
+
* each with what does it instead: OB-signoff (before any audit it is not on the board, after one a
|
|
56
|
+
* waiver would let the human gate be waived away) and OB-create (an unaudited unit would pass every
|
|
57
|
+
* gate on a waiver; the audit measures it).
|
|
58
|
+
*/
|
|
59
|
+
export declare function assertWaivable(report: JourneyReport, unit: string, obId: string): void;
|
|
48
60
|
/**
|
|
49
61
|
* Waive an obligation — REQUIRES a reason (anti-amnesia: a waiver leaves a recorded "why").
|
|
50
62
|
* Records the current evidence cursor so reconcile can invalidate it if the audit changes.
|
|
@@ -55,6 +67,13 @@ export declare function waive(projectRoot: string, unit: string, obId: string, r
|
|
|
55
67
|
* obligation is satisfied or waived (you cannot sign off an unclean suite). Records who/when +
|
|
56
68
|
* the evidence cursor; reconcile invalidates it (stale → re-review) if the suite later changes.
|
|
57
69
|
*/
|
|
70
|
+
/** Throws unless the board may be signed off: no decision problem, every other obligation accepted. */
|
|
71
|
+
export declare function assertCanSignOff(before: JourneyReport): void;
|
|
72
|
+
/** Who signs off: `--by`, else the git user; throws when neither names anyone (never `by: unknown`). */
|
|
73
|
+
export declare function signoffSigner(projectRoot: string, unit: string, by?: string): {
|
|
74
|
+
signer: string;
|
|
75
|
+
gitUser: string;
|
|
76
|
+
};
|
|
58
77
|
export declare function signoff(projectRoot: string, unit: string, by?: string): JourneyReport;
|
|
59
78
|
/**
|
|
60
79
|
* Write a DERIVED journey file (board, report, roll-up). Best-effort by contract (DOS-13.3): a read-only
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journey.d.ts","sourceRoot":"","sources":["../../src/harness/journey.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"journey.d.ts","sourceRoot":"","sources":["../../src/harness/journey.ts"],"names":[],"mappings":"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"}
|