|
| 1 | +# Steward: An Owner Sentence Becomes A Confirmed Team |
| 2 | + |
| 3 | +Status: qualification case. It records what the local steward journey proves on |
| 4 | +the workspace today, which beats are still unproven, and how to reproduce both. |
| 5 | +It is product guidance, not a new capability, contract or scheduler. |
| 6 | + |
| 7 | +The case is grounded in one deterministic browser scenario |
| 8 | +(`examples/personal-workspace-browser/steward-journey.mjs`) that runs on synthetic |
| 9 | +data. The fixture substitutes the agent turn; everything the case describes is a |
| 10 | +fact the workspace surfaces render, not a claim about a live Goal. |
| 11 | + |
| 12 | +## When This Case Applies |
| 13 | + |
| 14 | +- an owner wants work to start from one sentence instead of a filled-in form; |
| 15 | +- the work needs more than one Agent or more than one lane, so staffing is |
| 16 | + itself part of the answer; |
| 17 | +- the owner wants to keep confirming, correcting and reading results in one |
| 18 | + place instead of relaying between Agent conversations. |
| 19 | + |
| 20 | +## The Journey |
| 21 | + |
| 22 | +| Beat | What the owner does | What the workspace shows | State | |
| 23 | +| --- | --- | --- | --- | |
| 24 | +| 1 | Looks at the first screen | Goal board lanes (needs you / running / observing / scheduled), each Goal card naming its Agent and its next sentence | Proven | |
| 25 | +| 2 | Asks the steward in the Goal conversation | The ask becomes an accepted Turn and the admitted team plan card lands in the same conversation | Proven | |
| 26 | +| 3 | Reads the card | Per lane: the Agent, the first bounded Todo with priority and action kind, the acceptance signal, and an explicitly unstaffed lane that keeps the work it did not staff; the quota envelope and stop condition; a statement that confirming is what creates the lanes | Proven | |
| 27 | +| 4 | Confirms | Exactly one apply and one durable write; the card reports that LoopX state will refresh | Proven, but see gap 2 | |
| 28 | +| 5 | Checks who can actually work | — | Gap 3 | |
| 29 | +| 6 | Corrects or pauses one lane | — | Gap 4 | |
| 30 | +| 7 | Waits for a lane to fail and asks who fixes it / judges completion | — | Gaps 5, 6 | |
| 31 | + |
| 32 | +Beats 5–7 are recorded by the scenario as typed gaps with the probe that looked |
| 33 | +for them. They are not "not implemented here" hand-waving: the scenario names |
| 34 | +the selectors and phrases it searched for and what it found instead. |
| 35 | + |
| 36 | +## Patterns |
| 37 | + |
| 38 | +1. **Ask for an outcome, not an org chart.** One sentence with the outcome and |
| 39 | + the constraint produces a plan card; naming Agents before the outcome turns |
| 40 | + coordination into the owner's job. |
| 41 | +2. **Read four facts before confirming.** Agent, first bounded Todo, acceptance |
| 42 | + signal and staffing gap. A card that cannot show a gap is not yet reviewable. |
| 43 | +3. **Treat the gap lane as information, not failure.** An unstaffed lane keeps |
| 44 | + the work it could not staff and names the reason, so the owner can decide to |
| 45 | + drop it, staff it, or accept partial delivery. |
| 46 | +4. **Confirmation is a durable write.** Confirming sends exactly one apply and |
| 47 | + performs one durable write; the surface must not claim a lane exists before |
| 48 | + that write, and must say what the write produced afterwards. |
| 49 | +5. **Judge delivery by the returned result, not by the conversation.** A reply |
| 50 | + or a message is not a completed lane. Until gap 6 closes, treat the |
| 51 | + conversation as the request channel and the Goal's own state as the truth. |
| 52 | +6. **Correct in the conversation the work came from.** Steering an active run is |
| 53 | + supported today; correcting a confirmed lane commitment is not yet, so avoid |
| 54 | + confirming a plan whose lanes may need to be withdrawn. |
| 55 | + |
| 56 | +## Reproduce |
| 57 | + |
| 58 | +```sh |
| 59 | +# development surfaces |
| 60 | +LOOPX_PERSONAL_WORKSPACE_SCENARIO=steward-journey \ |
| 61 | + node examples/personal-workspace-browser-smoke.mjs |
| 62 | + |
| 63 | +# packaged workspace bundle |
| 64 | +LOOPX_PERSONAL_WORKSPACE_PACKAGED=1 \ |
| 65 | +LOOPX_PERSONAL_WORKSPACE_SCENARIO=steward-journey \ |
| 66 | + node examples/personal-workspace-browser-smoke.mjs |
| 67 | +``` |
| 68 | + |
| 69 | +The run writes `steward-journey-report.json` (beats, gaps, probe evidence) and |
| 70 | +per-beat screenshots under `output/playwright/personal-workspace/`, which is |
| 71 | +gitignored. No live Goal, Agent, credential or local path is read or captured. |
| 72 | + |
| 73 | +## Recorded Gaps And Owners |
| 74 | + |
| 75 | +| # | Gap | Evidence the scenario recorded | Owner surface | |
| 76 | +| --- | --- | --- | --- | |
| 77 | +| 1 | The steward's bounded prompt set (`找下一步` / `看阻塞` / `查证据`) is defined in the client model but not reachable from the conversation | probe: no steward-prompt element, no prompt phrases before the owner types | workspace composer | |
| 78 | +| 2 | A confirmed plan does not distinguish committed / partial / all-gap / stale / rejected per lane | probe: the only outcome sentence is the generic applied notice | steward plan commit (roadmap R1 remainder) | |
| 79 | +| 3 | No per-lane readiness ladder (registered → bound → launchable → executing) | probe: no lane-readiness element or phrase | steward readiness (roadmap R2 / audit F6) | |
| 80 | +| 4 | No lane-level correction (pause or supersede a confirmed commitment) | probe: no lane-correction element; only run steering exists | shared alignment (roadmap R4) | |
| 81 | +| 5 | A failed lane does not name its blocker owner and next step | probe: no lane-blocker element or phrase | recovery/continuation (roadmap R3) | |
| 82 | +| 6 | Completion is not judged by the lane's returned result | probe: no lane-return element or phrase | return delivery (roadmap R3) | |
| 83 | + |
| 84 | +## What This Case Does Not Claim |
| 85 | + |
| 86 | +- It does not qualify a live steward conversation: the fixture substitutes the |
| 87 | + agent turn, so the model/runtime behind the intake stays untested here. |
| 88 | +- It does not qualify Lark audiences or any cloud/remote worker. |
| 89 | +- It does not turn a passing smoke into product acceptance for a Goal whose |
| 90 | + plan was confirmed with real consequences. |
0 commit comments