@deftai/directive-runtime 0.129.4 → 0.129.5
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/hook-dispatch.js +8 -3
- package/dist/pre-pr-run.d.ts +7 -1
- package/dist/pre-pr-run.js +25 -1
- package/dist/verify-ac.d.ts +7 -2
- package/dist/verify-ac.js +13 -5
- package/docs/scope-provenance.md +4 -0
- package/package.json +1 -1
- package/packs/skills/skills-pack-0.1.json +1 -1
- package/skills/deft-directive-release/SKILL.md +23 -0
- package/tasks/materialize.cjs +106 -5
- package/tasks/materialize.test.cjs +108 -0
- package/tasks/materialize.yml +14 -2
- package/vendor/directive-content/docs/scope-provenance.md +4 -0
- package/vendor/directive-content/packs/skills/skills-pack-0.1.json +1 -1
- package/vendor/directive-content/skills/deft-directive-release/SKILL.md +23 -0
- package/vendor/directive-content/tasks/materialize.cjs +106 -5
- package/vendor/directive-content/tasks/materialize.test.cjs +108 -0
- package/vendor/directive-content/tasks/materialize.yml +14 -2
- package/vendor/directive-core/dist/.tsbuildinfo +1 -1
- package/vendor/directive-core/dist/authz/classify.d.ts +6 -0
- package/vendor/directive-core/dist/authz/classify.d.ts.map +1 -1
- package/vendor/directive-core/dist/authz/classify.js +156 -2
- package/vendor/directive-core/dist/authz/classify.js.map +1 -1
- package/vendor/directive-core/dist/authz/evaluate.d.ts +5 -0
- package/vendor/directive-core/dist/authz/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/authz/evaluate.js +15 -5
- package/vendor/directive-core/dist/authz/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/check/cached-orchestrator.d.ts.map +1 -1
- package/vendor/directive-core/dist/check/cached-orchestrator.js +101 -2
- package/vendor/directive-core/dist/check/cached-orchestrator.js.map +1 -1
- package/vendor/directive-core/dist/check/context.d.ts +199 -0
- package/vendor/directive-core/dist/check/context.d.ts.map +1 -1
- package/vendor/directive-core/dist/check/context.js +417 -2
- package/vendor/directive-core/dist/check/context.js.map +1 -1
- package/vendor/directive-core/dist/check/gate-lists.d.ts +42 -0
- package/vendor/directive-core/dist/check/gate-lists.d.ts.map +1 -1
- package/vendor/directive-core/dist/check/gate-lists.js +226 -0
- package/vendor/directive-core/dist/check/gate-lists.js.map +1 -1
- package/vendor/directive-core/dist/check/index.d.ts +1 -0
- package/vendor/directive-core/dist/check/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/check/index.js +1 -0
- package/vendor/directive-core/dist/check/index.js.map +1 -1
- package/vendor/directive-core/dist/check/named-cause.d.ts.map +1 -1
- package/vendor/directive-core/dist/check/named-cause.js +1 -0
- package/vendor/directive-core/dist/check/named-cause.js.map +1 -1
- package/vendor/directive-core/dist/check/orchestrator.d.ts +1 -0
- package/vendor/directive-core/dist/check/orchestrator.d.ts.map +1 -1
- package/vendor/directive-core/dist/check/orchestrator.js +69 -4
- package/vendor/directive-core/dist/check/orchestrator.js.map +1 -1
- package/vendor/directive-core/dist/finish-loop/pr-finish-loop.d.ts +7 -0
- package/vendor/directive-core/dist/finish-loop/pr-finish-loop.d.ts.map +1 -1
- package/vendor/directive-core/dist/finish-loop/pr-finish-loop.js +42 -0
- package/vendor/directive-core/dist/finish-loop/pr-finish-loop.js.map +1 -1
- package/vendor/directive-core/dist/hooks/classify/host-session-identity.d.ts +15 -2
- package/vendor/directive-core/dist/hooks/classify/host-session-identity.d.ts.map +1 -1
- package/vendor/directive-core/dist/hooks/classify/host-session-identity.js +46 -5
- package/vendor/directive-core/dist/hooks/classify/host-session-identity.js.map +1 -1
- package/vendor/directive-core/dist/hooks/dispatcher.d.ts.map +1 -1
- package/vendor/directive-core/dist/hooks/dispatcher.js +61 -10
- package/vendor/directive-core/dist/hooks/dispatcher.js.map +1 -1
- package/vendor/directive-core/dist/hooks/scope.d.ts +38 -9
- package/vendor/directive-core/dist/hooks/scope.d.ts.map +1 -1
- package/vendor/directive-core/dist/hooks/scope.js +102 -16
- package/vendor/directive-core/dist/hooks/scope.js.map +1 -1
- package/vendor/directive-core/dist/install-health/cheap.d.ts +11 -0
- package/vendor/directive-core/dist/install-health/cheap.d.ts.map +1 -1
- package/vendor/directive-core/dist/install-health/cheap.js +36 -2
- package/vendor/directive-core/dist/install-health/cheap.js.map +1 -1
- package/vendor/directive-core/dist/install-health/index.d.ts +1 -1
- package/vendor/directive-core/dist/install-health/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/install-health/index.js +1 -1
- package/vendor/directive-core/dist/install-health/index.js.map +1 -1
- package/vendor/directive-core/dist/policy/write-fence.d.ts +7 -0
- package/vendor/directive-core/dist/policy/write-fence.d.ts.map +1 -1
- package/vendor/directive-core/dist/policy/write-fence.js +81 -14
- package/vendor/directive-core/dist/policy/write-fence.js.map +1 -1
- package/vendor/directive-core/dist/pr-closing-keywords/main.d.ts +19 -0
- package/vendor/directive-core/dist/pr-closing-keywords/main.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-closing-keywords/main.js +31 -16
- package/vendor/directive-core/dist/pr-closing-keywords/main.js.map +1 -1
- package/vendor/directive-core/dist/pr-merge-readiness/compute.d.ts +8 -0
- package/vendor/directive-core/dist/pr-merge-readiness/compute.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-merge-readiness/compute.js +54 -2
- package/vendor/directive-core/dist/pr-merge-readiness/compute.js.map +1 -1
- package/vendor/directive-core/dist/pr-merge-readiness/gh.d.ts +7 -0
- package/vendor/directive-core/dist/pr-merge-readiness/gh.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-merge-readiness/gh.js +180 -49
- package/vendor/directive-core/dist/pr-merge-readiness/gh.js.map +1 -1
- package/vendor/directive-core/dist/pr-merge-readiness/main.d.ts +2 -0
- package/vendor/directive-core/dist/pr-merge-readiness/main.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-merge-readiness/main.js +1 -0
- package/vendor/directive-core/dist/pr-merge-readiness/main.js.map +1 -1
- package/vendor/directive-core/dist/pr-monitor/monitor.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-monitor/monitor.js +1 -0
- package/vendor/directive-core/dist/pr-monitor/monitor.js.map +1 -1
- package/vendor/directive-core/dist/pr-monitor/readiness.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-monitor/readiness.js +1 -0
- package/vendor/directive-core/dist/pr-monitor/readiness.js.map +1 -1
- package/vendor/directive-core/dist/pr-monitor/types.d.ts +2 -0
- package/vendor/directive-core/dist/pr-monitor/types.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-wait-mergeable/cascade.d.ts +6 -0
- package/vendor/directive-core/dist/pr-wait-mergeable/cascade.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-wait-mergeable/cascade.js +27 -0
- package/vendor/directive-core/dist/pr-wait-mergeable/cascade.js.map +1 -1
- package/vendor/directive-core/dist/pr-wait-mergeable/constants.d.ts +15 -0
- package/vendor/directive-core/dist/pr-wait-mergeable/constants.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-wait-mergeable/constants.js +18 -0
- package/vendor/directive-core/dist/pr-wait-mergeable/constants.js.map +1 -1
- package/vendor/directive-core/dist/pr-wait-mergeable/index.d.ts +2 -1
- package/vendor/directive-core/dist/pr-wait-mergeable/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-wait-mergeable/index.js +2 -1
- package/vendor/directive-core/dist/pr-wait-mergeable/index.js.map +1 -1
- package/vendor/directive-core/dist/pr-wait-mergeable/semantic-green.d.ts +81 -0
- package/vendor/directive-core/dist/pr-wait-mergeable/semantic-green.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-wait-mergeable/semantic-green.js +687 -3
- package/vendor/directive-core/dist/pr-wait-mergeable/semantic-green.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/controller.d.ts +59 -1
- package/vendor/directive-core/dist/pre-pr-controller/controller.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/controller.js +155 -2
- package/vendor/directive-core/dist/pre-pr-controller/controller.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.d.ts +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.js +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/phases.d.ts +7 -0
- package/vendor/directive-core/dist/pre-pr-controller/phases.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/phases.js +11 -0
- package/vendor/directive-core/dist/pre-pr-controller/phases.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/types.d.ts +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/types.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/types.js.map +1 -1
- package/vendor/directive-core/dist/preflight-gh/pre-push.d.ts.map +1 -1
- package/vendor/directive-core/dist/preflight-gh/pre-push.js +58 -2
- package/vendor/directive-core/dist/preflight-gh/pre-push.js.map +1 -1
- package/vendor/directive-core/dist/product-first-done-gate/acceptance-resolver.d.ts +1 -1
- package/vendor/directive-core/dist/product-first-done-gate/acceptance-resolver.d.ts.map +1 -1
- package/vendor/directive-core/dist/product-first-done-gate/acceptance-resolver.js +1 -1
- package/vendor/directive-core/dist/product-first-done-gate/acceptance-resolver.js.map +1 -1
- package/vendor/directive-core/dist/product-first-done-gate/index.d.ts +1 -1
- package/vendor/directive-core/dist/product-first-done-gate/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/product-first-done-gate/index.js +1 -1
- package/vendor/directive-core/dist/product-first-done-gate/index.js.map +1 -1
- package/vendor/directive-core/dist/release/pipeline.d.ts.map +1 -1
- package/vendor/directive-core/dist/release/pipeline.js +13 -1
- package/vendor/directive-core/dist/release/pipeline.js.map +1 -1
- package/vendor/directive-core/dist/release/preflight.d.ts +11 -0
- package/vendor/directive-core/dist/release/preflight.d.ts.map +1 -1
- package/vendor/directive-core/dist/release/preflight.js +65 -0
- package/vendor/directive-core/dist/release/preflight.js.map +1 -1
- package/vendor/directive-core/dist/release/types.d.ts +4 -0
- package/vendor/directive-core/dist/release/types.d.ts.map +1 -1
- package/vendor/directive-core/dist/scope/delivery-evidence.d.ts +37 -0
- package/vendor/directive-core/dist/scope/delivery-evidence.d.ts.map +1 -1
- package/vendor/directive-core/dist/scope/delivery-evidence.js +106 -6
- package/vendor/directive-core/dist/scope/delivery-evidence.js.map +1 -1
- package/vendor/directive-core/dist/scope/transition.d.ts +3 -1
- package/vendor/directive-core/dist/scope/transition.d.ts.map +1 -1
- package/vendor/directive-core/dist/scope/transition.js +4 -0
- package/vendor/directive-core/dist/scope/transition.js.map +1 -1
- package/vendor/directive-core/dist/verify-ac/evaluate.d.ts +52 -0
- package/vendor/directive-core/dist/verify-ac/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/verify-ac/evaluate.js +361 -1
- package/vendor/directive-core/dist/verify-ac/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/verify-ac/index.d.ts +1 -1
- package/vendor/directive-core/dist/verify-ac/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/verify-ac/index.js +1 -1
- package/vendor/directive-core/dist/verify-ac/index.js.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { existsSync } from "node:fs";
|
|
2
|
-
import { join, resolve, sep } from "node:path";
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
2
|
+
import { isAbsolute, join, normalize, relative, resolve, sep } from "node:path";
|
|
3
3
|
/** True when `path` is the directive framework source checkout root. */
|
|
4
4
|
export function isFrameworkRepoRoot(path) {
|
|
5
5
|
const root = resolve(path);
|
|
@@ -25,4 +25,419 @@ export function resolveCheckTarget(frameworkRoot, projectRoot) {
|
|
|
25
25
|
? "check:framework-source"
|
|
26
26
|
: "check:consumer";
|
|
27
27
|
}
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Sanctioned skip-count baseline ratchet (#6072 Prefer-A Bound Recut-3)
|
|
30
|
+
// Lives beside the #6071 cited-skip scanner under packages/core/src/check/.
|
|
31
|
+
// Does not invent a parallel scanner; callers inject #6071 citation-shaped rows.
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
export const SANCTIONED_SKIP_COUNT_BASELINE_GATE_ID = "verify:sanctioned-skip-count-baseline";
|
|
34
|
+
/** Repo-relative path of the committed baseline count file. */
|
|
35
|
+
export const SANCTIONED_SKIP_COUNT_BASELINE_REL = "packages/core/src/check/sanctioned-skip-count-baseline.json";
|
|
36
|
+
/**
|
|
37
|
+
* Shape-(B) touch-set must admit this path alongside test skip sites (#6072
|
|
38
|
+
* Recut-3 second P2 limb / Depends-on #6071).
|
|
39
|
+
*/
|
|
40
|
+
export const SHAPE_B_ALLOWED_BASELINE_PATHS = [SANCTIONED_SKIP_COUNT_BASELINE_REL];
|
|
41
|
+
export const SANCTIONED_SKIP_COUNT_BASELINE_SCHEMA = "deft.sanctioned-skip-count-baseline.v1";
|
|
42
|
+
/**
|
|
43
|
+
* Count #6071 listed rows that carry a cited citation shape.
|
|
44
|
+
* Issue-state is intentionally ignored for the ratchet denominator.
|
|
45
|
+
*/
|
|
46
|
+
export function countCitationShapedSanctionedSkips(rows) {
|
|
47
|
+
let n = 0;
|
|
48
|
+
for (const row of rows) {
|
|
49
|
+
if (row.citationShape === "cited")
|
|
50
|
+
n += 1;
|
|
51
|
+
}
|
|
52
|
+
return n;
|
|
53
|
+
}
|
|
54
|
+
export function parseSanctionedSkipCountBaselineJson(text) {
|
|
55
|
+
let parsed;
|
|
56
|
+
try {
|
|
57
|
+
parsed = JSON.parse(text);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return { ok: false, reason: "baseline JSON is not parseable" };
|
|
61
|
+
}
|
|
62
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
63
|
+
return { ok: false, reason: "baseline JSON must be an object" };
|
|
64
|
+
}
|
|
65
|
+
const obj = parsed;
|
|
66
|
+
if (obj.schema !== SANCTIONED_SKIP_COUNT_BASELINE_SCHEMA) {
|
|
67
|
+
return {
|
|
68
|
+
ok: false,
|
|
69
|
+
reason: `baseline schema must be ${SANCTIONED_SKIP_COUNT_BASELINE_SCHEMA}`,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (typeof obj.count !== "number" || !Number.isInteger(obj.count) || obj.count < 0) {
|
|
73
|
+
return { ok: false, reason: "baseline count must be a non-negative integer" };
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
ok: true,
|
|
77
|
+
value: {
|
|
78
|
+
schema: SANCTIONED_SKIP_COUNT_BASELINE_SCHEMA,
|
|
79
|
+
count: obj.count,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function readSanctionedSkipCountBaselineAtRoot(root, seams = {}) {
|
|
84
|
+
const abs = resolveBaselineAbs(root);
|
|
85
|
+
const exists = seams.exists ?? ((p) => existsSync(p));
|
|
86
|
+
if (!exists(abs)) {
|
|
87
|
+
return {
|
|
88
|
+
ok: false,
|
|
89
|
+
reason: `missing baseline file at ${SANCTIONED_SKIP_COUNT_BASELINE_REL}`,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const readText = seams.readText ??
|
|
93
|
+
((p) => {
|
|
94
|
+
try {
|
|
95
|
+
return readFileSync(p, "utf8");
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
const text = readText(abs);
|
|
102
|
+
if (text === null) {
|
|
103
|
+
return {
|
|
104
|
+
ok: false,
|
|
105
|
+
reason: `unreadable baseline file at ${SANCTIONED_SKIP_COUNT_BASELINE_REL}`,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return parseSanctionedSkipCountBaselineJson(text);
|
|
109
|
+
}
|
|
110
|
+
function resolveBaselineAbs(root) {
|
|
111
|
+
const base = isAbsolute(root) ? root : join(process.cwd(), root);
|
|
112
|
+
return join(base, ...SANCTIONED_SKIP_COUNT_BASELINE_REL.split("/"));
|
|
113
|
+
}
|
|
114
|
+
/** Normalize a repo-relative path for shape-(B) touch-set membership. */
|
|
115
|
+
export function normalizeRepoRelativePath(path) {
|
|
116
|
+
const n = normalize(path).split(sep).join("/");
|
|
117
|
+
return n.replace(/^\.?\//, "");
|
|
118
|
+
}
|
|
119
|
+
/** True when a changed path is the baseline count file (#6072 shape-B admit). */
|
|
120
|
+
export function isSanctionedSkipCountBaselinePath(path) {
|
|
121
|
+
const n = normalizeRepoRelativePath(path);
|
|
122
|
+
return SHAPE_B_ALLOWED_BASELINE_PATHS.includes(n);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Pure baseline ratchet evaluator. Callers supply #6071 inventory-derived counts
|
|
126
|
+
* and shape-(B) authorization; this module does not scan the tree itself.
|
|
127
|
+
*/
|
|
128
|
+
export function evaluateSanctionedSkipCountBaseline(input) {
|
|
129
|
+
const candidate = input.candidateTreeSyntaxCount;
|
|
130
|
+
const target = input.targetBaselineCount;
|
|
131
|
+
const baseline = input.candidateBaselineCount;
|
|
132
|
+
const authorizedNetNew = input.shapeB.authorizedNetNew;
|
|
133
|
+
const phase = input.phase ?? "merge-readiness";
|
|
134
|
+
if (!Number.isInteger(candidate) || candidate < 0) {
|
|
135
|
+
return baselineFail(2, "baseline-missing", "candidate tree-syntax count must be a non-negative integer", { candidate, target, baseline, authorizedNetNew });
|
|
136
|
+
}
|
|
137
|
+
if (!Number.isInteger(target) || target < 0) {
|
|
138
|
+
return baselineFail(2, "baseline-missing", "target baseline count must be a non-negative integer", { candidate, target, baseline, authorizedNetNew });
|
|
139
|
+
}
|
|
140
|
+
if (!Number.isInteger(authorizedNetNew) || authorizedNetNew < 0) {
|
|
141
|
+
return baselineFail(2, "baseline-bump-mismatch", "authorizedNetNew must be a non-negative integer", { candidate, target, baseline, authorizedNetNew });
|
|
142
|
+
}
|
|
143
|
+
if (baseline === null) {
|
|
144
|
+
return baselineFail(1, "baseline-missing", `${SANCTIONED_SKIP_COUNT_BASELINE_GATE_ID}: missing or invalid candidate baseline at ${SANCTIONED_SKIP_COUNT_BASELINE_REL} (phase=${phase}); refuse rather than seed zero`, { candidate, target, baseline, authorizedNetNew });
|
|
145
|
+
}
|
|
146
|
+
if (!Number.isInteger(baseline) || baseline < 0) {
|
|
147
|
+
return baselineFail(1, "baseline-missing", `${SANCTIONED_SKIP_COUNT_BASELINE_GATE_ID}: invalid candidate baseline count`, { candidate, target, baseline, authorizedNetNew });
|
|
148
|
+
}
|
|
149
|
+
// P4: candidate committed baseline must equal candidate tree-syntax count.
|
|
150
|
+
if (baseline !== candidate) {
|
|
151
|
+
return baselineFail(1, "baseline-mismatch", `${SANCTIONED_SKIP_COUNT_BASELINE_GATE_ID}: candidate baseline ${baseline} must equal candidate tree-syntax count ${candidate}`, { candidate, target, baseline, authorizedNetNew });
|
|
152
|
+
}
|
|
153
|
+
if (candidate < target) {
|
|
154
|
+
return baselinePass(`${SANCTIONED_SKIP_COUNT_BASELINE_GATE_ID}: down-ratchet ok (count ${candidate} < target baseline ${target}; phase=${phase})`, { candidate, target, baseline, authorizedNetNew });
|
|
155
|
+
}
|
|
156
|
+
if (candidate === target) {
|
|
157
|
+
return baselinePass(`${SANCTIONED_SKIP_COUNT_BASELINE_GATE_ID}: count ${candidate} matches target baseline (phase=${phase})`, { candidate, target, baseline, authorizedNetNew });
|
|
158
|
+
}
|
|
159
|
+
const bump = baseline - target;
|
|
160
|
+
if (!input.shapeB.admitted) {
|
|
161
|
+
return baselineFail(1, "raise-refused", `${SANCTIONED_SKIP_COUNT_BASELINE_GATE_ID}: sanctioned skip count ${candidate} exceeds target baseline ${target}; refuse raise without shape-(B) hotfix authorization (phase=${phase})`, { candidate, target, baseline, authorizedNetNew });
|
|
162
|
+
}
|
|
163
|
+
if (bump !== authorizedNetNew) {
|
|
164
|
+
return baselineFail(1, "baseline-bump-mismatch", `${SANCTIONED_SKIP_COUNT_BASELINE_GATE_ID}: baseline bump ${bump} must equal #6071-authorized net-new skips ${authorizedNetNew} (phase=${phase})`, { candidate, target, baseline, authorizedNetNew });
|
|
165
|
+
}
|
|
166
|
+
return baselinePass(`${SANCTIONED_SKIP_COUNT_BASELINE_GATE_ID}: shape-(B) raise admitted (count ${candidate}, bump ${bump}, phase=${phase})`, { candidate, target, baseline, authorizedNetNew });
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Convenience: derive candidate count from #6071 rows, read candidate baseline,
|
|
170
|
+
* evaluate. Does not perform live issue probes or tree scanning.
|
|
171
|
+
*/
|
|
172
|
+
export function evaluateSanctionedSkipCountBaselineFromInventory(input) {
|
|
173
|
+
const candidateTreeSyntaxCount = countCitationShapedSanctionedSkips(input.candidateRows);
|
|
174
|
+
const read = readSanctionedSkipCountBaselineAtRoot(input.candidateRoot, input.seams ?? {});
|
|
175
|
+
const candidateBaselineCount = read.ok ? read.value.count : null;
|
|
176
|
+
return evaluateSanctionedSkipCountBaseline({
|
|
177
|
+
candidateTreeSyntaxCount,
|
|
178
|
+
targetBaselineCount: input.targetBaselineCount,
|
|
179
|
+
candidateBaselineCount,
|
|
180
|
+
shapeB: input.shapeB,
|
|
181
|
+
phase: input.phase,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
function baselinePass(message, counts) {
|
|
185
|
+
return {
|
|
186
|
+
ok: true,
|
|
187
|
+
code: 0,
|
|
188
|
+
outcome: "pass",
|
|
189
|
+
message,
|
|
190
|
+
candidateTreeSyntaxCount: counts.candidate,
|
|
191
|
+
targetBaselineCount: counts.target,
|
|
192
|
+
candidateBaselineCount: counts.baseline,
|
|
193
|
+
authorizedNetNew: counts.authorizedNetNew,
|
|
194
|
+
invokedTaskCheck: false,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function baselineFail(code, outcome, message, counts) {
|
|
198
|
+
return {
|
|
199
|
+
ok: false,
|
|
200
|
+
code,
|
|
201
|
+
outcome,
|
|
202
|
+
message,
|
|
203
|
+
candidateTreeSyntaxCount: counts.candidate,
|
|
204
|
+
targetBaselineCount: counts.target,
|
|
205
|
+
candidateBaselineCount: counts.baseline,
|
|
206
|
+
authorizedNetNew: counts.authorizedNetNew,
|
|
207
|
+
invokedTaskCheck: false,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// --- Cited-skip scanner (#6071 Prefer-A Recut-2) ---
|
|
211
|
+
/** Token-boundary skip forms; deliberately excludes skipIf (#6071 Recut-2). */
|
|
212
|
+
const SKIP_CALL_RE = /(?<![\w$.])((?:it|test|describe)\.skip)\s*\(\s*(?:(["'`])((?:\\.|(?!\2)[\s\S])*?)\2|([A-Za-z_$][\w$]*))/g;
|
|
213
|
+
const SKIP_COMMENT_RE = /\/\/\s*skip:\s*deftai\/directive#(\d+)/i;
|
|
214
|
+
const SKIPPED_TESTS_BLOCK_RE = /```skipped-tests:\r?\n([\s\S]*?)```/;
|
|
215
|
+
/** Four-site baseline allowlist (legacy-bridge describe.skip+it.skip + two yoloSterile aliases). */
|
|
216
|
+
export const CITED_SKIP_BASELINE = [
|
|
217
|
+
{
|
|
218
|
+
file: "packages/core/src/release-e2e/legacy-bridge-leg.test.ts",
|
|
219
|
+
kind: "describe.skip",
|
|
220
|
+
dynamicTitle: false,
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
file: "packages/core/src/release-e2e/legacy-bridge-leg.test.ts",
|
|
224
|
+
kind: "it.skip",
|
|
225
|
+
dynamicTitle: false,
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
file: "packages/core/src/content-contracts/skills/agents_md_session_start.test.ts",
|
|
229
|
+
kind: "it.skip",
|
|
230
|
+
dynamicTitle: true,
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
file: "packages/core/src/content-contracts/standards/branch_gate.test.ts",
|
|
234
|
+
kind: "it.skip",
|
|
235
|
+
dynamicTitle: true,
|
|
236
|
+
},
|
|
237
|
+
];
|
|
238
|
+
export function parseSkippedTestsBlock(body) {
|
|
239
|
+
const m = SKIPPED_TESTS_BLOCK_RE.exec(body);
|
|
240
|
+
if (m === null || m[1] === undefined)
|
|
241
|
+
return [];
|
|
242
|
+
return m[1]
|
|
243
|
+
.split(/\r?\n/)
|
|
244
|
+
.map((line) => line.trim())
|
|
245
|
+
.filter((line) => line.startsWith("- "))
|
|
246
|
+
.map((line) => line.slice(2).trim())
|
|
247
|
+
.filter((line) => line.length > 0);
|
|
248
|
+
}
|
|
249
|
+
function lineNumberAt(source, index) {
|
|
250
|
+
let line = 1;
|
|
251
|
+
for (let i = 0; i < index && i < source.length; i++) {
|
|
252
|
+
if (source[i] === "\n")
|
|
253
|
+
line++;
|
|
254
|
+
}
|
|
255
|
+
return line;
|
|
256
|
+
}
|
|
257
|
+
/** Inventory it.skip/test.skip/describe.skip with token boundary excluding skipIf. */
|
|
258
|
+
export function inventoryCitedSkipsInSource(source, file) {
|
|
259
|
+
const sites = [];
|
|
260
|
+
const re = new RegExp(SKIP_CALL_RE.source, SKIP_CALL_RE.flags);
|
|
261
|
+
let match = re.exec(source);
|
|
262
|
+
while (match !== null) {
|
|
263
|
+
const kind = match[1];
|
|
264
|
+
const title = match[3] ?? null;
|
|
265
|
+
const dynamicTitle = title === null && match[4] !== undefined;
|
|
266
|
+
const line = lineNumberAt(source, match.index);
|
|
267
|
+
const windowStart = Math.max(0, match.index - 200);
|
|
268
|
+
const window = source.slice(windowStart, match.index + match[0].length);
|
|
269
|
+
const comment = SKIP_COMMENT_RE.exec(window);
|
|
270
|
+
const issue = comment?.[1] !== undefined ? Number(comment[1]) : null;
|
|
271
|
+
sites.push({
|
|
272
|
+
file: file.replaceAll("\\", "/"),
|
|
273
|
+
kind,
|
|
274
|
+
title,
|
|
275
|
+
dynamicTitle,
|
|
276
|
+
issue,
|
|
277
|
+
line,
|
|
278
|
+
});
|
|
279
|
+
match = re.exec(source);
|
|
280
|
+
}
|
|
281
|
+
// yoloSterile alias form: `const itX = cond ? it.skip : it` (dynamic title; not a call).
|
|
282
|
+
const aliasRe = /\byoloSterile\s*\?\s*it\.skip\b/g;
|
|
283
|
+
let alias = aliasRe.exec(source);
|
|
284
|
+
while (alias !== null) {
|
|
285
|
+
sites.push({
|
|
286
|
+
file: file.replaceAll("\\", "/"),
|
|
287
|
+
kind: "it.skip",
|
|
288
|
+
title: null,
|
|
289
|
+
dynamicTitle: true,
|
|
290
|
+
issue: null,
|
|
291
|
+
line: lineNumberAt(source, alias.index),
|
|
292
|
+
});
|
|
293
|
+
alias = aliasRe.exec(source);
|
|
294
|
+
}
|
|
295
|
+
return sites;
|
|
296
|
+
}
|
|
297
|
+
function walkTestFiles(root, dir, out) {
|
|
298
|
+
let entries = [];
|
|
299
|
+
try {
|
|
300
|
+
entries = readdirSync(dir);
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
for (const name of entries) {
|
|
306
|
+
if (name === "node_modules" || name === "dist" || name === ".git")
|
|
307
|
+
continue;
|
|
308
|
+
const full = join(dir, name);
|
|
309
|
+
let st;
|
|
310
|
+
try {
|
|
311
|
+
st = statSync(full);
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
if (st.isDirectory()) {
|
|
317
|
+
walkTestFiles(root, full, out);
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
if (/\.(test|spec)\.(ts|tsx|js|mjs|cjs)$/.test(name)) {
|
|
321
|
+
out.push(full);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
export function inventoryCitedSkipsInTree(projectRoot) {
|
|
326
|
+
const files = [];
|
|
327
|
+
walkTestFiles(projectRoot, projectRoot, files);
|
|
328
|
+
const sites = [];
|
|
329
|
+
for (const abs of files) {
|
|
330
|
+
let source = "";
|
|
331
|
+
try {
|
|
332
|
+
source = readFileSync(abs, "utf8");
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
continue;
|
|
336
|
+
}
|
|
337
|
+
const rel = relative(projectRoot, abs).replaceAll("\\", "/");
|
|
338
|
+
sites.push(...inventoryCitedSkipsInSource(source, rel));
|
|
339
|
+
}
|
|
340
|
+
return sites;
|
|
341
|
+
}
|
|
342
|
+
function isBaselineSite(site) {
|
|
343
|
+
return CITED_SKIP_BASELINE.some((b) => b.file === site.file && b.kind === site.kind && (b.dynamicTitle ? site.dynamicTitle : true));
|
|
344
|
+
}
|
|
345
|
+
export function formatCitedSkipListing(sites) {
|
|
346
|
+
if (sites.length === 0)
|
|
347
|
+
return "cited-skips: (none)";
|
|
348
|
+
const lines = sites.map((s) => `- ${s.file}:${s.line} ${s.kind} title=${JSON.stringify(s.title)} issue=${s.issue ?? "none"}`);
|
|
349
|
+
return ["cited-skips:", ...lines].join("\n");
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Scan tree for unsanctioned skips. Lists inventory every run; live-probes
|
|
353
|
+
* only changed sites when changedFiles is provided (#6071).
|
|
354
|
+
*/
|
|
355
|
+
export function evaluateCitedSkipScan(options) {
|
|
356
|
+
const inventory = inventoryCitedSkipsInTree(options.projectRoot);
|
|
357
|
+
const listing = formatCitedSkipListing(inventory);
|
|
358
|
+
const failures = [];
|
|
359
|
+
const changed = new Set((options.changedFiles ?? []).map((f) => f.replaceAll("\\", "/")));
|
|
360
|
+
const liveAll = changed.size === 0;
|
|
361
|
+
for (const site of inventory) {
|
|
362
|
+
if (isBaselineSite(site)) {
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
365
|
+
if (site.kind === "describe.skip") {
|
|
366
|
+
failures.push(`unsanctioned-test-skip: ${site.file}:${site.line} describe.skip refused in v1 (#6071)`);
|
|
367
|
+
continue;
|
|
368
|
+
}
|
|
369
|
+
const inDiff = liveAll || changed.has(site.file);
|
|
370
|
+
if (!inDiff) {
|
|
371
|
+
// Static inventory only for unchanged sites.
|
|
372
|
+
continue;
|
|
373
|
+
}
|
|
374
|
+
if (!options.hotfixShapeB) {
|
|
375
|
+
failures.push(`unsanctioned-test-skip: ${site.file}:${site.line} skip added outside admitted shape (B) hotfix (#6071)`);
|
|
376
|
+
continue;
|
|
377
|
+
}
|
|
378
|
+
if (site.issue === null) {
|
|
379
|
+
failures.push(`unsanctioned-test-skip: ${site.file}:${site.line} missing // skip: deftai/directive#N citation (#6071)`);
|
|
380
|
+
continue;
|
|
381
|
+
}
|
|
382
|
+
if (options.fetchIssue === undefined) {
|
|
383
|
+
continue;
|
|
384
|
+
}
|
|
385
|
+
const issue = options.fetchIssue(site.issue);
|
|
386
|
+
if (issue === null) {
|
|
387
|
+
failures.push(`unsanctioned-test-skip: ${site.file}:${site.line} issue #${site.issue} missing (#6071)`);
|
|
388
|
+
continue;
|
|
389
|
+
}
|
|
390
|
+
if (issue.state !== "open") {
|
|
391
|
+
failures.push(`unsanctioned-test-skip: ${site.file}:${site.line} issue #${site.issue} is ${issue.state} (#6071)`);
|
|
392
|
+
continue;
|
|
393
|
+
}
|
|
394
|
+
if (options.skipCommitTimeIso !== undefined &&
|
|
395
|
+
Date.parse(issue.created_at) > Date.parse(options.skipCommitTimeIso)) {
|
|
396
|
+
failures.push(`unsanctioned-test-skip: ${site.file}:${site.line} issue #${site.issue} created_at after skip commit (#6071)`);
|
|
397
|
+
continue;
|
|
398
|
+
}
|
|
399
|
+
const titles = parseSkippedTestsBlock(issue.body);
|
|
400
|
+
if (titles.length === 0) {
|
|
401
|
+
failures.push(`unsanctioned-test-skip: ${site.file}:${site.line} issue #${site.issue} lacks skipped-tests block (#6071)`);
|
|
402
|
+
continue;
|
|
403
|
+
}
|
|
404
|
+
if (site.title !== null && !titles.includes(site.title)) {
|
|
405
|
+
failures.push(`unsanctioned-test-skip: ${site.file}:${site.line} title not in issue #${site.issue} skipped-tests (#6071)`);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
return { ok: failures.length === 0, inventory, failures, listing };
|
|
409
|
+
}
|
|
410
|
+
/** Map #6071 inventory sites to #6072 citation-shaped rows (issue-state ignored). */
|
|
411
|
+
export function mapCitedSkipSitesToSanctionedRows(sites) {
|
|
412
|
+
return sites.map((site) => ({
|
|
413
|
+
path: site.file,
|
|
414
|
+
title: site.title ?? "",
|
|
415
|
+
issueNumber: site.issue,
|
|
416
|
+
citationShape: site.issue !== null ? "cited" : "uncited",
|
|
417
|
+
}));
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Production wire for #6072 Bound P3: run baseline ratchet on check paths.
|
|
421
|
+
* Uses #6071 inventory rows; merge-base target via options for pre-pr phase.
|
|
422
|
+
*/
|
|
423
|
+
export function runSanctionedSkipCountBaselineGate(options) {
|
|
424
|
+
const sites = inventoryCitedSkipsInTree(options.projectRoot);
|
|
425
|
+
const rows = options.candidateRows ?? mapCitedSkipSitesToSanctionedRows(sites);
|
|
426
|
+
let targetBaselineCount = options.targetBaselineCount;
|
|
427
|
+
if (targetBaselineCount === undefined) {
|
|
428
|
+
const targetRead = readSanctionedSkipCountBaselineAtRoot(options.projectRoot);
|
|
429
|
+
if (!targetRead.ok) {
|
|
430
|
+
return { ok: false, code: 1, message: targetRead.reason };
|
|
431
|
+
}
|
|
432
|
+
targetBaselineCount = targetRead.value.count;
|
|
433
|
+
}
|
|
434
|
+
const result = evaluateSanctionedSkipCountBaselineFromInventory({
|
|
435
|
+
candidateRows: rows,
|
|
436
|
+
candidateRoot: options.projectRoot,
|
|
437
|
+
targetBaselineCount,
|
|
438
|
+
shapeB: options.shapeB ?? { admitted: false, authorizedNetNew: 0 },
|
|
439
|
+
phase: options.phase,
|
|
440
|
+
});
|
|
441
|
+
return { ok: result.ok, code: result.code, message: result.message };
|
|
442
|
+
}
|
|
28
443
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/check/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAkC/C,wEAAwE;AACxE,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CACL,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QACzD,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACpC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CACvC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,wBAAwB,CAAC,aAAqB,EAAE,WAAmB;IACjF,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,kBAAkB,CAAC,aAAqB,EAAE,WAAmB;IAC3E,OAAO,wBAAwB,CAAC,aAAa,EAAE,WAAW,CAAC;QACzD,CAAC,CAAC,wBAAwB;QAC1B,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/check/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,4 +58,46 @@ export declare function isFastBeforeSlowOrder(gates: readonly CheckGateSpec[]):
|
|
|
58
58
|
export declare const FRAMEWORK_CHECK_GATES: readonly CheckGateSpec[];
|
|
59
59
|
export declare const CONSUMER_CHECK_GATES: readonly CheckGateSpec[];
|
|
60
60
|
export declare function gatesForCheckTarget(target: string): readonly CheckGateSpec[];
|
|
61
|
+
export interface CitedSkipSite {
|
|
62
|
+
readonly file: string;
|
|
63
|
+
readonly kind: "it.skip" | "test.skip" | "describe.skip";
|
|
64
|
+
readonly title: string | null;
|
|
65
|
+
readonly dynamicTitle: boolean;
|
|
66
|
+
readonly issue: number | null;
|
|
67
|
+
readonly line: number;
|
|
68
|
+
}
|
|
69
|
+
/** Four-site baseline allowlist (legacy-bridge describe.skip+it.skip + two yoloSterile aliases). */
|
|
70
|
+
export declare const CITED_SKIP_BASELINE: readonly {
|
|
71
|
+
readonly file: string;
|
|
72
|
+
readonly kind: CitedSkipSite["kind"];
|
|
73
|
+
readonly dynamicTitle: boolean;
|
|
74
|
+
}[];
|
|
75
|
+
export declare function parseSkippedTestsBlock(body: string): string[];
|
|
76
|
+
/** Inventory it.skip/test.skip/describe.skip with token boundary excluding skipIf. */
|
|
77
|
+
export declare function inventoryCitedSkipsInSource(source: string, file: string): CitedSkipSite[];
|
|
78
|
+
export declare function inventoryCitedSkipsInTree(projectRoot: string): CitedSkipSite[];
|
|
79
|
+
export interface CitedSkipScanOptions {
|
|
80
|
+
readonly projectRoot: string;
|
|
81
|
+
/** When set, only these relative paths are live-validated for issue probes. */
|
|
82
|
+
readonly changedFiles?: readonly string[];
|
|
83
|
+
readonly hotfixShapeB?: boolean;
|
|
84
|
+
readonly fetchIssue?: (issue: number) => {
|
|
85
|
+
state: string;
|
|
86
|
+
created_at: string;
|
|
87
|
+
body: string;
|
|
88
|
+
} | null;
|
|
89
|
+
readonly skipCommitTimeIso?: string;
|
|
90
|
+
}
|
|
91
|
+
export interface CitedSkipScanResult {
|
|
92
|
+
readonly ok: boolean;
|
|
93
|
+
readonly inventory: readonly CitedSkipSite[];
|
|
94
|
+
readonly failures: readonly string[];
|
|
95
|
+
readonly listing: string;
|
|
96
|
+
}
|
|
97
|
+
export declare function formatCitedSkipListing(sites: readonly CitedSkipSite[]): string;
|
|
98
|
+
/**
|
|
99
|
+
* Scan tree for unsanctioned skips. Lists inventory every run; live-probes
|
|
100
|
+
* only changed sites when changedFiles is provided (#6071).
|
|
101
|
+
*/
|
|
102
|
+
export declare function evaluateCitedSkipScan(options: CitedSkipScanOptions): CitedSkipScanResult;
|
|
61
103
|
//# sourceMappingURL=gate-lists.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-lists.d.ts","sourceRoot":"","sources":["../../src/check/gate-lists.ts"],"names":[],"mappings":"AAAA,+EAA+E;
|
|
1
|
+
{"version":3,"file":"gate-lists.d.ts","sourceRoot":"","sources":["../../src/check/gate-lists.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAM/E;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB,MAAM,GACN;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAEN;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAGnC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,EAAE,aAGtC,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAEvD;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAOtF;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAGjD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,OAAO,CAGtE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,CAU9E;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,aAAa,EAoEzD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,SAAS,aAAa,EA2BxD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,aAAa,EAAE,CAQ5E;AAWD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,eAAe,CAAC;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,oGAAoG;AACpG,eAAO,MAAM,mBAAmB,EAAE,SAAS;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC,EA0BS,CAAC;AAEX,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAS7D;AAUD,sFAAsF;AACtF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAsCzF;AA4BD,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,EAAE,CAe9E;AA0BD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,CACpB,KAAK,EAAE,MAAM,KACV;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAO9E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CA4ExF"}
|