3.7 KiB
3.7 KiB
id, title, status, wave, depends_on, plan, requirements, acceptance_criteria, system_design
| id | title | status | wave | depends_on | plan | requirements | acceptance_criteria | system_design | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 01-correct-windows-missing-tree-detection | Correct Windows missing-tree detection | done | 1 | plan.md |
|
|
|
Task 01: Correct Windows Missing-Tree Detection
Summary
Treat native Windows not-found status values as an absent managed-runtime cache tree. Add focused native Windows coverage so the recovery path cannot return an HTTP 500 for this state.
In scope
- Add one helper that recognizes Win32 and converted NT status not-found errors.
- Use the helper for all three directory opens in the Windows cache remover.
- Remove the separate
_npxpath precheck. - Add the missing-child regression to the managed-runtime package.
- Run the regression in the Make target and Windows CI job.
Out of scope
- Changes to lifecycle recovery policy, retry construction, error payloads, logging, Unix behavior, or npm metadata storage.
- Changes that convert unrelated cache-repair errors into successful results.
Acceptance
- If the cache root and
_npxdirectory exist but the derived key does not, cache repair returns nil on Windows. - If
NtCreateFilereports another error, cache repair keeps the current fail-closed behavior and error context. - The repository Windows test target and CI job run the focused regression.
Verification
Run the new regression on Windows before the production change. Make sure that
it fails with Object Name not found.. After the correction, run:
# From apps/backend on Windows:
rtk go test -race -v ./internal/agent/managedruntime -run '^TestRemoveNpxExecutionTreeTreatsMissingWindowsChildAsAbsent$'
rtk make test-windows
# From apps/backend on any supported development host:
rtk go test ./internal/agent/managedruntime
Files likely touched
apps/backend/internal/agent/managedruntime/cache_windows.goapps/backend/internal/agent/managedruntime/cache_windows_test.goapps/backend/Makefile.github/workflows/backend-tests.ymldocs/plans/windows-managed-runtime-missing-cache-tree/plan.mddocs/plans/windows-managed-runtime-missing-cache-tree/task-01-correct-windows-missing-tree-detection.md
Dependencies
None.
Risks
NTStatus.Errno()uses the Windows status-to-DOS mapping. The helper must compare only the two existing not-found Win32 values.- Linux cannot run the native Windows regression.
Parallelism
sequential
Inputs
REQ-AGENTS-MANAGED-RUNTIME-RECOVERY-001andAC-AGENTS-MANAGED-RUNTIME-RECOVERY-001.3.REQ-AGENTS-MANAGED-RUNTIME-RECOVERY-002,AC-AGENTS-MANAGED-RUNTIME-RECOVERY-002.2, andAC-AGENTS-MANAGED-RUNTIME-RECOVERY-002.4.docs/specs/agents/system-design/managed-npm-runtime-recovery.md.docs/decisions/2026-08-24-agentctl-local-managed-runtime-cache-repair.md.- Existing Windows handle-open and cache-removal tests.
Results
- Added
isManagedRuntimeNotFound. The helper convertswindows.NTStatusvalues throughErrno()before it compares the Win32 not-found values. - Used the helper for the cache root,
_npxdirectory, and derived execution tree. - Removed the separate
_npxos.Lstatcheck. - Added the missing-child regression and included it in both native Windows test entry points.
- The managed-runtime package passed 36 tests on Linux. The Windows test binary
compiled for
windows/amd64. - The native Windows race test remains a CI check because this executor runs Linux.