@codyswann/lisa 2.300.8 → 2.300.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/doctor-readiness-domain.d.ts.map +1 -1
- package/dist/cli/doctor-readiness-domain.js +23 -14
- package/dist/cli/doctor-readiness-domain.js.map +1 -1
- package/dist/cli/doctor-readiness-guardrails.d.ts.map +1 -1
- package/dist/cli/doctor-readiness-guardrails.js +54 -2
- package/dist/cli/doctor-readiness-guardrails.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +1 -0
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-readiness-domain.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-domain.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,iCAAiC,CAAC;AAEzC,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-readiness-domain.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-domain.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,iCAAiC,CAAC;AAEzC,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,qBAAqB,CAAC;AAuNhE;;;;;;;;;;GAUG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,GAC1C,OAAO,CAAC,wBAAwB,CAAC,CA2BnC"}
|
|
@@ -35,6 +35,11 @@ export const DOMAIN_OWNERSHIP_DIMENSION_ID = "domain-ownership";
|
|
|
35
35
|
const DOMAIN_BLOCKER_ID = "B1";
|
|
36
36
|
/** Most destructive commands quoted in one finding before summarizing. */
|
|
37
37
|
const MAX_EVIDENCE_COMMANDS = 10;
|
|
38
|
+
/** Shared tail for SKIP reasons that cannot establish domain ownership offline. */
|
|
39
|
+
const DOMAIN_OWNERSHIP_OFFLINE_TAIL = "Whether this repository's business rules, glossary, and danger zones are " +
|
|
40
|
+
"genuinely owned and written down cannot be established by reading files " +
|
|
41
|
+
"offline — that needs the agent-ready domain phase — so domain ownership is " +
|
|
42
|
+
"not established either way.";
|
|
38
43
|
/**
|
|
39
44
|
* Commands that irreversibly destroy stored data. Every entry is a whole
|
|
40
45
|
* operation, not a keyword: `rm -rf` is deliberately absent because build
|
|
@@ -139,27 +144,27 @@ function domainFinding(scan) {
|
|
|
139
144
|
* operator can tell "nothing to report" from "never looked".
|
|
140
145
|
* @param inspected - How many workflow files were read
|
|
141
146
|
* @param runbook - Whether a runbook is checked in
|
|
147
|
+
* @param recoverableDestructiveOps - Ungated destructive commands cleared by a runbook
|
|
142
148
|
* @returns The SKIP reason
|
|
143
149
|
*/
|
|
144
|
-
function skipReason(inspected, runbook) {
|
|
150
|
+
function skipReason(inspected, runbook, recoverableDestructiveOps) {
|
|
145
151
|
if (inspected === 0) {
|
|
146
152
|
return ("No GitHub Actions workflow files were found under `.github/workflows/`, " +
|
|
147
153
|
"so no irreversible data-destroying operations could be assessed from " +
|
|
148
154
|
"workflow declarations (recovery runbook " +
|
|
149
|
-
`${runbook ? "present" : "absent"}).
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
155
|
+
`${runbook ? "present" : "absent"}). ${DOMAIN_OWNERSHIP_OFFLINE_TAIL}`);
|
|
156
|
+
}
|
|
157
|
+
if (runbook && recoverableDestructiveOps > 0) {
|
|
158
|
+
return (`Read ${inspected} workflow file(s) and found ` +
|
|
159
|
+
`${recoverableDestructiveOps} irreversible data-destroying operation(s) ` +
|
|
160
|
+
"that this file alone proves can run unattended and ungated, but the " +
|
|
161
|
+
"repository checks in a recovery runbook, so the no-way-back half of B1 " +
|
|
162
|
+
`is not established (recovery runbook present). ${DOMAIN_OWNERSHIP_OFFLINE_TAIL}`);
|
|
154
163
|
}
|
|
155
164
|
return (`Read ${inspected} workflow file(s) for irreversible data-destroying ` +
|
|
156
165
|
"operations and found none that this file alone proves runs unattended, " +
|
|
157
166
|
`ungated, and with no way back (recovery runbook ` +
|
|
158
|
-
`${runbook ? "present" : "absent"}).
|
|
159
|
-
"repository's business rules, glossary, and danger zones are genuinely " +
|
|
160
|
-
"owned and written down cannot be established by reading files offline — " +
|
|
161
|
-
"that needs the agent-ready domain phase — so domain ownership is not " +
|
|
162
|
-
"established either way.");
|
|
167
|
+
`${runbook ? "present" : "absent"}). ${DOMAIN_OWNERSHIP_OFFLINE_TAIL}`);
|
|
163
168
|
}
|
|
164
169
|
/**
|
|
165
170
|
* Build the SKIP record, carrying every guarded destructive operation as an
|
|
@@ -169,14 +174,18 @@ function skipReason(inspected, runbook) {
|
|
|
169
174
|
* @param scan - The destructive-operation scan
|
|
170
175
|
* @param inspected - How many workflow files were read
|
|
171
176
|
* @param runbook - Whether a runbook is checked in
|
|
177
|
+
* @param recoverableDestructiveOps - Ungated destructive commands cleared by a runbook
|
|
172
178
|
* @returns The SKIP dimension record
|
|
173
179
|
*/
|
|
174
|
-
function skipRecord(guarded, scan, inspected, runbook) {
|
|
180
|
+
function skipRecord(guarded, scan, inspected, runbook, recoverableDestructiveOps = 0) {
|
|
175
181
|
return {
|
|
176
182
|
id: DOMAIN_OWNERSHIP_DIMENSION_ID,
|
|
177
183
|
status: "SKIP",
|
|
178
184
|
findings: [
|
|
179
|
-
{
|
|
185
|
+
{
|
|
186
|
+
reason: skipReason(inspected, runbook, recoverableDestructiveOps),
|
|
187
|
+
skip: true,
|
|
188
|
+
},
|
|
180
189
|
...informationalFindings([
|
|
181
190
|
...guarded.map(entry => `\`${entry.workflow}\` job \`${entry.jobId}\` runs a destructive ` +
|
|
182
191
|
`operation (\`${entry.command}\`) behind a gate, beside its own ` +
|
|
@@ -208,7 +217,7 @@ export async function assessDomainOwnershipDimension(root, parsedWorkflows) {
|
|
|
208
217
|
// B1 for the whole repository — the blocker asks for BOTH halves at once.
|
|
209
218
|
const recoverable = await hasCheckedInRunbook(root);
|
|
210
219
|
if (scan.ungated.length === 0 || recoverable) {
|
|
211
|
-
return skipRecord(recoverable ? [...scan.gated, ...scan.ungated] : scan.gated, scan, workflows.length, recoverable);
|
|
220
|
+
return skipRecord(recoverable ? [...scan.gated, ...scan.ungated] : scan.gated, scan, workflows.length, recoverable, recoverable ? scan.ungated.length : 0);
|
|
212
221
|
}
|
|
213
222
|
return {
|
|
214
223
|
id: DOMAIN_OWNERSHIP_DIMENSION_ID,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-readiness-domain.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-domain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EAEd,YAAY,GAEb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAGL,wBAAwB,GAEzB,MAAM,iCAAiC,CAAC;AAEzC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,kBAAkB,CAAC;AAEhE,0EAA0E;AAC1E,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,0EAA0E;AAC1E,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,qBAAqB,GAAsB;IAC/C,6BAA6B;IAC7B,6CAA6C;IAC7C,kCAAkC;IAClC,wCAAwC;IACxC,uCAAuC;IACvC,yBAAyB;IACzB,+CAA+C;IAC/C,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,sBAAsB;IACtB,sCAAsC;IACtC,kCAAkC;IAClC,mCAAmC;IACnC,2EAA2E;CAC5E,CAAC;AAEF,8EAA8E;AAC9E,MAAM,iBAAiB,GAAsB;IAC3C,aAAa;IACb,eAAe;IACf,YAAY;IACZ,cAAc;IACd,qBAAqB;CACtB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,SAAS,YAAY,CACnB,OAAe,EACf,GAAsB,EACtB,IAAwB;IAExB,OAAO,CACL,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC,cAAc,CAAC,GAAG,OAAO,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CACvB,SAAyB,EACzB,GAAsB,EACtB,IAAwB;IAExB,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,SAAS,GAAG,CAAC,EAAE,8DAA8D;QAC7E,+BAA+B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB;QAC7E,yEAAyE;QACzE,oCAAoC,CACrC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,GAAsB;IAC5C,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3B,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CACxE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAmB;IACxC,OAAO;QACL,OAAO,EAAE,iBAAiB;QAC1B,kBAAkB,EAChB,yEAAyE;YACzE,wBAAwB;QAC1B,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC;QAC/D,gBAAgB,EACd,0EAA0E;YAC1E,sEAAsE;YACtE,gDAAgD;QAClD,eAAe,EACb,uEAAuE;YACvE,uEAAuE;YACvE,gEAAgE;QAClE,mBAAmB,EAAE;YACnB,wEAAwE;gBACtE,wDAAwD;SAC3D;KACF,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"doctor-readiness-domain.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-domain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-readiness-guardrails.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-guardrails.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,iCAAiC,CAAC;AAEzC,gFAAgF;AAChF,eAAO,MAAM,gCAAgC,wBAAwB,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"doctor-readiness-guardrails.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-guardrails.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,iCAAiC,CAAC;AAEzC,gFAAgF;AAChF,eAAO,MAAM,gCAAgC,wBAAwB,CAAC;AA+RtE;;;;;;;;GAQG;AACH,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,GAC1C,OAAO,CAAC,wBAAwB,CAAC,CA8BnC"}
|
|
@@ -49,13 +49,20 @@ const PROTECTION_RULES_SKIP_REASON = "Whether a declared `environment:` actually
|
|
|
49
49
|
* blocker that fires on normal delivery is a blocker nobody will believe.
|
|
50
50
|
*/
|
|
51
51
|
const CONSEQUENTIAL_OPS = [
|
|
52
|
-
/\bterraform\s+(\S+\s+)*apply\b[^\n]*-auto-approve\b/,
|
|
53
52
|
/\bterraform\s+(\S+\s+)*destroy\b/,
|
|
54
53
|
/\bcdk\s+destroy\b/,
|
|
55
54
|
/\bpulumi\s+destroy\b/,
|
|
56
55
|
/\bpulumi\s+up\b[^\n]*--yes\b/,
|
|
57
56
|
/\bserverless\s+remove\b/,
|
|
58
57
|
];
|
|
58
|
+
/** A Terraform apply command, consequential only when auto-approval is present. */
|
|
59
|
+
const TERRAFORM_APPLY = /\bterraform(?:\s+\S+)*\s+apply\b/;
|
|
60
|
+
/** Terraform's non-interactive approval flag. */
|
|
61
|
+
const TERRAFORM_AUTO_APPROVE = /(^|\s)-auto-approve\b/;
|
|
62
|
+
/** Terraform env vars that inject CLI args into every command. */
|
|
63
|
+
const TERRAFORM_ARGS_AUTO_APPROVE = /\b(tf_cli_args(?:_apply)?|tf_args)\s*[:=][^\n]*-auto-approve\b/;
|
|
64
|
+
/** Separators that end one shell invocation for this conservative scan. */
|
|
65
|
+
const SHELL_INVOCATION_SEPARATOR = /\n|;|&&|\|\|/;
|
|
59
66
|
/**
|
|
60
67
|
* Commands that apply schema migrations, in the ecosystems Lisa templates. The
|
|
61
68
|
* `(?!:)` lookahead keeps the read-only subcommands out: `db:migrate:status`
|
|
@@ -78,6 +85,45 @@ const PRODUCTION_MARKERS = [
|
|
|
78
85
|
/--env(ironment)?[= ]prod/,
|
|
79
86
|
/\bprod(uction)?\.tfvars\b/,
|
|
80
87
|
];
|
|
88
|
+
/**
|
|
89
|
+
* Collapse only shell continuation newlines. Ordinary newlines remain command
|
|
90
|
+
* boundaries so unrelated invocations cannot combine into one Terraform apply.
|
|
91
|
+
* @param command - Shell command text
|
|
92
|
+
* @returns Command text with escaped newlines joined
|
|
93
|
+
*/
|
|
94
|
+
function normalizeShellContinuations(command) {
|
|
95
|
+
return command.replace(/\\\r?\n\s*/g, " ");
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Extract shell invocations that contain `terraform apply`.
|
|
99
|
+
* @param command - Shell command text
|
|
100
|
+
* @returns Invocation fragments that include Terraform apply
|
|
101
|
+
*/
|
|
102
|
+
function terraformApplyInvocations(command) {
|
|
103
|
+
return normalizeShellContinuations(command)
|
|
104
|
+
.split(SHELL_INVOCATION_SEPARATOR)
|
|
105
|
+
.map(part => part.trim())
|
|
106
|
+
.filter(part => TERRAFORM_APPLY.test(part));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check whether a Terraform apply invocation targets a saved plan file.
|
|
110
|
+
* @param invocation - Single shell invocation
|
|
111
|
+
* @returns True when `apply` has a positional plan-file argument
|
|
112
|
+
*/
|
|
113
|
+
function appliesSavedTerraformPlan(invocation) {
|
|
114
|
+
const tokens = invocation.split(/\s+/).filter(Boolean);
|
|
115
|
+
const terraformIndex = tokens.findIndex(token => token === "terraform");
|
|
116
|
+
if (terraformIndex === -1) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
const applyIndex = tokens.indexOf("apply", terraformIndex + 1);
|
|
120
|
+
if (applyIndex === -1) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
return tokens
|
|
124
|
+
.slice(applyIndex + 1)
|
|
125
|
+
.some(token => token !== "\\" && !token.startsWith("-"));
|
|
126
|
+
}
|
|
81
127
|
/**
|
|
82
128
|
* Whether a command is an irreversible or expensive operation.
|
|
83
129
|
*
|
|
@@ -96,7 +142,13 @@ function isConsequential(command, job, step) {
|
|
|
96
142
|
if (looksEphemeral(targetEvidence)) {
|
|
97
143
|
return false;
|
|
98
144
|
}
|
|
99
|
-
|
|
145
|
+
const terraformApplyInvocationsToAssess = terraformApplyInvocations(command);
|
|
146
|
+
const terraformAutoApprovedApply = terraformApplyInvocationsToAssess.some(invocation => TERRAFORM_AUTO_APPROVE.test(invocation) ||
|
|
147
|
+
appliesSavedTerraformPlan(invocation)) ||
|
|
148
|
+
(terraformApplyInvocationsToAssess.length > 0 &&
|
|
149
|
+
TERRAFORM_ARGS_AUTO_APPROVE.test(targetEvidence));
|
|
150
|
+
return (terraformAutoApprovedApply ||
|
|
151
|
+
CONSEQUENTIAL_OPS.some(pattern => pattern.test(command)) ||
|
|
100
152
|
(MIGRATION_COMMANDS.some(pattern => pattern.test(command)) &&
|
|
101
153
|
PRODUCTION_MARKERS.some(pattern => pattern.test(targetEvidence))));
|
|
102
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-readiness-guardrails.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-guardrails.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EAEd,YAAY,GACb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAIL,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AAEzC,gFAAgF;AAChF,MAAM,CAAC,MAAM,gCAAgC,GAAG,qBAAqB,CAAC;AAEtE,mFAAmF;AACnF,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,8EAA8E;AAC9E,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC;;;;GAIG;AACH,MAAM,4BAA4B,GAChC,uEAAuE;IACvE,wEAAwE;IACxE,uEAAuE;IACvE,8EAA8E;IAC9E,qEAAqE;IACrE,2DAA2D,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,iBAAiB,GAAsB;IAC3C,
|
|
1
|
+
{"version":3,"file":"doctor-readiness-guardrails.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-guardrails.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkiEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkiEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA8yMjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -6724,6 +6724,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6724
6724
|
"tests/unit/cli/doctor-readiness-domain-negatives.test.ts": true,
|
|
6725
6725
|
"tests/unit/cli/doctor-readiness-domain.test.ts": true,
|
|
6726
6726
|
"tests/unit/cli/doctor-readiness-guardrails-ephemeral.test.ts": true,
|
|
6727
|
+
"tests/unit/cli/doctor-readiness-guardrails-terraform.test.ts": true,
|
|
6727
6728
|
"tests/unit/cli/doctor-readiness-guardrails.test.ts": true,
|
|
6728
6729
|
"tests/unit/cli/doctor-readiness-journey.test.ts": true,
|
|
6729
6730
|
"tests/unit/cli/doctor-readiness-supply-chain-exceptions.test.ts": true,
|