Repository navigation
home: needs you becomes two groups — the questions that stopped something, then the landings to check - #900
Merged
Merged
Conversation
santoshkumarradha
added a commit
that referenced
this pull request
Sep 11, 2026
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ething, then the landings to check WIP checkpoint on the lane branch. The panel gains a group mechanism ([homePanelGroup]): a run of rows at the foot of a panel drawn under a dim line of its own, which folds before any row above it gives way. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Blocking first, the group line's shape and that it is not a stop, the chips on one row of the frame, `since you left` stepping aside, the squeeze order and the pulse's count. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`home.md`'s `needs you` section is the questions alone; a new `to check` section is the landings, their one line at rest, the line the cursor grows and the two keys that answer it. `keys.md` and `places.md` stop saying `the top question`. DESIGN.md laws 5, 7 and 8 say the group's squeeze, the answering row and that a landing wears no mark. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The fixture had ONE `unverified` row, which draws a `to check` group of one — the shape a group line, its count, its clause and its fold are all untested by. Four more, deliberately unlike each other: seventeen files, no files, a name long enough to be cut, and one old enough to age onto the fold. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Driving the binary found the same landing on two rows of `needs you`: a live conversation waiting on nothing but its own landing writes `waiting on you · your call on <title>` with NO question object, so it was drawn as a question above the `to check` row for the same work. The landing's row is the one that survives. Also from the drive: the group line stands at the panel's own left edge, and a landing's files and age are one clause, `3 files · 1d`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ne is the report A BARE LETTER ON HOME ALWAYS TYPES — the box promises "type to search or start something new" and the promise has no asterisk — so `[a]`/`[n]`, the landing's keys everywhere else, cannot be answer keys on this screen. The WORDS stay the task's own ([session.TaskAsk]); the key a person presses here is the drawn digit, which is the one printable exception home already makes, and it is mapped back to the landing's own key before the answer leaves the surface. And the line the cursor grows is the report's first sentence, with the engine's reason standing in only where the work left no report. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
santoshkumarradha
force-pushed
the
home/needs-groups
branch
from
September 11, 2026 15:41
18e5bfe to
c85ea8c
Compare
… landing, and three counts agree A fresh-eyes pass over the diff found six things worth fixing and they share one cause: `to check` gives one conversation more than one answerable row, and every reading built when a conversation had at most one was wrong in a new way. - `needsLandingsSpeakFor` is the ENGINE'S SENTENCE and not an absence. Reading "no question object" as "only waiting on its landing" took a conversation stopped at its FUEL GATE or on a sub-harness offer off home entirely: both lanes bank no card at the desk and say so. The test is now `your call on <title of one of its own landings>`. - `needsCallOf` refuses an archived conversation, so work somebody put away is neither a row of `to check` nor a want. - `needsWants` is the ONE reading of how many rows of `needs you` a conversation is, and the pulse counts from it — it used to count the conversation AND its landing for the row it had just dropped. - `answerSlot` keys a sent answer by the QUESTION and not by the conversation. Answering a second landing forgot the first, whose chips came back and whose key sent a second answer for a question already answered from here. - `needsOpenWord` no longer claims a landing says `enter`, and `needsCallAnswers` states why every ask that reaches home is [session.TaskAskCheck] (the index carries no merge, ground or phase facts, so `taskAskOf` can only take its check arm) — which is why `needsLandingQuestion` names one kind rather than guessing between two. - DESIGN.md law 7 said the keys are the question's own, which is what this change deliberately departs from for a landing. It says which, and why. - `taskLedgerKey` is the one spelling of a piece of work's identity across home's columns; it was written out three times. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
santoshkumarradha
marked this pull request as ready for review
September 11, 2026 16:21
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #884. Lane H of the home-and-tasks wave — option A for the
needs youpanel.What was true
needs youdrew three sources as one flat list, oldest first. Every landing carried thesame sub-line —
landed unchecked · enter to look, nine words repeated on nine rows — sonine items were eighteen lines and pushed
where you wereoff a forty-row frame. A liveconsent question sorted UNDER week-old landings. A landing wore the amber
?, which meansstopped on you, over work that had already finished. And the same landing could be drawn
twice on one panel, and again in
since you left.What is true now
One panel, two groups.
needs youis the live questions — a conversation stopped on aquestion or a consent card, a watch that needs somebody — longest wait first, wearing the
mark. Under them a dim group line,
to check · Nat the left andfinished, nobody has checked itat the right, holding every task whose call is theperson's, newest first, one line each: the name,
N files · age. The row under thecursor grows a second line — the report's first sentence and the task's own two answers.
The one abstraction
homePanelGroup— a run of rows at the FOOT of a panel's list, drawn under a dim line ofits own, which folds before the panel gives up a row above it. It is the panel's own
shape said one level down, so the squeeze needed no second rule: the group's rows are
last, the ordinary bottom-up cut spends them first, and when none is left the panel's own
fold reads
4 to check · 1 older · tasksinstead of4 more.shrink()got simpler as aresult. Any panel can take one.
homeCell.growsis the second: a row one line tall whose panel reserves the line it growsinto, so the column keeps its shape whichever row the cursor stands on — no relayout on an
arrow key.
What it deleted
needsUncheckedWord, the amber mark on a landing,needsItem.answersand thedraw-the-chips-on-the-first-row flag, and the old
homeGridAnswerwalk. Drawing androuting now call ONE function (
homeAnswerAt), so the chip on the screen and the key aperson presses cannot be two different rows.
Two defects the tmux drive found
Agent.waitingOnPersonreads a pending decision last and has no question object to writefor it, so such a session says
waiting on you · your call on <title>withPresenceQuestionzero — and that was drawn as a question above theto checkrow forthe same work. The landing's row is the one that survives; it has the work's own name, its
files and its answers.
a/ncannot be answer keys on home. The landing keys are task-states' own letterfor letter everywhere else, but home's box promises "type to search or start something
new" and a bare letter there always types. So the WORDS stay the task's own
(
session.TaskAsk) and the KEY is the drawn digit — the one printable exception homealready makes — mapped back to
LandingYesKey/LandingNoKeybefore the answer leavesthe surface. Verified on disk:
{"kind":"landing","id":1,"key":"a","from":"home","decidedBy":"person"}.Also
since you leftdrops a landingto checkis showing, and takes it back when it isanswered or ages out.
N want youis now the sum of both groups, through the panel's ownneedsCallOf/needsAgedrather than a second test.draws a group rather than a group of one.
home.md(needs youis the questions alone, a newto checksection),keys.md,places.md;docs/design/home-mission-control/DESIGN.mdlaws 5, 7 and 8.🤖 Generated with Claude Code