@neurcode-ai/cli 0.9.65 → 0.9.66
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/commands/bootstrap-policy.d.ts +29 -0
- package/dist/commands/bootstrap-policy.d.ts.map +1 -0
- package/dist/commands/bootstrap-policy.js +334 -0
- package/dist/commands/bootstrap-policy.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +82 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/quickstart.d.ts +21 -0
- package/dist/commands/quickstart.d.ts.map +1 -0
- package/dist/commands/quickstart.js +178 -0
- package/dist/commands/quickstart.js.map +1 -0
- package/dist/commands/remediate-export.d.ts +31 -0
- package/dist/commands/remediate-export.d.ts.map +1 -0
- package/dist/commands/remediate-export.js +283 -0
- package/dist/commands/remediate-export.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +106 -10
- package/dist/commands/verify.js.map +1 -1
- package/dist/governance/canonical-invariants.d.ts +88 -0
- package/dist/governance/canonical-invariants.d.ts.map +1 -0
- package/dist/governance/canonical-invariants.js +197 -0
- package/dist/governance/canonical-invariants.js.map +1 -0
- package/dist/governance/canonical-ordering.d.ts +76 -0
- package/dist/governance/canonical-ordering.d.ts.map +1 -0
- package/dist/governance/canonical-ordering.js +189 -0
- package/dist/governance/canonical-ordering.js.map +1 -0
- package/dist/governance/canonical-pipeline.d.ts +7 -0
- package/dist/governance/canonical-pipeline.d.ts.map +1 -1
- package/dist/governance/canonical-pipeline.js +184 -16
- package/dist/governance/canonical-pipeline.js.map +1 -1
- package/dist/governance/diff-line-provenance.d.ts +59 -0
- package/dist/governance/diff-line-provenance.d.ts.map +1 -0
- package/dist/governance/diff-line-provenance.js +118 -0
- package/dist/governance/diff-line-provenance.js.map +1 -0
- package/dist/governance/pilot-readiness.d.ts +34 -0
- package/dist/governance/pilot-readiness.d.ts.map +1 -0
- package/dist/governance/pilot-readiness.js +226 -0
- package/dist/governance/pilot-readiness.js.map +1 -0
- package/dist/governance/policy-parity-validator.d.ts +62 -0
- package/dist/governance/policy-parity-validator.d.ts.map +1 -0
- package/dist/governance/policy-parity-validator.js +137 -0
- package/dist/governance/policy-parity-validator.js.map +1 -0
- package/dist/governance/remediation-boundary.d.ts +55 -0
- package/dist/governance/remediation-boundary.d.ts.map +1 -0
- package/dist/governance/remediation-boundary.js +120 -0
- package/dist/governance/remediation-boundary.js.map +1 -0
- package/dist/governance/structural-cache.d.ts +103 -0
- package/dist/governance/structural-cache.d.ts.map +1 -0
- package/dist/governance/structural-cache.js +240 -0
- package/dist/governance/structural-cache.js.map +1 -0
- package/dist/governance/structural-on-diff.d.ts +22 -2
- package/dist/governance/structural-on-diff.d.ts.map +1 -1
- package/dist/governance/structural-on-diff.js +36 -4
- package/dist/governance/structural-on-diff.js.map +1 -1
- package/dist/governance/structural-policy-merge.d.ts +8 -0
- package/dist/governance/structural-policy-merge.d.ts.map +1 -1
- package/dist/governance/structural-policy-merge.js +7 -0
- package/dist/governance/structural-policy-merge.js.map +1 -1
- package/dist/governance/verify-runtime-guard.d.ts +99 -0
- package/dist/governance/verify-runtime-guard.d.ts.map +1 -0
- package/dist/governance/verify-runtime-guard.js +129 -0
- package/dist/governance/verify-runtime-guard.js.map +1 -0
- package/dist/index.js +50 -14
- package/dist/index.js.map +1 -1
- package/dist/intent-engine/repo-classifier.d.ts +64 -0
- package/dist/intent-engine/repo-classifier.d.ts.map +1 -0
- package/dist/intent-engine/repo-classifier.js +178 -0
- package/dist/intent-engine/repo-classifier.js.map +1 -0
- package/dist/structural-rules/index.d.ts +4 -0
- package/dist/structural-rules/index.d.ts.map +1 -1
- package/dist/structural-rules/index.js +18 -1
- package/dist/structural-rules/index.js.map +1 -1
- package/dist/structural-rules/python/PY003-broad-except-clause.d.ts +21 -0
- package/dist/structural-rules/python/PY003-broad-except-clause.d.ts.map +1 -1
- package/dist/structural-rules/python/PY003-broad-except-clause.js +212 -21
- package/dist/structural-rules/python/PY003-broad-except-clause.js.map +1 -1
- package/dist/structural-rules/python/PY011-thread-lifecycle.d.ts +11 -0
- package/dist/structural-rules/python/PY011-thread-lifecycle.d.ts.map +1 -0
- package/dist/structural-rules/python/PY011-thread-lifecycle.js +97 -0
- package/dist/structural-rules/python/PY011-thread-lifecycle.js.map +1 -0
- package/dist/structural-rules/python/PY012-asyncio-run-misuse.d.ts +11 -0
- package/dist/structural-rules/python/PY012-asyncio-run-misuse.d.ts.map +1 -0
- package/dist/structural-rules/python/PY012-asyncio-run-misuse.js +83 -0
- package/dist/structural-rules/python/PY012-asyncio-run-misuse.js.map +1 -0
- package/dist/structural-rules/python/PY013-mutable-default-arg.d.ts +11 -0
- package/dist/structural-rules/python/PY013-mutable-default-arg.d.ts.map +1 -0
- package/dist/structural-rules/python/PY013-mutable-default-arg.js +73 -0
- package/dist/structural-rules/python/PY013-mutable-default-arg.js.map +1 -0
- package/dist/structural-rules/python/PY014-fixed-sleep-retry.d.ts +11 -0
- package/dist/structural-rules/python/PY014-fixed-sleep-retry.d.ts.map +1 -0
- package/dist/structural-rules/python/PY014-fixed-sleep-retry.js +115 -0
- package/dist/structural-rules/python/PY014-fixed-sleep-retry.js.map +1 -0
- package/dist/structural-rules/types.d.ts +12 -0
- package/dist/structural-rules/types.d.ts.map +1 -1
- package/dist/utils/verify-runtime-stability.d.ts +142 -0
- package/dist/utils/verify-runtime-stability.d.ts.map +1 -0
- package/dist/utils/verify-runtime-stability.js +230 -0
- package/dist/utils/verify-runtime-stability.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Verify Runtime Stability (Phase 4 — Verify Runtime Stability)
|
|
4
|
+
*
|
|
5
|
+
* Bounded execution guarantees for enterprise CI environments.
|
|
6
|
+
*
|
|
7
|
+
* Provides:
|
|
8
|
+
* 1. Hard execution timeouts with graceful partial-result preservation
|
|
9
|
+
* 2. Large repo detection and cache-build recommendations
|
|
10
|
+
* 3. Memory pressure tracking with layered degradation
|
|
11
|
+
* 4. Runtime transparency — every degraded mode is explicitly reported
|
|
12
|
+
*
|
|
13
|
+
* Layered degradation order (when memory or time pressure is detected):
|
|
14
|
+
* 1. Semantic layer first (LLM-assisted planning, intent expansion)
|
|
15
|
+
* 2. Advisory systems second (heuristic signals, advisory-only rules)
|
|
16
|
+
* 3. NEVER structural governance — AST-backed structural verification
|
|
17
|
+
* MUST remain operational even under full degradation
|
|
18
|
+
*
|
|
19
|
+
* Design constraints:
|
|
20
|
+
* - All timeouts are configurable via environment variables
|
|
21
|
+
* - Degradation is explicit and reported in verify output
|
|
22
|
+
* - Partial findings are always preserved (never silently dropped)
|
|
23
|
+
* - Structural governance is protected by construction
|
|
24
|
+
*/
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.MEMORY_DEGRADE_ADVISORY_THRESHOLD = exports.MEMORY_DEGRADE_SEMANTIC_THRESHOLD = exports.LARGE_REPO_FILE_THRESHOLD = exports.CI_VERIFY_MAX_MS = exports.LOCAL_VERIFY_MAX_MS = void 0;
|
|
27
|
+
exports.createVerifyRuntimeContext = createVerifyRuntimeContext;
|
|
28
|
+
exports.isTimedOut = isTimedOut;
|
|
29
|
+
exports.elapsedMs = elapsedMs;
|
|
30
|
+
exports.remainingMs = remainingMs;
|
|
31
|
+
exports.isTimePressure = isTimePressure;
|
|
32
|
+
exports.getHeapUsedFraction = getHeapUsedFraction;
|
|
33
|
+
exports.applyMemoryPressureDegradation = applyMemoryPressureDegradation;
|
|
34
|
+
exports.estimateRepoFileCount = estimateRepoFileCount;
|
|
35
|
+
exports.applyLargeRepoProtection = applyLargeRepoProtection;
|
|
36
|
+
exports.shouldSkipSemanticLayer = shouldSkipSemanticLayer;
|
|
37
|
+
exports.shouldSkipAdvisoryLayer = shouldSkipAdvisoryLayer;
|
|
38
|
+
exports.buildVerifyRuntimeReport = buildVerifyRuntimeReport;
|
|
39
|
+
const child_process_1 = require("child_process");
|
|
40
|
+
// ── Constants ─────────────────────────────────────────────────────────────────
|
|
41
|
+
/** Local verify max wall-clock time (90s default) */
|
|
42
|
+
exports.LOCAL_VERIFY_MAX_MS = parseInt(process.env['NEURCODE_VERIFY_TIMEOUT_LOCAL'] ?? '', 10) || 90_000;
|
|
43
|
+
/** CI verify max wall-clock time (180s default) */
|
|
44
|
+
exports.CI_VERIFY_MAX_MS = parseInt(process.env['NEURCODE_VERIFY_TIMEOUT_CI'] ?? '', 10) || 180_000;
|
|
45
|
+
/** Repo size threshold for large-repo warning (10,000 files) */
|
|
46
|
+
exports.LARGE_REPO_FILE_THRESHOLD = parseInt(process.env['NEURCODE_LARGE_REPO_THRESHOLD'] ?? '', 10) || 10_000;
|
|
47
|
+
/** Heap usage fraction above which semantic layer is degraded (0.75 = 75%) */
|
|
48
|
+
exports.MEMORY_DEGRADE_SEMANTIC_THRESHOLD = 0.75;
|
|
49
|
+
/** Heap usage fraction above which advisory layer is degraded (0.90 = 90%) */
|
|
50
|
+
exports.MEMORY_DEGRADE_ADVISORY_THRESHOLD = 0.90;
|
|
51
|
+
// ── Runtime context ───────────────────────────────────────────────────────────
|
|
52
|
+
/**
|
|
53
|
+
* Create a new verify runtime context.
|
|
54
|
+
* Call once at the start of verify execution.
|
|
55
|
+
*/
|
|
56
|
+
function createVerifyRuntimeContext(isCI) {
|
|
57
|
+
return {
|
|
58
|
+
isCI,
|
|
59
|
+
timeoutMs: isCI ? exports.CI_VERIFY_MAX_MS : exports.LOCAL_VERIFY_MAX_MS,
|
|
60
|
+
startedAt: Date.now(),
|
|
61
|
+
degradedLayers: new Set(),
|
|
62
|
+
degradationReasons: [],
|
|
63
|
+
skippedSubsystems: [],
|
|
64
|
+
largeRepoMode: false,
|
|
65
|
+
estimatedFileCount: null,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// ── Time pressure ─────────────────────────────────────────────────────────────
|
|
69
|
+
/**
|
|
70
|
+
* Check if the verify execution has exceeded its time budget.
|
|
71
|
+
*
|
|
72
|
+
* @returns true if timeout has been exceeded
|
|
73
|
+
*/
|
|
74
|
+
function isTimedOut(ctx) {
|
|
75
|
+
return (Date.now() - ctx.startedAt) >= ctx.timeoutMs;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get elapsed time in milliseconds since verify started.
|
|
79
|
+
*/
|
|
80
|
+
function elapsedMs(ctx) {
|
|
81
|
+
return Date.now() - ctx.startedAt;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get remaining time in milliseconds before timeout.
|
|
85
|
+
*/
|
|
86
|
+
function remainingMs(ctx) {
|
|
87
|
+
return Math.max(0, ctx.timeoutMs - elapsedMs(ctx));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Check if remaining time is below a given threshold.
|
|
91
|
+
* Use to preemptively skip expensive operations.
|
|
92
|
+
*
|
|
93
|
+
* @param ctx Runtime context
|
|
94
|
+
* @param thresholdMs Time threshold in ms (default: 5000ms)
|
|
95
|
+
*/
|
|
96
|
+
function isTimePressure(ctx, thresholdMs = 5_000) {
|
|
97
|
+
return remainingMs(ctx) < thresholdMs;
|
|
98
|
+
}
|
|
99
|
+
// ── Memory pressure ───────────────────────────────────────────────────────────
|
|
100
|
+
/**
|
|
101
|
+
* Get current heap usage as a fraction of heap limit.
|
|
102
|
+
* Returns 0 if measurement is unavailable.
|
|
103
|
+
*/
|
|
104
|
+
function getHeapUsedFraction() {
|
|
105
|
+
try {
|
|
106
|
+
const mem = process.memoryUsage();
|
|
107
|
+
if (mem.heapTotal > 0) {
|
|
108
|
+
return mem.heapUsed / mem.heapTotal;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Non-fatal
|
|
113
|
+
}
|
|
114
|
+
return 0;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Check memory pressure and apply layered degradation if needed.
|
|
118
|
+
*
|
|
119
|
+
* Degradation order:
|
|
120
|
+
* 1. 75% heap: degrade semantic layer (LLM intent expansion etc.)
|
|
121
|
+
* 2. 90% heap: degrade advisory layer (heuristic signals etc.)
|
|
122
|
+
* Structural governance is NEVER degraded by memory pressure.
|
|
123
|
+
*
|
|
124
|
+
* @param ctx Runtime context (mutated to record degradation)
|
|
125
|
+
*/
|
|
126
|
+
function applyMemoryPressureDegradation(ctx) {
|
|
127
|
+
const fraction = getHeapUsedFraction();
|
|
128
|
+
if (fraction >= exports.MEMORY_DEGRADE_ADVISORY_THRESHOLD && !ctx.degradedLayers.has('advisory')) {
|
|
129
|
+
ctx.degradedLayers.add('advisory');
|
|
130
|
+
ctx.degradationReasons.push(`Heap usage at ${Math.round(fraction * 100)}% exceeded advisory threshold ` +
|
|
131
|
+
`(${Math.round(exports.MEMORY_DEGRADE_ADVISORY_THRESHOLD * 100)}%) — advisory layer degraded`);
|
|
132
|
+
ctx.skippedSubsystems.push('advisory-signals', 'heuristic-rules');
|
|
133
|
+
}
|
|
134
|
+
if (fraction >= exports.MEMORY_DEGRADE_SEMANTIC_THRESHOLD && !ctx.degradedLayers.has('semantic')) {
|
|
135
|
+
ctx.degradedLayers.add('semantic');
|
|
136
|
+
ctx.degradationReasons.push(`Heap usage at ${Math.round(fraction * 100)}% exceeded semantic threshold ` +
|
|
137
|
+
`(${Math.round(exports.MEMORY_DEGRADE_SEMANTIC_THRESHOLD * 100)}%) — semantic layer degraded`);
|
|
138
|
+
ctx.skippedSubsystems.push('intent-expansion', 'llm-planning');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// ── Large repo detection ──────────────────────────────────────────────────────
|
|
142
|
+
/**
|
|
143
|
+
* Estimate the number of tracked files in the git repository.
|
|
144
|
+
* Returns null if git is unavailable or the command fails.
|
|
145
|
+
*/
|
|
146
|
+
function estimateRepoFileCount(projectRoot) {
|
|
147
|
+
try {
|
|
148
|
+
const output = (0, child_process_1.execSync)('git ls-files --cached | wc -l', {
|
|
149
|
+
cwd: projectRoot,
|
|
150
|
+
encoding: 'utf-8',
|
|
151
|
+
timeout: 5000,
|
|
152
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
153
|
+
});
|
|
154
|
+
const count = parseInt(output.trim(), 10);
|
|
155
|
+
return Number.isFinite(count) ? count : null;
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Check if the repo qualifies as a large repo and apply appropriate guidance.
|
|
163
|
+
*
|
|
164
|
+
* If file count exceeds LARGE_REPO_FILE_THRESHOLD:
|
|
165
|
+
* - Sets ctx.largeRepoMode = true
|
|
166
|
+
* - Adds a cache-build recommendation to degradationReasons
|
|
167
|
+
* - Does NOT degrade structural governance
|
|
168
|
+
*
|
|
169
|
+
* @param ctx Runtime context (mutated)
|
|
170
|
+
* @param projectRoot Project root path
|
|
171
|
+
*/
|
|
172
|
+
function applyLargeRepoProtection(ctx, projectRoot) {
|
|
173
|
+
const count = estimateRepoFileCount(projectRoot);
|
|
174
|
+
ctx.estimatedFileCount = count;
|
|
175
|
+
if (count !== null && count > exports.LARGE_REPO_FILE_THRESHOLD) {
|
|
176
|
+
ctx.largeRepoMode = true;
|
|
177
|
+
ctx.degradationReasons.push(`Large repo detected (${count.toLocaleString()} tracked files, threshold: ` +
|
|
178
|
+
`${exports.LARGE_REPO_FILE_THRESHOLD.toLocaleString()}). ` +
|
|
179
|
+
`Structural cache warm-up recommended: run \`neurcode cache build\` before CI. ` +
|
|
180
|
+
`Semantic state will NOT be rebuilt synchronously in CI mode.`);
|
|
181
|
+
if (ctx.isCI) {
|
|
182
|
+
ctx.skippedSubsystems.push('synchronous-semantic-state-rebuild');
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// ── Degradation guards ────────────────────────────────────────────────────────
|
|
187
|
+
/**
|
|
188
|
+
* Return true if the semantic layer should be skipped.
|
|
189
|
+
* Call before any LLM-assisted or semantic expansion operations.
|
|
190
|
+
*/
|
|
191
|
+
function shouldSkipSemanticLayer(ctx) {
|
|
192
|
+
return ctx.degradedLayers.has('semantic') || isTimePressure(ctx, 10_000);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Return true if the advisory layer should be skipped.
|
|
196
|
+
* Call before any heuristic or advisory-only operations.
|
|
197
|
+
*/
|
|
198
|
+
function shouldSkipAdvisoryLayer(ctx) {
|
|
199
|
+
return ctx.degradedLayers.has('advisory') || isTimePressure(ctx, 3_000);
|
|
200
|
+
}
|
|
201
|
+
// ── Report generation ─────────────────────────────────────────────────────────
|
|
202
|
+
/**
|
|
203
|
+
* Build a runtime transparency report from the context.
|
|
204
|
+
* Include this in verify JSON output when --ci flag is set.
|
|
205
|
+
*/
|
|
206
|
+
function buildVerifyRuntimeReport(ctx) {
|
|
207
|
+
const heapFraction = getHeapUsedFraction();
|
|
208
|
+
let memoryMb = 0;
|
|
209
|
+
try {
|
|
210
|
+
memoryMb = Math.round(process.memoryUsage().heapUsed / 1024 / 1024);
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
// Non-fatal
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
degraded: ctx.degradedLayers.size > 0 || ctx.largeRepoMode,
|
|
217
|
+
degradedLayers: [...ctx.degradedLayers],
|
|
218
|
+
degradationReasons: [...ctx.degradationReasons],
|
|
219
|
+
skippedSubsystems: [...ctx.skippedSubsystems],
|
|
220
|
+
largeRepoMode: ctx.largeRepoMode,
|
|
221
|
+
estimatedFileCount: ctx.estimatedFileCount,
|
|
222
|
+
elapsedMs: elapsedMs(ctx),
|
|
223
|
+
timeoutMs: ctx.timeoutMs,
|
|
224
|
+
remainingMs: remainingMs(ctx),
|
|
225
|
+
memoryUsageMb: memoryMb,
|
|
226
|
+
heapUsedFraction: Math.round(heapFraction * 1000) / 1000,
|
|
227
|
+
structuralGovernanceOperational: true,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=verify-runtime-stability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-runtime-stability.js","sourceRoot":"","sources":["../../src/utils/verify-runtime-stability.ts"],"names":[],"mappings":"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"}
|