opencode-agent-skill 14.2.0-beta.1 → 15.0.0

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.
Files changed (55) hide show
  1. package/README.md +51 -18
  2. package/docs/PI-COMPAT.md +167 -3
  3. package/docs/V15-MANAGED-RUNTIME.md +128 -0
  4. package/global-config/agents/architect.md +63 -1
  5. package/global-config/agents/executor.md +7 -0
  6. package/global-config/agents/plan-checker.md +8 -1
  7. package/global-config/agents/verifier.md +3 -3
  8. package/global-config/skills/database-engineering/references/workflow.md +15 -0
  9. package/global-config/skills/engineering-orchestrator/references/long-horizon.md +21 -11
  10. package/lib/activity-deadline.mjs +70 -0
  11. package/lib/adaptive-context-budget.mjs +25 -5
  12. package/lib/affected-tests.mjs +1 -1
  13. package/lib/capability-fabric.mjs +40 -0
  14. package/lib/code-intelligence/edit-anchor.mjs +102 -0
  15. package/lib/code-intelligence/index.mjs +95 -0
  16. package/lib/code-intelligence/lsp-provider.mjs +189 -0
  17. package/lib/completion-auditor.mjs +102 -0
  18. package/lib/document-ingestion.mjs +60 -0
  19. package/lib/evidence-store.mjs +92 -8
  20. package/lib/execution-contract.mjs +579 -0
  21. package/lib/fast-verification-gate.mjs +69 -0
  22. package/lib/leaf-runtime-optimizer.mjs +76 -0
  23. package/lib/mcp-health.mjs +144 -0
  24. package/lib/mcp-tool-policy.mjs +19 -0
  25. package/lib/memory-engine.mjs +28 -0
  26. package/lib/pi-child-invocation.mjs +65 -0
  27. package/lib/pi-rpc-pool.mjs +61 -9
  28. package/lib/plan-salvage.mjs +124 -0
  29. package/lib/planning-speed-policy.mjs +131 -0
  30. package/lib/prompt-cache.mjs +26 -12
  31. package/lib/repo-graph.mjs +1 -1
  32. package/lib/repo-inspect.mjs +1 -0
  33. package/lib/reversible-context.mjs +49 -0
  34. package/lib/runtime-artifacts.mjs +42 -0
  35. package/lib/runtime-events.mjs +33 -1
  36. package/lib/safety.mjs +1 -0
  37. package/lib/semantic-index.mjs +1 -1
  38. package/lib/service-manager.mjs +526 -0
  39. package/lib/session-display.mjs +49 -0
  40. package/lib/task-engine.mjs +6 -10
  41. package/lib/task-graph.mjs +87 -0
  42. package/lib/task-policy.mjs +210 -8
  43. package/lib/trajectory.mjs +111 -1
  44. package/lib/turbo-fast-path.mjs +44 -0
  45. package/lib/workspace-fingerprint.mjs +2 -11
  46. package/lib/workspace-root.mjs +49 -0
  47. package/lib/worktree-sandbox.mjs +234 -11
  48. package/package.json +9 -6
  49. package/pi/extensions/ues-child-runtime.ts +300 -2
  50. package/pi/extensions/ues.ts +1887 -160
  51. package/scripts/check-release-consistency.mjs +25 -2
  52. package/scripts/check-source-integrity.mjs +532 -3
  53. package/scripts/eval-pi.mjs +76 -36
  54. package/scripts/smoke-pi-extension.mjs +1 -1
  55. package/pi/prompts/ues-run.md +0 -17
@@ -113,7 +113,7 @@ export function checkReleaseConsistency(root = DEFAULT_ROOT) {
113
113
 
114
114
  const piCompat = requireText(errors, readText(root, path.join("docs", "PI-COMPAT.md")), "docs/PI-COMPAT.md")
115
115
  if (piCompat) {
116
- for (const marker of ["# Pi Agent runtime", "ues_execute", "ues_dispatch", "ues_cli", "manifest is Pi-only", "V14.2 Turbo Weak-Model Runtime"]) {
116
+ for (const marker of ["# Pi Agent runtime", "ues_execute", "ues_dispatch", "ues_cli", "manifest is Pi-only", "V14.2 Turbo Weak-Model Runtime", "V15.1 deterministic admission and managed services", "V15.2 Turbo Fast Path", "V15.3 DEEP Speed", "V15.4 ACP-safe child runtime", "V15.5 Per-Leaf Turbo", "V15.6 Fast Planning", "V15.7 Lightweight Sandbox Cleanup", "V15.8 Plan Gate Recovery", "V15.9 Runtime Artifact Isolation", "V15.10 Adaptive Stability Runtime", "V15.11 Session Identity Sync", "V15.12 Safe Autopilot + Disk Hygiene", "V15.13 Read-Only Completion Semantics", "V15.14 Deterministic Read-Only Fast Path", "V15.15 Execution Contracts + Phase Gates", "V15.16 Portable Cross-Tool Temp Paths", "V15.17 Zero-Friction Autopilot Admission", "V15.18 Three-Tier Zero-Friction Routing", "V15.19 Finalization Hardening", "ues_service"]) {
117
117
  if (!piCompat.includes(marker)) errors.push(`docs/PI-COMPAT.md: missing current Pi contract marker ${marker}`)
118
118
  }
119
119
  }
@@ -137,6 +137,7 @@ export function checkReleaseConsistency(root = DEFAULT_ROOT) {
137
137
  if (canonicalPolicy) {
138
138
  if (!/export function classifyEngineeringTask/.test(canonicalPolicy)) errors.push("lib/task-policy.mjs: missing classifyEngineeringTask")
139
139
  if (!/export function recoveryPolicyForAttempt/.test(canonicalPolicy)) errors.push("lib/task-policy.mjs: missing recoveryPolicyForAttempt")
140
+ if (!/CONCRETE_DIAGNOSIS/.test(canonicalPolicy) || !/diagnosisEvidence/.test(canonicalPolicy)) errors.push("lib/task-policy.mjs: missing V15.3 diagnosis deduplication contract")
140
141
  }
141
142
 
142
143
  if (pkg) {
@@ -146,6 +147,24 @@ export function checkReleaseConsistency(root = DEFAULT_ROOT) {
146
147
  if (scripts["docs:check"] !== "node scripts/check-release-consistency.mjs") errors.push("package.json: missing docs:check release-consistency script")
147
148
  if (scripts["release:check-tag"] !== "node scripts/check-release-tag.mjs") errors.push("package.json: missing release:check-tag script")
148
149
  if (scripts["eval:pi"] !== "node scripts/eval-pi.mjs") errors.push("package.json: missing Pi-native eval:pi script")
150
+ const focusedV15 = String(scripts["eval:v15"] || "").trim().split(/\s+/).filter(Boolean)
151
+ const requiredFocusedV15Tests = [
152
+ "test/v15-runtime.test.mjs",
153
+ "test/trajectory.test.mjs",
154
+ "test/evidence-store-v11.test.mjs",
155
+ "test/runtime-events.test.mjs",
156
+ "test/v14.3-intelligence.test.mjs",
157
+ "test/v14.2-runtime.test.mjs",
158
+ "test/pi-package.test.mjs",
159
+ "test/execution-contract.test.mjs",
160
+ ]
161
+ if (
162
+ focusedV15[0] !== "node" ||
163
+ focusedV15[1] !== "--test" ||
164
+ !requiredFocusedV15Tests.every((file) => focusedV15.includes(file))
165
+ ) {
166
+ errors.push("package.json: focused eval:v15 must run the current V15 runtime, disk-safety, intelligence and Pi-package regression set")
167
+ }
149
168
  if (!String(scripts.ci || "").includes("npm run integrity")) errors.push("package.json: ci must include source-integrity gate")
150
169
  if (scripts["runtime:exports"] !== "node scripts/check-runtime-exports.mjs") errors.push("package.json: missing runtime:exports import/export gate")
151
170
  if (!String(scripts.ci || "").includes("npm run runtime:exports")) errors.push("package.json: ci must include runtime export gate")
@@ -157,11 +176,15 @@ export function checkReleaseConsistency(root = DEFAULT_ROOT) {
157
176
  if (!Array.isArray(pkg.pi?.prompts) || !pkg.pi.prompts.includes("./pi/prompts/*.md")) errors.push("package.json: Pi prompts entry drift")
158
177
  if (!Array.isArray(pkg.files) || !pkg.files.includes("global-config/AGENTS.md")) errors.push("package.json: installer runtime data global-config/AGENTS.md must be packed")
159
178
  if (!pkg.files.includes("docs/V14.2-TURBO-WEAK-MODEL-RUNTIME.md")) errors.push("package.json: V14.2 runtime documentation must be packed")
179
+ if (!pkg.files.includes("docs/V15-MANAGED-RUNTIME.md")) errors.push("package.json: V15 managed-runtime documentation must be packed")
160
180
  if (scripts["smoke:packed"] !== "node scripts/smoke-packed-install.mjs") errors.push("package.json: missing smoke:packed integration script")
161
181
  }
162
182
 
163
183
  if (skillCount < 40) warnings.push(`skill catalog unexpectedly small: ${skillCount}`)
164
- if (promptCount < 10) warnings.push(`Pi prompt catalog unexpectedly small: ${promptCount}`)
184
+ if (promptCount !== 10) errors.push(`Pi must expose exactly 10 prompt templates; /ues-run is an extension command, found ${promptCount}`)
185
+ if (existsSync(path.join(root, "pi", "prompts", "ues-run.md"))) {
186
+ errors.push("pi/prompts/ues-run.md must not exist because it duplicates the deterministic extension /ues-run command")
187
+ }
165
188
 
166
189
  return {
167
190
  pass: errors.length === 0,
@@ -16,10 +16,92 @@ const CONTRACTS = [
16
16
  'name: "ues_dispatch"',
17
17
  "runRoutedAgent",
18
18
  "PiRpcWorkerPool",
19
+ "McpHealthTracker",
20
+ "MCP_HEALTH",
21
+ "auditCompletion",
22
+ 'pi.registerCommand("ues-status"',
23
+ 'pi.registerCommand("ues-run"',
24
+ "UES parent tools are hidden outside admitted UES runs",
25
+ "Zero-friction engineering admission",
26
+ "directControllerRunner",
27
+ "automaticUesAdmission",
28
+ "automaticUesContinuation",
29
+ "safe continuation",
30
+ "natural continuation forwarded to the active child",
31
+ "prompt was not swallowed",
32
+ "native / auto / high-risk",
33
+ "admissionDecision",
34
+ "__taskPolicy",
35
+ "void directControllerRunner",
36
+ "UES_AUTO_ADMIT",
37
+ "UES_PARENT_TOOL_NAMES",
38
+ "pi.getActiveTools",
39
+ "pi.setActiveTools",
40
+ "deactivateParentUesTools",
41
+ "activateParentUesTools",
42
+ 'pi.on("before_agent_start"',
43
+ "requireGitWorkspaceRoot",
44
+ "read-only-workspace-mutated",
45
+ "auto-revised the rejected plan",
46
+ "Removed transient runtime dirs",
47
+ "gcEvidenceStore",
48
+ 'entry.name === "evidence-v1"',
49
+ "Protected verified-memory evidence",
50
+ "MAX_WRITER_CONCURRENCY",
51
+ "UES_MAX_WRITER_CONCURRENCY",
52
+ "taskSandboxOwnerRoot",
53
+ "pi.setSessionName",
54
+ "sessionNameFromUesInput",
55
+ 'uesSessionName("run", task, workspaceRoot)',
56
+ "PACKAGE_VERSION",
57
+ 'name: "ues_service"',
58
+ "looksLikeLongRunningServiceCommand",
59
+ "ues_controller_direct",
60
+ "ues_controller_progress",
61
+ "taskPolicyOverride || classifyEngineeringTask",
62
+ "turboFastPathDecision",
63
+ "deepExplorationContract",
64
+ "resolvePiChildInvocation",
65
+ "leafTaskPolicy",
66
+ "failureDelta",
67
+ "UES Per-Leaf Turbo",
68
+ "contextCacheNamespace",
69
+ "planningRuntimeBudget",
70
+ "shouldSoftSteerArchitect",
71
+ "pruneOrphanTaskSandboxes",
72
+ "planning fast-stop",
73
+ "ACTIVE_TASK_SANDBOXES",
74
+ "cleanupTraceSandboxes",
75
+ "ues-clean",
76
+ "reclaimOwnerPid",
77
+ "sourceFacingPaths",
78
+ "sourceGitPathspecs",
79
+ "sandboxIntentToAddSourceFiles",
80
+ "--exclude-standard",
81
+ "changed real source files outside declared write scope",
82
+ "Do not silently broaden scope",
83
+ "extractValidatedPlan",
84
+ "absoluteHardTimeoutMs",
85
+ "activityExtensionMs",
86
+ "UES planning salvage",
87
+ "first substantive output",
88
+ "partialOutput",
89
+ "UES DEEP bounded exploration",
90
+ "DEEP efficiency rule",
91
+ "TURBO_FAST_TIMEOUTS",
92
+ "process.stderr.write",
19
93
  "CHILD_RUNTIME_EXTENSION",
20
94
  "isAbortedRun",
21
95
  "abortedResponse",
22
96
  'reason: "aborted"',
97
+ "buildExecutionContract",
98
+ "captureInheritedDirtyState",
99
+ "detectInheritedDirtyViolations",
100
+ "enforcePhaseGates",
101
+ "inherited dirty-work guard stopped completion",
102
+ "FINAL_VERDICTS.json",
103
+ "UES_CHILD_ALLOW_LOCAL_ENV_WRITE",
104
+ "Independent final verdict matrix: on",
23
105
  ],
24
106
  },
25
107
  {
@@ -30,9 +112,23 @@ const CONTRACTS = [
30
112
  'pi.on("tool_call"',
31
113
  'pi.on("tool_result"',
32
114
  'name: "ues_evidence_get"',
115
+ 'name: "ues_code"',
116
+ 'name: "ues_code_edit"',
117
+ 'name: "ues_service"',
118
+ 'process.env.UES_CHILD_PROCESS !== "1"',
119
+ "looksLikeLongRunningServiceCommand",
120
+ "stopAllServices",
121
+ "applyAnchoredFileEdits",
122
+ "diagnoseCode",
33
123
  "recordVerification",
34
124
  "canonicalVerificationCommand",
35
125
  "destructiveShellRisk",
126
+ "isLocalEnvPath",
127
+ "localEnvWriteRisk",
128
+ "crossToolTempPathRisk",
129
+ "portable temp-path guard",
130
+ "UES_CHILD_ALLOW_LOCAL_ENV_WRITE",
131
+ "NEEDS_USER_ENV",
36
132
  ],
37
133
  },
38
134
  {
@@ -80,7 +176,7 @@ const CONTRACTS = [
80
176
  file: "lib/evidence-store.mjs",
81
177
  minBytes: 7_500,
82
178
  startsWith: "import ",
83
- required: ["putEvidence", "getEvidence", "getEvidenceSelected"],
179
+ required: ["putEvidence", "getEvidence", "getEvidenceSelected", "DEFAULT_MAX_STORE_BYTES", "maxBytes", "AUTO_GC_EVERY_WRITES", "protectedEvidenceHashes", "protectedEntries"],
84
180
  },
85
181
  {
86
182
  file: "lib/process-supervisor.mjs",
@@ -88,17 +184,166 @@ const CONTRACTS = [
88
184
  startsWith: "import ",
89
185
  required: ["terminateProcessTree", "runSupervisedProcess", "drainTimeoutMs"],
90
186
  },
187
+ {
188
+ file: "lib/activity-deadline.mjs",
189
+ minBytes: 1_500,
190
+ startsWith: "function finite",
191
+ required: [
192
+ "createAdaptiveDeadline",
193
+ "absoluteHardTimeoutMs",
194
+ "activityExtensionMs",
195
+ "activityWindowMs",
196
+ "absolute-hard-timeout",
197
+ "hard-timeout",
198
+ ],
199
+ },
200
+ {
201
+ file: "lib/plan-salvage.mjs",
202
+ minBytes: 2_000,
203
+ startsWith: "import ",
204
+ required: [
205
+ "extractValidatedPlan",
206
+ "normalizePlanForValidation",
207
+ "validatePlan",
208
+ "unmarked-balanced",
209
+ "fenced",
210
+ "salvaged",
211
+ ],
212
+ },
213
+ {
214
+ file: "lib/runtime-artifacts.mjs",
215
+ minBytes: 800,
216
+ startsWith: "export const UES_RUNTIME_DIRS",
217
+ required: [
218
+ "isUesRuntimeArtifactPath",
219
+ "sourceFacingPaths",
220
+ "sourceGitPathspecs",
221
+ ".ues-traces",
222
+ ".ues-cache",
223
+ ".ues-services",
224
+ ".ues-work",
225
+ ],
226
+ },
227
+ {
228
+ file: "lib/runtime-events.mjs",
229
+ minBytes: 1_200,
230
+ startsWith: 'import { randomUUID }',
231
+ required: [
232
+ "appendRuntimeEvent",
233
+ "readRuntimeEvents",
234
+ "DEFAULT_MAX_EVENT_FILE_BYTES",
235
+ "runtime-events.compacted",
236
+ "UES_EVENT_LOG_MAX_BYTES",
237
+ ],
238
+ },
239
+ {
240
+ file: "lib/workspace-root.mjs",
241
+ minBytes: 900,
242
+ startsWith: 'import { spawnSync }',
243
+ required: [
244
+ "resolveGitWorkspaceRoot",
245
+ "requireGitWorkspaceRoot",
246
+ "--show-toplevel",
247
+ "Refusing to create UES runtime artifacts",
248
+ ],
249
+ },
250
+ {
251
+ file: "lib/planning-speed-policy.mjs",
252
+ minBytes: 1_500,
253
+ startsWith: "function bounded",
254
+ required: [
255
+ "planningRuntimeBudget",
256
+ "shouldSoftSteerArchitect",
257
+ "absoluteHardTimeoutMs",
258
+ "activityExtensionMs",
259
+ "activityWindowMs",
260
+ "150_000",
261
+ "maxExplorationTools",
262
+ ],
263
+ },
264
+ {
265
+ file: "lib/leaf-runtime-optimizer.mjs",
266
+ minBytes: 2_000,
267
+ startsWith: "import ",
268
+ required: [
269
+ "leafTaskPolicy",
270
+ "failureDelta",
271
+ "rootExecutionProfile",
272
+ "FAILURE_SIGNAL",
273
+ "Declared write files",
274
+ ],
275
+ },
276
+ {
277
+ file: "lib/pi-child-invocation.mjs",
278
+ minBytes: 1_500,
279
+ startsWith: "import ",
280
+ required: [
281
+ "looksLikePiCliEntrypoint",
282
+ "resolvePiChildInvocation",
283
+ "@earendil-works/pi-coding-agent",
284
+ "resolveManagedPiCommand",
285
+ "resolveWindowsCommand",
286
+ "host-pi-cli",
287
+ "managed-pi",
288
+ ],
289
+ },
91
290
  {
92
291
  file: "lib/pi-rpc-pool.mjs",
93
292
  minBytes: 8_000,
94
293
  startsWith: "import ",
95
- required: ["class RpcWorker", "steerActive", "abortActive", "abortTransport", "activeAbort", "uesRpcPhase", "stopAll"],
294
+ required: [
295
+ "class RpcWorker",
296
+ "steerActive",
297
+ "abortActive",
298
+ "abortTransport",
299
+ "activeAbort",
300
+ "uesRpcPhase",
301
+ "stopAll",
302
+ "createAdaptiveDeadline",
303
+ "absoluteHardTimeoutMs",
304
+ "partialAssistantMessage",
305
+ "rich timeout error before transport teardown",
306
+ "settled.catch(() => {})",
307
+ ],
308
+ },
309
+ {
310
+ file: "lib/worktree-sandbox.mjs",
311
+ minBytes: 8_000,
312
+ startsWith: "import ",
313
+ required: [
314
+ "pruneOrphanTaskSandboxes",
315
+ "taskSandboxOwnerRoot",
316
+ "ownerPid",
317
+ "owner-alive",
318
+ "legacyMinAgeMs",
319
+ "ownedMinAgeMs",
320
+ "reclaimOwnerPid",
321
+ "protected-active",
322
+ "sidecarsRemoved",
323
+ "detached-owner-alive",
324
+ "detached-remove-failed",
325
+ "detached: true",
326
+ "sourceGitPathspecs",
327
+ "isUesRuntimeArtifactPath",
328
+ "intentToAddSourceFiles",
329
+ "--exclude-standard",
330
+ "processAlive",
331
+ ],
96
332
  },
97
333
  {
98
334
  file: "lib/workspace-fingerprint.mjs",
99
335
  minBytes: 3_000,
100
336
  startsWith: "import ",
101
- required: ["runtimeWorkspaceFingerprint", "runtimeWorkspaceSnapshot", "changedFiles", "cacheable", "untrackedContentDigest", "untracked-total-too-large"],
337
+ required: [
338
+ "runtimeWorkspaceFingerprint",
339
+ "runtimeWorkspaceSnapshot",
340
+ "changedFiles",
341
+ "cacheable",
342
+ "untrackedContentDigest",
343
+ "untracked-total-too-large",
344
+ "UES_RUNTIME_DIRS",
345
+ "runtime-artifacts.mjs",
346
+ ],
102
347
  },
103
348
  {
104
349
  file: "lib/skill-compiler.mjs",
@@ -141,6 +386,290 @@ const CONTRACTS = [
141
386
  ],
142
387
  },
143
388
 
389
+ {
390
+ file: "lib/code-intelligence/edit-anchor.mjs",
391
+ minBytes: 2_500,
392
+ startsWith: "import ",
393
+ required: ["anchoredLines", "applyAnchoredEdits", "UES_STALE_ANCHOR"],
394
+ },
395
+ {
396
+ file: "lib/code-intelligence/index.mjs",
397
+ minBytes: 4_000,
398
+ startsWith: "import ",
399
+ required: ["readAnchoredCode", "applyAnchoredFileEdits", "searchCodeIntelligence", "diagnoseCode"],
400
+ },
401
+ {
402
+ file: "lib/code-intelligence/lsp-provider.mjs",
403
+ minBytes: 5_000,
404
+ startsWith: "import ",
405
+ required: ["diagnoseCode", "lspProviderStatus", "publishDiagnostics"],
406
+ },
407
+ {
408
+ file: "lib/execution-contract.mjs",
409
+ minBytes: 8_000,
410
+ startsWith: "import ",
411
+ required: [
412
+ "captureInheritedDirtyState",
413
+ "detectInheritedDirtyViolations",
414
+ "explicitlyAuthorizedInheritedDirtyPaths",
415
+ "taskExplicitlyAllowsLocalEnvWrite",
416
+ "enforcePhaseGates",
417
+ "executionContractPrompt",
418
+ "buildFinalVerdictMatrix",
419
+ "phaseArtifactPayloads",
420
+ "crossToolTempPathRisk",
421
+ "cross-tool-posix-temp-path",
422
+ ],
423
+ },
424
+ {
425
+ file: "lib/completion-auditor.mjs",
426
+ minBytes: 2_500,
427
+ startsWith: "function text",
428
+ required: ["auditCompletion", "fresh-behavioral-receipt-missing", "missing-report-section", "benignFailureSection", "outOfScopeGapOnly", "verification-reports-out-of-scope-gap"],
429
+ },
430
+ {
431
+ file: "lib/document-ingestion.mjs",
432
+ minBytes: 3_000,
433
+ startsWith: "import ",
434
+ required: ["ingestDocument", "documentIngestionSupport", "UES_MARKITDOWN_UNAVAILABLE"],
435
+ },
436
+ {
437
+ file: "lib/reversible-context.mjs",
438
+ minBytes: 2_500,
439
+ startsWith: "import ",
440
+ required: ["compactContext", "expandContext", "searchContext"],
441
+ },
442
+ {
443
+ file: "lib/mcp-tool-policy.mjs",
444
+ minBytes: 1_000,
445
+ startsWith: "function firstObject",
446
+ required: ["normalizeMcpAnnotations", "mcpExecutionPolicy", 'trust: "hint-only"'],
447
+ },
448
+ {
449
+ file: "lib/mcp-health.mjs",
450
+ minBytes: 4_000,
451
+ startsWith: "const TRANSIENT_ERROR",
452
+ required: ["McpHealthTracker", "mcpReconnectAdvice", "transient-idempotent-failure", "cooldownUntil"],
453
+ },
454
+ {
455
+ file: "test/v14.3-intelligence.test.mjs",
456
+ minBytes: 5_000,
457
+ startsWith: 'import test from "node:test"',
458
+ required: ["hash anchored edits fail closed", "completion auditor rejects narrative PASS", "verified memory snapshots ignore retrieval/touch noise", "MCP health only recommends reconnect"],
459
+ },
460
+
461
+ {
462
+ file: "lib/task-policy.mjs",
463
+ minBytes: 8_000,
464
+ startsWith: "const SENSITIVE_DOMAIN",
465
+ required: [
466
+ "CONCRETE_DIAGNOSIS",
467
+ "readOnlyTask",
468
+ "READ_ONLY_MODE",
469
+ "MUTATION_INTENT",
470
+ "requireBehavioralReceipt",
471
+ "diagnosisEvidence",
472
+ "word such as \"fix\" must not force",
473
+ "shouldRunDedicatedDiagnosis",
474
+ "deterministicReadOnlyGitCommands",
475
+ "automaticUesAdmission",
476
+ "automaticUesContinuation",
477
+ "AUTO_ACTIVE_CONTINUATION",
478
+ "AUTO_INFORMATIONAL_ONLY",
479
+ 'route: "native"',
480
+ 'policy.risk === "high" ? "guarded" : "auto"',
481
+ "high-risk-engineering-task",
482
+ ],
483
+ },
484
+ {
485
+ file: "global-config/agents/executor.md",
486
+ minBytes: 2_000,
487
+ startsWith: "---",
488
+ required: [
489
+ "Quality-preserving bounded-exploration policy",
490
+ "do not inventory the repository",
491
+ "spend the remaining effort on fresh verification",
492
+ ],
493
+ },
494
+ {
495
+ file: "global-config/agents/plan-checker.md",
496
+ minBytes: 1_500,
497
+ startsWith: "---",
498
+ required: [
499
+ "Efficiency contract",
500
+ "do not independently rescan the whole repository",
501
+ "return PASS/REVISE immediately",
502
+ ],
503
+ },
504
+ {
505
+ file: "lib/task-graph.mjs",
506
+ minBytes: 7_000,
507
+ startsWith: "import ",
508
+ required: [
509
+ "normalizePlanForValidation",
510
+ "acceptanceCriteria",
511
+ "verificationChecks",
512
+ "riskNotes",
513
+ "Unknown prose in a risk field is never downgraded",
514
+ ],
515
+ },
516
+ {
517
+ file: "global-config/agents/architect.md",
518
+ minBytes: 2_000,
519
+ startsWith: "---",
520
+ required: [
521
+ "UES_PLAN_JSON:",
522
+ "\"acceptance\"",
523
+ "\"verification\"",
524
+ "\"riskNotes\"",
525
+ "low`, `medium`, `high`, `critical",
526
+ "Efficiency contract for DEEP/long-horizon work",
527
+ "Stop repository exploration as soon as every planned task",
528
+ "machine-first planning mode",
529
+ "before the prose sections",
530
+ ],
531
+ },
532
+ {
533
+ file: "lib/turbo-fast-path.mjs",
534
+ minBytes: 1_000,
535
+ startsWith: "const FAST_ROLES",
536
+ required: [
537
+ "turboFastPathDecision",
538
+ "turboFastTimeoutBudget",
539
+ "single-model-deterministic-first",
540
+ "failClosed",
541
+ "verifierOnDemand",
542
+ ],
543
+ },
544
+ {
545
+ file: "lib/service-manager.mjs",
546
+ minBytes: 8_000,
547
+ startsWith: "import ",
548
+ required: [
549
+ "startService",
550
+ "waitForService",
551
+ "serviceStatus",
552
+ "serviceLogs",
553
+ "stopService",
554
+ "restartService",
555
+ "stopAllServices",
556
+ "looksLikeLongRunningServiceCommand",
557
+ "terminateProcessTree",
558
+ 'kind: "service-log"',
559
+ ],
560
+ },
561
+ {
562
+ file: "test/runtime-artifacts.test.mjs",
563
+ minBytes: 1_000,
564
+ startsWith: 'import test from "node:test"',
565
+ required: [
566
+ "V15.9 runtime artifact filter excludes UES state but preserves real source files",
567
+ "V15.9 runtime filter normalizes Windows separators",
568
+ "apps/mobile/package.json",
569
+ ".ues-traces/ues-run.jsonl",
570
+ ],
571
+ },
572
+ {
573
+ file: "test/activity-deadline.test.mjs",
574
+ minBytes: 1_500,
575
+ startsWith: 'import test from "node:test"',
576
+ required: [
577
+ "V15.10 active work extends the initial deadline but never beyond the absolute cap",
578
+ "V15.10 stale activity does not extend a hard deadline",
579
+ "absolute-hard-timeout",
580
+ ],
581
+ },
582
+ {
583
+ file: "test/plan-salvage.test.mjs",
584
+ minBytes: 2_400,
585
+ startsWith: 'import test from "node:test"',
586
+ required: [
587
+ "V15.10 plan salvage accepts a marked valid graph",
588
+ "V15.10 plan salvage recovers a complete graph before a transport timeout note",
589
+ "V15.10 plan salvage can recover a fenced valid graph when the marker is missing",
590
+ "V15.10 plan salvage never upgrades an invalid graph into a valid one",
591
+ ],
592
+ },
593
+ {
594
+ file: "test/adaptive-context-budget-v15.test.mjs",
595
+ minBytes: 1_500,
596
+ startsWith: 'import test from "node:test"',
597
+ required: [
598
+ "V15.10 high-risk planner context is role-bounded while execution keeps full evidence",
599
+ "V15.10 planner recovery may expand toward the ceiling without changing the executor ceiling",
600
+ "high-risk-planner-role-bounded",
601
+ "high-risk-execution-preserves-base-budget",
602
+ ],
603
+ },
604
+ {
605
+ file: "test/planning-speed-policy.test.mjs",
606
+ minBytes: 1_500,
607
+ startsWith: 'import test from "node:test"',
608
+ required: [
609
+ "V15.10 architect planning has an activity-aware ceiling and tighter recovery",
610
+ "V15.10 architect soft-steers before idle watchdog or runaway exploration",
611
+ "V15.10 plan-checker uses bounded activity extension and shorter recovery",
612
+ ],
613
+ },
614
+ {
615
+ file: "test/worktree-sandbox.test.mjs",
616
+ minBytes: 8_000,
617
+ startsWith: 'import test from "node:test"',
618
+ required: [
619
+ "V15.6 orphan sandbox cleanup removes dead-owner worktrees but preserves live ownership",
620
+ "V15.7 cleanup reclaims ended same-process sandboxes but protects active ones",
621
+ "V15.7 cleanup removes orphan metadata sidecars for missing sandboxes",
622
+ "V15.8 cleanup removes detached physical sandbox folders with valid metadata",
623
+ "V15.9 sandbox integration ignores UES trace artifacts but keeps real source changes",
624
+ "pruneOrphanTaskSandboxes",
625
+ "ownerPid",
626
+ ],
627
+ },
628
+ {
629
+ file: "test/leaf-runtime-optimizer.test.mjs",
630
+ minBytes: 2_000,
631
+ startsWith: 'import test from "node:test"',
632
+ required: [
633
+ "V15.5 low-risk single-file leaf becomes FAST inside a DEEP root",
634
+ "V15.5 high-risk database leaf never downshifts from DEEP",
635
+ "V15.5 failure delta keeps error evidence and drops unrelated chatter",
636
+ "leafTaskPolicy",
637
+ "failureDelta",
638
+ ],
639
+ },
640
+ {
641
+ file: "test/v15-runtime.test.mjs",
642
+ minBytes: 3_000,
643
+ startsWith: 'import assert from "node:assert/strict"',
644
+ required: [
645
+ "V15 managed service starts, proves readiness, captures evidence and stops",
646
+ "V15 deterministic controller admission and service tool are wired into Pi",
647
+ "V15.4 ACP host never reuses an ACP entrypoint as the Pi child",
648
+ "V15.2 quick discount benchmark remains FAST and Turbo-eligible",
649
+ "normalizePlanForValidation",
650
+ "STRICT JSON CONTRACT",
651
+ "deepExplorationContract",
652
+ "UES DEEP bounded exploration",
653
+ "UES_EVAL_DIRECT_TELEMETRY",
654
+ "ues_controller_direct",
655
+ "controller progress",
656
+ "controllerValid=",
657
+ ],
658
+ },
659
+
660
+ {
661
+ file: "scripts/eval-pi.mjs",
662
+ minBytes: 15_000,
663
+ startsWith: "import ",
664
+ required: [
665
+ "ues_controller_progress",
666
+ "ues_controller_direct",
667
+ "agentRun.stdout, agentRun.stderr",
668
+ "onStderr: (chunk) => consumeControllerProgress",
669
+ "controllerValid=",
670
+ "UES_EVAL_DIRECT_TELEMETRY",
671
+ ],
672
+ },
144
673
  {
145
674
  file: "lib/affected-tests.mjs",
146
675
  minBytes: 7_500,