The idea. The plan Details page becomes a simple one ball flow: at any moment the person sees exactly one clear statement of what is happening or what they need to do, and every task they can act on is a card in a single scrollable feed that lives inside the Details page. No card stack at the top, no hunting. One ball, and you just go for it.
From sketch page 1. The Toll Bench header and the Target Plan / Details tabs stay. What changes: the card at the top of the Details section is gone. The top is now the want title, a dashed line, then a shaded banner that always states the current thing (what the agent is doing, or what needs to be done next). Everything below a hard line under the banner is the plan's feed of task cards. A bar stays attached to the bottom of the screen at all times.
+====================================================+ | TOLL BENCH header | | [ Target Plan ] [ DETAILS ] <- Details active | +====================================================+ | | | I want a true artist story <- the WANT title | | | | - - - - - - - - - - - - - - - - - <- dashed line | | //////////////////////////////////////////////// | | // (2) Sarah delivers... // | | // what the agent is doing right now, OR // | <- SHADED banner | // what needs to be done next // | (the one ball) | //////////////////////////////////////////////// | | ------------------------------------------------ | <- below this line: | | the plan's FEED | +--------------------------------------------+ | | | task card (current step, full color) | | | +--------------------------------------------+ | | +--------------------------------------------+ | | | task card | | | +--------------------------------------------+ | | | | | | | v feed scroll: scroll far enough and you | | enter the STEP 1 zone. The current-step | | banner STAYS. Older steps' cards render | | GRAYED OUT but still wear their step | | number pill (1). | | | +====================================================+ | (FAIL AGENT) (TIP) [3 cards left in stage] | <- pinned bar, | ^ stage meter, see Part 4 | always on +====================================================+ screen
From sketch page 2, a zoom of the dotted step marker and the cards under it. The dotted line with the step number and title ("(2) Sarah delivers...") marks the step zone; the cards under it are that step's to-dos. These are feed cards, treated exactly like cards from the main feed. The HAR blocks already carry almost all of this; it needs reorganizing into this shape, not reinventing.
- - - - - - - - - - - - - - - - - - - - - - -
(2) SARAH DELIVERS ... <- step marker:
- - - - - - - - - - - - - - - - - - - - - - - dotted line + number + title
+---------------------------------------+
| (v)(2) ( Review ) | <- to-do: review the DOC
| [DOC thumb] |
+---------------------------------------+
+---------------------------------------+
| ( )(2) Invite people to share | <- to-do: invite
| [x] INVITED |
+---------------------------------------+
+---------------------------------------+
| ( )(2) Connect account | <- to-do: connect
+---------------------------------------+
^
| the NEXT to-do positions here,
under the ones before it
From sketch page 3. This is the real card. Pills straddle the top edge like every feed card. Left pill: the step number from the major plan plus the action, with a check circle that checks off when the task is completed. Right pill: which want this belongs to. The body is the task itself; the example is a document to review, with the doc thumbnail, its title, a Review button to open it, then Accept / Request changes, exactly the same behavior as the normal system today.
checks when done
|
v
.-------------. .------------------.
| (v) 2 REVIEW | | ...e artist story | <- pills straddle
'-------------' '------------------' the top edge
+------------------------------------------------------------+
| |
| Review document <- the task |
| |
| +---------+ |
| | DOC | TITLE ( Review ) |
| | thumb | |
| +---------+ |
| |
| ( ACCEPT ) ( Request changes ) |
| |
+------------------------------------------------------------+
A stage is not one task. It can carry lots of cards, 5 to 10 is normal. When you open Details, the first card that needs doing sits directly below the edge of the shaded detail banner, and the rest of the stage's cards run below it; you scroll to reach them. The person can take action on ANY card in the current stage at any point, in any order. The stage is not complete until every one of its cards is complete.
////////////////////////////////////
// (2) Sarah delivers... // <- shaded detail banner
////////////////////////////////////
------------------------------------ <- edge of the detail banner
+--------------------------------+
| ( ) 2 REVIEW (...story) | <- first card needing action,
| Review document | right below the edge
+--------------------------------+
+--------------------------------+
| ( ) 2 INVITE people to share | <- more stage cards below,
+--------------------------------+ 5 to 10 is normal,
+--------------------------------+ doable in ANY order
| ( ) 2 CONNECT account |
+--------------------------------+
...scroll for the rest...
To the right of the tip button sits the stage meter. It always shows how many cards are left to complete the stage. Complete a card anywhere in the feed and the count falls. When the last card completes, the meter lights up and reads: stage completed, sending to agent. Then every card in the stage flips to history inside the Details feed, checked and grayed.
+------------------------------------------------------+
| (FAIL AGENT) (TIP) [ 3 cards left in stage ] |
+------------------------------------------------------+
|
complete cards, count falls
v
+------------------------------------------------------+
| (FAIL AGENT) (TIP) [ 1 card left in stage ] |
+------------------------------------------------------+
|
last card completes
v
+------------------------------------------------------+
| (FAIL AGENT) (TIP) [* STAGE COMPLETED, |
| SENDING TO AGENT *] <- lit |
+------------------------------------------------------+
The banner and the feed both tell the story. When a piece of work finishes, opening its detail shows the completed state: the shaded banner reads as now done, and the first card in the feed is the card that WAS the to-do, still there, circle checked. Nothing is removed; the card just flips to its completed state and the feed keeps the record.
BEFORE (to-do open) AFTER (work complete) //////////////////////////// //////////////////////////// // (2) Sarah delivers... // // (2) Sarah delivers... // // waiting on you: review // -> // DONE // //////////////////////////// //////////////////////////// ---------------------------- ---------------------------- +------------------------+ +------------------------+ | ( ) 2 REVIEW | | (v) 2 REVIEW | | Review document | -> | Review document | | (ACCEPT)(Req changes) | | accepted | +------------------------+ +------------------------+
Every stage that completes flips its cards to the checked state, permanently. So the feed reads: current step's cards at the top in full color, then each earlier stage's zone below it, cards checked and grayed, each still wearing its step number pill. Scrolling further down is walking further back through completed work.
When the ball is with the agent, the shaded banner already covers it: "Sarah is working on..." The proposal for the feed: the current card is a read-only agent-at-work card. Same card shape, same step pill, no Accept / Request changes buttons. It shows the agent's latest check-in and how long the agent has been in the step, so the feed is never empty and the top card is always true. When the agent delivers, this card checks off and the review to-do arrives as the new current card right where it sat. Fail and tip stay available in the pinned bottom bar the whole time, so the person always has those without needing a card.
//////////////////////////////////// // (2) Sarah delivers... // // Sarah is working. Nothing // // needed from you right now. // //////////////////////////////////// ------------------------------------ +--------------------------------+ | ( ) 2 WORKING (...story) | <- agent-at-work card (read only) | Sarah's last check-in: | | "source-linked fact sheet | | drafted, verifying claims" | | 56 minutes in this step | +--------------------------------+ +--------------------------------+ | (v) 1 SIGN (grayed, checked) | <- completed stage below +--------------------------------+ [ when Sarah delivers: the WORKING card checks off and the REVIEW to-do card arrives as the new current card ]
The same plan must read the same everywhere it appears: on the proposal card where it was pitched, on the Plans tab, and on the Details feed. Today they drift: the Details banner drops the "LyraQBist delivers" opener, the fonts differ between surfaces, the plans rows box their buttons on the left, and the agent's first-person promise ("I will draft...") gets trimmed. The fix is a TOKENIZED STRIP: one fixed order of parts, rendered identically at every layer, in the new design language.
THE AGENT STRIP, the same token everywhere:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - <- dotted separator,
(5) ( ) LyraQBist delivers The introduction kit no box around it
^ ^ ^ ^ [AGENT WORKING] <- state pill,
| | | | right side
| | always "NAME then the name
| | delivers" first of the THING
| check circle: checks when the step completes
number circle, matches the banner
o Draft truthful low-pressure materials <- BULLETS, from the
o Keep every communication person-controlled same step detail the
o Respectful decline script included proposal card splits
[open v] "I will draft a truthful trusted- <- expandable: the
introduction brief, two conversation agent's OWN words,
starters, a privacy-minimized fact first person. The
card, and a respectful decline "I will" is KEPT,
script." never stripped.
( Details ) ( Receipts ) <- buttons on
- - - - - - - - - - - - - - - - - - - - - - - - - - - - the RIGHT
Between the agent's strip and the next step sits a really skinny strip: the person's approval moment, pulled OUT of the step. It wears the step's number (no number of its own), has its own dotted line above and below, and exists in the rhythm of every step, so the plan always reads: agent strip, your action, agent strip, your action. It is quiet until the process actually reaches it. When it becomes your turn it goes GREEN, in the same green action banner used everywhere, and tapping it takes you straight into the action. At that same moment the banner at the top of the screen stops describing the agent and says YOUR ACTION.
NOT YOUR TURN YET (agent still working step 5): - - - - - - - - - - - - - - - - - - - - - (5) your action <- skinny, quiet, gray - - - - - - - - - - - - - - - - - - - - - YOUR TURN (the work is filed, waiting on you): - - - - - - - - - - - - - - - - - - - - - [#### (5) YOUR ACTION approve the work ####] <- GREEN, tappable, - - - - - - - - - - - - - - - - - - - - - opens the work ...and the TOP BANNER flips at the same moment: agent's turn: (5) Write the introduction kit [AGENT WORKING] your turn: (5) YOUR ACTION approve the work [GREEN] The chiller feature: glance at the plan, nothing green = nothing needed from you. Green = your action, and it is always in the same place, shaped the same way.
YOUR-ACTION moment, the whole screen: +--------------------------------------------+ | nav (Targets / Plans / Detail) | | I want a new boyfriend who is smart. | | - - - - - - - - - - - - - - - - - - - - | | [#### (5) TAKE ACTION approve the work ##]| <- the strip IS the top, | ------------------------------------------| green, no step banner | +--------------------------------------+ | | | task card 1 (the work) | | <- the cards to do, | +--------------------------------------+ | stacked below, | +--------------------------------------+ | all of them | | task card 2 ... | | | +--------------------------------------+ | | | | (FAIL AGENT) (TIP) [stage meter] | +--------------------------------------------+
Seven-step plan 1 OF 7 APPROVED
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(/) You sign the deal. APPROVED AUG 12
$0 total · 7 days · 7 steps
( Details ) ( Receipts )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(2) ( ) Fable delivers The five money makers
o Five ideas sized to your $300 target
o Honest effort and revenue notes on each
o I build only the one you pick
[open v] "I will bring you five real ways to
earn the trip money, sized honestly..."
( Details )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[#### (2) YOUR ACTION pick one of the five ############ ] <- GREEN,
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - your turn
(3) ( ) Fable delivers The product images and the plan
o Two product JPEGs you can open
o A sectioned business plan in the reader
[open v] "I will file two product images as
artifacts you can open and click..."
( Details )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(3) your action <- skinny, gray, quiet
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(4) ( ) Fable delivers The Stripe connection [AGENT WORKING]
... ^ pill rides
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - whichever step
(4) your action the agent works
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
...steps 5, 6 same rhythm...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(7) ( ) You confirm the want is achieved. <- finish line
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The rhythm: agent strip, your action, agent strip, your action.
Nothing green = nothing needed from you. The bid card renders
these same strips with no pills, no buttons, gray your-action.
The Details banner speaks the same head: "(2) Fable delivers
The five money makers" - the opener is never dropped.
The approach, agreed 2026-08-12: keep the wiring, reswap the shell. The six existing controls in templates/targets/_path_macros.html (approve, choose, provide, grant, fail, tip) keep their endpoints and payloads untouched; only the shell around them becomes the new card system. The new layout runs beside the old one behind ?oneball=1 until Steven flips it.
/admin/card-gallery#one-ball-cards (super admin only). Flat (no drop shadow), pills straddling the top edge, check circle on the step pill, specific human titles, edge-to-edge width, tokens only. Plus one informational card and one completed-state card. Classes are ob-* in target-path.css.?oneball=1 to any step page, e.g. /wants/<id>/steps/<n>?oneball=1. The odds card is gone; instead: want title, dashed line, shaded banner with the current step + waiting-on-you / agent-working chip, the feed (current zone with a placeholder card, done zones below, checked + grayed), sticky pinned bar (Fail agent / Tip route to the old step view for now, stage meter static). Macro one_ball_screen in templates/targets/_one_ball.html. The Plans page is untouched. Known P1 gaps, deliberate: the real task cards land at P3; the meter wires at P5; future steps stay on the Plans tab.target-trajectory__title classes), so the two pages share one look by construction. Still owed at full P3b: per-block cards with their own straddling pills + per-block completion for the meter — folded into the block program below as B4.plan_strips in templates/targets/_strips.html (classes us-*): dotted rules no boxes, number + check circles, "NAME delivers THE THING", state pill right, bullets from the step detail, promise expander verbatim, buttons right, skinny your-action strips in the rhythm (green live via the same ob-strip, gray on proposals). The Plans page (path_screen) and BOTH bid-card plan blocks render through it; the old boxed rows are deleted. (c) The Details banner speaks the same head via strip_head_text - the "delivers" opener is never dropped.The state: second live deal on the Oregon-hikes want (Fable, signed 2026-08-13 03:59 after a full fail-and-repost round). Step 2 CHOOSE delivered as ONE NOTE + the choice control (r185 shape), person picked the hike photo calendar, process advanced to step 3 (product images + business plan, agent working). Steven's plan: fail the agent in the morning, repost, and run the cards fresh end to end, testing as we go.
Verified live tonight, in process order: fail popup (reason + fail-and-repost / fail-and-abandon, one dialog everywhere, red pill, failed bids go red and stay) · auto-repost + fresh bids + finalist + informed plan through the real API · typed-blocks filing rendering as cards · REJ-26 door built (dark) · r185 + REJ-27 door LIVE (options are the delivery) · choose accepts the HAR option id (the 08-09 id gap closed) · HAR radio group scope bug fixed (one group per block) · strips: no transform, promise = 2 italic lines + "... more", first-person promises ("I am going to"), agent stage LIGHT PURPLE / your-action GREEN with black button (final color law) · tip panels open with the saving-your-game line. Known open: the TIP CARD SHEET (Steven 2026-08-13: the tip popup becomes the shop-style slide-up Stripe payment sheet, card entry in the sheet, Tip at the bottom - today the tip charges server-side in test mode with no card entry), one option vocabulary at the bid door, B6 contract publish + door flip (Steven's word), STEPS/NEED caps PROPOSED. (Silent-orphan 201 FIXED 2026-08-13, a370988d8: out-of-turn filings 422, artifacts attach without opening the ask.)
Ruled live over Fable deal 2 step 3 (the calendar delivery). Every delivery a person reviews becomes a stack of cards, one per item, answered card by card and sent back to the agent as ONE bundle when the step is done. This keeps the one-ball turn law intact: nothing mid-step reaches the agent.
note; a filing without one is 422 note_required.
The note card's bottom carries the standing line: "Your answers on each card
are collected and sent to the agent together when the step is done."title field to carry the real name.ONE CARD, ONE ACTION (Steven 2026-08-13, ruled over the twelve-image delivery). A delivery is one STEP OVERVIEW CARD (white, titled "Step N overview", carrying the agent's note) plus N item cards; every card renders its content (an image inline, a document in sections, text in full, a link through the gate) and carries exactly one answer. Approving a card IS the confirmation - confirm_correct and review_approve blocks that shadow delivered items are ABSORBED by the cards and never render as a second ask. Control blocks that are not items (choose, connect, provide, upload...) remain their own cards. The doors stay flexible for agents - any item shape may be delivered - but the person always receives the same locked context: note on top, one card per thing, one action per card, the countdown bar at the bottom.
Sequencing law: a control renders ON the card it governs - never a confirm block referring to something that is not above it.
The specimen that forced this (Oregon-hikes process, step 2, seen 2026-08-13): the agent filed a five-option money-maker decision as a 1,183-character prose essay in the text outcome — perfectly legal under rule 178's 3,000-char cap — while the CHOOSE control directly below it carried the same five options clean, one line each with a short description. The essay adds nothing the control does not say better. Once a filing is under the character caps, prose is still a legal shape everywhere except review steps (r184): that is the hole. The fix is the Block Law: an agent presents in TYPED BLOCKS (NOTE 280 chars one-per-filing, CHECKLIST 12×80, KEY FACTS 8 rows, CHOICE, STEPS, NEED — caps RULED 2026-08-10), the door bounces prose over the caps with a teaching example, and every block renders as its own one-ball card wearing the CARD TOP treatment.
The order, agreed 2026-08-13: gallery truth first, then schemas, then the door and the cards as PARALLEL disjoint scopes (validator/services vs templates/CSS — one cutover batch), then one joint walk on the live Oregon-hikes target proves the whole chain before the fallback dies and the contract publishes.
_ask_line says "upload what only you have" for EVERY provide step, even a typed answer, and the long pill squeezes the want pill to "ne...".app/services/block_schemas.py, 20 tests green. RULED caps encoded as ruled; STEPS max 12 / NEED max 8 / field lengths are PROPOSED, PENDING STEVEN, marked so in the module.blocks outcomes (kind='blocks', stored in document_blocks, flattened fallback text); text over 280 chars bounces REJ-26 with the greenhouse teaching example ONLY when BOHO_BLOCK_DOOR_ENFORCE is on (default OFF until B6 publishes the contract). Defect found while proving B5, FIXED 2026-08-13 (a370988d8, verified live on deal 2 step 3): an out-of-turn filing now bounces 422 out_of_turn_filing, and artifacts attach to the working step WITHOUT opening the ask — the outcome filing is the handover, so a multi-part delivery (two JPEGs + the r184 plan document) lands whole instead of the first file flipping the ball and orphaning the rest.