Skip to content

Close out the 2026-08 architecture review #299

Open
27 of 27 issues completed
Open

Description

@blooop

Destination

Every finding from the 2026-08-21 architecture review is closed: the two critical defects (capture-timeout hang, --force flag-verb bypass) fixed test-first, each hand-maintained duplicate of one fact single-sourced or machine-guarded, and the public-API freeze re-scoped so its diff signals again — each landed as a reviewed PR.

Notes

Steering (2026-08-21): decision tickets on this map are settled with the human in the loop — grill, do not agent-decide. Research and prototype tickets likewise wait for the executing run; nothing was auto-fired at charting. Execution is handed to a separate agent.

Source: the 2026-08-21 architecture review of this repo at d890ad1 (v0.3.3); findings carry file:line evidence and are restated in each ticket. Sibling map Drift-proofing rapid development explores the standing practices that stop these classes recurring; this map fixes today's instances. Build tickets run wf-tdd; type-shaping tickets consult constructive-modeling. Ordering note: the builds that churn many pub paths (lifecycle split, WorkspaceId threading, the api::Launch pair) are blocked on the snapshot re-scope build Split the API snapshots so the snapshot files move once, not twice. Update (2026-08-28): that blocker is cleared, #338 is merged, so #314, #316, #339, #340, #346 and #352 are unblocked; the 2026-08-22 handoff's picture of blocked PRs no longer holds. Of these, #340 is itself the gate for #397 and #411 on map #406.

Decisions so far

Not yet specified

Out of scope

Activity

  1. 1 remaining item

  2. blooop commented on Aug 22, 2026

    @blooop
    OwnerAuthor

    handoff

    Run paused 2026-08-22 — out of credits, not a blocker on the work. Four in-flight subagents were stopped deliberately; their worktrees and branches survive, so nothing is lost.

    Where we are. All six decision tickets are closed. Nine PRs are open; none can merge without a human, which is the binding constraint on the rest of this map.

    PR ticket state
    #342 #341 assert_cmd approved, awaiting merge
    #343 #302 timeout hang approved, awaiting merge
    #344 #303 --force bypass approved, awaiting merge
    #345 #315 escaper/quote approved, awaiting merge
    #353 #310 devpod corpus approved, awaiting merge
    #348 #304 SIGTERM drain approved; one ~4-line item was mid-fix when stopped
    #347 #338 API snapshots 5 findings resolved; 3 new items were mid-fix when stopped
    #351 #311 completions guard 3 findings + 3 mutation holes were mid-fix when stopped
    #356 #307 README guard review was in progress; both axes had been dispatched

    First moves on resume, in order.

    1. Merge what is approved (Drop the unused assert_cmd dev-dependency #342, Fix the capture and session timeout hang #343, Close the --force flag-verb bypass #344, Single-copy the JSON escaper and the shell quote #345, Fix --ignore-not-found and drive one conformance corpus through both devpod fakes #353). Merging Split the API snapshots: runner crate, api-vs-rest #347 once its items land is what unblocks Split flows/lifecycle.rs along its banners #314, Thread WorkspaceId through the &str signatures #316, Type ColdRefused as a sum over the startup reasons #339, Move ColdPath and ToolProvisioning into core; complete api's re-exports #340, Collapse dl's duplicate indent=2 JSON formatter onto core's #346 and The api promise file misses Launch::new and Launch::run #352 — those edges clear on merge, not approval, and they are the largest remaining chunk of this map.
    2. Resume the three interrupted fix-ups. Each has a message on its ticket or PR naming exactly what was outstanding: SIGTERM and SIGHUP run the SIGINT drain #348's DRAINED/INHERITED_IGNORE agreement test; Split the API snapshots: runner crate, api-vs-rest #347's green-on-nothing process substitution, same-device staging, and the README claim about failed runs; Guard dl.bash's tables against the grammar, and complete the five missing flags #351's two vacuous extractors, the false dl.bash comment, and the mis-blaming DL_VALUE_OPTIONS reuse.
    3. Finish Delete the never-implemented worktree-backend docs, and guard README against --help #356's review — it was dispatched, nothing posted.
    4. Then the two never-started tickets, CI backstop: cargo test --workspace #305 and Sweep dangling citations to retired Python tests #308, both held deliberately because they collide with in-flight work (CI backstop: cargo test --workspace #305 edits the CI job Split the API snapshots: runner crate, api-vs-rest #347 is reworking; Sweep dangling citations to retired Python tests #308 sweeps ~29 comments across files nearly every open branch touches). Start them once the branches above are merged.

    Fog that graduated during the run, all parented here and all discovered by reviewers reproducing rather than trusting: #346, #349, #352, #354, #355, #356n(=#357). Each is blocked on the PR whose work it depends on.

    One standing note for whoever resumes. Every review on this map has been worth its cost — three of the first four returned reproduced defects, and reviewers twice overturned a builder's claim and once overturned a decision the human had made (#301's process-group half, reversed on measurement). The recurring defect class is not broken code but claims the code does not honour: docstrings, README lines, CI guards and one decision record. Three PRs were sent back for it. Keep holding that line — it is what this map is for.

  3. blooop commented on Aug 22, 2026

    @blooop
    OwnerAuthor

    breadcrumb: the base moved under this map, and it invalidates work in substance rather than only in text.

    main is now 68 commits ahead of this map's base (a1c6fe8, the review commit). Three of those commits land inside work this map has open:

    • b6b637f — "--rm is docker's --rm; retire --stop, --autorm and the suffix override." --stop and --autorm are now recognised-and-refused at exit 1, and --rm means what --autorm meant. This invalidates part of PR #351 (Guard dl.bash's tables against cli.rs #311): its first slice adds --stop and --autorm to the completion table, and its third slice asserts that a word the CLI recognises only to refuse must never be completable. Against current main the PR contradicts its own principle.
    • 5e39c45 and 8976829 both change public-api.txt, the file PR #347 (Split the API snapshots: runner crate, api-vs-rest #338) splits. Its three checked-in snapshots are generated from a stale source, and the union-equals-original property has to be re-established against the new original — the 37 + 2284 = 2321 and "42 of 79" figures will have moved.
    • f5e0fdd touches the prune/force refusal wording, adjacent to PR #344 (Close the --force flag-verb bypass #303), which is now CONFLICTING in rust/dl/src/cli.rs and grammar.rs.

    Mergeability right now: #344 and #347 conflicting; #342, #343, #345, #348, #351, #353, #356 mergeable.

    A gate hazard worth writing down, found by #304's builder rather than by me. GitHub computes no merge commit for a conflicting PR, so the pull_request trigger produces no run at all — not pending, not failed. The checks list looks sparse rather than red, and the last green reads as though it covered the new head. Any approval on this map recorded while a PR was conflicting rests on CI that never ran for that commit. From here, mergeability is checked alongside the checks, and a run is confirmed to exist for the head SHA before a gate is called passed.

    No decision is needed for the rebasing itself — it is forced work. What needs judging per ticket is whether the move changed the premise: #311 is the clear case, and its ticket needs re-reading against the new grammar before its PR is fixed.

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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions