Skip to content

Lane D: agent isolation delivery and handoff #28

Closed

Description

@mchwang

Owner: Codex Lane D implementation task. Baseline: 5eec4b5 (remote main). Build step 5 foundation; T1, T2, isolation portion of T9. Ordered PRs: D1 invocation contract and isolated clone; D2 restricted pinned container and startup probes; D3 vendor egress and phase enforcement; D4 adapters and bounded settlement; D5 combined real-Docker gate. No runner/store/UI rewiring.

D1 branch: codex/agent-isolation-d1. Exact files: agents/contract.ts, git/clone.ts, test/agent-contract.test.ts, test/agent-clone.test.ts. No overlap with PR #23. Done when: npx vitest run test/agent-contract.test.ts test/agent-clone.test.ts and npm run typecheck pass, then full unit validation on the pushed head.

Interface: immutable clone identity and trusted committed head; invocation includes phase, exact approved argv, finite deadline, attempt ID and captured context/version. Planning/questions cannot grant commands. Cancellation requests and process termination are distinct; terminal results preserve original reason and exit status. F owns current-context admission/publication and persisted compare-and-swap. D1 creates a staging clone only; D2 must relocate metadata onto a separate runner-owned filesystem and allocate bounded work storage before invocation. D1 never launches agents.

D1 dependencies: none. D2-D5 follow validated predecessor tasks on documented prerequisite branches if not yet merged. F and G production invocation remain blocked until D5 merges. Detailed evidence and review rounds will be recorded in each PR.

Activity

  1. mchwang commented on Sep 24, 2026

    @mchwang
    ContributorAuthor

    D1 implemented in PR #31 at validated head 489066e. Targeted tests: 24 passed; full unit suite: 214 passed; typecheck passed. Both push and PR CI are green, including browser tests. Copilot review is pending; no merge authorization has been given.

    Next-step preflight: Docker Desktop server 27.4.0 is running (overlay2/extfs). Local CLIs report codex-cli 0.153.4 and Claude Code 2.1.281; these are observations, not selected image pins. Codex auth file is present. CLAUDE_CODE_OAUTH_TOKEN and ANTHROPIC_API_KEY are absent; no credential contents were read or published. The planned authenticated Claude container startup probe requires a locally configured setup-token. User input requested for that credential dependency. D2-D5 are not marked complete; no mock probe or skipped authentication check will count as acceptance.

  2. mchwang commented on Sep 24, 2026

    @mchwang
    ContributorAuthor

    D1 review round 1 complete: fixed both inline findings and reproduced/fixed summary validation and deadline concerns. All four have failing-before/passing-after regressions. Current validated head: d110d81. Current results: 28 targeted tests, 218 unit tests, typecheck, and both CI runs pass; review round 2 is pending. Both inline threads are resolved. PR #31 records the review-lesson audit. No merge performed. Authenticated Claude container-probe credential remains unavailable, so D2-D5 remain pending rather than being represented as validated.

  3. mchwang commented on Sep 24, 2026

    @mchwang
    ContributorAuthor

    D1 review loop converged in two Copilot rounds. Round 1 fixes have failing-before/passing-after regressions; round 2 returned Findings: None and confirmed resolved inline findings. Its unsupported-Windows overview concern was reproduced with win32.relative and deferred to #36, consistent with the plan scope. Current head d110d81: 28 targeted / 218 unit / 39 browser tests pass, typecheck passes, both CI runs green, mergeable, zero unresolved threads. Review-lesson audit is in PR #31. No merge performed.

    Stopped at the authenticated container-probe credential dependency: no Claude setup-token is available to this task. D2-D5 remain unimplemented and no claims of container/network/adapter isolation are made. Configure CLAUDE_CODE_OAUTH_TOKEN locally (do not paste a credential into an issue/chat), then resume D2 on a documented prerequisite branch from #31 or merged main. Original checkout is untouched; D1 worktree is /Users/maxhwang/github/codeboost-lane-d1 on codex/agent-isolation-d1.

  4. mchwang commented on Sep 24, 2026

    @mchwang
    ContributorAuthor

    D2 owner: Codex Lane D implementation task. Branch: codex/agent-isolation-d2, stacked on D1 validated head d110d81 because D1 is not merge-authorized. Baseline remote main is now b181d15; D2 will remain based on D1 and will revalidate after prerequisite integration. Exact proposed owned files before edit: agents/container/Dockerfile, agents/container/image.ts, agents/container/profile.ts, agents/container/probe.sh, agents/container/run.ts, test/agent-container.test.ts, test/fixtures/agent-container/**, .github/workflows/agent-isolation.yml. No runner/store/UI/common-CI/package-manifest changes. Interface: consumes D1 captured InvocationInput and prepared task-clone staging; produces a lockdown-validated container profile. D2 does not implement vendor egress (D3), adapters/cancellation/bounded output (D4), or combined gate (D5). Done when: real-Docker tests prove pinned image/startup lockdown, separated read-only Git metadata, phase-correct /work access, non-root/no capabilities/read-only root, ephemeral bounded scratch/HOME, absent host paths, Git status, and authenticated Codex/Claude startup probes. If Docker Desktop cannot enforce the planned persistent byte+inode task filesystem, startup must fail closed and the limitation will be recorded rather than mocked.

  5. mchwang commented on Sep 24, 2026

    @mchwang
    ContributorAuthor

    D2 opened as stacked PR #40 on D1 at validated head 17d71d0. Exact-head local evidence: authenticated real-Docker 9/9 (both providers read the mounted hidden schema value), typecheck passed, full unit suite 225/225 across 14 files. PR is mergeable with zero unresolved threads; four CI jobs are running. Full current-diff self-review found no remaining issues, and Copilot round 1 was requested. D3-D5 remain explicitly deferred in the PR; normal D2 profiles default to no network.

  6. mchwang commented on Sep 24, 2026

    @mchwang
    ContributorAuthor

    D2 is review-converged in PR #40 at a4bd301. Exact-head validation: authenticated Docker 15/15, full suite 231/231, typecheck and all four CI checks pass; nine review rounds ended with Findings: None and no unresolved threads. No merge is authorized. Starting D3 as a separate stacked PR.

  7. mchwang commented on Sep 24, 2026

    @mchwang
    ContributorAuthor

    D3 is implemented in PR #44, stacked on D2 / #40. Exact pushed head 353efb0 passed typecheck, the full suite (245/245), and authenticated Codex/Claude container probes (20/20) through vendor-only egress. CI and the required review loop are now in progress; no merge authorization has been given.

  8. mchwang commented on Sep 24, 2026

    @mchwang
    ContributorAuthor

    D3 is implemented in #44 and review-converged on validated head 981e831637c1d19c3b4c759e18cc5ec06e8a5f33.

    • CI: all three checks green
    • Local exact-head validation: typecheck; 255/255 repository tests; 23/23 authenticated container tests
    • Automated review: 5 rounds; round 5 returned no findings
    • State: open and unmerged; stacked on D2 / D2: Add pinned restricted agent containers #40

    Proceeding to D4 as a separate stacked PR.

  9. mchwang commented on Sep 28, 2026

    @mchwang
    ContributorAuthor

    New lane D follow-up: #75. E4 (#45) recorded real planning output through the D4 adapters, and none of it passes E2 validation. The planning commands do not pass the answer schema (--json-schema / --output-schema), and with features.shell_tool=false Codex has no way to read files. #75 blocks E4 and asks for a decision on how Codex reads code in read-only phases.

    🤖 Generated with Claude Code

  10. mchwang commented on Oct 20, 2026

    @mchwang
    ContributorAuthor

    Lane D is done. D1–D5 merged (#31, #40, #44, #47, #50). Follow-ups merged since then: #66 (#85, #90), #76, #81/#99 (#100), #93 (#106), #95, #97, and the closed #51 runner-contract items (#109). Recorded in docs/architecture.md, lane D row.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions