4.2 KiB
4.2 KiB
Task: Repair project-doc gate and assess macOS runtime diagnosis
Identity
- Task ID: 20260811-repair-gate-assess-runtime-3c7e
- Mode: Integration
- Branch: main
- Worktree: D:\Datas\OthersProjects\makelore
- Base commit:
2e6bc0373e - Owner: codex
- Status: Ready for Integration
Scope
- Restore the documented concurrent-task invariants and reconstruct missing local task reservations so the project-memory gates can run normally.
- Perform a read-only assessment of the reported macOS OpenCode startup
ENOENT, including runtime path selection, pnpm topology, package metadata, existing tests, and packaged-runtime behavior. - Do not modify runtime source code or claim the failing Mac's dependency tree was independently inspected.
Intent And Constraints
- Separate confirmed repository facts from causal inference and unverified evidence supplied by the remote Mac diagnosis.
- Preserve the distinction between development resolution under
node_modulesand packaged resolution under ElectronresourcesPath. - Use the exact pnpm version pinned by the repository for local verification.
- Keep the repair limited to project-memory gate invariants and local reservation metadata; no unrelated canonical documentation or product behavior changes.
Outcome
- Restored three missing invariants in the Concurrent Task Gate: reservation lifetime, serialized registry transactions, and feature-write-boundary precedence.
- Reconstructed six missing local task reservations for valid existing worktree-owner records;
task_context doctorsubsequently reported no registry inconsistency. - Confirmed that development resolution checks only a root-hoisted native package and otherwise returns the unchecked
opencode-ai/bin/opencodefallback. On non-Windows, that fallback does not matchopencode-ai@1.18.9's declared/generatedbin/opencode.exe, while Darwin native packages containbin/opencode. - Confirmed that the reported
ENOENTis raised when Electron Main spawns the nonexistent resolved path; it is unrelated to model or port configuration. - Confirmed the permanent fix direction: resolve the platform package relative to
opencode-ai/package.jsonwithcreateRequire, join its platform-specific binary, validate it, and report a clear error when unavailable. The existing bundle script already uses this package-relative pattern. - Classified pnpm 11 as a strong trigger hypothesis, not a proven sole cause: the repository pins pnpm 10.33.4 and relies on a hoisting setting that pnpm 11 no longer reads from
.npmrc, but the failing Mac install tree was not captured independently. - Identified a separate release risk: one host-architecture OpenCode binary is staged before Electron Builder emits both x64 and arm64 macOS artifacts.
- Made no runtime source-code changes.
Verification
check_project_docs.py: PASS after restoring the documented gate invariants.task_context.py doctor: PASS after reconstructing the six missing reservations.corepack pnpm exec vitest run tests/unit/opencode-paths.test.ts: PASS (7 tests); the suite currently covers only a root-hoisted Darwin development layout.- Deterministic isolated-layout probe: reproduced the nonexistent fallback three consecutive times; temporary probe files were removed afterward.
- Package-relative
createRequireprobe: resolved an installed platform manifest through pnpm's physical virtual-store dependency graph. - Independent final Sol high-reasoning read-only review: PASS, with the pnpm 11 causal claim explicitly retained as an inference rather than a confirmed fact.
Follow-ups
- Implement package-relative development runtime resolution and add isolated-layout, missing-package, architecture-preference, and asynchronous spawn-
ENOENTregression tests. - Reinstall the failing Mac with the pinned pnpm 10.33.4 and capture
.modules.yaml, nested optional-dependency links, and the resolved executable path to validate the trigger hypothesis. - Stage and verify OpenCode independently for each macOS target architecture before the next dual-architecture release.
Promotion Candidates
- None. The project-memory gate repair is already applied to its canonical contract; product/runtime conclusions remain task-local until an implementation task changes behavior.