docs: lock verdict hard-enum and global --web decisions into the workbench plan
commit
fd55131docs: lock verdict hard-enum and global --web decisions into the workbench plan
Reviews get a hard enum verdict (issue/comment state stays open); --web becomes a global git ents option: standalone opens the Desk, read ops open their page, mutations run as normal then open the result, and a --web-spawned serve exits on idle.
Assisted-by: Claude:claude-fable-5
Reviews
No reviews of this commit yet — record a verdict below.
Start a review
docs/web-workbench-plan.adoc
@@ -24,11 +24,6 @@
* *Design settlement* — pick/refine the workbench shell in Claude
Design; Phase C starts after.
-* *Verdict vocabulary* — `model.review` documents verdict/state as open
- vocabularies ("conventions, not enums"). Options: (a) hard enum in
- the model, (b) configured vocabulary under `refs/meta/config`
- rendered as a strict `select` while the gate stays content-agnostic.
- Middle path (b) recommended.
* *Merge* — `web-ui-polish` (six commits, gates green) into the phase
branch; the agent worktree and the two dev servers (ports 4880/4881)
are cleaned up then.
@@ -59,11 +54,13 @@
lens comment list paths still skip unreadables silently; forge
`NotFound` on web detail pages still maps to HTTP 500.
-== Phase B: verdict vocabulary
+== Phase B: verdict enum
-After the decision gate: implement (a) or (b); update the review form
-from datalist to strict select fed by the vocabulary; spec + gate tests
-if (b) adds a config entity.
+Decided 2026-07-13: reviews get a *hard enum* verdict in the model
+(unlike issue/comment `state`, which stays an open vocabulary). Replace
+the review form's datalist with a strict `select` over the variants;
+update `model.review` docs/spec accordingly; migrate any existing
+review data forward manually (no legacy read path, per repo policy).
== Phase C: workbench shell (after design settlement)
@@ -86,10 +83,21 @@
== Phase D: tool-not-app verbs
-* `git ents desk` / `review <oid> --web` / `ticket <id> --web`:
- spawn-or-reuse serve, open the browser at that exact object
- (`gh pr view --web` shape).
-* Mutating CLI commands print the localhost URL of what they created.
+Decided 2026-07-13: `--web` is a *global* `git ents` option, not a
+per-subcommand verb.
+
+* `git ents --web` standalone opens the homepage — the Desk.
+* Any read operation with `--web` (`commits`, `issue show 42`,
+ `members list`, ...) opens the corresponding page instead of printing.
+* Any mutating operation with `--web` performs the mutation exactly as
+ the CLI does (same signing, same gate), then opens the resulting
+ entity's page — `--web` never moves a mutation into the browser.
+* Serve lifecycle: reuse a running instance if one answers for this
+ repo on the expected port; otherwise spawn detached. A
+ `--web`-spawned serve exits after an idle timeout (a foreground
+ `git ents serve` never does), keeping the view-command promise.
+* Mutating CLI commands print the localhost URL of what they created
+ even without `--web`.
* `--app` flag: open in the browser's chromeless app-mode window.
* Deep links both ways: web line numbers link `zed://` (or `zed
path:line`); `ents-lens` gains an "open in browser" code action per