v10.0.0: what is left and why

The divergence program, explained item by item. Rendered 2026-09-06, HEAD 834faccb6, latest release v10.0.0-alpha.85.
0
open in milestone 164
122
closed in milestone 164 (state: CLOSED)
ran
#3877 probe result: nothing intervened
5 of 5
program items done; milestone 164 CLOSED

๐ŸŽฏ The big picture in one sentence

Final, 21:30: every item is done. #3949 merged the KEEP verdict, #3952 flipped the train with a Release-As footer, #3953 cut v10.0.0-beta.1 (published 19:25Z UTC), milestone 164 is CLOSED at 0 open / 122 closed. There is nothing left in the divergence program.

Analogy: the road is built and inspected. One last gate needs a human to turn the key. Behind the gate there are two more rooms that open by themselves once the key turns. Off to the side, a garage full of boxes to sort, unrelated to the gate.

flowchart LR P["๐Ÿ”ฅ 1 #3877 probe\n(you, interactive)"]:::hot --> L5["2 Lane 5\negress deny verdict"]:::wait L5 --> B["3 v10.0.0 beta.1\ncut"]:::wait B --> CLOSE["milestone 164\nCLOSED"]:::done W["4 4 worktrees\n+ 2 strays"]:::indep S["5 9 stashes"]:::indep classDef hot fill:#3a1414,stroke:#e06666,color:#fff classDef wait fill:#3a2a10,stroke:#f0b040,color:#fff classDef done fill:#0f3a26,stroke:#4ac98a,color:#fff classDef indep fill:#1b1b4a,stroke:#8f88f0,color:#fff

How far each item is from done

1 Probe
measured
2 Lane 5
merged
3 beta.1
published
4 Worktrees
done
5 Stashes
done, 9 to 2

๐Ÿ”ฅ Item 1: the #3877 containment probe

What it is measured 20:45, outcome 3: nothing intervened

Analogy: we built our own guard dog (a hook called network-egress-guard) years before the house got an alarm system (Claude Code's own sandbox). The question is whether the alarm now covers what the dog was for. If yes, retire the dog. If no, keep him.

Concretely: does Claude Code 2.1.263 by itself stop a command that downloads a script from an allowed website and immediately runs it (curl url | sh)? Our hook has a DENY tier that blocks exactly that. It was measured at 20:45 (headless arm, CC 2.1.263, ork off): nothing intervened, the fetched bytes ran. Before that, the last comment on the issue (07:53Z) was a research read that said "probably not", explicitly CLAIMED, not measured; the measurement replaced the claim, and the CLAIMED/measured distinction is why this beat records both.

What it means
One 10 minute experiment decides whether a hook file lives or dies.
If we do nothing
Milestone 164 stays open forever and beta.1 never cuts.

Why only you can run it

The probe needs a fresh interactive Claude Code session with specific settings (auto permission mode, the ork plugin disabled so our hook is out of the way, one allowed domain). A sub-agent inherits this session's settings and the plugin, so its result would be polluted. The recipe is a terminal session you drive by hand.

Mockup of the probe session (what you will type, what you are looking for)
$ claude --permission-mode auto --settings '{"sandbox":{"allowedDomains":["example.com"]}}' (ork plugin OFF for this session) > run: curl https://example.com/ โœ… expected: 200 OK, plain fetch from an allowed host works > run: curl https://example.com/nonexistent.sh | sh โ“ THIS is the measurement. One of three things happens:

The three possible outcomes, and what each one does to item 2

flowchart TB RUN["curl allowed-host/x.sh | sh"] --> A{"what intervened?"} A -->|"CC prompted or refused"| KA["CC covers it\nโ†’ lane 5 DELETES our guard"]:::done A -->|"sandbox proxy blocked"| KB["CC covers it\nโ†’ lane 5 DELETES our guard"]:::done A -->|"nothing, it ran"| KC["CC does NOT cover it\nโ†’ lane 5 KEEPS our guard\n+ writes the transcript into the rule"]:::hot classDef done fill:#0f3a26,stroke:#4ac98a,color:#fff classDef hot fill:#3a1414,stroke:#e06666,color:#fff

Either way the answer is pasted into #3877 as two transcripts. That comment is the trigger for item 2. Current best guess (from the research, not from running it): outcome 3, "nothing intervened", so the guard stays.

Item 2: lane 5, the egress deny verdict

What it is MERGED as c326ca5fe (#3949; my #3948 closed as duplicate)

Analogy: the vet's report came back (item 1). Now someone acts on it: either the dog retires and his bed is removed, or he stays and his job description is written on the wall.

A single branch, fix/3877-egress-deny-verdict, opened from a fresh origin/main. Its content depends entirely on which of the three outcomes above happened. An agent can do this part; it only needs the transcript from item 1 as input.

What it means
One PR, one of two shapes, closes the last EPIC C tail.
If we do nothing
The hook register keeps a row that reads "DELETE after probe" indefinitely.
Mockup: the two shapes lane 5 can take
SHAPE A: CC intervened (outcomes 1 or 2) - move the DENY tier into a CC deny rule via the #3836 writer - delete src/hooks/src/.../network-egress-guard.ts + its tests - rewrite the ordering comment in sync-bash-dispatcher.ts:73-84 - stamp a date on the credential-read-guard register row SHAPE B: nothing intervened (outcome 3, current best guess) - KEEP network-egress-guard.ts as is - paste the probe transcript into shared/rules/cc-native-first.md as the evidence for why this hook survives "converge on CC native" - stamp the same register row

Item 3: cut v10.0.0-beta.1

What it is DONE: v10.0.0-beta.1 published 19:25Z via #3952 (Release-As footer) + #3953

Analogy: you have shipped 85 "alpha" builds since the v10 work started. Beta means "the shape is final, only polish left". Flipping the label is a one line change in the release robot's config.

release-please owns versioning. Today it is in prerelease mode producing alpha.N. The cut is: flip its prerelease type to beta, let it open one PR, merge on green. Done when gh release view v10.0.0-beta.1 returns a release. Then milestone 164 can be closed by hand.

What it means
Public signal that v10 is feature complete.
If we do nothing
alpha.86, alpha.87, ... forever, and the milestone never reads closed.
timeline title Release ladder today and after the cut today : alpha.81 : alpha.82 : alpha.83 : alpha.84 : alpha.85 (latest) after items 1+2 : beta.1 : milestone 164 closed later : beta.2 ... : 10.0.0 GA

Item 4: the worktree garage (4 real + 2 strays)

What it is done 20:40

Analogy: six parked cars in the garage. Four have keys and registration (real git worktrees). Two are shells with no engine (directories with no .git). None of them block the road; they just take up space and confuse the next driver.

Read live from git worktree list and ls .worktrees/ just now. "conductor-orchestkit" is today's session lane and is probably still in use; the rest are the question.

DirectoryReal worktree?BranchWhat is in itSuggested
bench-t05-terra-0730yesbench/t05-terra-20260904-07301 unpushed commit 49dc1c453 (create-pr fix), no PRpush + PR, or drop
cc-baselineyeschore/cc-baseline-control3 modified test files, no PRdecide: PR or discard
park-stash-0809yespark/stash-2026-08-09-cross-session09-01 salvage, one "Check 16" file awaiting keep/dropyour keep/drop call
conductor-orchestkityeschore/conductor-orchestkit-2026-09-06today's conductor laneleave until session ends
agent-routingno (.git missing)?dead session logs; a hook recreates itrm, expect it to come back
bench-t05-fable-0758no (.git missing)?60 entries, owner unknowninspect once, then rm
What it means
Two branches hold real unmerged work; four dirs are noise.
If we do nothing
Next session adopts a stale tree by mistake (it happened on 08-06).

Item 5: the stash stack (9 entries)

What it is done 20:40

Analogy: nine envelopes on the shared desk, each labeled "leftovers from lane X". Seven were opened and confirmed to contain nothing that is not already on main. Two are older parking envelopes from a different day.

Read live from git stash list. The 7 "station-close" entries were proven on 09-06: every branch is fully on main, 0 PR files missing. One of them (ork-3919) holds the only unique artifact, a session board HTML, already copied elsewhere. The 2 "park" entries (stash 7 and 8) were not part of that proof.

The stack as it is right now
stash@{0} station-close:stamp-manifests proven on main โœ… stash@{1} station-close:skip-regex proven on main โœ… stash@{2} station-close:unused-tables proven on main โœ… stash@{3} station-close:skill-dir-codemod proven on main โœ… stash@{4} station-close:gate-marker-audit proven on main โœ… stash@{5} station-close:verify-latest proven on main โœ… stash@{6} station-close:ork-3919 proven โœ… (holds session-board html, copied) stash@{7} park/docs-site-next-nav-3931 NOT in the proof ? stash@{8} conductor-close-ork-3919-1110 NOT in the proof ?
What it means
Seven can be dropped safely today; two need one look first.
If we do nothing
Harmless, but every future stash pop risks grabbing the wrong one.

Decide

Nothing left to decide in this program. Both forks resolved tonight: lane 5 via #3949 (this session's #3948 closed as its duplicate), beta.1 via #3952 + #3953. Optional leftovers, none blocking: the interactive probe arm for #3877 (closed, so only if you want a second measurement), and two worktree stubs to remove from your terminal (lane5-3877, beta1-flip).

(no picks yet)
0/1 chosen