From 7ee3bbac99ca0189c3abd363d21a5b438b9cee48 Mon Sep 17 00:00:00 2001 From: santoshkumarradha Date: Fri, 11 Sep 2026 16:30:04 -0400 Subject: [PATCH 1/8] wip(lane R): the evidence beside the list, and the page as two panes Tests not yet rewritten; checkpoint so a kill costs minutes. Co-Authored-By: Claude Opus 5 --- internal/tui2/tokens/glyph.go | 8 + internal/tui2/tokens/glyph_test.go | 2 +- internal/tui2/tokens/glyphset.go | 2 + internal/tui2/tokens/nerdfont.go | 8 + internal/tui3/app.go | 6 +- internal/tui3/hover.go | 2 +- internal/tui3/panes.go | 126 ++++ internal/tui3/questionblocks.go | 75 +-- internal/tui3/questionchooser.go | 28 +- internal/tui3/questiondemo.go | 19 +- internal/tui3/questionevidence.go | 173 +++++ internal/tui3/questionkeys.go | 63 +- internal/tui3/questionpage.go | 645 ++++++++++++++++++ internal/tui3/questionpanel.go | 229 ++++++- internal/tui3/questionroom.go | 1006 +++++++--------------------- internal/tui3/view.go | 9 +- 16 files changed, 1552 insertions(+), 849 deletions(-) create mode 100644 internal/tui3/panes.go create mode 100644 internal/tui3/questionevidence.go create mode 100644 internal/tui3/questionpage.go diff --git a/internal/tui2/tokens/glyph.go b/internal/tui2/tokens/glyph.go index 234b2197ca..4a777eb38a 100644 --- a/internal/tui2/tokens/glyph.go +++ b/internal/tui2/tokens/glyph.go @@ -101,6 +101,12 @@ const ( GlyphFrameBottomRight = "╯" GlyphFrameEdge = "─" GlyphFrameSide = "│" + // The two junctions are where a frame's rule meets the seam between two + // panes laid side by side (internal/tui3/panes.go): the rule above the panes + // drops into the seam and the rule below closes it. They are the same + // geometry as the rest of the frame, so they are drawn at the same floor. + GlyphFrameTeeDown = "┬" + GlyphFrameTeeUp = "┴" // GlyphTarget is WHERE THE NEXT THING GOES, and it is the one mark in this // vocabulary about a destination rather than about a state. Home's rule wears @@ -430,6 +436,8 @@ func Glyphs() []GlyphInfo { {"FrameBottomRight", GlyphFrameBottomRight, '╯', true}, {"FrameEdge", GlyphFrameEdge, '─', true}, {"FrameSide", GlyphFrameSide, '│', true}, + {"FrameTeeDown", GlyphFrameTeeDown, '┬', true}, + {"FrameTeeUp", GlyphFrameTeeUp, '┴', true}, {"Target", GlyphTarget, '→', true}, {"Truncated", GlyphTruncated, '⋯', false}, {"Ellipsis", GlyphEllipsis, '…', true}, diff --git a/internal/tui2/tokens/glyph_test.go b/internal/tui2/tokens/glyph_test.go index 879080c3af..3384d8e04a 100644 --- a/internal/tui2/tokens/glyph_test.go +++ b/internal/tui2/tokens/glyph_test.go @@ -245,7 +245,7 @@ func TestGlyphInventoryIsComplete(t *testing.T) { GlyphQueued, GlyphWorking, GlyphSettled, GlyphFailed, GlyphPaused, GlyphNeedsHuman, GlyphWaitsOn, GlyphWithdrawn, GlyphCollapsed, GlyphExpanded, GlyphScopeUp, GlyphPointer, GlyphRecommended, GlyphFrameTopLeft, GlyphFrameTopRight, - GlyphFrameBottomLeft, GlyphFrameBottomRight, GlyphFrameEdge, GlyphFrameSide, GlyphTarget, GlyphTruncated, GlyphCut, GlyphPromptChat, GlyphPromptSteer, + GlyphFrameBottomLeft, GlyphFrameBottomRight, GlyphFrameEdge, GlyphFrameSide, GlyphFrameTeeDown, GlyphFrameTeeUp, GlyphTarget, GlyphTruncated, GlyphCut, GlyphPromptChat, GlyphPromptSteer, GlyphReplyIn, GlyphThought, GlyphShell, GlyphSearch, GlyphWrite, GlyphBoosted, GlyphSeparator, GlyphMissing, GlyphEstimate, diff --git a/internal/tui2/tokens/glyphset.go b/internal/tui2/tokens/glyphset.go index d8aad073d0..a352aae05f 100644 --- a/internal/tui2/tokens/glyphset.go +++ b/internal/tui2/tokens/glyphset.go @@ -122,6 +122,8 @@ const ( GFrameBottomRight GFrameEdge GFrameSide + GFrameTeeDown + GFrameTeeUp GTarget GTruncated GEllipsis diff --git a/internal/tui2/tokens/nerdfont.go b/internal/tui2/tokens/nerdfont.go index 718266225d..12af9b2fad 100644 --- a/internal/tui2/tokens/nerdfont.go +++ b/internal/tui2/tokens/nerdfont.go @@ -222,6 +222,14 @@ var vocabulary = []GlyphBinding{ ID: GFrameSide, Name: "FrameSide", Meaning: "the frame: its sides", Plain: GlyphFrameSide, UsualTint: TextTertiary, PlainAmbiguous: true, Geometry: true, }, + { + ID: GFrameTeeDown, Name: "FrameTeeDown", Meaning: "the frame: where the rule above two panes meets the seam between them", + Plain: GlyphFrameTeeDown, UsualTint: TextTertiary, PlainAmbiguous: true, Geometry: true, + }, + { + ID: GFrameTeeUp, Name: "FrameTeeUp", Meaning: "the frame: where the rule below two panes closes the seam between them", + Plain: GlyphFrameTeeUp, UsualTint: TextTertiary, PlainAmbiguous: true, Geometry: true, + }, { ID: GTarget, Name: "Target", Meaning: "where the next thing goes — the destination of a draft", // Tinted with the identity of the room the draft will land in, exactly as diff --git a/internal/tui3/app.go b/internal/tui3/app.go index dd184fff5e..b46d82b315 100644 --- a/internal/tui3/app.go +++ b/internal/tui3/app.go @@ -3606,9 +3606,9 @@ func (a *app) route(msg tea.Msg) (tea.Model, tea.Cmd) { if a.questionRoomOpen() { switch msg.Mouse().Button { case tea.MouseWheelUp: - a.questionRoomScroll(-3) + a.questionRoomScroll(msg.Mouse().X, -3) case tea.MouseWheelDown: - a.questionRoomScroll(3) + a.questionRoomScroll(msg.Mouse().X, 3) } return a, nil } @@ -6366,7 +6366,7 @@ func (a *app) press(x, y int) (cmd tea.Cmd) { // untouched and then does nothing, which is what the empty parts of any page // on this surface do. if a.questionRoomOpen() { - if cmd, took := a.questionRoomPress(y); took { + if cmd, took := a.questionRoomPress(x, y); took { return cmd } } diff --git a/internal/tui3/hover.go b/internal/tui3/hover.go index d0d7824282..1ad1f89f3c 100644 --- a/internal/tui3/hover.go +++ b/internal/tui3/hover.go @@ -516,7 +516,7 @@ func (a *app) hoverTarget(x, y int) hoverAt { // pointer answered from the transcript underneath would brighten a tool call // in a conversation the person cannot see (questionroom.go). if a.questionRoomOpen() { - if at, ok := a.questionRoomOptionAt(y); ok { + if at, ok := a.questionRoomSpotAt(x, y); ok { return hoverAt{kind: hoverQuestionOption, index: at} } } diff --git a/internal/tui3/panes.go b/internal/tui3/panes.go new file mode 100644 index 0000000000..386577886a --- /dev/null +++ b/internal/tui3/panes.go @@ -0,0 +1,126 @@ +package tui3 + +import ( + "strings" + + "github.com/charmbracelet/x/ansi" + + "github.com/Agent-Field/aforge-v2/internal/tui2/tokens" +) + +// ── TWO PANES, SIDE BY SIDE ───────────────────────────────────────────────── +// +// ONE WIDTH DECIDES WHETHER A FRAME HOLDS TWO COLUMNS, AND THIS SURFACE ALREADY +// HAD IT. The task column stands beside the conversation from [railSlimFloor] +// up and under it "the transcript is the thing a person came for" (task.go); +// the owner's picks of 2026-09-11 put a question's answers beside the evidence +// of the one the pointer is on at the same width (preview A, page A, "≥100 +// cols") and fold that evidence under its row below it (preview-narrow B). So +// there is one reading of it, [besideFits], and one way to lay two columns out, +// [besides] — the panel and the page both ask here, and neither measures its +// own. (The asker's own two-pane layout block decides by its CONTENT instead: +// its panes stand side by side wherever both fit whole, which is the reason a +// fixed width was only ever standing in for — questionblocks.go.) +// +// A SEAM, NOT A BOX. The two panes are one object split in two, so the line +// between them is the frame's own side ([tokens.GFrameSide]) and the rules +// above and below meet it with the frame's junctions ([tokens.GFrameTeeDown], +// [tokens.GFrameTeeUp]). A terminal refused box drawing gets the frame's ASCII +// run — a rule of `-` and a blank seam — for the frame's own reason: a column +// of `|` down every row is punctuation a screen reader reads aloud on every +// line, and a blank column already says where one pane ends. + +// besideFits reports whether a frame of this width has room for two panes +// side by side. +func besideFits(width int) bool { return width >= railSlimFloor } + +// besideSplit is where the seam falls in a frame of `width` cells whose left +// pane would like `want` of them. +// +// THE LEFT PANE GETS WHAT ITS WIDEST ROW NEEDS AND NEVER MORE THAN HALF. The +// right pane is what the split exists to show — the evidence — so it is always +// given at least as much as the list beside it; and the list is given exactly +// what its widest row needs, so no answer's word is cut while the evidence has +// room to give. The seam itself is one cell. +func besideSplit(width, want int) (left, right int) { + half := (width - 1) / 2 + left = min(max(want, 1), half) + return left, max(width-left-1, 0) +} + +// besides lays two columns of painted rows side by side at one width: the left +// set to `left` cells, the seam, the right set to the rest. The shorter column +// is padded with blank rows so the seam runs the height of the taller. +func besides(p palette, lefts, rights []string, left, width int) []string { + right := max(width-left-1, 0) + seam := p.dim(framePiecesOf(p).side) + tall := max(len(lefts), len(rights)) + out := make([]string, 0, tall) + for i := range tall { + l, r := "", "" + if i < len(lefts) { + l = lefts[i] + } + if i < len(rights) { + r = rights[i] + } + out = append(out, frameSet(l, left)+seam+frameSet(r, right)) + } + return out +} + +// besideRule is a full-width rule that meets a seam at column `at` with the +// junction `tee`, and carries words written into it the way the frame writes +// words into an edge ([framed.edge]). `at` below zero is a rule with no seam +// to meet. +// +// THE WORDS START TWO CELLS IN, and where the seam falls inside them they move +// past it, so a junction never lands in the middle of a word and a rule over a +// narrow left pane still says what it carries. +func besideRule(p palette, width, at int, tee tokens.GlyphID, words string) string { + if width <= 0 { + return "" + } + pieces := framePiecesOf(p) + junction := pieces.edge + if at >= 0 && !p.ascii { + junction = p.glyph(tee) + } + edge := func(n int) string { return strings.Repeat(pieces.edge, max(n, 0)) } + wordsW := ansi.StringWidth(words) + if words == "" { + if at < 0 || at >= width { + return p.dim(edge(width)) + } + return p.dim(edge(at) + junction + edge(width-at-1)) + } + // Where the words would cross the seam they start one rule cell past it. + start := 2 + if at >= 0 && at < width && start+wordsW+1 > at { + start = at + 2 + } + room := max(width-start-2, 0) + if wordsW > room { + words, wordsW = fitWidth(words, room) + } + if wordsW == 0 { + return besideRule(p, width, at, tee, "") + } + var b strings.Builder + lead := start - 1 + if at >= 0 && at < lead { + b.WriteString(p.dim(edge(at) + junction + edge(lead-at-1))) + } else { + b.WriteString(p.dim(edge(lead))) + } + b.WriteString(" ") + b.WriteString(words) + b.WriteString(" ") + used := lead + wordsW + 2 + if at >= used && at < width { + b.WriteString(p.dim(edge(at-used) + junction + edge(width-at-1))) + } else { + b.WriteString(p.dim(edge(width - used))) + } + return b.String() +} diff --git a/internal/tui3/questionblocks.go b/internal/tui3/questionblocks.go index d91362d976..5c596dbbf9 100644 --- a/internal/tui3/questionblocks.go +++ b/internal/tui3/questionblocks.go @@ -32,8 +32,9 @@ import ( // - image — the surface's existing picture path ([app.pictureRowsFor]), which // is the same renderer, cache and half-cell painting a picture in the // conversation gets. A terminal that cannot paint gets the path and `o open`. -// - layout — two pre-formatted panes side by side above 100 columns, stacked -// below, which is DESIGN.md's own number. +// - layout — two pre-formatted panes side by side wherever both fit whole, +// stacked where they do not, because a pane cut to fit is a pane that has +// stopped being pre-formatted. // // ── NO BOX DRAWING ── // @@ -78,7 +79,7 @@ func (a *app) questionBlockRows(block session.Block, indent, width int) []string case session.BlockImage: body = a.questionImageLines(block, inner) case session.BlockLayout: - body = a.questionLayoutLines(block, inner, width) + body = a.questionLayoutLines(block, inner) default: for _, line := range wrap(strings.TrimSpace(block.Body), inner) { body = append(body, a.pal.ink(line)) @@ -216,35 +217,28 @@ func (a *app) questionImageLines(block session.Block, width int) []string { return out } -// questionPane fits one pre-formatted line to a column, padding on the right and -// trimming nothing: the spaces inside a drawing are the drawing. -func questionPane(text string, width int) string { - if width <= 1 { - return "" - } - text = fit(text, width-1) - if pad := width - ansi.StringWidth(text); pad > 0 { - return text + strings.Repeat(" ", pad) - } - return text -} - // questionLayoutLines draws two pre-formatted panes beside each other, or under -// each other on a page too narrow to hold both. +// each other where the two will not both fit whole. // // THE PANES ARE [session.Block.Rows], ONE ENTRY PER PANE. It is the field the // object already has for structured content, and a layout IS two lists of lines; // carving them out of one Body with a separator would mean inventing a separator // that a pane could contain. -func (a *app) questionLayoutLines(block session.Block, width, full int) []string { +// +// THE WIDTH IS THE CONTENT'S, NOT A NUMBER. A layout block used to go side by +// side above a hundred columns of PAGE; drawn in the pane beside a list, the same +// block has seventy, and two panes of seventeen-character lines stacked there for +// no reason a person could see. What the number stood in for is "a pane cut to +// thirty characters has stopped being pre-formatted", so that is the test: each +// pane's widest line fits its half, or the two stack. +func (a *app) questionLayoutLines(block session.Block, width int) []string { panes := block.Rows if len(panes) == 0 { return a.questionDiagramLines(block, width) } - if len(panes) == 1 || full < questionLayoutFloor { - // STACKED, WITH A BLANK BETWEEN THEM. DESIGN.md's own number: two panes - // side by side above 100 columns and stacked below, because a pane cut to - // thirty characters is a pane that has stopped being pre-formatted. + half := (width - 1) / 2 + if len(panes) == 1 || questionPaneWidest(panes[0]) > half || questionPaneWidest(panes[1]) > width-half-1 { + // STACKED, WITH A BLANK BETWEEN THEM. out := make([]string, 0, 16) for i, pane := range panes { if i > 0 { @@ -256,23 +250,24 @@ func (a *app) questionLayoutLines(block session.Block, width, full int) []string } return out } - left, right := panes[0], panes[1] - half := (width - 2) / 2 - tall := max(len(left), len(right)) - out := make([]string, 0, tall) - for i := range tall { - l, r := "", "" - if i < len(left) { - l = expandTabs(left[i]) - } - if i < len(right) { - r = expandTabs(right[i]) - } - // THE PANES ARE PRE-FORMATTED, SO THE LEFT ONE IS PADDED AND NEVER - // TRIMMED. [questionCell] trims — it is a table cell, where a stray space - // is noise — and running a pane through it flattened every indent inside - // the drawing the asker made. - out = append(out, a.pal.ink(questionPane(l, half+1))+a.pal.ink(fit(r, half))) + // THE PANES ARE PRE-FORMATTED, SO NOTHING IN THEM IS TRIMMED: the spaces + // inside a drawing are the drawing. They are laid by the one side-by-side + // ([besides]), whose seam is the frame's own side. + lefts, rights := make([]string, 0, len(panes[0])), make([]string, 0, len(panes[1])) + for _, line := range panes[0] { + lefts = append(lefts, a.pal.ink(expandTabs(line))) } - return out + for _, line := range panes[1] { + rights = append(rights, a.pal.ink(expandTabs(line))) + } + return besides(a.pal, lefts, rights, half, width) +} + +// questionPaneWidest is the widest line of one pane, measured as it is drawn. +func questionPaneWidest(pane []string) int { + widest := 0 + for _, line := range pane { + widest = max(widest, ansi.StringWidth(expandTabs(line))) + } + return widest } diff --git a/internal/tui3/questionchooser.go b/internal/tui3/questionchooser.go index 22445c0b62..57d646185a 100644 --- a/internal/tui3/questionchooser.go +++ b/internal/tui3/questionchooser.go @@ -42,6 +42,10 @@ const ( // viewPanel is the framed panel a question hangs in above the box // (questionpanel.go). It is the ordinary answer. viewPanel + // viewSplit is the same panel with its answers in a list on the left and + // the evidence of the one the pointer is on in a pane on the right, which + // follows the pointer (owner ruling 2026-09-11, preview pick A). + viewSplit // viewRow is one row: a question whose whole decision fits beside its own // answers, and the ratify line, which is not asking anything. viewRow @@ -92,9 +96,19 @@ var questionLadder = []questionRung{ return q.question.Input.Kind != session.InputNone }, }, + { + view: viewSplit, + why: "an answer brought something to look at and the frame is wide enough to lay it beside " + + "the list, so the evidence follows the pointer in a pane of its own rather than being " + + "folded under one row", + when: func(a *app, q questionShown, width int) bool { + return questionAnswersCarryBlocks(q.question) && besideFits(width) + }, + }, { view: viewPanel, - why: "an answer brought something to look at, and evidence sets the size of the drawing", + why: "an answer brought something to look at, and evidence sets the size of the drawing — " + + "narrower than two panes, the answer the pointer is on unfolds it under its own row", when: func(a *app, q questionShown, width int) bool { return questionCarriesBlocks(q.question) }, @@ -135,9 +149,15 @@ func (a *app) questionViewOf(q questionShown, width int) questionView { // questionCarriesBlocks reports whether any answer brought something to look // at, or the question itself did. func questionCarriesBlocks(q session.Question) bool { - if len(q.Attach) > 0 { - return true - } + return len(q.Attach) > 0 || questionAnswersCarryBlocks(q) +} + +// questionAnswersCarryBlocks reports whether any ANSWER brought something to +// look at — the evidence that is different from one answer to the next, which is +// the only evidence a pane following the pointer has anything to show about. +// The question's own [session.Question.Attach] is about the whole decision and +// is the page's to draw ("what it showed you"). +func questionAnswersCarryBlocks(q session.Question) bool { for _, option := range q.Options { if len(option.Blocks) > 0 { return true diff --git a/internal/tui3/questiondemo.go b/internal/tui3/questiondemo.go index 3b318a4f5e..d1ff668099 100644 --- a/internal/tui3/questiondemo.go +++ b/internal/tui3/questiondemo.go @@ -76,7 +76,8 @@ func (a *app) openDemoQuestion(env func(string) string) { if !known { return } - a.raiseQuestionRoom(questionShown{question: build(), shown: a.now()}) + q := build() + a.raiseQuestionRoom(questionShown{question: q, shown: a.now(), pick: questionPointerStart(q)}) // THE SETTLE GUARD IS SPENT BEFORE THE FIRST FRAME on a fixture, and only on // a fixture. It exists to protect a person from a page that appeared under a // hand already moving; a page raised by the launch itself appeared under @@ -258,11 +259,17 @@ func demoQuestionLayout() session.Question { // OWN BUILDERS wherever there is one, so a fixture cannot drift from the thing // it is a picture of. var blockDemos = map[string]func() session.Question{ - "standing": demoStandingCard, - "harness-offer": demoHarnessOffer, - "design": demoHarnessDesign, - "connect": demoConnectOffer, - "connect-key": demoConnectKey, + // THE EVIDENCE ON THE PANEL (lane R): the page's own worked example and its + // layout case, raised onto the block instead of the page, so the list with + // the evidence beside it — and, narrower, unfolded under the pointer — can be + // seen without a model. + "evidence": demoQuestionReading, + "evidence-layout": demoQuestionLayout, + "standing": demoStandingCard, + "harness-offer": demoHarnessOffer, + "design": demoHarnessDesign, + "connect": demoConnectOffer, + "connect-key": demoConnectKey, } // demoStandingCard is the reminder a turn proposed: a choice with four answers diff --git a/internal/tui3/questionevidence.go b/internal/tui3/questionevidence.go new file mode 100644 index 0000000000..cda86e9b9e --- /dev/null +++ b/internal/tui3/questionevidence.go @@ -0,0 +1,173 @@ +package tui3 + +import ( + "strings" + + "github.com/Agent-Field/aforge-v2/internal/session" + "github.com/Agent-Field/aforge-v2/internal/tui2/tokens" +) + +// ── ONE ANSWER'S CASE, AND THE EVIDENCE IT BROUGHT ────────────────────────── +// +// A QUESTION IS A DECISION HANDED TO THE PERSON WITH ITS EVIDENCE ATTACHED +// (owner ruling 2026-09-09), and the evidence is per answer: what it means, what +// taking it leaves true, why the asker would take it, what would change its +// mind, how sure it is, and whatever it drew — a diagram, a diff, a table, a +// layout, a picture. The owner's picks of 2026-09-11 draw that evidence in three +// places: +// +// - beside the list, in a pane that follows the pointer (preview A, a panel at +// a hundred columns and wider, and page A, the page `o` opens); +// - under the answer the pointer is on (preview-narrow B, the same panel +// narrower than that, and the page on a narrow frame); +// - folded to one line under the pointer, on a panel whose answers brought +// nothing to look at (rec A: `already a dependency · fairly sure`). +// +// ALL THREE READ ONE ACCOUNT OF THE CASE ([questionCase]) AND DRAW BLOCKS +// THROUGH ONE RENDERER ([app.questionBlockRows]). The page used to spell the +// labelled lines itself and the panel spelled its one-line case itself, so the +// two disagreed about whether `would switch if` joined a model's `If you…` twice +// — which the page had fixed and the panel had not. + +// questionCaseLine is one labelled line of an answer's case: the word that says +// which line it is, and what the asker said. +type questionCaseLine struct { + label string + text string + // pick is true for the lines only the asker's own pick carries. The one-line + // fold under a panel's pointer says only those, because the answer's row is + // already carrying what it leaves true beside its word. + pick bool +} + +// questionConfidenceLabel labels how sure the asker is, on the rows that say +// each line's word in front of it. +const questionConfidenceLabel = "confidence · " + +// questionCase is one answer's case, in the order a person weighs it: what +// taking it leaves true, why the asker would take it, what would change its +// mind, and how sure it is. +// +// THE EMPTINESS LAW. A line with nothing the asker said is no line at all — +// never an empty one, never the word "unknown" — and the last three exist only +// on the answer the asker picked, because a reason is a reason FOR something. +func questionCase(q session.Question, at int) []questionCaseLine { + if at < 0 || at >= len(q.Options) { + return nil + } + out := make([]questionCaseLine, 0, 4) + if then := strings.TrimSpace(q.Options[at].Consequence); then != "" { + out = append(out, questionCaseLine{label: questionThenWord, text: then}) + } + if q.Pick == nil || strings.TrimSpace(q.Pick.Key) != questionOptionKeyAt(q, at) { + return out + } + if why := strings.TrimSpace(q.Pick.Reason); why != "" { + out = append(out, questionCaseLine{label: questionWhyWord, text: why, pick: true}) + } + if change := strings.TrimSpace(q.Pick.WouldChange); change != "" { + out = append(out, questionCaseLine{label: questionWouldSwitchWord, text: questionAfterIf(change), pick: true}) + } + if sure := questionConfidenceWord(q.Pick.Confidence); sure != "" { + out = append(out, questionCaseLine{label: questionConfidenceLabel, text: sure, pick: true}) + } + return out +} + +// questionPickCase is the asker's case for its pick on ONE line — rec A's fold +// under a panel's pointer: `survives a crash mid-write · fairly sure · would +// switch if …`. It is [questionCase]'s pick lines joined, with the one label a +// bare clause cannot do without. +func questionPickCase(q session.Question, key string) string { + at, ok := questionOptionAt(q, key) + if !ok { + return "" + } + parts := make([]string, 0, 3) + for _, line := range questionCase(q, at) { + switch { + case !line.pick: + case line.label == questionWouldSwitchWord: + parts = append(parts, line.label+line.text) + default: + parts = append(parts, line.text) + } + } + return strings.Join(parts, " · ") +} + +// questionEvidenceRows draws one answer's evidence at `width` cells: its word +// (where `head` asks for it — a pane beside the list has to say whose evidence +// it is, a fold under the answer's own row does not), what it means in the +// reading ink, the labelled case dim, and every block it brought, a blank row +// above each. +// +// THE `something else…` ROW HAS NO EVIDENCE, and draws none: it is the person's +// answer, and there is nothing the asker said about it. +func (a *app) questionEvidenceRows(q session.Question, at, width int, head bool) []string { + if at < 0 || at >= len(q.Options) || width <= 0 { + return nil + } + option := q.Options[at] + out := make([]string, 0, 12) + if head { + word := strings.TrimSpace(option.Label) + if word == "" { + word = questionOptionKeyAt(q, at) + } + for _, line := range wrap(word, width) { + out = append(out, a.pal.bold(a.pal.ink(line))) + } + } + // AN ANSWER WITH NO BODY DRAWS NO ROW FOR ONE. [wrap] answers an empty + // string with one empty line, which is right for a paragraph and wrong here, + // where it would be a blank row claiming the asker said something. + if body := strings.TrimSpace(option.Body); body != "" { + for _, line := range wrap(body, width) { + out = append(out, a.pal.ink(line)) + } + } + // EVERY DIM LINE SAYS WHICH LINE IT IS. Four grey sentences stacked in one + // column read as one grey paragraph nobody can tell apart (the owner, + // 2026-09-10: "the same line and next line in options look same"), so what + // an answer MEANS is ink and what it costs and why the asker would take it + // are dim AND labelled. + case_ := questionCase(q, at) + if len(case_) > 0 && len(out) > 0 { + out = append(out, "") + } + for _, line := range case_ { + for _, row := range wrap(line.label+line.text, width) { + out = append(out, a.pal.dim(row)) + } + } + for _, block := range option.Blocks { + if len(out) > 0 { + out = append(out, "") + } + out = append(out, a.questionBlockRows(block, 0, width)...) + } + return out +} + +// questionCut keeps at most `room` rows of evidence, and says how much it left +// out on the last row it keeps. +// +// A CUT IS SAID, NEVER SILENT: evidence that stops mid-diagram with nothing +// under it reads as a diagram that ends there. The foot names the count and +// the way to the rest — the page `o` opens, where the same evidence has the +// height of the frame. +func (a *app) questionCut(rows []string, room int, offer string) []string { + if room <= 0 || len(rows) <= room { + if room <= 0 { + return nil + } + return rows + } + kept := append([]string{}, rows[:room-1]...) + more := a.icon(tokens.GEllipsis) + " " + itoa(len(rows)-room+1) + questionMoreWord + if offer != "" { + more += questionKeyGap + offer + } + return append(kept, a.pal.dim(more)) +} diff --git a/internal/tui3/questionkeys.go b/internal/tui3/questionkeys.go index 9ac7b32169..de3800fb7a 100644 --- a/internal/tui3/questionkeys.go +++ b/internal/tui3/questionkeys.go @@ -192,6 +192,11 @@ const ( // reads ([questionAxes]). THE EMPTINESS LAW: `x` on a question with nothing // to compare would open a table with no rows in it. needCompare + // needBeside is a page drawn as two panes with the pointer on an answer and + // the arrows still the list's: `→` has a pane to move into. + needBeside + // needReading is the arrows handed to the evidence pane (`→`). + needReading // needScope is a question that offered more than one LIFETIME for its answer // and can be taken back (questionscope.go). A question with one lifetime has // nothing to cycle, and an irreversible one is asked every time. @@ -264,6 +269,12 @@ const ( // [questionWalkKey]'s reason: `shift+↑↓ order them` is one affordance. The // routing reads `shift+up` and `shift+down` individually. questionOrderKey = "shift+↑↓" + // questionDetailKey and questionAnswersKey are the page's two side arrows + // SPELLED ALONE, for [questionBackKey]'s reason: on a page of two panes `→` + // goes into the evidence and `←` comes back out, which are two different + // acts rather than one pair. The routing reads `right` and `left`. + questionDetailKey = "→" + questionAnswersKey = "←" ) // questionKeys IS THE TABLE. Order is the order the answers row prints them in, @@ -394,12 +405,18 @@ var questionKeys = []questionVerb{ // [needMoves] states: `pick` walks a cursor between two answers and `move it` // changes the answer itself, and the two are never true at once. {key: questionWalkKey, word: "move it", forms: formsCard | formsRoom, needs: needMoves, tier: keyPrimary}, - // INSIDE THE ROOM `o` OPENS AN ANSWER RATHER THAN THE PAGE, which is why it - // is a second row rather than a second word: `[o] open it` on a card is a - // promise about a page, and repeating that promise on the page itself would - // be an offer to go where somebody already is. It is the first thing a narrow - // row gives up, because every answer already wears its own ▸/▾. - {key: questionOpenKey, word: "open this answer", forms: formsRoom, needs: needOptions, giveUp: 9}, + // THE PAGE'S SIDEWAYS WALK (questionpage.go). `→` hands the arrows to the + // evidence beside the list, so a diagram taller than the page is read to its + // end; while they are the pane's, `↑↓` scroll it and `←` hands them back. + // They are rows of their own rather than second words on the walk for the + // reason [needMoves] states: `choose` moves a pointer and `scroll` moves a + // window, and a row that said one while the keys did the other is the defect + // a key row exists to prevent. `→` is offered only where there IS a pane + // beside the list — a page of one column unfolds the evidence under the + // pointer and has nothing to move into. + {key: questionDetailKey, word: "detail", forms: formsRoom, needs: needBeside, tier: keyPrimary, giveUp: 3}, + {key: questionWalkDownKey, word: "scroll", forms: formsRoom, needs: needReading, tier: keyPrimary}, + {key: questionAnswersKey, word: "back to the answers", forms: formsRoom, needs: needReading, tier: keyPrimary}, } // ── the one key row ───────────────────────────────────────────────────────── @@ -599,10 +616,14 @@ func (a *app) questionOffers(q questionShown, need questionNeed) bool { // EVERY QUESTION WITH ANSWERS HAS A POINTER AND ENTER TAKES IT // ([questionPointerStart]); a question with none written down offers // enter only when the asker recommended something. - if room := a.qroom; room != nil && room.head.token() == q.token() { - // THE ROOM'S ENTER SENDS WHAT THE ROOM HAS PICKED, and its foot - // says `nothing chosen yet` until something is; enter is offered - // there only when there is something for it to send. + if room := a.questionPageOf(q); room != nil { + // THE PAGE'S ENTER SENDS WHAT ITS FOOT SAYS ([app.questionRoomSends]), + // and is offered only where that is something. A shape is sent + // whole when it reads right, and says so in the foot instead. + if room.input.kind == session.InputNone { + keys, words := a.questionRoomSends() + return len(keys) > 0 || words != "" + } return len(room.picked) > 0 || (q.question.Pick != nil && strings.TrimSpace(q.question.Pick.Key) != "") } if q.question.Input.Kind == session.InputText { @@ -627,7 +648,19 @@ func (a *app) questionOffers(q questionShown, need questionNeed) bool { case needDial: return q.question.Kind != "" && q.question.Asker.Kind != session.AskerSurface && a.questionOffers(q, needHands) + case needBeside: + room := a.questionPageOf(q) + return room != nil && !room.reading && room.focus < len(q.question.Options) && + a.questionRoomBeside(a.bodyWidth()) + case needReading: + room := a.questionPageOf(q) + return room != nil && room.reading case needWalk: + // WHILE THE ARROWS ARE THE EVIDENCE PANE'S they scroll it, and the row + // that says so is [needReading]'s. + if room := a.questionPageOf(q); room != nil && room.reading { + return false + } // Every question with answers has the pointer ([questionPointerStart]); // a checklist walks its own ticks with the same keys and says so on // its `next row` line instead, and where `←→` move a hole @@ -686,6 +719,16 @@ func (a *app) questionOffers(q questionShown, need questionNeed) bool { return true } +// questionPageOf is the page, where the page is open over THIS question, and nil +// everywhere else — a condition about the page's pointer is a condition about +// no other drawing of the question. +func (a *app) questionPageOf(q questionShown) *questionRoom { + if room := a.qroom; room != nil && room.head.token() == q.token() { + return room + } + return nil +} + // questionHandsOnly reports whether this is a decision NOBODY BUT A PERSON MAY // EVER MAKE. // diff --git a/internal/tui3/questionpage.go b/internal/tui3/questionpage.go new file mode 100644 index 0000000000..4d91a3c0c2 --- /dev/null +++ b/internal/tui3/questionpage.go @@ -0,0 +1,645 @@ +package tui3 + +import ( + "strings" + + tea "charm.land/bubbletea/v2" + "github.com/charmbracelet/x/ansi" + + "github.com/Agent-Field/aforge-v2/internal/session" + "github.com/Agent-Field/aforge-v2/internal/tui2/tokens" +) + +// ── THE PAGE, DRAWN ───────────────────────────────────────────────────────── +// +// `o` OPENS THE QUESTION AS TWO PANES (owner ruling 2026-09-11, page pick A): +// the question and its reason across the top, the answers in a list on the left +// with what the asker showed for the whole decision under them, and the evidence +// of the answer the pointer is on in a pane on the right — its word, what it +// means, what taking it leaves true, why the asker would take it, what would +// change its mind, how sure it is, and everything it drew. +// +// ? Which storage for the session index? model asks · the turn waits on it +// The index needs somewhere to live between launches. +// +// ────────────────────────────────────────┬─────────────────────────────────────────── +// ▸ 1 SQLite ◆ recommended │ SQLite +// 2 JSONL │ one file beside the conversation +// 3 BoltDB │ +// 4 something else… │ then · the index survives a crash mid-write +// │ why this one · already a dependency +// what it showed you │ would switch if you need it greppable by hand +// store.go:88-120 the current index │ confidence · fairly sure +// │ +// │ schema +// │ sessions(id, title, updated) +// ────────────────────────────────────────┴─── answering 1 SQLite ───────────────────── +// ↑↓ choose · enter take it · esc later · → detail c change · x compare · ? ask back +// +// IT REPLACED A PAGE OF FOLDING SECTIONS, and the reason is the thing a person +// does on this page: WEIGH one answer against the next. The old page stacked +// every open answer's paragraph, asides, diagrams and notes one under another +// in a single column, so the second answer's evidence was below the first's +// and comparing them meant scrolling between two places that could not both be +// on screen. With the list fixed on the left and the evidence following the +// pointer on the right, `↓` IS the comparison: the pane changes under the eye +// and nothing else moves. +// +// NARROWER THAN TWO PANES ([besideFits]) IT IS ONE COLUMN, the panel's own +// preview-narrow shape: every answer a row, and the one the pointer is on +// unfolded under its row. The compare table (`x`) and an answer that is a SHAPE +// — holes, a checklist, a run of pairs, a dial — take the column at any width: +// the table lays every answer against every other and needs the whole of it, +// and a shape has no evidence per row to put beside it. +// +// ── TWO WINDOWS, AND THE POINTER IS ALWAYS IN ONE OF THEM ── +// +// The head is pinned; under the rule, the list (or the one column) and the +// evidence pane each keep an offset of their own. The list's window follows the +// pointer ([app.questionRoomShowFocus]) — the answer a person walked to is on +// screen, always — and the evidence pane starts at its top every time the +// pointer moves, because what it shows has just changed. `→` hands the arrows to +// the pane so a long diagram can be read to its end, `←` hands them back, and the +// wheel scrolls whichever pane it is over. + +// questionPageOtherWord is what the evidence pane says while the pointer is on +// `something else…`: the page's box is the message box below it, so the row is +// not a box of its own the way the panel's is ([app.questionPanelOther]), and the +// pane says where the words go. +const questionPageOtherWord = "type your own answer in the box below, then enter" + +// questionSpot is what a press on one row of the page reaches: which answer, +// and the columns it answers in. A row that reaches nothing is at -1. +type questionSpot struct { + at int + from, to int +} + +// questionPageLayout is the page laid out at one size, before either window is +// applied: the pinned head, where the seam falls, the left pane (or the one +// column) with the answer each of its rows presses, and the evidence pane. +type questionPageLayout struct { + head []string + // seam is the column the two panes meet at, or -1 for one column. + seam int + list []string + listAt []int + pane []string + // region is how many rows the two windows have under the rule. + region int +} + +// questionRoomBeside reports whether the page lays its answers beside the +// evidence of the one the pointer is on, or in one column. +func (a *app) questionRoomBeside(width int) bool { + room := a.qroom + return room != nil && besideFits(width) && !room.compare && + room.input.kind == session.InputNone && len(room.head.question.Options) > 0 +} + +// questionRoomTakesOther reports whether the page's list ends in `something +// else…`: exactly where the panel's does ([app.questionTakesOther]), so the list +// a person opened is the list they were looking at. +func (a *app) questionRoomTakesOther() bool { + room := a.qroom + return room != nil && room.input.kind == session.InputNone && a.questionTakesOther(room.head) +} + +// questionRoomWalk is how many rows the page's pointer walks. +func (a *app) questionRoomWalk() int { + room := a.qroom + if room == nil { + return 0 + } + if room.input.kind != session.InputNone { + return room.input.count() + } + n := len(room.head.question.Options) + if a.questionRoomTakesOther() { + n++ + } + return n +} + +// questionRoomShown is the question as the page's pointer sees it: the object +// the block holds, with the pointer standing where the page's does, so one +// answer row is painted by one painter wherever it is drawn +// ([app.questionPanelOption]). +func (a *app) questionRoomShown() questionShown { + shown := a.qroom.head + shown.pick = a.qroom.focus + return shown +} + +// questionRoomLay lays the page out at one size. +func (a *app) questionRoomLay(width, height int) questionPageLayout { + lay := questionPageLayout{seam: -1} + lay.head = a.questionPageHead(width) + lay.region = max(height-len(lay.head)-1, 0) + if !a.questionRoomBeside(width) { + lay.list, lay.listAt = a.questionPageColumn(width) + return lay + } + left, right := besideSplit(width, a.questionPageListWant(width)) + lay.seam = left + lay.list, lay.listAt = a.questionPageList(left) + lay.pane = a.questionPagePane(right) + return lay +} + +// questionRoomView is the body region at one size: exactly the rows it draws, +// and for each of them what a press on it reaches. +func (a *app) questionRoomView(width, height int) []row { + room := a.qroom + if room == nil || width <= 0 || height <= 0 { + return nil + } + if a.questionDrainReplies() { + room.dirty = true + } + if !room.dirty && room.width == width && room.height == height && room.rows != nil { + return room.rows + } + lay := a.questionRoomLay(width, height) + out := make([]row, 0, height) + spots := make([]questionSpot, 0, height) + add := func(text string, spot questionSpot) { + if len(out) < height { + out = append(out, row{text: text, entry: -1}) + spots = append(spots, spot) + } + } + none := questionSpot{at: -1} + for _, line := range lay.head { + add(line, none) + } + add(besideRule(a.pal, width, lay.seam, tokens.GFrameTeeDown, ""), none) + from := questionWindowStart(room.offset, len(lay.list), lay.region) + list := lay.list[from:min(from+lay.region, len(lay.list))] + listAt := lay.listAt[from:min(from+lay.region, len(lay.listAt))] + if lay.seam < 0 { + for i, line := range list { + add(line, questionSpot{at: listAt[i], from: 0, to: width}) + } + } else { + // BOTH PANES FILL THE REGION, so the seam runs unbroken from the rule + // above to the rule in the foot below, and the page is one object split + // in two rather than two lists that happen to be near each other. + detail := questionWindowStart(room.detail, len(lay.pane), lay.region) + pane := lay.pane[detail:min(detail+lay.region, len(lay.pane))] + for i, line := range besides(a.pal, questionPadTo(list, lay.region), pane, lay.seam, width) { + spot := none + if i < len(listAt) { + spot = questionSpot{at: listAt[i], from: 0, to: lay.seam} + } + add(line, spot) + } + } + room.rows, room.spots, room.width, room.height, room.dirty = out, spots, width, height, false + room.seam = lay.seam + return out +} + +// questionWindowStart clamps a window's offset to the rows it is over, so a +// window never opens past its own end. +func questionWindowStart(offset, total, height int) int { + return questionClamp(offset, 0, max(total-height, 0)) +} + +// questionPadTo pads a column with blank rows to `n`. +func questionPadTo(rows []string, n int) []string { + for len(rows) < n { + rows = append(rows, "") + } + return rows +} + +// questionPageHead is what stands above the rule: the question with its mark +// and — at the right — who is asking and what is waiting on it, the asker's +// reason under it, and one blank row. The row of air above the head is the +// frame's own, under the tabs. +// +// THE FOUR FACTS DESIGN.md WRITES FOR THIS PAGE ARE ALL HERE: asked by · why now · +// what is paused on it · what goes on without it ([questionBlockingWord] carries +// the last two). The emptiness law governs each of them. +func (a *app) questionPageHead(width int) []string { + q := a.qroom.head.question + inner := max(width-2*len(questionIndent), 1) + aside := questionPageAside(q) + asideW := ansi.StringWidth(aside) + out := make([]string, 0, 6) + lines := wrap(strings.TrimSpace(q.Head), max(inner-2, 1)) + // The aside stands beside the head where the head is one line with room + // left for it, and on a dim row of its own under the reason where it is not + // — the head is never cut to make room for its own attribution. + beside := aside != "" && len(lines) == 1 && ansi.StringWidth(lines[0])+2+2+asideW <= inner + for i, line := range lines { + lead := " " + if i == 0 { + lead = a.pal.warnBold(a.icon(tokens.GNeedsHuman)) + " " + } + text := questionIndent + lead + a.pal.ink(line) + if i == 0 && beside { + text = questionRightAlign(text, a.pal.dim(aside), width-len(questionIndent)) + } + out = append(out, text) + } + if reason := strings.TrimSpace(q.Reason); reason != "" { + for _, line := range wrap(reason, inner) { + out = append(out, questionIndent+a.pal.dim(line)) + } + } + if aside != "" && !beside { + for _, line := range wrap(aside, inner) { + out = append(out, questionIndent+a.pal.dim(line)) + } + } + return append(out, "") +} + +// questionPageAside is the head's attribution: who is asking, as a verb, and +// what is stopped on the answer and what is not. +func questionPageAside(q session.Question) string { + parts := make([]string, 0, 2) + if asker := questionAskerWord(q.Asker); asker != "" { + parts = append(parts, asker+questionAsksWord) + } + if blocking := questionBlockingWord(q.Blocking); blocking != "" { + parts = append(parts, blocking) + } + return strings.Join(parts, questionSep) +} + +// questionRightAlign puts an aside at the right edge of a row, or leaves the row +// alone where there is no room for it. It measures the PAINTED strings, because +// that is what the terminal draws. +func questionRightAlign(left, right string, width int) string { + gap := width - ansi.StringWidth(left) - ansi.StringWidth(right) + if gap < 2 { + return left + } + return left + strings.Repeat(" ", gap) + right +} + +// questionPageListWant is how wide the left pane would like to be: its widest +// answer row, or the widest thing the asker showed for the whole decision. +// [besideSplit] holds it to half the page. +func (a *app) questionPageListWant(width int) int { + q := a.qroom.head.question + room := max(width/2, 1) + lead := questionPanelLead(q, room) + gutter := len(questionPanelGap) + len(questionPanelGap) + // Every answer's word stands in one column as wide as the widest of them + // ([app.questionPanelRow]'s pad), and the pick's mark with its word stands + // at the right edge of the list — so the list asks for both together. + words := 0 + for _, option := range q.Options { + words = max(words, ansi.StringWidth(strings.TrimSpace(option.Label))) + } + want := gutter + lead + words + len(questionPanelGap) + if q.Pick != nil { + want += 2 + ansi.StringWidth(a.icon(tokens.GRecommended)+" "+questionRecommendedWord) + 2 + } + if a.questionRoomTakesOther() { + want = max(want, gutter+lead+ansi.StringWidth(questionPanelOtherWord)+len(questionPanelGap)) + } + for _, block := range q.Attach { + want = max(want, len(questionIndent)+questionBlockWant(block)+1) + } + return want +} + +// questionBlockWant is how wide a block would like to be drawn: its widest +// line, for the kinds whose lines are the drawing. Prose wraps to whatever it +// is given, so it asks for nothing. +func questionBlockWant(block session.Block) int { + widest := ansi.StringWidth(strings.TrimSpace(block.Title)) + switch block.Kind { + case session.BlockDiagram, session.BlockDiff: + for _, line := range strings.Split(block.Body, "\n") { + widest = max(widest, ansi.StringWidth(expandTabs(line))) + } + case session.BlockTable: + for _, row := range block.Rows { + w := 0 + for _, cell := range row { + w += ansi.StringWidth(strings.TrimSpace(cell)) + 2 + } + widest = max(widest, w) + } + case session.BlockLayout: + w := 0 + for _, pane := range block.Rows { + w += questionPaneWidest(pane) + 1 + } + widest = max(widest, w) + } + return widest +} + +// questionPageList is the left pane: the answers, then what the asker showed for +// the whole decision under its one dim title. +// +// THE ROWS ARE THE PANEL'S OWN ([app.questionPanelOption]), so the list a person +// opened the page from and the list on the page are one list drawn twice: the +// same pointer, the same key, the same word, the same `◆ recommended`. +func (a *app) questionPageList(left int) ([]string, []int) { + room := a.qroom + q := a.questionRoomShown() + inner := max(left-len(questionPanelGap), 1) + listRoom := max(inner-2*len(questionPanelGap), 1) + pad := 0 + for _, option := range q.question.Options { + if w := ansi.StringWidth(strings.TrimSpace(option.Label)); w <= listRoom/2 { + pad = max(pad, w) + } + } + out := make([]string, 0, len(q.question.Options)+8) + at := make([]int, 0, cap(out)) + for i, option := range q.question.Options { + for _, line := range a.questionPanelOption(q, i, option, pad, listRoom, questionBeside) { + out, at = append(out, questionPanelGap+line), append(at, i) + } + } + if a.questionRoomTakesOther() { + other := questionOtherAt(q.question) + focused := room.focus == other + for _, line := range a.questionPanelRow(q, itoa(other+1), "", questionPanelOtherWord, + "", "", pad, listRoom, focused, a.questionHovering(other)) { + out, at = append(out, questionPanelGap+line), append(at, other) + } + } + for _, line := range a.questionPageAttach(left) { + out, at = append(out, line), append(at, -1) + } + return out, at +} + +// questionPageAttach is what the asker showed for the WHOLE decision, as opposed +// to what hangs off one answer: one dim title, and the blocks under it. +// +// IT IS UNDER THE LIST AND NOT IN THE PANE, because the pane changes with the +// pointer and this does not — it is the same evidence whichever answer is being +// weighed, so it stands with the thing that stays still. +func (a *app) questionPageAttach(width int) []string { + room := a.qroom + if room == nil || len(room.head.question.Attach) == 0 { + return nil + } + inner := max(width-len(questionIndent), 1) + out := []string{"", questionIndent + a.pal.dim(fit(questionAttachWord, inner))} + for i, block := range room.head.question.Attach { + if i > 0 { + out = append(out, "") + } + out = append(out, a.questionBlockRows(block, len(questionIndent), width)...) + } + return out +} + +// questionPagePane is the right pane: the evidence of the answer the pointer is +// on, and the person's own notes on it — the comment `c` wrote and the one +// thing `?` asked. +func (a *app) questionPagePane(width int) []string { + room := a.qroom + inner := max(width-2*len(questionPanelGap), 1) + q := room.head.question + var rows []string + if room.focus >= len(q.Options) { + rows = []string{a.pal.dim(fit(questionPageOtherWord, inner))} + } else { + rows = a.questionEvidenceRows(q, room.focus, inner, true) + if notes := a.questionNoteRows(questionOptionKeyAt(q, room.focus), 0, inner); len(notes) > 0 { + rows = append(append(rows, ""), notes...) + } + } + out := make([]string, 0, len(rows)) + for _, line := range rows { + out = append(out, questionPanelGap+line) + } + return out +} + +// questionPageColumn is the page as one column: the compare table, a shape, or +// the answers with the one the pointer is on unfolded under its row, and what +// the asker showed for the whole decision after them. +func (a *app) questionPageColumn(width int) ([]string, []int) { + room := a.qroom + out := make([]string, 0, 32) + at := make([]int, 0, 32) + prose := func(lines []string) { + for _, line := range lines { + out, at = append(out, line), append(at, -1) + } + } + switch { + case room.compare: + prose(a.questionCompareRows(width)) + return out, at + case room.input.kind != session.InputNone: + // A STRUCTURED INPUT REPLACES THE ANSWERS AND NEVER SITS UNDER THEM. + // DESIGN.md's ladder puts structured input one rung BELOW the question — + // blanks, a checklist, this-or-this, a dial are the answer itself, not a + // garnish on a list of answers. + prose(a.questionInputRows(width)) + prose(a.questionPageAttach(width)) + return out, at + } + q := a.questionRoomShown() + inner := max(width-len(questionPanelGap), 1) + listRoom := max(inner-2*len(questionPanelGap), 1) + pad := 0 + for _, option := range q.question.Options { + if w := ansi.StringWidth(strings.TrimSpace(option.Label)); w <= listRoom/2 { + pad = max(pad, w) + } + } + lead := len(questionPanelGap) + questionPanelLead(q.question, listRoom) + indent := strings.Repeat(" ", lead) + for i, option := range q.question.Options { + for _, line := range a.questionPanelOption(q, i, option, pad, listRoom, questionRowOnly) { + out, at = append(out, questionPanelGap+line), append(at, i) + } + if i != room.focus { + continue + } + // UNDER THE POINTER, THE WHOLE OF IT: the evidence the pane would show, + // less the word its own row is carrying — and, here only, the person's + // own notes on it. The evidence is prose and pictures, so its rows press + // nothing. + under := a.questionEvidenceRows(q.question, i, max(width-lead-1, 8), false) + under = append(under, a.questionNoteRows(questionOptionKeyAt(q.question, i), 0, max(width-lead-1, 8))...) + for _, line := range under { + out, at = append(out, indent+line), append(at, -1) + } + if len(under) > 0 { + out, at = append(out, ""), append(at, -1) + } + } + if a.questionRoomTakesOther() { + other := questionOtherAt(q.question) + for _, line := range a.questionPanelRow(q, itoa(other+1), "", questionPanelOtherWord, + "", "", pad, listRoom, room.focus == other, a.questionHovering(other)) { + out, at = append(out, questionPanelGap+line), append(at, other) + } + if room.focus == other { + out, at = append(out, indent+a.pal.dim(fit(questionPageOtherWord, max(width-lead, 1)))), append(at, -1) + } + } + prose(a.questionPageAttach(width)) + return out, at +} + +// ───────────────────────────────────────────────────────────────────────────── +// The geometry, on room.go's own terms. + +// questionRoomWindow is the page's body region. It is exactly `height` rows +// where the page has two panes, whose seam runs to the foot; one column hangs +// from the top with the slack below it, exactly as a short conversation does. +func (a *app) questionRoomWindow(width, height int) ([]row, int) { + if height <= 0 { + return nil, 0 + } + rows := a.questionRoomView(width, height) + return rows, max(height-len(rows), 0) +} + +// questionRoomRows is the body region at the frame's own height. +func (a *app) questionRoomRows(width int) []row { + return a.questionRoomView(width, a.viewHeight()) +} + +// questionRoomShowFocus KEEPS THE ANSWER THE POINTER IS ON IN VIEW, and it is the +// one place the list's window is moved for anything other than the wheel. +// +// An arrow that walks the pointer below the fold with nothing moving on screen +// is a key that reads as doing nothing (lane F measured it on the old page, where +// the window was moved only by the wheel). It scrolls the LEAST it can: a row +// already on screen does not move, and one off it is brought just inside the +// edge it left by — the reading position a person built is kept, not +// re-anchored under them. +// +// AND THE EVIDENCE PANE STARTS AT ITS TOP, because the pointer moving is the +// pane's content changing: an offset kept from the last answer's diagram would +// open the next answer's evidence halfway down. +func (a *app) questionRoomShowFocus() { + room := a.qroom + height := a.viewHeight() + if room == nil || height <= 0 { + return + } + room.detail, room.dirty = 0, true + lay := a.questionRoomLay(a.bodyWidth(), height) + first, last := -1, -1 + for i, of := range lay.listAt { + if of != room.focus { + continue + } + if first < 0 { + first = i + } + last = i + } + if first < 0 { + return + } + // In one column the answer's unfolded evidence is part of its reading: it + // is kept in view with its row where it fits, and the row wins where it + // does not. + if lay.seam < 0 { + for i := last + 1; i < len(lay.listAt) && lay.listAt[i] < 0 && i-first < lay.region; i++ { + if strings.TrimSpace(ansi.Strip(lay.list[i])) == "" && i+1 < len(lay.listAt) && lay.listAt[i+1] >= 0 { + break + } + last = i + } + } + offset := questionWindowStart(room.offset, len(lay.list), lay.region) + switch { + case first < offset: + offset = first + case last >= offset+lay.region: + offset = min(last-lay.region+1, first) + } + room.offset = questionWindowStart(offset, len(lay.list), lay.region) +} + +// questionRoomSpotAt is which answer a pointer at (x, y) reaches, and false +// where it reaches none. +// +// IT IS ASKED ABOUT THE COLUMN AS WELL AS THE ROW, because the page has two +// panes on one row: a press on the left of the seam is an answer's row, and a +// press on the right is the evidence beside it — prose and pictures, which have +// no gesture on this surface (app.go's [app.press]). A click aimed at a diagram +// that answered the question would be the worst press on the page. +func (a *app) questionRoomSpotAt(x, y int) (int, bool) { + room := a.qroom + top := a.bodyTop() + if room == nil || top < 0 { + return 0, false + } + a.questionRoomRows(a.bodyWidth()) + at := y - top + if at < 0 || at >= len(room.spots) { + return 0, false + } + spot := room.spots[at] + if spot.at < 0 || x < spot.from || x >= spot.to { + return 0, false + } + return spot.at, true +} + +// questionRoomPress resolves a click on the page and reports whether it took +// one. +// +// ONE PRESS MOVES ONTO AN ANSWER AND THE NEXT ONE TAKES IT, which is the only +// shape that can be both discoverable and safe. The first press puts the pointer +// on that answer — the same thing `↓` does, and the pane beside it shows that +// answer's evidence — and a press on the answer the pointer is already standing +// on is `enter`. A page where the first click answered would answer a question +// with evidence somebody had not read yet. +// +// A PRESS ANYWHERE ELSE FALLS THROUGH AND DOES NOTHING ([app.questionRoomSpotAt]). +func (a *app) questionRoomPress(x, y int) (tea.Cmd, bool) { + room := a.qroom + if room == nil { + return nil, false + } + // THE SETTLE GUARD IS THE POINTER'S TOO. A click that arrived less than + // [questionSettle] after the page was drawn was aimed at whatever was on + // screen before it, and a mouse is no better at stopping than a hand is. + if a.now().Sub(room.shown) < questionSettle { + return nil, true + } + at, ok := a.questionRoomSpotAt(x, y) + if !ok { + return nil, false + } + if at != room.focus { + room.focus, room.reading = at, false + a.questionRoomShowFocus() + a.questionRoomTouched() + return nil, true + } + a.questionRoomTouched() + return a.questionRoomEnter(), true +} + +// questionRoomScroll moves one of the page's two windows: the evidence pane +// where the pointer is over it, and the list (or the one column) everywhere +// else. +func (a *app) questionRoomScroll(x, delta int) { + room := a.qroom + if room == nil { + return + } + width, height := a.bodyWidth(), a.viewHeight() + lay := a.questionRoomLay(width, height) + if lay.seam >= 0 && x > lay.seam { + room.detail = questionWindowStart(room.detail+delta, len(lay.pane), lay.region) + } else { + room.offset = questionWindowStart(room.offset+delta, len(lay.list), lay.region) + } + a.questionRoomTouched() +} diff --git a/internal/tui3/questionpanel.go b/internal/tui3/questionpanel.go index d5d04de269..9a03cb5ca2 100644 --- a/internal/tui3/questionpanel.go +++ b/internal/tui3/questionpanel.go @@ -81,7 +81,7 @@ func (a *app) questionPanelRows(q questionShown, width int) []string { } first := len(a.questionBands) title, headRows := a.questionPanelHead(q, width, inner) - rows := append(headRows, a.questionPanelBody(q, inner)...) + rows := append(headRows, a.questionPanelEvidenced(q, width, inner, len(headRows))...) keys := a.questionAnswerKeys(q, formsCard) keyRow := a.questionKeyRow(q, questionKeysOnTier(keys, keyPrimary), frameEdgeRoom(width)) if q.writing != "" { @@ -140,6 +140,127 @@ func (a *app) questionPanelBeat(q questionShown, width, inner int) []string { return out } +// questionPanelEvidenced is the panel's body where its answers brought +// something to look at, and the ordinary body where they did not. +// +// THE CHOOSER HAS ALREADY DECIDED WHICH (questionchooser.go): at a width with +// room for two panes the answers stand in a list with the evidence of the one +// the pointer is on beside them ([viewSplit], preview pick A); narrower, the +// answer the pointer is on unfolds its evidence under its own row +// (preview-narrow pick B). Either way the evidence is given the rows that keep +// the panel inside [app.questionPanelTall], and a cut is said on its last row. +func (a *app) questionPanelEvidenced(q questionShown, width, inner, headRows int) []string { + if !questionAnswersCarryBlocks(q.question) { + return a.questionPanelBody(q, inner) + } + // The rows the panel spends that are not evidence: its two edges, the + // second tier of keys under it, and the head where it would not fit the edge. + spent := headRows + questionPanelFrameRows + if a.questionViewOf(q, width) == viewSplit { + return a.questionPanelSplit(q, inner, spent) + } + // MEASURED, NOT GUESSED: the body is laid once with no evidence under the + // pointer, which is exactly the rows the answers themselves take, and what + // is left of the panel's height is what the evidence may have. + first := len(a.questionBands) + bare := a.questionPanelBodyIn(q, inner, 0) + a.questionBands = a.questionBands[:first] + return a.questionPanelBodyIn(q, inner, max(a.questionPanelTall()-spent-len(bare), 1)) +} + +// questionPanelFrameRows is how many rows a panel draws around its body: the top +// edge, the bottom edge, and the one dim row of keys under the frame. +const questionPanelFrameRows = 3 + +// questionPanelTall is the most rows a panel may take above the box. +// +// HALF THE FRAME, AND THE REASON IS THE CONVERSATION. A question is about the +// work above it, so it never takes more of the screen than that work keeps: a +// panel taller than half the frame is a panel that has pushed the thing it is +// asking about off the screen. What does not fit is cut with its count and the +// way to the rest (`o open full`), where the page has the whole frame. +func (a *app) questionPanelTall() int { + _, height := a.size() + return height / 2 +} + +// questionPanelSplit is the body laid out as two panes: the answers in a list on +// the left, the evidence of the one the pointer is on at the right. +// +// │ │ │ +// │ ▸ 1 Stacked ◆ recommended │ Stacked │ +// │ 2 Marks only │ every name stays visible │ +// │ 3 Hidden behind a key │ │ +// │ 4 something else… │ then · costs three rows of transcript │ +// +// THE LIST CARRIES ONLY WHAT TELLS THE ANSWERS APART AT A GLANCE — the pointer, +// the key, the word and the pick's mark. What an answer leaves true moves into +// the pane, labelled, because the pane is where the pointer is already saying +// "this one"; drawn on the row as well, it would be said twice on one screen. +func (a *app) questionPanelSplit(q questionShown, inner, spent int) []string { + rows := make([]string, 0, len(q.question.Options)+8) + room := max(inner-2*len(questionPanelGap), 1) + rows = append(rows, a.questionPanelContext(q, room)...) + top := len(rows) + lead := questionPanelLead(q.question, room) + // The list is as wide as its widest row needs: the lead, the word, and the + // pick's mark with its word at the right. + pad, want := 0, 0 + for _, option := range q.question.Options { + pad = max(pad, ansi.StringWidth(strings.TrimSpace(option.Label))) + } + want = len(questionPanelGap) + lead + pad + 2 + ansi.StringWidth(questionRecommendedWord) + 2 + len(questionPanelGap) + if a.questionTakesOther(q) { + want = max(want, len(questionPanelGap)+lead+ansi.StringWidth(questionPanelOtherWord)+len(questionPanelGap)) + } + left, right := besideSplit(inner, want) + listRoom := max(left-2*len(questionPanelGap), 1) + pad = min(pad, listRoom/2) + list := []string{""} + band := func(at int) { + // A PRESS ON THE LIST PRESSES AN ANSWER, AND A PRESS ON THE EVIDENCE + // PRESSES NOTHING: the pane is prose and pictures, and a click aimed at + // a diagram that answered the question would be the worst press on this + // surface. The span is the frame's side and the list's own cells. + a.questionBands = append(a.questionBands, questionBand{ + row: top + len(list), span: hudSpan{from: 0, to: left + 1}, at: at, + }) + } + for i, option := range q.question.Options { + for _, line := range a.questionPanelOption(q, i, option, pad, listRoom, questionBeside) { + band(i) + list = append(list, line) + } + } + if a.questionTakesOther(q) { + other := questionOtherAt(q.question) + for _, line := range a.questionPanelOther(q, pad, listRoom) { + band(other) + list = append(list, line) + } + } + if row := a.questionScopeRow(q, listRoom); row != "" { + list = append(list, "", row) + } + list = append(list, "") + evidence := a.questionEvidenceRows(q.question, q.pick, max(right-2*len(questionPanelGap), 1), true) + fits := max(len(list)-1, a.questionPanelTall()-spent-len(rows)-1) + pane := []string{""} + for _, line := range a.questionCut(evidence, fits, a.questionOpenFullWord()) { + pane = append(pane, questionPanelGap+line) + } + for i := range list { + list[i] = questionPanelGap + list[i] + } + return append(rows, besides(a.pal, list, pane, left, inner)...) +} + +// questionOpenFullWord is the way to the rest of a cut, spelled from the key +// table so the offer and the key cannot drift apart. +func (a *app) questionOpenFullWord() string { + return questionKeySpelling(questionOpenKey) + " " + questionKeyWord(questionOpenKey) +} + // questionPanelBody is the panel WITHOUT its frame: the rows a person reads and // presses, laid out at `inner` cells. // @@ -151,6 +272,13 @@ func (a *app) questionPanelBeat(q questionShown, width, inner int) []string { // one failure a key row exists to prevent. The pane draws this and names its own // keys (homeexchange.go's [exchangeHint]). func (a *app) questionPanelBody(q questionShown, inner int) []string { + return a.questionPanelBodyIn(q, inner, -1) +} + +// questionPanelBodyIn is [app.questionPanelBody] with the rows the evidence +// under the pointer may take, where the answers brought any; below zero is no +// bound, which is the errand pane's and the task record's own scrolling column. +func (a *app) questionPanelBodyIn(q questionShown, inner, evidence int) []string { room := max(inner-2*len(questionPanelGap), 1) rows := make([]string, 0, len(q.question.Options)+6) // THE FIRST ROWS ARE WHAT HAS TO BE READ BEFORE ANSWERING — the command a @@ -177,7 +305,8 @@ func (a *app) questionPanelBody(q questionShown, inner int) []string { } } for i, option := range q.question.Options { - for _, line := range a.questionPanelOption(q, i, option, pad, room) { + under := questionUnder(evidence) + for _, line := range a.questionPanelOption(q, i, option, pad, room, under) { // EVERY ROW AN ANSWER TAKES PRESSES THAT ANSWER, which is the sheet's // own bargain applied here: an answer whose words wrapped is not a // target that shrinks to its first line. @@ -386,9 +515,28 @@ func (a *app) questionPanelAside(q questionShown, width int) string { // `model`. const questionAsksWord = " asks" +// questionUnder is how much an answer's rows carry under the pointer, which is +// decided by where the question's evidence is drawn. +type questionUnder int + +const ( + // questionBeside is a list whose evidence stands in a pane beside it: the row + // is the answer's word and its marks, and nothing the pane already says. + questionBeside questionUnder = -2 + // questionUnbounded unfolds the evidence under the pointer with no bound, for + // a column that scrolls on its own. + questionUnbounded questionUnder = -1 + // questionRowOnly is the answer's row with what it leaves true beside its + // word and nothing under it: the page's one column, which unfolds the + // evidence under the pointer itself, with the person's own notes beside it. + questionRowOnly questionUnder = -3 +) + // questionPanelOption is one answer's rows: the row itself, and — only while the -// pointer is on it — what the asker said about it. -func (a *app) questionPanelOption(q questionShown, at int, option session.AnswerOption, pad, room int) []string { +// pointer is on it — what the asker said about it. `under` is how many rows of +// evidence may stand under the pointer on a question whose answers brought some, +// or one of the two shapes above. +func (a *app) questionPanelOption(q questionShown, at int, option session.AnswerOption, pad, room int, under questionUnder) []string { key := questionOptionKeyAt(q.question, at) focused := at == q.pick picked := q.question.Pick != nil && strings.TrimSpace(q.question.Pick.Key) == key @@ -397,6 +545,14 @@ func (a *app) questionPanelOption(q questionShown, at int, option session.Answer word = key } say := strings.TrimSpace(option.Consequence) + if under == questionBeside || (focused && questionUnfolds(q.question, under)) { + // WHAT TAKING IT LEAVES TRUE MOVES INTO THE EVIDENCE, as its first + // labelled line (`then ·`), wherever the evidence is drawn for this + // answer — beside the list, or unfolded under this row (preview-narrow + // pick B). Said on the row as well, it would be said twice, and cut the + // first time. + say = "" + } // A CHECKLIST'S ROWS CARRY THEIR TICKS in a cell of their own between the // key and the word, so the digit that toggles a row is still on it and the // pointer still says where `space` lands — the old card let a tick stand in @@ -421,7 +577,7 @@ func (a *app) questionPanelOption(q questionShown, at int, option session.Answer aside = a.pal.dim(questionSafeWord) } rows := a.questionPanelRow(q, key, tick, word, say, aside, pad, room, focused, a.questionHovering(at)) - if !focused { + if !focused || under == questionBeside || under == questionRowOnly { return rows } // UNDER THE POINTER, AND ONLY THERE: what this answer means, and — where it @@ -430,7 +586,7 @@ func (a *app) questionPanelOption(q questionShown, at int, option session.Answer // and the pointer is the person saying which one they are weighing. lead := questionPanelLead(q.question, room) indent := questionPanelGap + strings.Repeat(" ", lead-len(questionPanelGap)) - for _, line := range a.questionPanelUnder(q, at, option, room-lead) { + for _, line := range a.questionPanelUnder(q, at, option, room-lead, under) { rows = append(rows, indent+line) } return rows @@ -440,6 +596,11 @@ func (a *app) questionPanelOption(q questionShown, at int, option session.Answer // the pointer's own kind as well as the derived index, so a stale index cannot // light a row on a frame where the pointer is somewhere else entirely. func (a *app) questionHovering(at int) bool { + if a.qroom != nil { + // THE PAGE'S ROWS ARE THE PANEL'S ROWS (questionpage.go), and the + // pointer over one of them is resolved by the page's own hit-test. + return a.hoveringQuestionOption(at) + } return a.hot.kind == hoverChoices && a.hotAnswer == at } @@ -562,9 +723,34 @@ func (a *app) questionPanelRow(q questionShown, key, tick, word, say, aside stri return out } +// questionUnfolds reports whether the answer the pointer is on unfolds its whole +// evidence under its row: on the page's one column always, and on a panel +// whose answers brought something to look at. +func questionUnfolds(q session.Question, under questionUnder) bool { + return under == questionRowOnly || (under != questionBeside && questionAnswersCarryBlocks(q)) +} + // questionPanelUnder is what stands under the focused answer: its body in the // reading ink, and the pick's own case where this is the pick. -func (a *app) questionPanelUnder(q questionShown, at int, option session.AnswerOption, room int) []string { +// +// WHERE THE ANSWERS BROUGHT SOMETHING TO LOOK AT, IT IS THE EVIDENCE, UNFOLDED +// (preview-narrow pick B): the same account the pane beside a wide panel draws +// ([app.questionEvidenceRows]), without the word the row above already says, +// cut to the rows the panel has left. A panel whose answers are words alone keeps rec A's fold — the +// body and one line of the pick's case — because a labelled column under a row +// of words is a card pretending to be a page. +func (a *app) questionPanelUnder(q questionShown, at int, option session.AnswerOption, room int, under questionUnder) []string { + if questionAnswersCarryBlocks(q.question) { + if under == 0 { + // The measuring pass ([app.questionPanelEvidenced]): the answers alone. + return nil + } + rows := a.questionEvidenceRows(q.question, at, max(room, 8), false) + if under == questionUnbounded { + return rows + } + return a.questionCut(rows, int(under), a.questionOpenFullWord()) + } out := make([]string, 0, 3) if body := strings.TrimSpace(option.Body); body != "" { for i, line := range wrap(body, max(room, 8)) { @@ -590,35 +776,6 @@ const questionPanelSayFloor = 12 // the rest. const questionPanelBodyRows = 2 -// questionPickCase is the asker's case for its pick, on one line: why it would -// take this, how sure it is, and what would change its mind. -// -// THE EMPTINESS LAW. A pick with no reason, no confidence and nothing that would -// change its mind draws no line at all — never an empty one, and never the word -// "unknown". -func questionPickCase(q session.Question, key string) string { - if q.Pick == nil || strings.TrimSpace(q.Pick.Key) != key { - return "" - } - parts := make([]string, 0, 3) - if reason := strings.TrimSpace(q.Pick.Reason); reason != "" { - parts = append(parts, reason) - } - if sure := questionConfidenceWord(q.Pick.Confidence); sure != "" { - parts = append(parts, sure) - } - if would := questionAfterIf(q.Pick.WouldChange); would != "" { - // THROUGH THE ROOM'S OWN JOINER ([questionAfterIf]), because this row is - // the same clause said shorter. Asked what would change its mind a model - // answers "If the index has to be read from another machine", and the row - // drew `would switch if if the index has…` — the defect the room already - // fixed on 2026-09-10, arriving here the day the panel started drawing - // the same sentence. - parts = append(parts, questionWouldSwitchWord+would) - } - return strings.Join(parts, " · ") -} - // questionPanelOther is the last row: the answer that is not on the list, and // the box it becomes while the pointer is on it. func (a *app) questionPanelOther(q questionShown, pad, room int) []string { diff --git a/internal/tui3/questionroom.go b/internal/tui3/questionroom.go index 851faa2bcb..864d2f59f7 100644 --- a/internal/tui3/questionroom.go +++ b/internal/tui3/questionroom.go @@ -46,95 +46,42 @@ import ( // while the box is EMPTY, exactly as `x` (stop) is taken on this surface today, // so a person mid-sentence never loses a keystroke to a question. // -// ── THE ROWS, DRAWN HERE SO THEY STAY TRUE ── +// ── THE PAGE IS DRAWN IN questionpage.go ── // -// The body region, at 92 columns, a choice with three answers and the first one -// open. `?` is [tokens.GNeedsHuman] and wears the question's amber; an answer's -// KEY is the payload hue and its LABEL is bold ink — the hue was on the label -// until the owner retired it (colour pick C, 2026-09-11: COLOUR IS STROKE AND -// NEVER FILL), and the weight carries what the colour was carrying. An answer's -// body is ink; every attribution, consequence, reason and confidence is dim. +// This file is the page's STATE and its KEYS: what the reader is standing on, +// what the foot has composed, and what each key does. How it is laid out — the +// two panes at a hundred columns and wider, the one column narrower, the two +// windows and what a press reaches — is questionpage.go's, drawn with the +// evidence renderer every question drawing shares (questionevidence.go). // -// ── THE HIERARCHY, WHICH IS THE POINT OF THE SHAPE ── +// ── THE POINTER, AND THE WAYS TO MOVE IT ── // -// Three tiers and every row is one of them: the heading you scan for, the -// sentence you read, the asides you weigh. Each aside says which aside it is — -// `then ·`, `why this one ·`, `would switch if` — because they are all dim and -// all one sentence long, and a page that drew them bare gave a person four -// identical grey rows to tell apart by reading them in full (the owner, -// 2026-09-10: "the same line and next line in options look same and a bit -// weird"). One blank row closes an open answer, so the next heading is not -// merely a different indent. -// -// ‹ back question · 1 of 1 -// ? which store should the ledger sit on? -// the model · a schema change is next and it is cheaper before rows exist -// the turn waits on it · task 12 goes on without it -// -// what it showed you -// where the rows are today -// app ──▶ sqlite -// -// ▾ 1 postgres my pick · fairly sure -// rows already carry a foreign key into it, and the migration is one file -// then · the ledger and the rest of the project share one connection -// why this one · it is the only store the reporting job already reads -// would switch if the ledger ever has to run without a server -// -// what it would look like -// app ──▶ pg ──▶ report -// › keep the sqlite file as the source of truth -// ? does the reporting job read it directly -// ↳ it does, over the same connection string -// -// ▸ 2 sqlite -// ▸ 3 a file per day -// -// And the foot, pinned above the box exactly where every other question on this -// surface sits (view.go's chrome stack): -// -// answering 1 postgres · with keep the sqlite file · once -// [enter] take it · [esc] later · [x] compare · [?] ask back · [↑↓] choose -// -// ── THE POINTER, AND THE THREE WAYS TO MOVE IT ── -// -// `↑`/`↓` walk the answers; `→` opens the one under the pointer and `←` folds -// it; `enter` takes it, which is the block's own law arriving on the page -// (#789). A digit still answers at once, from anywhere. And a click on an -// answer's row moves the pointer onto it and opens it, with a second click on -// the same row being `enter` — one press to read, one to decide -// ([app.questionRoomPress] says why it is two). +// `↑`/`↓` walk the answers and the evidence beside them follows; `enter` takes +// the answer the pointer is on, which is the block's own law arriving on the +// page (#789); a digit moves the pointer straight to its answer. Where there are +// two panes, `→` hands the arrows to the evidence so a long diagram can be read +// to its end and `←` hands them back. And a click on an answer's row moves the +// pointer onto it, with a second click on the same row being `enter` — one press +// to read, one to decide ([app.questionRoomPress] says why it is two). // // ── ALIGNMENT, STATED ONCE ── // // DESIGN.md: "Head at the gutter; option rows indented one key-cell; answers row -// indented like the options". So the head and the back crumb start at column 0, -// everything under them is indented [questionIndent], and an option's own body -// is indented one further key-cell so the word and the body cannot be misread as -// two answers. The three widths below are the whole of the page's geometry and -// nothing computes its own. +// indented like the options". So everything on the page is indented +// [questionIndent], the answers' rows are the panel's own, and a shape's parts +// are indented one further key-cell ([questionBodyIndent]) so a part and what is +// written under it cannot be misread as two answers. const ( // questionIndent is the one key-cell every row under the head is indented by. questionIndent = " " - // questionBodyIndent is an option's body, one key-cell further in: the digit, - // the space and the fold mark are what it clears. + // questionBodyIndent is what is written under one part of a shape — a note + // on a checklist row, the exchange under a pair — one key-cell further in + // than the part: the key, its space and its mark are what it clears. questionBodyIndent = " " - // questionAttachIndent is where the question's OWN evidence sits: under its - // one dim title, and one step in from it, so a diagram never starts at the - // gutter while every sentence beside it is indented. - questionAttachIndent = " " - // questionRoomFloor is the narrowest page that still draws sections. Below it - // there is no room for a fold mark, a digit and a word, and the page draws - // the linear shape every form owes the reader tier. - questionRoomFloor = 34 // questionCompareFloor is where the compare table stops being a table. // DESIGN.md: "compare stacks under 80 cols". questionCompareFloor = 80 - // questionLayoutFloor is where a two-pane layout block stops being two panes. - // DESIGN.md: "two pre-formatted panes side by side above 100 cols, stacked - // below". - questionLayoutFloor = 100 ) // The words this page says, spelled once. Every one of them is in the person's @@ -146,20 +93,12 @@ const ( // differently from the status line beside it would read as a different // program. questionSep = " · " - // questionBackWord is the crumb out. It names `esc` because a page a person - // walked into has to say how they leave it, which is room.go's own rule. - questionBackWord = "back" - // questionPickWord marks the asker's own pick. It is the asker saying which - // one it would take, never a default that happens on its own — a question - // with a clock says so in its own row (S1's card), and this page never - // pretends the pick is one. - questionPickWord = "my pick" // questionWouldSwitchWord opens the line that is the most useful thing on the // page: what would change the asker's mind. A person who disagrees with a // pick usually disagrees with exactly this. questionWouldSwitchWord = "would switch if " - // questionThenWord and questionWhyWord label the two dim lines under an - // open answer, and they exist because four grey sentences stacked in one + // questionThenWord and questionWhyWord label two of the dim lines of an + // answer's case (questionevidence.go), and they exist because four grey sentences stacked in one // column read as one grey paragraph nobody can tell apart — the owner, // 2026-09-10, on a page exactly like that: "make sure there is some // textual hierarchy in design in options like the same line and next line @@ -300,16 +239,17 @@ type questionRoom struct { // act on. It is an index into the options rather than a key so an empty // option list is simply focus 0 on nothing. focus int - // open says which sections are expanded. A room OPENS ON ITS PICK — the one - // answer a person most wants to read is the one the asker would take — and - // everything else starts folded, which is what makes the page a page rather - // than a wall. - open map[int]bool - // compare swaps the sections for the table `x` draws. + // compare swaps the answers for the table `x` draws. compare bool - // picked is what the foot would send. It is a slice because a checklist and a - // run of pairs both answer with several keys, and [session.Answer.Picked] is - // the field that carries them. + // reading is the arrows handed to the evidence pane (`→`): `↑`/`↓` scroll it + // rather than walking the answers, until `←` hands them back or the pointer + // moves by any other road. + reading bool + // picked is what a CHECKLIST's foot would send: the rows ticked, in the order + // they were ticked. A list of answers has no second state to hold — `enter` + // takes the answer the pointer is on ([app.questionRoomSends]) — so a page + // whose choice and pointer could disagree is a page that can send an answer + // nobody is looking at. picked []string // scope is how long the answer lasts, and it is only ever one the question // offered ([session.Question.Scope]). @@ -343,25 +283,26 @@ type questionRoom struct { // drawn where the foot was, because a refusal a person cannot see is an // answer that silently did nothing. refused string - // The reader's own position, on room.go's terms: it is HERE so that leaving - // restores the conversation without having moved it. + // The reader's own positions, on room.go's terms: they are HERE so that + // leaving restores the conversation without having moved it. offset is the + // list's window (or the one column's), and detail is the evidence pane's. offset int - // The row cache, rebuilt on content or width and at no other time. + detail int + // The row cache, rebuilt on content or size and at no other time. rows []row - // spots is which ANSWER each cached row belongs to, or -1 for a row that - // belongs to none — the whole of how a press and a hover find an option on - // this page. + // spots is what a press on each cached row reaches (questionpage.go's + // [questionSpot]). // // IT IS WRITTEN BY THE DRAWING AND READ BY THE POINTER, which is the bargain // every hit-test on this surface keeps (hover.go's law): what lights is // exactly what a press acts on, because both of them are reading the row the - // layout actually wrote. Only an answer's OWN row is a target — its body is - // prose, a diagram and the person's own notes, and a click that answered a - // question because somebody aimed at a diagram would be the worst press on - // this surface. - spots []int - width int - dirty bool + // layout actually wrote. + spots []questionSpot + // seam is the column the two panes meet at on the cached rows, or -1. + seam int + height int + width int + dirty bool } // questionRoomOpen reports whether a question page is up. It is the one reading @@ -380,31 +321,25 @@ func (a *app) raiseQuestionRoom(head questionShown) { q := head.question room := &questionRoom{ head: head, - open: map[int]bool{}, comments: map[string]string{}, asks: map[string]*questionAsk{}, scope: questionDefaultScope(q), shown: a.now(), dirty: true, } - // THE PAGE OPENS ON THE PICK. Every other section starts folded, so what a - // person meets is the asker's own answer with its reason and its evidence - // under it, and the alternatives one key away — which is the order they will - // read them in anyway. - // - // AND WHERE THERE IS NO PICK THE POINTER STARTS WHERE THE BLOCK'S DOES - // ([questionPointerStart]): on the answer that loses nothing, wherever the - // question marks one. `enter` takes the answer the pointer is on, so the two - // forms may not disagree about which answer that is — a page whose pointer - // began one row above the block's would make one key mean two things - // depending on which size the question happened to be drawn at. - room.focus = questionPointerStart(q) - if q.Pick != nil && room.focus < len(q.Options) && - strings.TrimSpace(q.Options[room.focus].Key) == strings.TrimSpace(q.Pick.Key) { - room.open[room.focus] = true - } + // THE PAGE OPENS WHERE THE BLOCK'S POINTER STOOD. A person who walked to the + // second answer and pressed `o` to read it opened the page ABOUT the second + // answer, and the block's pointer itself started where the law puts it + // ([questionPointerStart]: the asker's pick, or the answer that loses nothing + // where nobody but a person may answer). `enter` takes the answer the + // pointer is on, so the two sizes of one question may not disagree about + // which answer that is. + room.focus = head.pick room.input = newQuestionInput(q) a.qroom = room + if walk := a.questionRoomWalk(); room.focus < 0 || room.focus >= walk { + room.focus = questionPointerStart(q) + } a.touch() } @@ -471,123 +406,7 @@ func (a *app) questionRoomTouched() { } // ───────────────────────────────────────────────────────────────────────────── -// The page. - -// questionRoomRows is the whole body region: the crumb, the head, the -// attribution, and then either the option sections or the compare table. -func (a *app) questionRoomRows(width int) []row { - room := a.qroom - if room == nil || width <= 0 { - return nil - } - if a.questionDrainReplies() { - room.dirty = true - } - if !room.dirty && room.width == width && room.rows != nil { - return room.rows - } - out := make([]row, 0, 32) - spots := make([]int, 0, 32) - add := func(text string) { - out = append(out, row{text: text, entry: -1}) - spots = append(spots, -1) - } - - add(a.questionCrumb(width)) - for _, line := range a.questionHeadRows(width) { - add(line) - } - add("") - // THE QUESTION'S OWN EVIDENCE COMES BEFORE THE ANSWERS AND NOT AFTER THEM. - // It used to be drawn last, untitled, at the head's indent — so a page whose - // asker had drawn a picture per answer ended in a run of unowned diagrams - // that read as a second page begun halfway down the first (the owner, - // 2026-09-10: "the layout org and everything seems really bad"). It is - // evidence about the WHOLE decision, which is the thing a person weighs - // BEFORE they weigh one answer against another, so it is said first, once, - // under a title that says what it is. - for _, line := range a.questionAttachRows(width) { - add(line) - } - switch { - case room.compare: - for _, line := range a.questionCompareRows(width) { - add(line) - } - case room.input.kind != session.InputNone: - // A STRUCTURED INPUT REPLACES THE OPTION SECTIONS AND NEVER SITS UNDER - // THEM. DESIGN.md's ladder puts structured input one rung BELOW the - // question — blanks, a checklist, this-or-this, a dial are the answer - // itself, not a garnish on a list of answers — so a question that carries - // one is drawn as that shape and the options, where it has any, are the - // shape's own rows. - for _, line := range a.questionInputRows(width) { - add(line) - } - default: - lines, owners := a.questionOptionRows(width) - for i, line := range lines { - add(line) - spots[len(spots)-1] = owners[i] - } - } - room.rows, room.spots, room.width, room.dirty = out, spots, width, false - return out -} - -// questionCrumb is the way out and where you are, on one row: the crumb at the -// gutter and the question's place in what is open on the right. -func (a *app) questionCrumb(width int) string { - back := a.pal.dim(a.icon(tokens.GScopeUp) + " " + questionBackWord) - if width < questionRoomFloor { - return fit(back, width) - } - return back -} - -// questionHeadRows are the head and the attribution under it, and they are the -// contract DESIGN.md writes for this page: "asked by · why now · what is paused -// on it · what goes on without it". -// -// ALL FOUR OR AS MANY AS ARE TRUE. The emptiness law governs every one of them — -// a question with no reason draws no reason line, and one that nothing is -// waiting on says so rather than leaving a person to guess whether the silence -// means everything or nothing. -func (a *app) questionHeadRows(width int) []string { - room := a.qroom - if room == nil { - return nil - } - out := make([]string, 0, 4) - mark := a.pal.warnBold(a.icon(tokens.GNeedsHuman)) - head := strings.TrimSpace(room.head.question.Head) - lines := wrap(head, max(1, width-2)) - for i, line := range lines { - if i == 0 { - out = append(out, mark+" "+a.pal.ink(line)) - continue - } - out = append(out, questionIndent+a.pal.ink(line)) - } - // The asker and the reason share a row: they are one sentence — who is asking - // and why now — and two rows for it would push the answers off a short page. - attribution := questionAskerWord(room.head.question.Asker) - if reason := strings.TrimSpace(room.head.question.Reason); reason != "" { - if attribution != "" { - attribution += questionSep - } - attribution += reason - } - if attribution != "" { - for _, line := range wrap(attribution, max(1, width-len(questionIndent))) { - out = append(out, questionIndent+a.pal.dim(line)) - } - } - if blocking := questionBlockingWord(room.head.question.Blocking); blocking != "" { - out = append(out, questionIndent+a.pal.dim(fit(blocking, max(1, width-len(questionIndent))))) - } - return out -} +// What the page says about the question, in words other drawings share. // questionBlockingWord is the third attribution row: what is paused on this // question and what carries on regardless. @@ -623,83 +442,6 @@ func questionTasksWord(ids []string) string { return strconv.Itoa(len(ids)) + " tasks" } -// questionOptionRows draws the answers as sections. -// -// ONE ROW PER ANSWER WHEN FOLDED, and the whole of it when open: the fold mark, -// the digit, the word, and — on the asker's own pick — `my pick` with its -// confidence, dim, on the right. Opening one adds its body, its consequence -// lines, its blocks, and, on the pick, the reason and what would change its mind. -func (a *app) questionOptionRows(width int) ([]string, []int) { - room := a.qroom - if room == nil || len(room.head.question.Options) == 0 { - return nil, nil - } - out := make([]string, 0, len(room.head.question.Options)*4) - owners := make([]int, 0, len(room.head.question.Options)*4) - for i, opt := range room.head.question.Options { - out = append(out, a.questionOptionHead(i, opt, width)) - owners = append(owners, i) - if !room.open[i] { - continue - } - body := a.questionOptionBody(i, opt, width) - out = append(out, body...) - for range body { - owners = append(owners, -1) - } - } - return out, owners -} - -// questionOptionHead is the one row an answer always has. -func (a *app) questionOptionHead(i int, opt session.AnswerOption, width int) string { - room := a.qroom - mark := tokens.GCollapsed - if room.open[i] { - mark = tokens.GExpanded - } - lead := questionIndent + a.pal.dim(a.icon(mark)) + " " - key := opt.Key - if key == "" { - key = strconv.Itoa(i + 1) - } - // THE LABEL IS THIS SECTION'S HEADING AND IS DRAWN AS ONE: the key steps up - // to the payload hue and the word is ink with the weight on it, which is - // exactly how the panel above the box spells an answer. It was the body's - // own ink, so a heading and the paragraph under it were one column of - // identical grey and the page had no hierarchy at all (the owner, - // 2026-09-10); it was then the question hue, which is the amber the marks - // keep (owner ruling 2026-09-11, colour pick C). - row := lead + a.pal.data(key) + " " + a.pal.bold(a.pal.ink(strings.TrimSpace(opt.Label))) - // The pick's badge is right-aligned, dim, and cut before the word is: a page - // too narrow to say `my pick · fairly sure` still has to say which answers - // there are. - if room.head.question.Pick != nil && room.head.question.Pick.Key == opt.Key { - badge := questionPickWord - if c := questionConfidenceWord(room.head.question.Pick.Confidence); c != "" { - badge += questionSep + c - } - row = questionRightAlign(row, a.pal.dim(badge), width) - } - // WHAT THE FOOT WOULD SEND WEARS THE GROUND LADDER'S *SELECTED* STEP AND - // THE ANSWER THE POINTER IS MERELY STANDING ON WEARS ITS CURSOR STEP. That - // is the ladder's own distinction and it is the reason the two are not one - // band: `selected` is "this is the chosen thing" and `cursor` is "the keys - // land here", and a page that painted them alike would answer "which one - // did I choose" with the row somebody happened to have walked to. - // - // AND THE POINTER LIGHTS THE SAME ROW A PRESS ACTS ON, which is hover.go's - // law: this row is the target, its body is not, and nothing else on the - // page brightens under a pointer because nothing else on it answers. - switch { - case a.questionTaken(opt.Key): - row = a.pal.selected(fit(row, width), width) - case i == room.focus, a.hoveringQuestionOption(i): - row = a.pal.cursor(fit(row, width), width) - } - return fit(row, width) -} - // questionConfidenceWord is how sure the asker is, in the asker's own three // words. It is dim beside the pick and never a number: a percentage on a // judgement is a machine pretending to have measured something. @@ -715,69 +457,6 @@ func questionConfidenceWord(c session.Confidence) string { return "" } -// questionOptionBody is everything under an open answer, in the order a person -// reads it: what it means, what it costs, what it would look like, and — where -// this is the pick — why the asker would take it and what would change its mind. -func (a *app) questionOptionBody(i int, opt session.AnswerOption, width int) []string { - room := a.qroom - inner := max(1, width-len(questionBodyIndent)) - out := make([]string, 0, 8) - // AN ANSWER WITH NO BODY DRAWS NO ROW FOR ONE. [wrap] answers an empty string - // with a single empty line — which is right for a paragraph and wrong here, - // where it would be a blank row claiming the asker said something. - if body := strings.TrimSpace(opt.Body); body != "" { - for _, line := range wrap(body, inner) { - out = append(out, questionBodyIndent+a.pal.ink(line)) - } - } - // EVERY LINE UNDER THE BODY SAYS WHICH LINE IT IS. The consequence, the - // asker's reason and what would change its mind are all dim and all one - // sentence long, so on a page that drew them bare they were three - // indistinguishable grey rows a person had to read in full to find out - // which was which. Each carries its own word now, and the words are the - // ones somebody would use out loud. - if c := strings.TrimSpace(opt.Consequence); c != "" { - out = append(out, a.questionAsideRows(questionThenWord+c, inner)...) - } - if room.head.question.Pick != nil && room.head.question.Pick.Key == opt.Key { - if why := strings.TrimSpace(room.head.question.Pick.Reason); why != "" { - out = append(out, a.questionAsideRows(questionWhyWord+why, inner)...) - } - if change := strings.TrimSpace(room.head.question.Pick.WouldChange); change != "" { - out = append(out, a.questionAsideRows(questionWouldSwitchWord+questionAfterIf(change), inner)...) - } - } - // THE EVIDENCE SITS UNDER THE ANSWER IT BELONGS TO, at the body's own - // indent, with a blank row before each so two diagrams can never run into - // one another. - for _, block := range opt.Blocks { - out = append(out, "") - out = append(out, a.questionBlockRows(block, len(questionBodyIndent), width)...) - } - out = append(out, a.questionNoteRows(opt.Key, len(questionBodyIndent), width)...) - // AND ONE BLANK ROW CLOSES AN OPEN ANSWER, so the next answer's heading is - // separated from the paragraph above it by something other than an indent. - // It is the cheapest half of the hierarchy and the one a person reads - // without noticing they are reading it. - out = append(out, "") - _ = i - return out -} - -// questionAsideRows is one labelled dim line under an answer — the consequence, -// the asker's reason, what would change its mind. -// -// THEY ARE ALL DIM AND THAT IS THE LAW (DESIGN.md's hue rule: "the pick's -// reason and every attribution are dim; option bodies are ink"), so the label -// and not the ink is what tells one from the next. -func (a *app) questionAsideRows(text string, inner int) []string { - out := make([]string, 0, 2) - for _, line := range wrap(text, inner) { - out = append(out, questionBodyIndent+a.pal.dim(line)) - } - return out -} - // questionAfterIf makes the asker's own sentence read as the tail of `would // switch if `. // @@ -859,119 +538,77 @@ func (a *app) questionNoteRows(part string, indent, width int) []string { return out } -// questionAttachRows are the blocks the QUESTION carries, as opposed to the -// ones hanging off one answer: evidence about the whole decision. -// -// THEY ARE ONE TITLED SECTION AND NOT A TAIL. They used to be drawn last, with -// no heading, at the head's own indent — so a page whose asker had drawn a -// picture per answer ended in a run of diagrams belonging to nobody, starting -// at the gutter while every sentence above them was indented. Under a title -// that says what they are, at an indent of their own, they read as the one -// thing they are ([questionRoomRows] says why they are drawn first). -func (a *app) questionAttachRows(width int) []string { - room := a.qroom - if room == nil || len(room.head.question.Attach) == 0 || room.compare { - return nil - } - title := fit(questionAttachWord, max(1, width-len(questionIndent))) - out := []string{questionIndent + a.pal.dim(title)} - for i, block := range room.head.question.Attach { - if i > 0 { - out = append(out, "") - } - out = append(out, a.questionBlockRows(block, len(questionAttachIndent), width)...) - } - return append(out, "") -} - -// questionTaken reports whether the foot would send this key. -func (a *app) questionTaken(key string) bool { - room := a.qroom - if room == nil || key == "" { - return false - } - for _, k := range room.picked { - if k == key { - return true - } - } - return false -} - -// questionRightAlign puts a badge at the right edge of a row, or drops it where -// the row has no room. It is the one place this page measures, and it measures -// the PAINTED strings, because that is what the terminal draws. -func questionRightAlign(left, right string, width int) string { - gap := width - ansi.StringWidth(left) - ansi.StringWidth(right) - if gap < 2 { - return left - } - return left + strings.Repeat(" ", gap) + right -} - // ───────────────────────────────────────────────────────────────────────────── // The foot: what the answer would be, and the keys. -// questionFootHeight is how many rows the pinned foot takes: two while the -// question is open, one while it is reporting a refusal, none otherwise. +// questionFootHeight is how many rows the pinned foot takes: two while the page +// is open and none otherwise, whatever the foot is saying. // // THERE IS NO ANSWERED HEIGHT, because an answered question has no page: the // page folds on the answer and the receipt is the block's ([app.questionAnswer] -// says why). +// says why). AND NO SHORTER ONE: a foot that was one row while it reported a +// refusal moved the whole page up a row under the person reading it. func (a *app) questionFootHeight() int { if a.qroom == nil { return 0 } - if a.qroom.refused != "" { - return 1 - } return 2 } // questionFootRows is the foot, pinned above the box exactly where every other // question on this surface sits (view.go's chrome stack). // -// TWO ROWS AND NEVER MORE. The first says what enter would send — the pick, what -// was typed beside it, how many parts were commented on, and the scope — and the -// second is the keys. A foot that grew with the question would push the box off -// a short screen, which is the one thing a page that promises never to take the -// keyboard cannot do. +// ────────────────────────────────────────┴─── answering 1 SQLite · 1 noted ──── +// ↑↓ choose · enter take it · esc later · → detail c change · x compare +// +// TWO ROWS AND NEVER MORE. The first is the rule that closes the page — meeting +// the seam where there are two panes — with what `enter` would send written into +// it the way the frame writes words into an edge; the second is the keys, the +// ones that answer at the left and the ones that say something about the decision +// at the right, which is the panel's two tiers on one row (hints pick A). While +// the box is pointed at a part, or `d` is waiting for its second press, or the +// engine refused, the rule says that instead and the row under it says how to +// leave it. A foot that grew with the question would push the box off a short +// screen, which is the one thing a page that promises never to take the keyboard +// cannot do. func (a *app) questionFootRows(width int) []string { room := a.qroom if room == nil || width <= 0 { return nil } - if room.refused != "" { - return []string{a.pal.warn(fit(room.refused, width))} - } - if room.deciding { - return []string{ - a.pal.ink(fit(a.questionDecideLine(), width)), - a.pal.dim(fit(questionDecideAgain, width)), - } + rule := func(words string) string { + return besideRule(a.pal, width, a.questionRoomSeam(), tokens.GFrameTeeUp, words) } - if room.decidingKind { - return []string{ - a.pal.ink(fit(a.questionDecideKindLine(), width)), - a.pal.dim(fit(questionDecideKindAgain, width)), - } + switch { + case room.refused != "": + return []string{rule(a.pal.warn(room.refused)), a.questionRoomOfferRow(width)} + case room.deciding: + return []string{rule(a.pal.ink(a.questionDecideLine())), " " + a.pal.dim(fit(questionDecideAgain, width-2))} + case room.decidingKind: + return []string{rule(a.pal.ink(a.questionDecideKindLine())), " " + a.pal.dim(fit(questionDecideKindAgain, width-2))} } if prompt := a.questionPromptWord(); prompt != "" { - return []string{ - a.pal.ink(fit(prompt, width)), - a.pal.dim(fit(a.questionSaying(), width)), - } + return []string{rule(a.pal.ink(prompt)), " " + a.pal.dim(fit(a.questionSaying(), width-2))} } - return []string{ - a.questionComposeRow(width), - a.questionRoomOfferRow(width), + return []string{rule(a.questionComposeWords()), a.questionRoomOfferRow(width)} +} + +// questionRoomSeam is where the page's two panes meet at the body's width, or -1 +// on a page of one column. The foot's rule asks it so the junction it draws is +// the seam the body drew. +func (a *app) questionRoomSeam() int { + width := a.bodyWidth() + if !a.questionRoomBeside(width) { + return -1 } + left, _ := besideSplit(width, a.questionPageListWant(width)) + return left } -// questionPromptWord is the sentence that replaces the compose row while the box -// is pointed at a part rather than at the answer: `c`, `?` and `n` each say what -// the box is writing now, because a box whose meaning changed silently is a box -// that puts a comment into the answer. +// questionPromptWord is the sentence that replaces the compose words while the +// box is pointed at a part rather than at the answer: `c`, `?` and `n` each say +// what the box is writing now, because a box whose meaning changed silently is a +// box that puts a comment into the answer. func (a *app) questionPromptWord() string { room := a.qroom switch { @@ -985,52 +622,72 @@ func (a *app) questionPromptWord() string { return "" } -// questionSaying is the dim second row under a prompt: what the box holds so -// far, or the way out of it. +// questionSaying is the dim second row under a prompt: the way out of it. func (a *app) questionSaying() string { return "esc " + questionKeyWord(questionLaterKey) } -// questionComposeRow is the first foot row: `pick · with · notes · scope`. -func (a *app) questionComposeRow(width int) string { +// questionRoomSends is what `enter` would send from the page right now: the +// answers and the words. +// +// IT IS ONE READING, asked by `enter` ([app.questionRoomEnter]) and by the foot +// that says what `enter` would send ([app.questionComposeWords]), so the two +// cannot disagree. On a list of answers it is the answer the pointer is on, with +// whatever is in the box as the words that go with it; on `something else…` it +// is the words alone; on a checklist it is the rows ticked. +func (a *app) questionRoomSends() ([]string, string) { room := a.qroom + words := strings.TrimSpace(a.input.String()) + if room.input.kind != session.InputNone { + return append([]string{}, room.picked...), words + } + if key := questionOptionKeyAt(room.head.question, room.focus); key != "" { + return []string{key}, words + } + return nil, words +} + +// questionComposeWords is what the foot's rule says `enter` would send: +// `answering 1 postgres · with keep the sqlite file · 1 noted · just this once`. +// It is ink where there is something to send and dim where there is not. +func (a *app) questionComposeWords() string { + room := a.qroom + keys, words := a.questionRoomSends() parts := make([]string, 0, 4) switch { - case len(room.picked) > 0: + case len(keys) > 0: + parts = append(parts, questionAnsweringWord+a.questionPickedWord(keys)) case room.input.kind == session.InputBlanks || room.input.kind == session.InputPairs || room.input.kind == session.InputDial || room.input.kind == session.InputText: parts = append(parts, questionFilledWord) - default: + case words == "": parts = append(parts, questionNoPickWord) } - if len(room.picked) > 0 { - parts = append(parts, questionAnsweringWord+a.questionPickedWord()) - } - if said := strings.TrimSpace(a.input.String()); said != "" { - parts = append(parts, questionWithWord+said) + if words != "" { + parts = append(parts, questionWithWord+words) } if n := len(room.comments); n > 0 { parts = append(parts, strconv.Itoa(n)+questionNotesWord) } - // THE SCOPE IS ON THE ROW ONLY WHERE THERE IS A CHOICE OF IT. A question that - // offered one scope has no decision to show, and drawing `once` beside every - // answer would teach people to stop reading the word. - if len(room.head.question.Scope) > 1 { + // THE SCOPE IS SAID ONLY WHERE THERE IS A CHOICE OF IT. A question that + // offered one lifetime has no decision to show, and drawing `once` beside + // every answer would teach people to stop reading the word. + if len(questionScopes(room.head.question)) > 0 { parts = append(parts, questionScopeWord(room.scope)) } line := strings.Join(parts, questionSep) - if len(room.picked) == 0 { - return a.pal.dim(fit(line, width)) + if len(keys) == 0 && words == "" { + return a.pal.dim(line) } - return a.pal.ink(fit(line, width)) + return a.pal.ink(line) } -// questionPickedWord is what was chosen, in keys and words: `1 postgres`, or +// questionPickedWord is what would be sent, in keys and words: `1 postgres`, or // `1 postgres, 3 a file per day` on a checklist. -func (a *app) questionPickedWord() string { +func (a *app) questionPickedWord(keys []string) string { room := a.qroom - words := make([]string, 0, len(room.picked)) - for _, key := range room.picked { + words := make([]string, 0, len(keys)) + for _, key := range keys { if opt, ok := room.head.question.Option(key); ok && strings.TrimSpace(opt.Label) != "" { words = append(words, key+" "+strings.TrimSpace(opt.Label)) continue @@ -1148,16 +805,46 @@ func (a *app) questionOfferKeys() []questionVerb { return a.questionAnswerKeys(a.qroom.head, formsRoom) } -// questionOfferRow spells that offer as the one row a person reads. The words -// and the give-up order are the table's; the painting is -// [app.paintQuestionKeys]'s, so the foot of a page and the answers row of a card -// are the same row drawn in two places. +// questionRoomOfferRow is the foot's row of keys: the keys that answer at the +// left, and the ones that say something about the decision at the right — the +// panel's two tiers (hints pick A), laid on one row because the page has the +// width the panel's frame does not. +// +// BOTH HALVES ARE THE ONE KEY ROW ([app.questionKeyRow]), each dropped by rank +// until it fits, and the quieter half is given up whole before the half that +// answers loses anything. func (a *app) questionRoomOfferRow(width int) string { - // THE ONE KEY ROW (questionkeys.go's [app.questionKeyRow]): the key in the - // payload hue, its word dim, dropped by rank until it fits. The page used to - // paint its own, in its own hues, which was one of four paintings of one - // grammar on this surface. - return a.questionKeyRow(a.qroom.head, a.questionOfferKeys(), width) + head := a.qroom.head + keys := a.questionOfferKeys() + room := max(width-2*len(questionIndent), 1) + left := a.questionKeyRow(head, questionKeysOnTier(keys, keyPrimary), room) + row := questionIndent + left + spare := room - ansi.StringWidth(left) - 2*len(questionKeyGap) + if right, ok := a.questionKeyRowWithin(head, questionKeysOnTier(keys, keySecondary), spare); ok { + row = questionRightAlign(row, right, width-len(questionIndent)) + } + return row +} + +// questionKeyRowWithin is the one key row at a width, or false where not even +// its most valuable key fits — a tier that would be cut mid-word is left off. +func (a *app) questionKeyRowWithin(q questionShown, keys []questionVerb, width int) (string, bool) { + if len(keys) == 0 || width <= 0 { + return "", false + } + for { + if ansi.StringWidth(questionKeyWords(q, keys)) <= width { + return a.paintQuestionKeys(q, keys), true + } + if len(keys) == 1 { + return "", false + } + dropped, ok := questionDropVerb(keys) + if !ok { + return "", false + } + keys = dropped + } } // ───────────────────────────────────────────────────────────────────────────── @@ -1202,7 +889,13 @@ func (a *app) questionRoomKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { case "enter": return a.questionRoomEnter(), true case "up", "down": - a.questionMoveFocus(map[string]int{"up": -1, "down": 1}[key]) + // WHILE THE ARROWS ARE THE EVIDENCE PANE'S (`→`) THEY SCROLL IT, and + // everywhere else they walk the answers. + if delta := map[string]int{"up": -1, "down": 1}[key]; room.reading { + a.questionRoomScrollDetail(delta) + } else { + a.questionMoveFocus(delta) + } return nil, true } // AND THE BOX IS A BOX WHILE IT IS POINTED AT A PART. `c`, `?` and `n` each @@ -1236,20 +929,23 @@ func (a *app) questionRoomKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { room.refused = "" a.questionRoomTouched() } - // `→` OPENS AN ANSWER AND `←` FOLDS IT, which is the other half of the walk - // `↑`/`↓` began: a person reading a page of folded sections reaches sideways - // to open one, and on this page they were reaching at nothing at all — the - // row said `[←→] choose` and neither key did anything (the owner, - // 2026-09-10: "no arrow or click"). + // `→` HANDS THE ARROWS TO THE EVIDENCE PANE AND `←` HANDS THEM BACK, which + // is the sideways half of the walk `↑`/`↓` began: the pane beside the list + // can be taller than the page, and a diagram whose end is below the fold is + // read by moving INTO the pane rather than by reaching for the wheel. // - // IT IS READ AFTER THE BOX AND BEFORE THE OFFER TABLE for two separate - // reasons. After the box, because `←` inside a sentence somebody is typing - // is the caret and nothing else. Before the table, because where the - // question carries a shape of its own — a dial, a hole with choices — the - // side arrows are that shape's ([needMoves]), and the two can never both be - // true on one page. + // IT IS READ AFTER THE BOX AND BEFORE THE REST OF THE TABLE for two separate + // reasons. After the box, because `←` inside a sentence somebody is typing is + // the caret and nothing else. Before the rest, because where the question + // carries a shape of its own — a dial, a hole with choices — the side arrows + // are that shape's ([needMoves]), and the two can never both be true on one + // page. A side arrow the foot is not offering does nothing at all, which is + // the page's law about keys it did not draw. if room.input.kind == session.InputNone && (key == "left" || key == "right") { - a.questionFoldFocus(key == "right") + if a.questionRoomOffers(key) { + room.reading = key == "right" + a.questionRoomTouched() + } return nil, true } // NO KEY DOES ANYTHING THAT IS NOT DRAWN ON SCREEN RIGHT NOW, which is the @@ -1307,8 +1003,11 @@ func (a *app) questionRoomKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { head := room.head a.closeQuestionRoom() return a.questionUndo(head), true - case questionOpenKey: - room.open[room.focus] = !room.open[room.focus] + case questionScopeKey: + // `t` CHANGES THE LIFETIME AND NOTHING ELSE, exactly as it does on the + // panel (questionscope.go): nothing is written and nothing is answered, + // and the foot's rule says the lifetime the answer would go out with. + room.scope = questionScopeAfter(room.head.question, room.scope) case questionLaterKey: a.closeQuestionRoom() return nil, true @@ -1343,6 +1042,14 @@ func (a *app) questionRoomOffers(key string) bool { if key == "shift+up" || key == "shift+down" { return true } + case questionDetailKey: + if key == "right" { + return true + } + case questionAnswersKey: + if key == "left" { + return true + } case questionBlankKey: if key == "shift+tab" { return true @@ -1352,25 +1059,16 @@ func (a *app) questionRoomOffers(key string) bool { return false } -// questionMoveFocus walks the sections, and it is bounded rather than wrapping: +// questionMoveFocus walks the answers, and it is bounded rather than wrapping: // a list that jumps from the last row to the first is a list a person loses // their place in. func (a *app) questionMoveFocus(delta int) { room := a.qroom - n := len(room.head.question.Options) - if room.input.kind != session.InputNone { - n = room.input.count() - } + n := a.questionRoomWalk() if n == 0 { return } - at := room.focus + delta - if at < 0 { - at = 0 - } - if at >= n { - at = n - 1 - } + at := questionClamp(room.focus+delta, 0, n-1) if room.input.kind != session.InputNone { room.input.focus = at } @@ -1379,77 +1077,30 @@ func (a *app) questionMoveFocus(delta int) { a.questionRoomTouched() } -// questionRoomShowFocus KEEPS THE FOCUSED ANSWER IN VIEW, and it is the one -// place this page's window is moved for anything other than the wheel. -// -// THE DEFECT IT CLOSES: `↓` walked the focus and nothing scrolled, so on a page -// with an attachment at the top and an answer open — which is most pages worth -// opening — the arrows walked down into rows below the fold and the screen did -// not change. A person pressing an arrow and seeing nothing move reads it as a -// key that does nothing. -// -// IT SCROLLS THE LEAST IT CAN, so a page that is already showing the row it -// walked to does not jump: the row is brought just inside the top or the bottom -// edge and no further, which is the reading position a person built by -// scrolling being kept rather than re-anchored under them. -func (a *app) questionRoomShowFocus() { +// questionRoomScrollDetail moves the evidence pane's window by one row while the +// arrows are the pane's, bounded at both ends. +func (a *app) questionRoomScrollDetail(delta int) { room := a.qroom - height := a.viewHeight() - if room == nil || height <= 0 { - return - } - // THE ROWS ARE ASKED FOR AFTER THE MOVE, because the map from row to answer - // is written by the drawing ([questionRoom.spots]) and the move may have - // opened or folded a section under it. - rows := a.questionRoomRows(a.bodyWidth()) - first, last := -1, -1 - for at, of := range room.spots { - if of != room.focus { - continue - } - if first < 0 { - first = at - } - last = at - } - if first < 0 { - return - } - switch { - case first < room.offset: - room.offset = first - case last >= room.offset+height: - room.offset = last - height + 1 - } - room.offset = questionClamp(room.offset, 0, max(0, len(rows)-height)) -} - -// questionFoldFocus opens the answer the focus is on, or folds it. -// -// AN ANSWER THAT IS ALREADY OPEN DOES NOT RE-OPEN AND ONE ALREADY FOLDED DOES -// NOT RE-FOLD, which is what makes holding `→` down safe: the key states what -// it wants rather than toggling, so a person who cannot see whether a section -// is open still knows exactly what each arrow will do to it. -func (a *app) questionFoldFocus(open bool) { - room := a.qroom - if room == nil || room.focus < 0 || room.focus >= len(room.head.question.Options) { - return - } - room.open[room.focus] = open + lay := a.questionRoomLay(a.bodyWidth(), a.viewHeight()) + room.detail = questionWindowStart(room.detail+delta, len(lay.pane), lay.region) a.questionRoomTouched() } -// questionFocusOption is the answer the focus is standing on, and false where -// the page is drawing a shape rather than a list of answers. -func (a *app) questionFocusOption() (session.AnswerOption, bool) { - room := a.qroom - if room == nil || room.input.kind != session.InputNone { - return session.AnswerOption{}, false +// questionScopeAfter is the lifetime after `now` in the question's own list of +// them, narrowest first, coming back round to the narrowest after the widest. +// It is the panel's walk (questionscope.go's [questionScopes]) read from the +// page's own state. +func questionScopeAfter(q session.Question, now session.AnswerScope) session.AnswerScope { + scopes := questionScopes(q) + for i, one := range scopes { + if one == now { + return scopes[(i+1)%len(scopes)] + } } - if room.focus < 0 || room.focus >= len(room.head.question.Options) { - return session.AnswerOption{}, false + if len(scopes) > 0 { + return scopes[0] } - return room.head.question.Options[room.focus], true + return now } // questionFocusKey is the part the focus is on, as the key a comment is filed @@ -1465,29 +1116,28 @@ func (a *app) questionFocusKey() string { return room.head.question.Options[room.focus].Key } -// questionRoomPick takes one of the answers by its digit. +// questionRoomPick is a digit on the page: the pointer goes straight to that +// answer, and the evidence beside the list is that answer's. // -// A CHECKLIST ADDS AND EVERY OTHER SHAPE REPLACES. Pressing 2 on a choice means -// "2, not 1"; pressing 2 on a list of things to tick means "and 2" — and a -// single rule for both would either make a choice accumulate or make a checklist -// impossible to fill. +// ON THE PAGE A DIGIT MOVES AND DOES NOT SEND. The page is where a person reads +// before deciding, and the digit is the fastest way to put an answer's evidence +// in front of them; `enter` is the decision. A CHECKLIST TICKS instead, because +// pressing 2 on a list of things to tick means "and 2". func (a *app) questionRoomPick(key string) { room := a.qroom opt, ok := room.head.question.Option(key) if !ok { return } - for i := range room.head.question.Options { - if room.head.question.Options[i].Key == key { - room.focus = i - } + if at, found := questionOptionAt(room.head.question, key); found { + room.focus = at } if room.input.kind == session.InputChecklist { room.picked = questionToggleOne(room.picked, opt.Key) return } - room.picked = []string{opt.Key} - room.open[room.focus] = true + room.reading = false + a.questionRoomShowFocus() } // questionToggleOne adds a key or takes it away, keeping the order the person @@ -1559,30 +1209,20 @@ func (a *app) questionRoomEnter() tea.Cmd { } return a.questionAnswer(session.Answer{Reframe: said, DecidedBy: session.DecidedByPerson}) } + // ENTER SENDS WHAT THE FOOT SAYS IT WOULD ([app.questionRoomSends]): the + // answer the pointer is on with whatever is in the box beside it, which is + // the block's own law arriving on the page (#789: "every answer has a + // pointer the arrows walk and enter takes"). It costs nothing on a page + // nobody has walked, because the page opens where the block's pointer stood. + // // THE EMPTINESS LAW ON THE MOST IMPORTANT KEY ON THE PAGE: `enter` with - // nothing chosen and nothing typed does nothing at all, because there is no - // answer for it to send. The foot already says `nothing chosen yet`. - // ENTER TAKES THE ANSWER THE POINTER IS ON. It is the block's own law - // arriving on the page (#789: "every answer has a pointer the arrows walk - // and enter takes"), and it costs nothing on a page nobody has walked, - // because the page OPENS on the asker's pick — so `enter` straight off a - // fresh room still takes the recommendation, exactly as it always did. - if len(room.picked) == 0 && said == "" { - if opt, ok := a.questionFocusOption(); ok && strings.TrimSpace(opt.Key) != "" { - room.picked = []string{opt.Key} - } else if room.head.question.Pick != nil { - room.picked = []string{room.head.question.Pick.Key} - } - } - if len(room.picked) == 0 && said == "" && room.input.kind == session.InputNone { + // nothing to send — `something else…` and an empty box — does nothing at + // all, and the foot already says `nothing chosen yet`. + keys, words := a.questionRoomSends() + if len(keys) == 0 && words == "" && room.input.kind == session.InputNone { return nil } - answer := session.Answer{ - Picked: append([]string{}, room.picked...), - Change: said, - DecidedBy: session.DecidedByPerson, - } - return a.questionAnswer(answer) + return a.questionAnswer(session.Answer{Picked: keys, Change: words, DecidedBy: session.DecidedByPerson}) } // questionHandOver is the second press of `d`: the asker's own pick, recorded as @@ -1726,132 +1366,6 @@ func questionHasDimensions(q session.Question) bool { return false } -// ───────────────────────────────────────────────────────────────────────────── -// The geometry, on room.go's own terms. - -// questionRoomWindow is the page's visible slice and the padding under it. It is -// [app.window]'s shape over this page's rows and this page's offset, which is -// what makes `esc` restore the conversation without having moved it. -// -// THE PADDING FALLS BELOW A SHORT PAGE, exactly as it does under a short -// conversation and under a short room. A question with two answers reads from -// the top like everything else on this surface. -func (a *app) questionRoomWindow(width, height int) ([]row, int) { - if height <= 0 { - return nil, 0 - } - rows := a.questionRoomRows(width) - offset := a.questionRoomOffsetFor(len(rows), height) - end := min(offset+height, len(rows)) - visible := rows[offset:end] - if pad := height - len(visible); pad > 0 { - return visible, pad - } - return visible, 0 -} - -// questionRoomOffsetFor clamps the reader's position. -// -// IT ANCHORS AT THE TOP AND NEVER AT THE LIVE EDGE, which is where it parts -// company with a node's page. A room follows work that is still arriving, so it -// sticks to the bottom; a question is FINISHED the moment it is drawn — the head -// is the first thing to read and nothing will be appended under it — so a page -// that opened at its foot would open on the least useful row it has. -func (a *app) questionRoomOffsetFor(total, height int) int { - room := a.qroom - bottom := max(0, total-height) - if room == nil || room.offset < 0 { - return 0 - } - return min(room.offset, bottom) -} - -// ───────────────────────────────────────────────────────────────────────────── -// The pointer. - -// questionRoomOptionAt is which answer the pointer is on, and false where it is -// on none of them. -// -// It is [app.roomRowAt]'s arithmetic answered in this page's coordinates — the -// frame pins rows above the body, the page hangs from the top with the slack -// below it, and the window starts wherever the reader scrolled to — read -// against the row-to-answer map the drawing wrote ([questionRoom.spots]). -func (a *app) questionRoomOptionAt(y int) (int, bool) { - room := a.qroom - top := a.bodyTop() - if room == nil || top < 0 { - return 0, false - } - height := a.viewHeight() - rows := a.questionRoomRows(a.bodyWidth()) - offset := a.questionRoomOffsetFor(len(rows), height) - end := min(offset+height, len(rows)) - at := y - top + offset - if at < offset || at >= end || at >= len(room.spots) || room.spots[at] < 0 { - return 0, false - } - return room.spots[at], true -} - -// questionRoomPress resolves a click on the page and reports whether it took -// one. -// -// ONE PRESS OPENS AN ANSWER AND THE NEXT ONE TAKES IT, which is the only shape -// that can be both discoverable and safe. A page where the first click answered -// would answer a question with evidence somebody had not read yet; a page where -// no click ever answered would be a page a person has to leave the mouse to -// finish. So the first press moves the pointer onto that answer and opens it — -// the same thing `↓` then `→` do — and a press on the answer the pointer is -// already standing on, open, is `enter`. -// -// A PRESS ANYWHERE ELSE ON THE PAGE FALLS THROUGH AND DOES NOTHING, which is -// this surface's law about empty space (app.go's [app.press]): the bodies, the -// diagrams and the person's own notes are prose, and prose has no gesture. -// -// IT IS ASKED ABOUT THE ROW ALONE AND NOT ABOUT THE COLUMN, which is the one -// place this page parts company with a run's. An answer's row is the whole -// width of the page — the fold mark at one end and the pick's badge at the -// other — so a press that had to land on the word would be a press a person has -// to aim. -func (a *app) questionRoomPress(y int) (tea.Cmd, bool) { - room := a.qroom - if room == nil { - return nil, false - } - // THE SETTLE GUARD IS THE POINTER'S TOO. A click that arrived less than - // [questionSettle] after the page was drawn was aimed at whatever was on - // screen before it, and a mouse is no better at stopping than a hand is. - if a.now().Sub(room.shown) < questionSettle { - return nil, true - } - at, ok := a.questionRoomOptionAt(y) - if !ok { - return nil, false - } - if at != room.focus || !room.open[at] { - room.focus, room.open[at] = at, true - a.questionRoomTouched() - return nil, true - } - if key := strings.TrimSpace(room.head.question.Options[at].Key); key != "" { - a.questionRoomPick(key) - } - a.questionRoomTouched() - return a.questionRoomEnter(), true -} - -// questionRoomScroll moves the page's window. -func (a *app) questionRoomScroll(delta int) { - room := a.qroom - if room == nil { - return - } - total := len(a.questionRoomRows(a.bodyWidth())) - bottom := max(0, total-a.viewHeight()) - room.offset = questionClamp(room.offset+delta, 0, bottom) - a.touch() -} - // askBackCmd sends one sentence to the asker WITH THE QUESTION STILL OPEN. // // DESIGN.md gives this two seams — "sent to the asker through ResolveQuestion's diff --git a/internal/tui3/view.go b/internal/tui3/view.go index 39e8168fb5..200a37c8cb 100644 --- a/internal/tui3/view.go +++ b/internal/tui3/view.go @@ -642,7 +642,7 @@ func (a *app) frameLines(rows, chrome []string, height, caretX, caretRow, lift, // [app.chromeAt] resolves a pointer to one of them — three questions that must // never be able to disagree about where the input line is. func (a *app) chrome(width int) ([]string, []chromeRow, int, int) { - roomy := a.breathingRows() > 0 + roomy := a.footClearance() > 0 rows := make([]string, 0, 8) marks := make([]chromeRow, 0, 8) @@ -927,8 +927,13 @@ func (a *app) chromeHeight() int { // on the same clearance ([spacingRuleClearance], pages.go's [placeFrame]). It // used to keep a second blank under the box that no place has, so `esc` from // home into a chat moved the box and the rule up a row (PLACES-AUDIT.md, lane K). +// +// AND A QUESTION'S PAGE BRINGS ITS OWN RULE (questionroom.go's +// [app.questionFootRows]): the rule that closes its two panes meets their seam +// and carries what `enter` would send, so the legend and its blank would be a +// second rule a row above the first, naming keys the page does not take. func (a *app) footClearance() int { - if a.breathingRows() == 0 { + if a.breathingRows() == 0 || a.questionRoomOpen() { return 0 } return spacingRuleClearance From e4f892bcd675f7b18b34830475dd1fba35b2adba Mon Sep 17 00:00:00 2001 From: santoshkumarradha Date: Fri, 11 Sep 2026 16:46:51 -0400 Subject: [PATCH 2/8] test(lane R): the evidence split, the unfold, the page's seam and foot, and the one-case law Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_017H1FB8sA1fp7xEQySWuUMs --- internal/tui3/questionevidence_test.go | 276 ++++++++++++++++++++++ internal/tui3/questionevidencelaw_test.go | 109 +++++++++ internal/tui3/questionhand_test.go | 12 +- internal/tui3/questioninput_test.go | 18 +- internal/tui3/questionpage.go | 7 +- internal/tui3/questionroom_test.go | 238 ++++++++++++------- 6 files changed, 562 insertions(+), 98 deletions(-) create mode 100644 internal/tui3/questionevidence_test.go create mode 100644 internal/tui3/questionevidencelaw_test.go diff --git a/internal/tui3/questionevidence_test.go b/internal/tui3/questionevidence_test.go new file mode 100644 index 0000000000..025d1323fe --- /dev/null +++ b/internal/tui3/questionevidence_test.go @@ -0,0 +1,276 @@ +package tui3 + +// THE EVIDENCE AN ANSWER BRINGS, WHEREVER A QUESTION IS DRAWN. +// +// These hold the owner's three picks of 2026-09-11 about evidence: at a hundred +// columns and wider a panel whose answers brought something to look at lays +// them in a list with the evidence of the one the pointer is on beside it +// (preview A); narrower, that evidence unfolds under the pointer's row +// (preview-narrow B); and `o` opens the page as two panes (page A). And they +// hold what keeps those drawings honest: the one chooser decides, the evidence +// follows the pointer, a panel never takes more than half the frame, a press on +// evidence presses nothing, the answer the pointer is on is always on screen, +// and the page's two rules meet one seam. + +import ( + "strings" + "testing" + "time" + + tea "charm.land/bubbletea/v2" + "github.com/charmbracelet/x/ansi" + + "github.com/Agent-Field/aforge-v2/internal/session" + "github.com/Agent-Field/aforge-v2/internal/tui2/tokens" +) + +// tallEvidence is the worked example with a diagram under its pick far taller +// than any panel may be. +func tallEvidence() session.Question { + q := demoQuestionReading() + q.Form = session.FormCard + q.Options[0].Blocks = []session.Block{{Kind: session.BlockDiagram, Title: "all of it", + Body: strings.TrimRight(strings.Repeat("a row of the drawing\n", 30), "\n")}} + return q +} + +// THE SPLIT IS A RUNG OF THE ONE CHOOSER, AND IT READS WHAT THE ANSWERS CARRY +// AND THE WIDTH — nothing else. The same question takes the split from the width +// two columns stand at and the panel below it; a question whose only evidence is +// the question's own never splits, because a pane that follows the pointer would +// have nothing different to show for each answer. +func TestTheSplitIsARungOfTheOneChooser(t *testing.T) { + lab := newQuestionLab(t) + q := questionShown{question: demoQuestionReading(), shown: lab.a.now()} + if got := lab.a.questionViewOf(q, railSlimFloor); got != viewSplit { + t.Errorf("at %d columns answers with blocks take view %d, want the split", railSlimFloor, got) + } + if got := lab.a.questionViewOf(q, railSlimFloor-1); got != viewPanel { + t.Errorf("at %d columns answers with blocks take view %d, want the panel", railSlimFloor-1, got) + } + attached := demoQuestionReading() + for i := range attached.Options { + attached.Options[i].Blocks = nil + } + attached.Attach = []session.Block{{Kind: session.BlockText, Body: "the whole decision"}} + if got := lab.a.questionViewOf(questionShown{question: attached, shown: lab.a.now()}, 140); got != viewPanel { + t.Errorf("a question whose only evidence is its own takes view %d, want the panel", got) + } + found := false + for _, rung := range questionLadder { + found = found || rung.view == viewSplit + } + if !found { + t.Fatal("the split is not a rung of the ladder") + } +} + +// THE EVIDENCE FOLLOWS THE POINTER, ON THE PANEL AS ON THE PAGE. The list stays +// where it is and the pane beside it changes to the answer walked to — which is +// the whole of what a pane beside a list is for. +func TestTheEvidenceBesideTheListFollowsThePointer(t *testing.T) { + lab := newQuestionLab(t) + lab.a.width, lab.a.height = 140, 60 + lab.raise(demoQuestionReading()) + lab.tick(time.Second) + first := lab.plain() + if !strings.Contains(first, "Rows already carry a foreign key") || strings.Contains(first, "One file in the repository") { + t.Fatalf("the pane should hold the pick's evidence and only its:\n%s", first) + } + if !strings.Contains(first, tokens.GlyphFrameSide+" postgres") { + t.Errorf("the pane should open on the answer's own word, beside the seam:\n%s", first) + } + lab.press("down") + moved := lab.plain() + if !strings.Contains(moved, "One file in the repository") || strings.Contains(moved, "Rows already carry a foreign key") { + t.Errorf("walking down should put the second answer's evidence in the pane:\n%s", moved) + } + // AND THE LIST CARRIES NO CONSEQUENCE: what an answer leaves true is the + // pane's first labelled line, and the row beside the pane says it nowhere. + if strings.Count(moved, "the ledger travels with the checkout") != 1 || + !strings.Contains(moved, questionThenWord+"the ledger travels with the checkout") { + t.Errorf("what taking it leaves true belongs in the pane, labelled:\n%s", moved) + } +} + +// NARROWER THAN TWO PANES, THE EVIDENCE UNFOLDS UNDER THE POINTER'S ROW +// (preview-narrow pick B), and the row gives up what it leaves true to the +// unfolded evidence rather than saying it twice and cutting it the first time. +func TestNarrowerThanTwoPanesTheEvidenceUnfoldsUnderItsRow(t *testing.T) { + lab := newQuestionLab(t) + lab.a.width, lab.a.height = 96, 60 + lab.raise(demoQuestionReading()) + rows := questionPlainRows(lab.rows()) + pick, block, next := -1, -1, -1 + for at, row := range rows { + switch { + case strings.Contains(row, "1 postgres"): + pick = at + if strings.Contains(row, "share one connection") { + t.Errorf("the pointer's row should give its consequence to the evidence under it: %q", row) + } + case strings.Contains(row, "what it would look like"): + block = at + case strings.Contains(row, "2 sqlite beside the project"): + next = at + } + } + if !(pick >= 0 && pick < block && block < next) { + t.Fatalf("the evidence should unfold between the pointer's row and the next answer (%d %d %d):\n%s", + pick, block, next, strings.Join(rows, "\n")) + } + if !strings.Contains(strings.Join(rows, "\n"), questionThenWord+"the ledger and the rest of the project share one connection") { + t.Errorf("the unfolded evidence should carry what taking it leaves true:\n%s", strings.Join(rows, "\n")) + } + if strings.Contains(strings.Join(rows, "\n"), tokens.GlyphFrameSide+" postgres") { + t.Errorf("a narrow panel should not split:\n%s", strings.Join(rows, "\n")) + } +} + +// A PANEL NEVER TAKES MORE THAN HALF THE FRAME, split or unfolded, and a cut is +// said on its last row with its count and the way to the rest. +func TestAPanelNeverTakesMoreThanHalfTheFrame(t *testing.T) { + for _, width := range []int{140, 110, 96} { + lab := newQuestionLab(t) + lab.a.width, lab.a.height = width, 40 + lab.raise(tallEvidence()) + rows := questionPlainRows(lab.rows()) + if len(rows) > lab.a.questionPanelTall()+1 { + t.Errorf("at %d columns the panel took %d rows of a %d-row frame:\n%s", + width, len(rows), lab.a.height, strings.Join(rows, "\n")) + } + drawn := strings.Join(rows, "\n") + if !strings.Contains(drawn, questionMoreWord+questionKeyGap+lab.a.questionOpenFullWord()) { + t.Errorf("at %d columns the cut should say how much is left and how to reach it:\n%s", width, drawn) + } + for _, row := range lab.rows() { + if got := ansi.StringWidth(row); got > width { + t.Errorf("at %d columns a row is %d cells: %q", width, got, ansi.Strip(row)) + } + } + } +} + +// A PRESS ON THE LIST PRESSES AN ANSWER AND A PRESS ON THE EVIDENCE PRESSES +// NOTHING. The pane is prose and pictures, and a click aimed at a diagram that +// answered the question would be the worst press on this surface. +func TestAPressOnTheEvidenceBesideTheListPressesNothing(t *testing.T) { + lab := newQuestionLab(t) + lab.a.width, lab.a.height = 140, 60 + lab.raise(demoQuestionReading()) + seam := -1 + for _, row := range questionPlainRows(lab.rows()) { + if at := strings.Index(row, tokens.GlyphFrameSide+" postgres"); at >= 0 { + seam = ansi.StringWidth(row[:at]) + } + } + if seam < 0 { + t.Fatal("the panel did not split") + } + if len(lab.a.questionBands) == 0 { + t.Fatal("the list recorded no answers to press") + } + for _, band := range lab.a.questionBands { + if band.span.to > seam { + t.Errorf("answer %d's target reaches past the seam at %d into the evidence: %+v", band.at, seam, band.span) + } + } +} + +// THE ANSWER THE POINTER IS ON IS ALWAYS ON SCREEN, in one column and in two +// panes, however far down the arrows walk and however tall the evidence under +// it — the defect lane F measured on the old page, where the window moved only +// under the wheel. +func TestTheAnswerThePointerIsOnIsAlwaysOnScreen(t *testing.T) { + q := tallEvidence() + q.Form = session.FormRoom + for i := 0; i < 4; i++ { + q.Options = append(q.Options, session.AnswerOption{ + Key: itoa(len(q.Options) + 1), Label: "another store, number " + itoa(i), + Body: "A body long enough to take a row or two of the column.", Consequence: "something follows", + }) + } + for _, width := range []int{92, 140} { + a, _ := standingInAQuestionAt(t, q, width, 22) + for step := 0; step < len(q.Options); step++ { + want := questionOptionKeyAt(q, a.qroom.focus) + " " + strings.TrimSpace(q.Options[a.qroom.focus].Label) + if drawn := pageText(a); !strings.Contains(drawn, want) { + t.Fatalf("at %d columns the pointer's answer %q is off the screen:\n%s", width, want, drawn) + } + tapNamed(t, a, tea.KeyDown, 0) + } + for step := 0; step < len(q.Options); step++ { + tapNamed(t, a, tea.KeyUp, 0) + } + if drawn := pageText(a); !strings.Contains(drawn, "1 postgres") { + t.Fatalf("at %d columns walking back to the top left the first answer off the screen:\n%s", width, drawn) + } + } +} + +// THE PAGE STANDS AS TWO PANES FROM THE WIDTH TWO COLUMNS STAND AT — the body's +// width, which is the frame less any task column beside it — and the rule under +// the head and the rule in the foot meet one seam: the junction the foot draws is +// in the column the body's seam runs down. +func TestThePagesTwoRulesMeetOneSeam(t *testing.T) { + split := 0 + for _, width := range []int{96, 120, 140, 180} { + a, _ := standingInAQuestionAt(t, demoQuestionReading(), width, 40) + body := a.bodyWidth() + drawn := a.questionRoomRows(body) + rows := make([]string, len(drawn)) + for i, r := range drawn { + rows[i] = plain(r.text) + } + seam := a.qroom.seam + if want := body >= railSlimFloor; (seam >= 0) != want { + t.Fatalf("a body %d wide drew seam %d; two panes stand from %d", body, seam, railSlimFloor) + } + if seam < 0 { + continue + } + split++ + top := -1 + for at, row := range rows { + if strings.Contains(row, tokens.GlyphFrameTeeDown) { + top = at + if got := string([]rune(row)[seam]); got != tokens.GlyphFrameTeeDown { + t.Errorf("at %d columns the rule over the panes meets the seam at %d with %q", body, seam, got) + } + } + } + if top < 0 { + t.Fatalf("at %d columns there is no rule over the panes:\n%s", body, strings.Join(rows, "\n")) + } + for _, row := range rows[top+1:] { + if got := string([]rune(row)[seam]); got != tokens.GlyphFrameSide { + t.Errorf("at %d columns the seam breaks: %q", body, row) + break + } + } + foot := []rune(plain(a.questionFootRows(width)[0])) + if got := string(foot[seam]); got != tokens.GlyphFrameTeeUp { + t.Errorf("at %d columns the foot's rule meets the seam with %q: %q", body, got, string(foot)) + } + } + if split == 0 { + t.Fatal("no width drew two panes") + } +} + +// THE PAGE'S FOOT IS ITS OWN RULE, so the legend and its blank are not drawn a +// row above it while the page is up — two rules one row apart, the upper one +// naming keys the page does not take — and the geometry that counts the +// conversation's rows agrees with the frame that draws them. +func TestThePagesFootReplacesTheLegend(t *testing.T) { + a, _ := standingInAQuestionAt(t, demoQuestionReading(), 140, 40) + chrome, _, _, _ := a.chrome(a.width) + for _, row := range chrome { + if strings.Contains(plain(row), "/ commands") { + t.Errorf("the conversation's legend is drawn over the page's foot: %q", plain(row)) + } + } + if got, want := len(chrome), a.chromeHeight(); got != want { + t.Errorf("the frame draws %d chrome rows and the geometry charges %d", got, want) + } +} diff --git a/internal/tui3/questionevidencelaw_test.go b/internal/tui3/questionevidencelaw_test.go new file mode 100644 index 0000000000..519fbc24a7 --- /dev/null +++ b/internal/tui3/questionevidencelaw_test.go @@ -0,0 +1,109 @@ +package tui3 + +import ( + "go/ast" + "go/parser" + "go/token" + "os" + "path/filepath" + "strings" + "testing" +) + +// ONE ACCOUNT OF AN ANSWER'S CASE, AND ONE RENDERER FOR WHAT IT DREW. +// +// An answer's evidence is drawn in four places — the pane beside a wide panel's +// list, the fold under a narrow panel's pointer, the page's right pane and the +// page's one column — and before questionevidence.go each place that drew the +// labelled case spelled it itself: the page wrote `then ·` and `would switch if` +// on its own and the panel wrote its one-line case on its own, and the two +// disagreed about whether a model's `If you…` was joined onto `would switch if` +// twice. These laws hold the seam shut: +// +// - the words that label a case line are READ in questionevidence.go and +// nowhere else (their declarations stand where the page's other words are +// spelled), so a new drawing of the case has to go through [questionCase]; +// - the six block renderers are called by [app.questionBlockRows] and by each +// other in questionblocks.go, and from no other file, so a new drawing of +// evidence cannot grow a diagram painter of its own. + +// questionCaseWords are the labels of an answer's case. +var questionCaseWords = []string{"questionThenWord", "questionWhyWord", "questionWouldSwitchWord", "questionConfidenceLabel"} + +// questionBlockPainters are the renderers behind [app.questionBlockRows]. +var questionBlockPainters = []string{ + "questionDiagramLines", "questionTableLines", "questionDiffLines", + "questionImageLines", "questionLayoutLines", +} + +func TestAnAnswersCaseIsSpelledInOnePlace(t *testing.T) { + uses := questionIdentUses(t, append(append([]string{}, questionCaseWords...), questionBlockPainters...)) + for _, word := range questionCaseWords { + for _, file := range uses[word] { + if file != "questionevidence.go" { + t.Errorf("%s reads %s: an answer's case is drawn through questionCase in questionevidence.go "+ + "and nowhere else, so every drawing of it agrees", file, word) + } + } + } + for _, painter := range questionBlockPainters { + for _, file := range uses[painter] { + if file != "questionblocks.go" { + t.Errorf("%s calls %s: every block is drawn through questionBlockRows, "+ + "so a diagram looks the same wherever a question shows one", file, painter) + } + } + } +} + +// questionIdentUses maps each named identifier to the files (by base name) that +// USE it — a declaration of the name is not a use. +func questionIdentUses(t *testing.T, names []string) map[string][]string { + t.Helper() + want := map[string]bool{} + for _, name := range names { + want[name] = true + } + files, err := filepath.Glob("*.go") + if err != nil { + t.Fatal(err) + } + out := map[string][]string{} + fset := token.NewFileSet() + for _, path := range files { + if strings.HasSuffix(path, "_test.go") { + continue + } + src, err := os.ReadFile(path) + if err != nil { + t.Fatal(err) + } + file, err := parser.ParseFile(fset, path, src, 0) + if err != nil { + t.Fatal(err) + } + declared := map[*ast.Ident]bool{} + ast.Inspect(file, func(n ast.Node) bool { + switch d := n.(type) { + case *ast.ValueSpec: + for _, name := range d.Names { + declared[name] = true + } + case *ast.FuncDecl: + declared[d.Name] = true + } + return true + }) + seen := map[string]bool{} + ast.Inspect(file, func(n ast.Node) bool { + id, ok := n.(*ast.Ident) + if !ok || !want[id.Name] || declared[id] || seen[id.Name] { + return true + } + seen[id.Name] = true + out[id.Name] = append(out[id.Name], filepath.Base(path)) + return true + }) + } + return out +} diff --git a/internal/tui3/questionhand_test.go b/internal/tui3/questionhand_test.go index f8314f99d2..ede13bcc3d 100644 --- a/internal/tui3/questionhand_test.go +++ b/internal/tui3/questionhand_test.go @@ -197,21 +197,21 @@ func TestThePageScrollsToTheAnswerTheArrowsWalkTo(t *testing.T) { } a.openQuestionRoom(head) a.qroom.shown = a.qroom.shown.Add(-time.Second) - // Open every answer so the page is taller than the window, which is the - // shape the defect needs and the shape a page worth opening has. + // Walk to the last answer, which is what makes the page taller than the + // window — the answer the pointer is on carries its evidence, so a page + // worth opening does not fit and this is the shape the defect needs. for range len(q.Options) { a.questionMoveFocus(1) - a.qroom.open[a.qroom.focus] = true } rows := a.questionRoomRows(a.bodyWidth()) if len(rows) <= a.viewHeight() { t.Skipf("the page fits the window (%d rows in %d), so there is nothing to scroll", len(rows), a.viewHeight()) } a.questionMoveFocus(0) - offset := a.questionRoomOffsetFor(len(rows), a.viewHeight()) + offset := a.qroom.offset last := -1 - for at, of := range a.qroom.spots { - if of == a.qroom.focus { + for at, spot := range a.qroom.spots { + if spot.at == a.qroom.focus { last = at } } diff --git a/internal/tui3/questioninput_test.go b/internal/tui3/questioninput_test.go index a141abbd2c..6e3e3718e5 100644 --- a/internal/tui3/questioninput_test.go +++ b/internal/tui3/questioninput_test.go @@ -318,12 +318,12 @@ func TestADiffBlockWearsTheDiffGlyphs(t *testing.T) { } } -// A TWO-PANE LAYOUT IS SIDE BY SIDE ABOVE A HUNDRED COLUMNS AND STACKED BELOW, -// which is DESIGN.md's own number: a pane cut to thirty characters is a pane -// that has stopped being pre-formatted. -func TestALayoutStacksOnANarrowPage(t *testing.T) { - a, _ := standingInAQuestion(t, demoQuestionLayout()) - a.width = 120 +// A TWO-PANE LAYOUT IS SIDE BY SIDE WHERE BOTH PANES FIT WHOLE AND STACKED WHERE +// THEY DO NOT: a pane cut to fit is a pane that has stopped being pre-formatted. +// It used to be a hundred columns of PAGE, and drawn in the evidence pane beside +// a list the same block had seventy — and stacked for no reason anybody could see. +func TestALayoutStacksWhereItsPanesWillNotBothFitWhole(t *testing.T) { + a, _ := standingInAQuestionAt(t, demoQuestionLayout(), 120, 40) wide := pageText(a) sideBySide := false for _, line := range strings.Split(wide, "\n") { @@ -332,14 +332,14 @@ func TestALayoutStacksOnANarrowPage(t *testing.T) { } } if !sideBySide { - t.Errorf("above a hundred columns the panes stand side by side:\n%s", wide) + t.Errorf("in a pane wide enough for both, the panes stand side by side:\n%s", wide) } - a.width = 80 + a.width = 40 a.qroom.dirty = true narrow := pageText(a) for _, line := range strings.Split(narrow, "\n") { if strings.Contains(line, "deepseek-v4-flash") && strings.Contains(line, "deepseek-v4-fl...") { - t.Errorf("under a hundred columns the panes stack:\n%s", narrow) + t.Errorf("where a pane would be cut, the panes stack:\n%s", narrow) } } } diff --git a/internal/tui3/questionpage.go b/internal/tui3/questionpage.go index 4d91a3c0c2..24020cda82 100644 --- a/internal/tui3/questionpage.go +++ b/internal/tui3/questionpage.go @@ -375,6 +375,11 @@ func (a *app) questionPageList(left int) ([]string, []int) { return out, at } +// questionAttachIndent is where the question's OWN evidence sits: under its one +// dim title and one step in from it, so a block reads as belonging to the title +// above it rather than as a second title beside it. +const questionAttachIndent = " " + // questionPageAttach is what the asker showed for the WHOLE decision, as opposed // to what hangs off one answer: one dim title, and the blocks under it. // @@ -392,7 +397,7 @@ func (a *app) questionPageAttach(width int) []string { if i > 0 { out = append(out, "") } - out = append(out, a.questionBlockRows(block, len(questionIndent), width)...) + out = append(out, a.questionBlockRows(block, len(questionAttachIndent), width)...) } return out } diff --git a/internal/tui3/questionroom_test.go b/internal/tui3/questionroom_test.go index a2d34ef1a1..35d0a7abfd 100644 --- a/internal/tui3/questionroom_test.go +++ b/internal/tui3/questionroom_test.go @@ -46,13 +46,20 @@ func newAnsweringAgent() *answeringAgent { } // standingInAQuestion is a surface with the worked example open and the settle -// guard already spent. +// guard already spent, at a width that draws the page as ONE column. func standingInAQuestion(t *testing.T, q session.Question) (*app, *answeringAgent) { + t.Helper() + return standingInAQuestionAt(t, q, 92, 40) +} + +// standingInAQuestionAt is the same page at a size of the test's choosing — a +// hundred columns and wider draws it as two panes. +func standingInAQuestionAt(t *testing.T, q session.Question, width, height int) (*app, *answeringAgent) { t.Helper() agent := newAnsweringAgent() a := newTestApp(agent) - a.width, a.height = 92, 30 - a.raiseQuestionRoom(questionShown{question: q, shown: a.now()}) + a.width, a.height = width, height + a.raiseQuestionRoom(questionShown{question: q, shown: a.now(), pick: questionPointerStart(q)}) a.qroom.shown = a.qroom.shown.Add(-time.Second) return a, agent } @@ -141,7 +148,7 @@ func TestThePickCarriesItsReasonConfidenceAndWhatWouldChangeIt(t *testing.T) { a, _ := standingInAQuestion(t, demoQuestionReading()) drawn := pageText(a) for _, want := range []string{ - questionPickWord, + questionRecommendedWord, "fairly sure", "because it is the only store the reporting job already reads", questionWouldSwitchWord + "the ledger ever has to run on a machine with no server on it", @@ -152,29 +159,34 @@ func TestThePickCarriesItsReasonConfidenceAndWhatWouldChangeIt(t *testing.T) { } } -// THE PAGE OPENS ON THE PICK AND FOLDS THE REST. A page that opened everything -// is a wall, and one that opened nothing makes a person press a key to read the -// answer the asker would take. -func TestThePageOpensOnThePickAndFoldsTheRest(t *testing.T) { - a, _ := standingInAQuestion(t, demoQuestionReading()) - drawn := pageText(a) - if !strings.Contains(drawn, "Rows already carry a foreign key") { - t.Errorf("the pick should be open:\n%s", drawn) - } - if strings.Contains(drawn, "One file in the repository") { - t.Errorf("everything but the pick should be folded:\n%s", drawn) - } - if !strings.Contains(drawn, tokens.GlyphCollapsed) || !strings.Contains(drawn, tokens.GlyphExpanded) { - t.Errorf("the sections should draw both fold marks:\n%s", drawn) +// THE PAGE OPENS ON THE PICK WITH ITS EVIDENCE, AND EVERY OTHER ANSWER IS A ROW. +// A page that drew every answer's evidence is a wall, and one that drew none +// makes a person press a key to read the answer the asker would take. There are +// no sections to fold any more: the evidence follows the pointer. +func TestThePageOpensOnThePickWithItsEvidence(t *testing.T) { + for _, width := range []int{92, 140} { + a, _ := standingInAQuestionAt(t, demoQuestionReading(), width, 40) + drawn := pageText(a) + if !strings.Contains(drawn, "Rows already carry a foreign key") { + t.Errorf("at %d columns the pick's evidence should be on the page:\n%s", width, drawn) + } + if strings.Contains(drawn, "One file in the repository") { + t.Errorf("at %d columns only the answer the pointer is on shows its evidence:\n%s", width, drawn) + } + // The collapsed mark shares its byte with the pointer, so the open one is + // the fold mark a page of sections could not draw without. + if strings.Contains(drawn, tokens.GlyphExpanded) { + t.Errorf("at %d columns the page still draws fold marks:\n%s", width, drawn) + } } } -// A DIGIT TAKES AN ANSWER AND OPENS IT, and the foot says what enter would send. +// A DIGIT MOVES THE POINTER TO ITS ANSWER, and the foot says what enter would send. func TestADigitTakesAnAnswerAndTheFootSaysWhatWouldBeSent(t *testing.T) { a, _ := standingInAQuestion(t, demoQuestionReading()) tap(t, a, "2") if drawn := pageText(a); !strings.Contains(drawn, "One file in the repository") { - t.Errorf("picking an answer should open it:\n%s", drawn) + t.Errorf("a digit should put its answer's evidence on the page:\n%s", drawn) } if foot := footText(a); !strings.Contains(foot, questionAnsweringWord+"2 sqlite beside the project") { t.Errorf("the foot should say what would be sent:\n%s", foot) @@ -192,13 +204,21 @@ func TestTheFootOffersNoAnswerUntilThereIsOne(t *testing.T) { q := demoQuestionReading() q.Pick = nil a, _ := standingInAQuestion(t, q) - if foot := footText(a); !strings.Contains(foot, questionNoPickWord) { - t.Errorf("the foot should say nothing is chosen:\n%s", foot) + if foot := footText(a); !strings.Contains(foot, questionAnsweringWord+"1 postgres") { + t.Errorf("with no pick the foot answers the pointer's own answer:\n%s", foot) + } + // AND ON `something else…` WITH AN EMPTY BOX THERE IS NOTHING TO SEND. + for i := 0; i < len(q.Options); i++ { + tapNamed(t, a, tea.KeyDown, 0) + } + foot := footText(a) + if !strings.Contains(foot, questionNoPickWord) || strings.Contains(foot, questionKeyWord(questionEnterKey)) { + t.Errorf("the other row with nothing typed should offer nothing to send:\n%s", foot) } bare := demoQuestionReading() bare.Pick, bare.Options, bare.Attach = nil, nil, nil a, _ = standingInAQuestion(t, bare) - foot := footText(a) + foot = footText(a) if !strings.Contains(foot, questionNoPickWord) { t.Errorf("the foot should say nothing is chosen:\n%s", foot) } @@ -460,13 +480,13 @@ func TestTheSettleGuardDropsAKeyThatWasAlreadyTravelling(t *testing.T) { a.width, a.height = 92, 30 a.raiseQuestionRoom(questionShown{question: demoQuestionReading(), shown: a.now()}) tap(t, a, "2") - if got := a.qroom.picked; len(got) != 0 { - t.Errorf("a key inside the settle window must be dropped, got %#v", got) + if got := a.qroom.focus; got != 0 { + t.Errorf("a key inside the settle window must be dropped, the pointer moved to %d", got) } a.qroom.shown = a.qroom.shown.Add(-questionSettle) tap(t, a, "2") - if got := a.qroom.picked; len(got) != 1 || got[0] != "2" { - t.Errorf("a key after the settle window should be taken, got %#v", got) + if got := a.qroom.focus; got != 1 { + t.Errorf("a key after the settle window should be taken, the pointer is on %d", got) } } @@ -829,13 +849,12 @@ func pagePlainRows(a *app) []string { return out } -// questionRoomRowY is the screen row one of the page's rows is drawn on, so a -// test can press what a person presses rather than calling the hit-test's own -// arithmetic back at it. +// questionRoomRowY is the screen row one of the page's drawn rows stands on, so +// a test can press what a person presses rather than calling the hit-test's own +// arithmetic back at it. The page's rows ARE its window: they hang from the top +// of the body region. func questionRoomRowY(a *app, at int) int { - rows := a.questionRoomRows(a.bodyWidth()) - offset := a.questionRoomOffsetFor(len(rows), a.viewHeight()) - return a.bodyTop() + at - offset + return a.bodyTop() + at } // questionRoomOptionRow is where one ANSWER's own row landed, by the map the @@ -843,8 +862,8 @@ func questionRoomRowY(a *app, at int) int { func questionRoomOptionRow(t *testing.T, a *app, want int) int { t.Helper() a.questionRoomRows(a.bodyWidth()) - for at, owner := range a.qroom.spots { - if owner == want { + for at, spot := range a.qroom.spots { + if spot.at == want { return at } } @@ -852,34 +871,71 @@ func questionRoomOptionRow(t *testing.T, a *app, want int) int { return -1 } -// `↑` AND `↓` WALK THE ANSWERS AND `→`/`←` OPEN AND FOLD ONE. Every one of them -// did nothing before, on a page whose own foot named a pair of arrows. -func TestTheArrowsWalkTheAnswersAndOpenAndFoldThem(t *testing.T) { - a, _ := standingInAQuestion(t, demoQuestionReading()) - if a.qroom.focus != 0 { - t.Fatalf("the page should open on the pick, not on %d", a.qroom.focus) - } - tapNamed(t, a, tea.KeyDown, 0) - if a.qroom.focus != 1 { - t.Errorf("down should walk to the second answer, got %d", a.qroom.focus) +// `↑` AND `↓` WALK THE ANSWERS AND THE EVIDENCE FOLLOWS. In one column the +// answer the pointer reaches unfolds under its row and the one it left folds +// back to a row; in two panes the pane beside the list changes to it. +func TestTheArrowsWalkTheAnswersAndTheEvidenceFollows(t *testing.T) { + for _, width := range []int{92, 140} { + a, _ := standingInAQuestionAt(t, demoQuestionReading(), width, 40) + if a.qroom.focus != 0 { + t.Fatalf("the page should open on the pick, not on %d", a.qroom.focus) + } + tapNamed(t, a, tea.KeyDown, 0) + if a.qroom.focus != 1 { + t.Errorf("at %d columns down should walk to the second answer, got %d", width, a.qroom.focus) + } + drawn := pageText(a) + if !strings.Contains(drawn, "One file in the repository") || strings.Contains(drawn, "Rows already carry") { + t.Errorf("at %d columns the evidence should be the second answer's and only its:\n%s", width, drawn) + } + tapNamed(t, a, tea.KeyUp, 0) + if a.qroom.focus != 0 { + t.Errorf("at %d columns up should walk back, got %d", width, a.qroom.focus) + } } - if a.qroom.open[1] { - t.Errorf("walking to an answer must not open it") +} + +// `→` HANDS THE ARROWS TO THE EVIDENCE PANE AND `←` HANDS THEM BACK, and only +// where there IS a pane: on a page of one column the side arrows do nothing and +// the foot does not name them. +func TestTheSideArrowsMoveBetweenTheListAndTheEvidence(t *testing.T) { + q := demoQuestionReading() + q.Options[0].Blocks = []session.Block{{Kind: session.BlockDiagram, Title: "a tall one", + Body: strings.Repeat("row of the diagram\n", 40)}} + a, _ := standingInAQuestionAt(t, q, 140, 30) + if foot := footText(a); !strings.Contains(foot, questionDetailKey+" detail") { + t.Fatalf("two panes should offer the way into the evidence:\n%s", foot) } tapNamed(t, a, tea.KeyRight, 0) - if !a.qroom.open[1] { - t.Errorf("right should open the answer under the pointer") + if !a.qroom.reading { + t.Fatal("right should hand the arrows to the evidence pane") } - if drawn := pageText(a); !strings.Contains(drawn, "One file in the repository") { - t.Errorf("the opened answer's body should be on the page:\n%s", drawn) + foot := footText(a) + if !strings.Contains(foot, questionWalkDownKey+" scroll") || !strings.Contains(foot, questionAnswersKey+" back to the answers") { + t.Errorf("while the arrows are the pane's the foot should say so:\n%s", foot) + } + before := pageText(a) + tapNamed(t, a, tea.KeyDown, 0) + if a.qroom.focus != 0 || a.qroom.detail != 1 { + t.Errorf("down should scroll the pane and leave the pointer: focus %d detail %d", a.qroom.focus, a.qroom.detail) + } + if pageText(a) == before { + t.Error("scrolling the pane changed nothing on screen") } tapNamed(t, a, tea.KeyLeft, 0) - if a.qroom.open[1] { - t.Errorf("left should fold the answer under the pointer") + tapNamed(t, a, tea.KeyDown, 0) + if a.qroom.reading || a.qroom.focus != 1 || a.qroom.detail != 0 { + t.Errorf("left should hand the arrows back, and the next pane opens at its top: reading %v focus %d detail %d", + a.qroom.reading, a.qroom.focus, a.qroom.detail) + } + + narrow, _ := standingInAQuestionAt(t, q, 92, 30) + if foot := footText(narrow); strings.Contains(foot, questionDetailKey+" detail") { + t.Errorf("one column has no pane to move into, and must not offer one:\n%s", foot) } - tapNamed(t, a, tea.KeyUp, 0) - if a.qroom.focus != 0 { - t.Errorf("up should walk back, got %d", a.qroom.focus) + tapNamed(t, narrow, tea.KeyRight, 0) + if narrow.qroom.reading { + t.Error("a side arrow the foot does not name must do nothing") } } @@ -904,10 +960,10 @@ func TestEnterTakesTheAnswerThePointerIsOn(t *testing.T) { } } -// A CLICK OPENS AN ANSWER AND A SECOND CLICK ON IT TAKES IT. One press to read -// and one to decide: a page where the first click answered would answer with -// evidence somebody had not read, and a page where no click ever answered would -// be one a person has to leave the mouse to finish. +// A CLICK MOVES ONTO AN ANSWER AND A SECOND CLICK ON IT TAKES IT. One press to +// read and one to decide: a page where the first click answered would answer +// with evidence somebody had not read, and a page where no click ever answered +// would be one a person has to leave the mouse to finish. func TestAClickOpensAnAnswerAndASecondClickTakesIt(t *testing.T) { a, agent := standingInAQuestion(t, demoQuestionReading()) at := questionRoomOptionRow(t, a, 2) @@ -915,9 +971,9 @@ func TestAClickOpensAnAnswerAndASecondClickTakesIt(t *testing.T) { if a.qroom == nil { t.Fatalf("one click must not answer the question") } - if a.qroom.focus != 2 || !a.qroom.open[2] { - t.Fatalf("a click should move the pointer onto that answer and open it: focus %d open %v", - a.qroom.focus, a.qroom.open[2]) + if a.qroom.focus != 2 || !strings.Contains(pageText(a), "Append-only, one file a day") { + t.Fatalf("a click should move the pointer onto that answer and show its evidence: focus %d\n%s", + a.qroom.focus, pageText(a)) } if len(agent.answers) != 0 { t.Fatalf("one click must not answer the question: %+v", agent.answers) @@ -945,6 +1001,16 @@ func TestThePointerLightsTheAnswerAPressWouldTake(t *testing.T) { if hot := a.hoverTarget(8, body); hot.kind == hoverQuestionOption { t.Errorf("an answer's body is prose and must not light as a target: %+v", hot) } + // AND IN TWO PANES THE EVIDENCE BESIDE AN ANSWER'S ROW IS NOT THAT ANSWER: + // the row is a target on the left of the seam and prose on the right of it. + wide, _ := standingInAQuestionAt(t, demoQuestionReading(), 140, 40) + row := questionRoomRowY(wide, questionRoomOptionRow(t, wide, 1)) + if hot := wide.hoverTarget(4, row); hot.kind != hoverQuestionOption || hot.index != 1 { + t.Errorf("the list's row should light its answer: %+v", hot) + } + if hot := wide.hoverTarget(wide.qroom.seam+4, row); hot.kind == hoverQuestionOption { + t.Errorf("the evidence beside a row must not light as that answer: %+v", hot) + } } // ── THE HIERARCHY ─────────────────────────────────────────────────────────── @@ -967,15 +1033,15 @@ func TestAnOpenAnswerSaysWhichOfItsLinesIsWhich(t *testing.T) { } } -// AND THE THREE TIERS ARE THREE INKS: the label is the question hue and the -// weight together, the body is the prose ink, and every aside under it is dim. +// AND THE THREE TIERS ARE THREE INKS: the answer's row is the panel's own, the +// body is the prose ink, and every aside under it is dim. func TestAnAnswersLabelBodyAndAsidesAreThreeDifferentInks(t *testing.T) { a, _ := standingInAQuestion(t, demoQuestionReading()) rows := a.questionRoomRows(a.width) var head, body, aside string for _, r := range rows { switch { - case strings.Contains(plain(r.text), "▾ 1 postgres"): + case strings.Contains(plain(r.text), "1 postgres"): head = r.text case strings.Contains(plain(r.text), "Rows already carry a foreign key"): body = r.text @@ -986,12 +1052,12 @@ func TestAnAnswersLabelBodyAndAsidesAreThreeDifferentInks(t *testing.T) { if head == "" || body == "" || aside == "" { t.Fatalf("the open answer should draw a heading, a body and an aside:\n%s", pageText(a)) } - // THE KEY IS THE PAYLOAD HUE AND THE WORD IS BOLD INK, which is the panel's - // own grammar for an answer (owner ruling 2026-09-11, colour pick C: the - // amber stays on the marks). - if !strings.Contains(head, a.pal.data("1")) || - !strings.Contains(head, a.pal.bold(a.pal.ink("postgres"))) { - t.Errorf("the label is not the key in the payload hue and the word in bold ink: %q", head) + // THE KEY IS THE PAYLOAD HUE AND THE WORD IS INK, which is the panel's own + // grammar for an answer (owner ruling 2026-09-11, colour pick C: the amber + // stays on the marks) — the page's rows ARE the panel's. + inkOpen := strings.SplitN(a.pal.ink("x"), "x", 2)[0] + if !strings.Contains(head, a.pal.data("1")) || !strings.Contains(head, inkOpen+"postgres") { + t.Errorf("the label is not the key in the payload hue and the word in ink: %q", head) } if !strings.Contains(body, a.pal.ink("Rows already carry a foreign key into it and the migration is one file.")) { t.Errorf("the body should be the prose ink: %q", body) @@ -1032,19 +1098,19 @@ func TestWhatWouldChangeItsMindReadsAsOneClause(t *testing.T) { // ── THE EVIDENCE, LAID OUT WITH WHAT IT BELONGS TO ────────────────────────── -// AN ANSWER'S OWN BLOCKS ARE DRAWN UNDER IT, at its body's indent, with a blank -// row before each. +// AN ANSWER'S OWN BLOCKS ARE DRAWN WITH ITS EVIDENCE, at its body's indent, with +// a blank row before each — under its row in one column. func TestAnAnswersBlocksAreDrawnUnderTheAnswer(t *testing.T) { a, _ := standingInAQuestion(t, demoQuestionReading()) rows := pagePlainRows(a) head, title := -1, -1 for at, line := range rows { switch { - case strings.Contains(line, "▾ 1 postgres"): + case strings.Contains(line, "1 postgres"): head = at case strings.Contains(line, "what it would look like"): title = at - case strings.Contains(line, "▸ 2 sqlite") && title < 0: + case strings.Contains(line, "2 sqlite") && title < 0: t.Fatalf("the block should be drawn before the next answer:\n%s", strings.Join(rows, "\n")) } } @@ -1059,9 +1125,11 @@ func TestAnAnswersBlocksAreDrawnUnderTheAnswer(t *testing.T) { } } -// AND THE QUESTION'S OWN EVIDENCE IS ONE TITLED SECTION ABOVE THE ANSWERS, -// never a run of unowned pictures at the gutter after them. -func TestTheQuestionsOwnEvidenceIsOneTitledSectionAboveTheAnswers(t *testing.T) { +// AND THE QUESTION'S OWN EVIDENCE IS ONE TITLED SECTION UNDER THE ANSWERS, in +// the list's own column (page pick A): it is the same whichever answer is being +// weighed, so it stands with the thing that stays still and never in the pane +// that changes with the pointer. +func TestTheQuestionsOwnEvidenceIsOneTitledSectionUnderTheAnswers(t *testing.T) { q := demoQuestionReading() q.Attach = []session.Block{ {Kind: session.BlockDiagram, Title: "where the rows are today", Body: "app --> sqlite"}, @@ -1076,15 +1144,21 @@ func TestTheQuestionsOwnEvidenceIsOneTitledSectionAboveTheAnswers(t *testing.T) section = at case strings.Contains(line, "where the rows are today"): first = at - case strings.Contains(line, "▾ 1 postgres"): + case strings.Contains(line, "3 a file per day"): answers = at } } if section < 0 || first < 0 || answers < 0 { t.Fatalf("the page should title the question's own evidence:\n%s", strings.Join(rows, "\n")) } - if !(section < first && first < answers) { - t.Errorf("the evidence should be one section above the answers: %d %d %d", section, first, answers) + if !(answers < section && section < first) { + t.Errorf("the evidence should be one section under the answers: %d %d %d", answers, section, first) + } + wide, _ := standingInAQuestionAt(t, q, 140, 40) + for _, line := range pagePlainRows(wide) { + if at := strings.Index(line, "where the rows are today"); at >= 0 && at > wide.qroom.seam { + t.Errorf("the question's own evidence belongs left of the seam, under the list: %q", line) + } } if !strings.HasPrefix(rows[section], questionIndent) || strings.HasPrefix(rows[section], questionIndent+" ") { t.Errorf("the section's title should sit at the page's own indent: %q", rows[section]) From d1b81a05330143f26f20736efc9ba650eb12b254 Mon Sep 17 00:00:00 2001 From: santoshkumarradha Date: Fri, 11 Sep 2026 17:49:10 -0400 Subject: [PATCH 3/8] questions: the manual, the needles and the gallery learn the evidence split and the page The page no longer draws a second time under itself: `o` folds the question it opens, and the fold rule under the page would have been the same question twice with `space open` offering what is already open. A layout block's right-hand pane gets a cell of air past the seam. Co-Authored-By: Claude Opus 5 --- internal/e2e/questions_e2e_test.go | 37 ++++++-- internal/e2e/tuiwords_test.go | 34 +++---- internal/manual/chat/questions.md | 117 ++++++++++++++++++------- internal/tui3/question.go | 8 +- internal/tui3/questionblocks.go | 9 +- internal/tui3/questionevidence_test.go | 12 +++ internal/tui3/questionroom.go | 5 ++ internal/tui3/questionscreens_test.go | 49 ++++++++++- 8 files changed, 214 insertions(+), 57 deletions(-) diff --git a/internal/e2e/questions_e2e_test.go b/internal/e2e/questions_e2e_test.go index a4f6dbab11..6aa79308a3 100644 --- a/internal/e2e/questions_e2e_test.go +++ b/internal/e2e/questions_e2e_test.go @@ -462,8 +462,8 @@ func questionsBlocksUnderAnswers(t *testing.T) { } press(t, r, "o") - room := r.waitFor(20*time.Second, say(t, "questionRoomBackWord"), say(t, "questionRoomPickWord")) - screenSays(t, room, "HRV", "the room lists the answers") + room := r.waitFor(20*time.Second, say(t, "questionRoomWaitsWord")) + screenSays(t, room, "HRV", "the page lists the answers") shot(t, r, "open") press(t, r, "Enter") @@ -522,14 +522,35 @@ func questionsRoom(t *testing.T) { shot(t, r, "card") press(t, r, "o") - room := r.waitFor(20*time.Second, say(t, "questionRoomBackWord"), say(t, "questionRoomPickWord")) - screenSays(t, room, "which store should the ledger sit on?", "the room's head") + room := r.waitFor(20*time.Second, say(t, "questionRoomWaitsWord")) + screenSays(t, room, "which store should the ledger sit on?", "the page's head") screenSays(t, room, say(t, "questionRoomWaitsWord"), "the room says what is stopped on it") screenSays(t, room, say(t, "questionRoomNoPickWord"), "the foot with nothing chosen yet") screenSays(t, room, "what it would look like", "the attached block") screenSays(t, room, say(t, "questionWouldSwitchWord"), "what would change the asker's mind") shot(t, r, "open") + // TWO PANES, AND THE ARROWS MOVING BETWEEN THEM (owner ruling 2026-09-11, + // page pick A). The page splits where the BODY is a hundred cells or wider, + // and the task column is charged against that body — so this is the width + // the terminal has with the column stowed, which is what `ctrl+g` does. + // Below that width the page is one column and `→` is not offered, which is + // why the key is asserted only after the stow. + r.keys("C-g") + split := r.waitFor(15*time.Second, say(t, "questionPageDetailWord")) + screenSays(t, split, "postgres", "the answers keep the left of the split") + shot(t, r, "split") + + press(t, r, "Right") + reading := r.waitFor(15*time.Second, say(t, "questionPageScrollWord")) + screenSays(t, reading, say(t, "questionWouldSwitchWord"), + "the arrows are the evidence pane's, and the evidence is still what they are on") + press(t, r, "Left") + back := r.waitFor(15*time.Second, say(t, "questionPageDetailWord")) + screenSilent(t, back, say(t, "questionPageScrollWord"), + "the arrows are the list's again, so the key that gives them back is not offered") + r.keys("C-g") + press(t, r, "x") compare := r.waitFor(15*time.Second, say(t, "questionCompareOnlyWord")) screenSays(t, compare, "ops cost", "the compare table is built on the asker's own dimensions") @@ -613,7 +634,7 @@ func questionsBlanks(t *testing.T) { shot(t, r, "card") press(t, r, "o") - room := r.waitFor(20*time.Second, say(t, "questionRoomBackWord")) + room := r.waitFor(20*time.Second, say(t, "questionRoomWaitsWord")) // THE HOLES WEAR THEIR OWN NAMES. A form of unlabelled boxes is a form // nobody can fill: the asker named each field and the page owes those names. screenSays(t, room, "table", "the first hole's name") @@ -650,7 +671,7 @@ func questionsChecklist(t *testing.T) { awaitQuestion(t, r, "which checks should run before merge?", say(t, "questionOpenKeyWord")) press(t, r, "o") - room := r.waitFor(20*time.Second, say(t, "questionRoomBackWord"), "unit tests") + room := r.waitFor(20*time.Second, say(t, "questionRoomWaitsWord"), "unit tests") screenSays(t, room, say(t, "questionTickKeyWord"), "the checklist's own key is on the row: a shape whose verb is dropped for width is a shape nobody can work") shot(t, r, "open") @@ -686,7 +707,7 @@ func questionsPairs(t *testing.T) { awaitQuestion(t, r, "settle the two naming calls", say(t, "questionOpenKeyWord")) press(t, r, "o") - room := r.waitFor(20*time.Second, say(t, "questionRoomBackWord")) + room := r.waitFor(20*time.Second, say(t, "questionRoomWaitsWord")) screenSays(t, room, "the table", "the first pair's own name") screenSays(t, room, "ledger", "the first side") screenSays(t, room, "entries", "the second side") @@ -712,7 +733,7 @@ func questionsDial(t *testing.T) { awaitQuestion(t, r, "how hard should the retry loop try?", say(t, "questionOpenKeyWord")) press(t, r, "o") - room := r.waitFor(20*time.Second, say(t, "questionRoomBackWord")) + room := r.waitFor(20*time.Second, say(t, "questionRoomWaitsWord")) screenSays(t, room, say(t, "questionMoveItWord"), "the arrows move the dial rather than a cursor") shot(t, r, "open") diff --git a/internal/e2e/tuiwords_test.go b/internal/e2e/tuiwords_test.go index 680076e803..9ca8980d33 100644 --- a/internal/e2e/tuiwords_test.go +++ b/internal/e2e/tuiwords_test.go @@ -759,10 +759,12 @@ var tuiWords = map[string]tuiWord{ why: "`enter` is offered ONLY where the asker named a pick — the emptiness law on a key", }, "questionOpenKeyWord": { - screen: "[o] open it", - source: "open it", - why: "the key to the room, drawn only where opening would show more than the block already " + - "does; a page that says what the row said is a page nobody should be sent to", + screen: "o open full", + source: "open full", + why: "the key to the page, drawn only where opening would show more than the block already " + + "does; a page that says what the row said is a page nobody should be sent to. It was " + + "`[o] open it` here for a wave after the surface stopped bracketing its keys, which is " + + "exactly the rot this gate exists for", }, "questionChangeKeyWord": { screen: "[c] change", @@ -855,17 +857,19 @@ var tuiWords = map[string]tuiWord{ why: "the ratify line wears the SETTLED mark and not the attention one: nothing waits on it, so " + "a `?` there would be the surface asking for something it has already had", }, - "questionRoomBackWord": { - screen: "‹ back", - source: "‹", - pkg: tokensPkg, - why: "the room is a VIEW and not a modal, so it owes a crumb out. The mark is the vocabulary's " + - "scope-up and the word beside it is internal/tui3's", - }, - "questionRoomPickWord": { - screen: "my pick", - why: "the asker saying which one it would take. It is a fact about the question and never a " + - "cursor, which is a fact about the person", + "questionPageDetailWord": { + screen: "\u2192 detail", + source: "detail", + why: "the page's own key, and the one word that says it is the page and not the panel: two " + + "panes, and `\u2192` hands the arrows to the evidence beside the list. The page used to " + + "owe a `\u2039 back` crumb and to name the asker's answer `my pick`; it draws neither now " + + "(the recommendation wears `\u25c6 recommended` on its own row, in every view)", + }, + "questionPageScrollWord": { + screen: "back to the answers", + why: "and the other half of that: while the arrows are the evidence pane's, `\u2190` gives them " + + "back to the list. A page that took the arrows and never said how to get them back is a " + + "page a person is stuck in", }, "questionRoomWaitsWord": { screen: "the turn waits on it", diff --git a/internal/manual/chat/questions.md b/internal/manual/chat/questions.md index 96e2434b5f..3b034398ed 100644 --- a/internal/manual/chat/questions.md +++ b/internal/manual/chat/questions.md @@ -449,7 +449,7 @@ otherwise: The refusal always says what to do instead: choose, or say what is being assumed. -## How a question looks +## How a question looks — show me the options side by side The block sits directly above the box you type in, and it draws **one question at a time** with a count of anything behind it (`2 more`). It never covers the @@ -488,6 +488,34 @@ the note the asker wrote under it, and where it is the recommendation, why it would take it, how sure it is, and what would change its mind. Move the pointer and the lines move with it. `o` opens the page that has all of it. +**Where the answers brought things to look at** — a diagram, a diff, a table, two +layouts — the panel splits down the middle and shows them side by side: the +answers on the left, and on the right the word of the answer you are standing on, +what it means, its dim `then ·` / `why this one ·` / `would switch if` / +`confidence ·` lines, and everything it drew. Walk the pointer and the right-hand +side changes with it. + +``` +╭─ ? which store should the ledger sit on? ─────────────── aforge asks · waiting ─╮ +│ a schema change is next and it is cheaper before there are rows │ +│ │ │ +│ ▸ 1 postgres ◆ recommended │ postgres │ +│ 2 sqlite beside the project │ Rows already carry a foreign key │ +│ 3 a file per day │ into it. │ +│ 4 something else… │ then · one connection for both │ +│ │ confidence · fairly sure │ +╰─ ↑↓ choose · enter take it · esc later ─────────────────────────────────────────╯ + o open full · c change · ? ask back · d you decide · 1–3 jump +``` + +**Narrower than about a hundred columns there is no room for two**, so the same +lines unfold under the answer's own row instead — and the row gives its `then` +line up to them rather than saying it twice and cutting it the first time. + +Either way **the panel never takes more than half the screen**; the conversation +keeps the rest. Evidence longer than that is cut on a dim line that says what is +left and the way to it: `… 4 more lines · o open full`. + **The last answer is `something else…`.** Walk the pointer onto it and the row becomes a box you type your own answer into: `enter` sends what you wrote as the answer, `↑` goes back to the list, `esc` puts the question off. `c` is a shortcut @@ -563,12 +591,12 @@ the row. | key | what it does | | --- | --- | -| `1`–`9` | take that answer — these work straight away | +| `1`–`9` | take that answer — these work straight away, except on the page a question opens into, where a digit walks the pointer to that answer and `enter` takes it | | `enter` | take the answer the pointer is on — it starts on the recommended one, and on a permission it starts on the answer that loses nothing, so `enter` on a permission you have not moved the pointer on **denies** | -| `↑` `↓` `←` `→` | move the pointer (`↑↓` on the panel, `←→` on a one-row question; both pairs work on both). On the **page** a question opens into, `↑↓` walk the answers and `←→` fold and open the one you are on | +| `↑` `↓` `←` `→` | move the pointer (`↑↓` on the panel, `←→` on a one-row question; both pairs work on both). On the **page** a question opens into, `↑↓` walk the answers, `→` hands them to the evidence beside them and `←` takes them back | | `esc` | later. Nothing is cancelled — the question folds to one titled rule where it stood | | `space` | open a question that has been folded to its rule, while the box is empty | -| `o` | open full: the page with everything the asker attached. Inside the page it opens and folds the answer you are on | +| `o` | open full: the page with everything the asker attached. It is not a key on the page itself — the page IS what it opens | | `c` | change — take an answer, but say what you want different. It moves the pointer to the `something else…` row carrying the answer you were on; on a question that asked for words it points the message box at the question instead | | `?` | ask back before answering. The row becomes `ask back: type your question, then enter · the question stays open`; the question is still there to answer. On a question the model itself asked, the reply comes back while you are still deciding; on a permission, a task proposal or a standing card it reaches the model after you answer | | `d` | you decide | @@ -812,7 +840,7 @@ again is refused in words, because what it allowed has already happened. Those are the ones that were never on a clock and that nobody but you was ever allowed to answer. -## Open a question up and read it properly — the page a question opens into +## Open a question up and read it properly — open it bigger, the page a question opens into A question that carries more than a card can hold — a body under each answer, a diagram, a diff, a table of what each one costs — opens into a page of its own, @@ -823,15 +851,28 @@ taking words, and closing the page puts the conversation back exactly where it was, scrolled where you left it. **Closing it is not answering it**: `esc` means later, the question folds away, and whatever was waiting on it is still waiting. +**Wide enough, the page is two panes with a rule across the top of them.** The +answers stand on the left; the answer you are standing on has its evidence on the +right, and the right-hand side follows the pointer. Narrower than about a hundred +columns the page is one column and that answer unfolds under its own row instead +— the same lines, stacked rather than beside. (The task column counts against the +width: `ctrl+g` stows it and gives the page its cells back.) + The page has, from the top: - the question in one sentence, with the amber `?` -- who is asking and why now, dim -- what is waiting on it and what carries on without it +- who is asking and what is waiting on it, dim — `aforge asks · the turn waits on + it` — with the reason under it +- the answers, one row each, `something else…` last, with `◆ recommended` on the + one the asker would take - anything it drew for the whole decision, under one dim heading `what it showed you` -- one section per answer, folded shut except the one it would take -- a foot pinned above the box saying what `enter` would send +- the answer you are standing on, in full — beside the list, or under its row +- a foot pinned above the box: what `enter` would send, then the keys in two + tiers, the ones that answer on the left and the quieter ones on the right + +There are no folding sections on the page and no `‹ back` row: one answer is open +at a time and it is the one the pointer is on. **A key pressed in the first quarter second is dropped.** A page that appears under a hand already moving would otherwise turn your next keystroke into an @@ -843,41 +884,57 @@ being text. ## Moving around the page — the arrows, and clicking an answer -`↑` and `↓` walk down the answers. The one you are on wears a band, and the foot -says `↑↓ choose`. +`↑` and `↓` walk down the answers. The one you are on wears a band, the foot says +`↑↓ choose`, and **the answer you are on is always on screen** — the list scrolls +to it rather than leaving you standing on a row that has gone past the edge. + +`→ detail` hands the arrows to the evidence: `↑↓ scroll` moves it, and `← back to +the answers` gives them back to the list. The foot always says which of the two +the arrows belong to. -`→` opens the answer you are on and `←` folds it again. They say what they want -rather than toggling, so holding one down is safe. +`enter` **takes** the answer you are on — that is the answer, sent. The page opens +standing on the one it would take, so `enter` straight away still takes its +recommendation. -`enter` **takes** the answer you are on — that is the answer, sent. The page -opens standing on the one it would take, so `enter` straight away still takes -its recommendation. A digit `1`–`9` answers at once from anywhere, whichever -answer you are standing on. +**A digit moves the pointer here; it does not answer.** `1`–`9` walks to that +answer and brings its evidence up, and `enter` takes it. On the block above the +box a digit still answers at once — the page is what you opened in order to read +before deciding, so nothing on it decides on one keystroke. (On a checklist a +digit ticks that answer and ticks it off again.) **Clicking works too, and it takes two clicks to answer.** The first click on an -answer's row moves onto it and opens it; a second click on that same row is -`enter`. One press to read, one to decide — so a click on a page you have not -finished reading cannot decide anything. Clicking a body, a diagram or a note of -your own does nothing: only an answer's own row answers to the mouse, and it is -the only row that lights up under the pointer. +answer's row moves onto it and brings up its evidence; a second click on that +same row is `enter`. One press to read, one to decide — so a click on a page you +have not finished reading cannot decide anything. Clicking the evidence beside +the list, a diagram, or a note of your own does nothing: only an answer's own row +answers to the mouse, and it is the only row that lights up under the pointer. -## What each line under an answer means +The wheel scrolls whichever side it is over: the answers on the left, the +evidence on the right. -An open answer reads in three tiers, and every line says which it is: +## What each line under an answer means — what does each option look like -- the **label** — the digit and the word, bold and amber, the heading of that - section +The answer you are standing on is drawn in full — beside the list where there is +room for two panes, under its own row where there is not — and it reads in three +tiers, every line saying which it is: + +- the **label** — the answer's own word, bold, at the head of the pane. Under its + own row there is no second label: the row above it is the label - what it **means** — the asker's own paragraph, in ordinary ink - the asides, dim, each with its own word in front: - `then ·` what taking it would leave true - `why this one ·` why the asker would take it, on the one it recommends - `would switch if` what would change the asker's mind, which is usually exactly what you disagree with if you disagree -- anything it drew for that answer — a diagram, a diff, a table — under a dim - title of its own, a blank row above it + - `confidence ·` how sure the asker is — `sure`, `fairly sure`, `a guess` +- anything it drew for that answer — a diagram, a diff, a table, two layouts side + by side — a blank row above each + +It is the same account of an answer everywhere it is drawn: beside the list, under +its row, and in the panel above your box. -A blank row closes each open answer, so the next answer's label is not just a -different indent. +The answers you are not on keep their row and nothing else. What one of them would +leave true is said once, in its own evidence, when you walk to it. ## Compare the options diff --git a/internal/tui3/question.go b/internal/tui3/question.go index 29191d2a4d..f8307bb2f3 100644 --- a/internal/tui3/question.go +++ b/internal/tui3/question.go @@ -1009,7 +1009,13 @@ func (a *app) questionRows(width int) []string { // A QUESTION PUT OFF FOLDS IN PLACE AND NOT TO THE FAR SIDE OF THE // FRAME (owner ruling 2026-09-11, fold pick A): one titled rule where // the panel was, saying what is waiting and how to open it again. - if folded, has := a.questionPutOff(); has && a.questionQuieted() { + // + // AND NOT UNDER THE PAGE THAT IS SHOWING IT. `o` folds the question it + // opens, so the block will not draw it a second time with keys of its + // own ([app.openQuestionRoom]). Its fold rule under the page would still be + // the same question drawn twice, with `space open` offering what is + // already open. + if folded, has := a.questionPutOff(); has && a.questionQuieted() && !a.questionPageShows(folded) { out = append(out, a.questionFoldedRow(folded, width)) } // THE SHEET STANDS DOWN FOR A QUESTION BEING READ, and this is the diff --git a/internal/tui3/questionblocks.go b/internal/tui3/questionblocks.go index 5c596dbbf9..9a15c80423 100644 --- a/internal/tui3/questionblocks.go +++ b/internal/tui3/questionblocks.go @@ -236,8 +236,10 @@ func (a *app) questionLayoutLines(block session.Block, width int) []string { if len(panes) == 0 { return a.questionDiagramLines(block, width) } + // The seam costs a cell and the pane past it a cell of air, so what the + // right-hand drawing has is two fewer than the rest of the row. half := (width - 1) / 2 - if len(panes) == 1 || questionPaneWidest(panes[0]) > half || questionPaneWidest(panes[1]) > width-half-1 { + if len(panes) == 1 || questionPaneWidest(panes[0]) > half || questionPaneWidest(panes[1]) > width-half-2 { // STACKED, WITH A BLANK BETWEEN THEM. out := make([]string, 0, 16) for i, pane := range panes { @@ -258,7 +260,10 @@ func (a *app) questionLayoutLines(block session.Block, width int) []string { lefts = append(lefts, a.pal.ink(expandTabs(line))) } for _, line := range panes[1] { - rights = append(rights, a.pal.ink(expandTabs(line))) + // ONE CELL OF AIR PAST THE SEAM. The left pane opens on the block's own + // left edge; a right pane written hard against the seam reads as a + // drawing with a wall through it. + rights = append(rights, a.pal.ink(" "+expandTabs(line))) } return besides(a.pal, lefts, rights, half, width) } diff --git a/internal/tui3/questionevidence_test.go b/internal/tui3/questionevidence_test.go index 025d1323fe..f8add08d5d 100644 --- a/internal/tui3/questionevidence_test.go +++ b/internal/tui3/questionevidence_test.go @@ -274,3 +274,15 @@ func TestThePagesFootReplacesTheLegend(t *testing.T) { t.Errorf("the frame draws %d chrome rows and the geometry charges %d", got, want) } } + +// THE KEYS THE PAGE DID NOT DRAW ARE STILL THE SURFACE'S. The page takes the +// keys it prints on its foot and nothing else — so `ctrl+g`, which stows the +// task column, works while a question is open on the page, and the cells the +// column gives back are what the split is measured in +// ([app.questionRoomBeside] reads [app.bodyWidth]). +func TestTheColumnsOwnKeyStillWorksWhileThePageIsUp(t *testing.T) { + a, _ := standingInAQuestionAt(t, demoQuestionReading(), 120, 40) + if _, took := tapNamed(a, 'g', tea.ModCtrl); took { + t.Fatal("the page took ctrl+g: a key it never printed is a key the surface under it owes") + } +} diff --git a/internal/tui3/questionroom.go b/internal/tui3/questionroom.go index 864d2f59f7..627a819679 100644 --- a/internal/tui3/questionroom.go +++ b/internal/tui3/questionroom.go @@ -310,6 +310,11 @@ type questionRoom struct { // [app.roomOpen] is for a node's page. func (a *app) questionRoomOpen() bool { return a.qroom != nil } +// questionPageShows reports whether the page is up over this very question. +func (a *app) questionPageShows(q questionShown) bool { + return a.qroom != nil && a.qroom.head.token() == q.token() +} + // raiseQuestionRoom puts the page over the conversation. // // IT IS THE DOOR THE OTHER FORMS PROMOTE THROUGH (DESIGN.md: "Every form folds diff --git a/internal/tui3/questionscreens_test.go b/internal/tui3/questionscreens_test.go index a8567a15d6..b6b243f634 100644 --- a/internal/tui3/questionscreens_test.go +++ b/internal/tui3/questionscreens_test.go @@ -49,7 +49,11 @@ func TestQuestionScreens(t *testing.T) { // `held` is the ONE case whose whole point is that the block draws // nothing: a question waiting behind a half-typed sentence, counted in // the status line and nowhere else. - if len(lab.rows()) == 0 && name != "held" { + drew := len(lab.rows()) > 0 + if lab.a.questionRoomOpen() { + drew = len(lab.a.questionRoomRows(lab.a.width)) > 0 + } + if !drew && name != "held" { t.Fatalf("%s drew nothing", name) } if dir == "" { @@ -228,6 +232,49 @@ func TestQuestionScreens(t *testing.T) { }) l.rows() }) + + // THE EVIDENCE, AT THE THREE WIDTHS THE OWNER PICKED FOR (2026-09-11). + // Preview A beside the list at a hundred columns and wider, preview-narrow B + // unfolded under the pointer below that, and page A — the page `o` opens — + // as two panes where they fit and one column where they do not. Each is the + // same answer's evidence through the same renderer, so the six pictures are + // one account of it drawn at three widths. + for _, width := range []int{120, 96, 56} { + shot("evidence-"+itoa(width), func(l *questionLab) { + l.a.width, l.a.height = width, 40 + l.raise(demoQuestionReading()) + l.tick(questionSettle) + }) + shot("page-"+itoa(width), func(l *questionLab) { + l.a.width, l.a.height = width, 40 + // THE COLUMN STOWED (`ctrl+g`), so the page has the frame's width + // to split: the page is drawn in the body, beside the task column + // where one stands, and `page-120-column` is the same page with it up. + l.a.railAway = true + l.raise(demoQuestionReading()) + l.tick(questionSettle) + l.press("o") + }) + } + // THE PAGE BESIDE THE TASK COLUMN. A hundred and twenty columns less the + // column's own is a body under the width two panes need, so the page draws + // its one column — the evidence unfolded under the pointer — rather than + // two panes too narrow to read. + shot("page-120-column", func(l *questionLab) { + l.a.width, l.a.height = 120, 40 + l.raise(demoQuestionReading()) + l.tick(questionSettle) + l.press("o") + }) + // AND A LAYOUT BLOCK ON THE PAGE, whose two panes stand side by side when + // each one's widest line fits its half and stack when one does not. + shot("page-layout-120", func(l *questionLab) { + l.a.width, l.a.height = 120, 40 + l.a.railAway = true + l.raise(demoQuestionLayout()) + l.tick(questionSettle) + l.press("o") + }) } // TestTheChipIsDrawnOnTheStatusRowWhereEveryPageCanSeeIt is the folded case's From a86385855d1182636687aed44444a1c802a01528 Mon Sep 17 00:00:00 2001 From: santoshkumarradha Date: Fri, 11 Sep 2026 17:57:40 -0400 Subject: [PATCH 4/8] questions: the change entry, the contract and eight pictures of the drawing The gallery's first post-ruling screens, taken off this worktree's own binary in a real terminal at 140, 96, 110 and 56 columns rather than off a live model. Co-Authored-By: Claude Opus 5 --- .../unreleased/955-question-evidence-split.md | 24 ++++++++ docs/design/questions/DESIGN.md | 5 +- docs/design/questions/GALLERY.md | 58 +++++++++++++++++- ...e-stands-beside-the-answers-panel-140.ansi | 32 ++++++++++ ...ce-stands-beside-the-answers-panel-140.png | Bin 0 -> 97742 bytes ...e-stands-beside-the-answers-unfold-96.ansi | 36 +++++++++++ ...ce-stands-beside-the-answers-unfold-96.png | Bin 0 -> 98593 bytes .../screens/the-page-is-two-panes-140.ansi | 40 ++++++++++++ .../screens/the-page-is-two-panes-140.png | Bin 0 -> 77581 bytes .../the-page-is-two-panes-ascii-110.ansi | 29 +++++++++ .../the-page-is-two-panes-ascii-110.png | Bin 0 -> 79046 bytes .../the-page-is-two-panes-column-96.ansi | 29 +++++++++ .../the-page-is-two-panes-column-96.png | Bin 0 -> 79477 bytes .../the-page-is-two-panes-detail-140.ansi | 40 ++++++++++++ .../the-page-is-two-panes-detail-140.png | Bin 0 -> 78180 bytes .../the-page-is-two-panes-layout-140.ansi | 40 ++++++++++++ .../the-page-is-two-panes-layout-140.png | Bin 0 -> 59734 bytes .../the-page-is-two-panes-phone-56.ansi | 36 +++++++++++ .../the-page-is-two-panes-phone-56.png | Bin 0 -> 75949 bytes 19 files changed, 367 insertions(+), 2 deletions(-) create mode 100644 docs/changes/unreleased/955-question-evidence-split.md create mode 100644 docs/design/questions/screens/the-evidence-stands-beside-the-answers-panel-140.ansi create mode 100644 docs/design/questions/screens/the-evidence-stands-beside-the-answers-panel-140.png create mode 100644 docs/design/questions/screens/the-evidence-stands-beside-the-answers-unfold-96.ansi create mode 100644 docs/design/questions/screens/the-evidence-stands-beside-the-answers-unfold-96.png create mode 100644 docs/design/questions/screens/the-page-is-two-panes-140.ansi create mode 100644 docs/design/questions/screens/the-page-is-two-panes-140.png create mode 100644 docs/design/questions/screens/the-page-is-two-panes-ascii-110.ansi create mode 100644 docs/design/questions/screens/the-page-is-two-panes-ascii-110.png create mode 100644 docs/design/questions/screens/the-page-is-two-panes-column-96.ansi create mode 100644 docs/design/questions/screens/the-page-is-two-panes-column-96.png create mode 100644 docs/design/questions/screens/the-page-is-two-panes-detail-140.ansi create mode 100644 docs/design/questions/screens/the-page-is-two-panes-detail-140.png create mode 100644 docs/design/questions/screens/the-page-is-two-panes-layout-140.ansi create mode 100644 docs/design/questions/screens/the-page-is-two-panes-layout-140.png create mode 100644 docs/design/questions/screens/the-page-is-two-panes-phone-56.ansi create mode 100644 docs/design/questions/screens/the-page-is-two-panes-phone-56.png diff --git a/docs/changes/unreleased/955-question-evidence-split.md b/docs/changes/unreleased/955-question-evidence-split.md new file mode 100644 index 0000000000..f004dd95f1 --- /dev/null +++ b/docs/changes/unreleased/955-question-evidence-split.md @@ -0,0 +1,24 @@ +--- +kind: changed +title: An answer's evidence stands beside the answers, and the page a question opens is two panes +pr: 955 +surface: [chat] +invalidates: + - "A question's panel drew no evidence at all — the diagram, the diff or the table an answer brought was reachable only through `o open full`. No longer true: where the answers carry blocks and the frame is a hundred columns or wider, the panel splits and the evidence of the answer the pointer is on stands beside the list; narrower, it unfolds under that answer's own row. `railSlimFloor` (100) is the one reading of `two columns fit`, for the task column and for a question alike." + - "The page `o` opens was one scrolling column of folding sections, one per answer, opened and folded with `→`/`←` and with `o` again. It is two panes now — the answers on the left, the evidence of the one you are standing on on the right — and one column only where the body is under a hundred cells. Nothing folds: the answer the pointer is on is the open one." + - "On that page `→` opened the answer you were on and `←` folded it. `→ detail` now hands the arrows to the evidence pane, `↑↓ scroll` moves it, and `← back to the answers` hands them back." + - "On that page a digit answered the question at once. It walks the pointer to that answer now and `enter` takes it; on the block above the box a digit still answers at once." + - "The page drew `‹ back` and named the asker's answer `my pick`. It draws neither: the recommendation wears `◆ recommended` on its own row in every view, and `esc` is the way out." + - "The asker's two-pane layout block went side by side above a hundred columns and stacked below. It decides by its content now — each pane's widest line fits its half, or the two stack — so a layout drawn in the pane beside a list is laid out on what it is rather than on how wide the window is." + - "A question put off drew its fold rule wherever the block stood, including under the page that was showing it. The page's own question no longer draws that rule: `o` folds what it opens, and `space open` under an open page was offering what was already open." + - "The tmux suite waited for `[o] open it`, a spelling the surface stopped using when the keys lost their brackets. The needle is `o open full`." +--- + +A question is a decision handed to a person with its evidence attached, and the +evidence is per answer — so it is drawn where the answer is, at every size the +question has. One account of the case (`then ·`, `why this one ·`, `would switch +if`, `confidence ·`) and one renderer for the blocks now serve the panel's pane, +the panel's unfold, the page's pane and the page's one column; before this the +page spelled the labelled lines itself and the panel spelled its one-line case +itself, and the two disagreed about whether a model's `If you…` was joined onto +`would switch if` twice. diff --git a/docs/design/questions/DESIGN.md b/docs/design/questions/DESIGN.md index bf2e33a0f9..a9f4d60bc5 100644 --- a/docs/design/questions/DESIGN.md +++ b/docs/design/questions/DESIGN.md @@ -181,9 +181,12 @@ never resolves a task by itself. - **line** — one row + one answers row, pinned above the box. Permission, confirmation, ratify. - **card** — head · reason/attribution · one row per option (word · consequence · pick mark; a long word wraps, never cut; a checklist's rows carry its ticks and a digit toggles) · answers row. Transcript, home strip, other window, room foot. Every option is a row: the engine's cap (4, 8 on a checklist) is the only bound. Keys are digits `1`… in order; `ask` renumbers whatever the model wrote and hands the answer back in the model's own names. The asker's `form: line` is honoured only for plain options with no structured input; width decides the rest. - **pointer** — every question with answers has the person's pointer (`▸` on a card, the band on a line): `↑↓`/`←→`/`tab` walk it, `enter` takes it, a digit takes at once. It starts on the asker's pick, which says `suggested` in its consequence column; on a confirmation it starts on the answer that loses nothing. The task record page (enter on a needs-you row) draws the node's landing question above its foot and takes its keys through the block's door. Landed 2026-09-10. -- **room** — a page over the conversation (the task-room idiom): head and attribution, the question's own `Attach` as ONE dim-titled section (`what it showed you`) above the answers, options as sections (`▸`/`▾`, bodies, blocks), `x` compare on the asker's dimensions (fallback: `+`/`−` lines), `c` comment on the focused part, `?` ask back (one exchange per option, answered in place, closes with the question), the foot composes the answer (pick · with · notes · scope), `d` you decide shows the pick and reason first, `D` sets the dial for the kind. **The pointer walks it**: `↑↓` choose (the foot says so), `→` opens the answer it is on and `←` folds it, `enter` takes it, a digit answers at once; a click on an answer's ROW moves onto it and opens it, and a second click on that row is `enter` — one press to read, one to decide. **An open answer reads in three tiers**: the label ordinary ink (as on a card — the hue is on the marks alone since the 2026-09-11 colour ruling below), the body ink, and every aside dim behind its own word — `then ·` the consequence, `why this one ·` the pick's reason, `would switch if` (the asker's sentence joined onto the clause, never `if If`) — one blank row closing each open answer. +- **room** — a page over the conversation (the task-room idiom), and the owner's page pick A of 2026-09-11: **two panes with a seam between them** where the body is `railSlimFloor` cells or wider — the answers on the left with the question's own `Attach` under them as ONE dim-titled section (`what it showed you`), and the evidence of the answer the pointer is on beside them — and **one column** narrower than that, the same evidence unfolded under that answer's own row. Nothing folds: the answer the pointer is on IS the open one. `x` compare on the asker's dimensions (fallback: `+`/`−` lines), `c` comment on the focused part, `?` ask back (one exchange per option, answered in place, closes with the question), the foot composes the answer (pick · with · notes · scope), `d` you decide shows the pick and reason first, `D` sets the dial for the kind. **The pointer walks it**: `↑↓` choose (the foot says so) and the answer it is on is always in view, `enter` takes it, a digit walks to it rather than answering, `→ detail` hands the arrows to the evidence pane and `← back to the answers` hands them back; a click on an answer's ROW moves onto it, and a second click on that row is `enter` — one press to read, one to decide. **The page keeps its own key road** — the two tiers written into its foot's rule, in place of the legend. +- **panel split** — the same reading on the block above the box (preview picks A and B, 2026-09-11): where the ANSWERS carry blocks, a panel `railSlimFloor` cells or wider draws the list on the left and the pointer's own evidence on the right, and a narrower one unfolds that evidence under the pointer's row — the row giving up its consequence to it rather than saying it twice. A panel never takes more than half the frame, and what will not fit is cut on a dim row saying how much is left and `o open full`. One account of the case and one block renderer serve both, and the page (`internal/tui3/questionevidence.go`). - **sheet** — many questions from one step or many hands: grouped by shape, `✓`/`?` per row, `enter` opens one, `s` sends what is answered and delegates the rest, "same answer for all like this" on a group; dependent questions withdraw with a reason and the sheet re-flows. +**An answer's evidence reads in three tiers**, wherever it is drawn: the label bold in ordinary ink (as on a card — the hue is on the marks alone since the 2026-09-11 colour ruling below), the body ink, and every aside dim behind its own word — `then ·` the consequence, `why this one ·` the pick's reason, `would switch if` (the asker's sentence joined onto the clause, never `if If`), `confidence ·` how sure it is — then the blocks, a blank row above each. + Every form folds down (room → card → line → chip) and opens up (`enter`/`o`). The chip lives in the status line: ` 3 questions · ` and is reachable from every page; home lists every open question under its diff --git a/docs/design/questions/GALLERY.md b/docs/design/questions/GALLERY.md index 661424c69e..614f151ef2 100644 --- a/docs/design/questions/GALLERY.md +++ b/docs/design/questions/GALLERY.md @@ -20,7 +20,8 @@ the findings the suite is red on, and they are here for the same reason the rest are: what a lane owes next is easier to see than to describe. > **THESE PICTURES WERE TAKEN BEFORE THE OWNER'S RULINGS OF 2026-09-11 AND HAVE -> NOT BEEN RE-TAKEN.** What moved: every question now hangs in the one frame +> NOT BEEN RE-TAKEN** — except the eight under *The evidence beside the answers*, +> which are of the drawing those rulings asked for. What moved: every question now hangs in the one frame > (`internal/tui3/frame.go`), the question's violet is retired and its amber is > on the three marks only, the keys stand in two tiers, the receipt opens with > `✓` rather than the word `decided`, a permission's pointer is placed by the @@ -70,6 +71,9 @@ and when: `start it in 27s · your rule`.* ## The room +**The room below is the page as it was before 2026-09-11.** It is two panes now, and +the pictures of that are further down under *The evidence beside the answers*. + A page over the conversation, in the task-room idiom. The turn under it keeps streaming; `esc` restores the conversation with its scroll untouched. @@ -104,6 +108,58 @@ differently spelled. One of them is owed a deletion.* ![the answer reaches the asker](screens/the-room-compares-annotates-asks-back-and-sends-reply.png) *The model's next turn, with the pick and the typed words in the tool result behind it.* +## The evidence beside the answers, and the page as two panes + +**These eight are the only pictures in this folder taken after the owner's rulings of +2026-09-11**, and they are taken a different way: `~/af-qv-reports/R/drive.sh` opens +this worktree's own binary in a tmux session on a throwaway home with a fixture named +in the environment (`AFORGE_QUESTION_DEMO`, `internal/tui3/questiondemo.go`), so they +cost no model and can be re-taken in seconds. The marks that show as `▯` are the plain +glyph floor rendering in a font the renderer does not have; the terminal draws `?`, `◆` +and `✓`. + +![the evidence beside the answers](screens/the-evidence-stands-beside-the-answers-panel-140.png) +*The block above the box, at 140 columns (preview pick A). The answers keep the left, +and the evidence of the one the pointer is on — its word, what it means, `then ·`, +`why this one ·`, `would switch if`, `confidence ·`, and the diagram it drew — stands +beside them. Walking the pointer changes the right-hand side and nothing else.* + +![unfolded under its row](screens/the-evidence-stands-beside-the-answers-unfold-96.png) +*The same question at 96 columns (preview-narrow pick B). There is no room for two, so +the evidence unfolds under the answer's own row — and that row gives up its `then` line +to it rather than saying it twice. A panel never takes more than half the frame, so the +rest is cut on a row that says how much is left and the way to it: +`… 4 more lines · o open full`.* + +![the page as two panes](screens/the-page-is-two-panes-140.png) +*`o`, at 140 columns (page pick A). The same split with the frame's height: the rules +above and below meet the seam at `┬` and `┴`, the foot's first row says what `enter` +would send, and the second carries the page's own two tiers of keys in place of the +legend.* + +![the arrows move into the evidence](screens/the-page-is-two-panes-detail-140.png) +*After `→`. The foot swaps `↑↓ choose · … · → detail` for `↑↓ scroll · ← back to the +answers`: while the arrows are the pane's they move the pane, and the key that gives +them back is on the row. A key that is not drawn does nothing.* + +![one column](screens/the-page-is-two-panes-column-96.png) +*The page at 96 columns. One column, the answer the pointer is on unfolded under its +row, the others each keeping their row — the same lines as the pane, stacked.* + +![the phone](screens/the-page-is-two-panes-phone-56.png) +*And at 56. The head's attribution wraps to a row of its own, the second tier of keys is +given up from the right, and the evidence is still whole.* + +![the layout block](screens/the-page-is-two-panes-layout-140.png) +*A layout block on the page: the asker's two drawings side by side, which they are here +because each one's widest line fits its half — the block decides on its content now, +not on a width.* + +![the plain tier](screens/the-page-is-two-panes-ascii-110.png) +*110 columns on the light theme with the plain glyph floor: the rules are `-` runs, the +seam is a blank column, and the junctions are edge characters. A column of `|` down +every row is punctuation a screen reader says aloud on every line.* + ## Fill in the blanks ![the card first](screens/a-sentence-with-holes-is-filled-in-card.png) diff --git a/docs/design/questions/screens/the-evidence-stands-beside-the-answers-panel-140.ansi b/docs/design/questions/screens/the-evidence-stands-beside-the-answers-panel-140.ansi new file mode 100644 index 0000000000..ef5666d92d --- /dev/null +++ b/docs/design/questions/screens/the-evidence-stands-beside-the-answers-panel-140.ansi @@ -0,0 +1,32 @@ + aforge fri 5:52pm +  Home  new conversation ×  +  +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + + · the engine on spark is an older aforge and is still holding work — it picks up this build the moment it goes quiet + + ┌─┐ ┌─ ┌─┐ ┌─┐ ┌─┐ ┌─┐ + ├─┤ ├─ │ │ │ └─┤ ├─╴ + └─┘ │ └─┘ │ └─┘ └─┘ + openai/gpt-4o-mini · custom crew + + ›  + try "what is in this folder" · /task starts work · / shows commands + +╭─  which store should the ledger sit on? ──────────────────────────────────────────────────────────────────────── aforge asks · waiting ─╮ +│ a schema change is next and it is cheaper before there are rows │ +│ │ │ +│  ▸ 1 postgres  recommended │ postgres │ +│ 2 sqlite beside the project │ Rows already carry a foreign key into it and the migration is one file. │ +│ 3 a file per day  │ + one place to back up │ +│ 4 something else…  │ - another service to run locally │ +│ │ │ +│  just this once · for this project │ then · the ledger and the rest of the project share one connection │ +│ │ why this one · because it is the only store the reporting job already reads │ +│ │ would switch if the ledger ever has to run on a machine with no server on it │ +│ │ confidence · fairly sure │ +│ │ │ +│ │ what it would look like │ +│ │  app --> pg --> report │ +╰─ ↑↓ choose · enter take it · esc later ──────────────────────────────────────────────────────────────────────────────────────────────────╯ + o open full · c change · ? ask back · d you decide · D decide these from now on · t how long · 1–3 jump +  which store should the ledger sit… · alt+a · idle diff --git a/docs/design/questions/screens/the-evidence-stands-beside-the-answers-panel-140.png b/docs/design/questions/screens/the-evidence-stands-beside-the-answers-panel-140.png new file mode 100644 index 0000000000000000000000000000000000000000..252c7b1121ce7e01a693ac419d0b0b7e967f66b8 GIT binary patch literal 97742 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 literal 0 HcmV?d00001 diff --git a/docs/design/questions/screens/the-evidence-stands-beside-the-answers-unfold-96.ansi b/docs/design/questions/screens/the-evidence-stands-beside-the-answers-unfold-96.ansi new file mode 100644 index 0000000000..9e6619668a --- /dev/null +++ b/docs/design/questions/screens/the-evidence-stands-beside-the-answers-unfold-96.ansi @@ -0,0 +1,36 @@ + aforge fri 5:53pm +  Home  new conversation ×  +  +──────────────────────────────────────────────────────────────────────────────────────────────── + + · the engine on spark is an older aforge and is still holding work — it picks up this build +  the moment it goes quiet + + ┌─┐ ┌─ ┌─┐ ┌─┐ ┌─┐ ┌─┐ + ├─┤ ├─ │ │ │ └─┤ ├─╴ + └─┘ │ └─┘ │ └─┘ └─┘ + openai/gpt-4o-mini · custom crew + + ›  + try "what is in this folder" · /task starts work · / shows commands + +╭─  which store should the ledger sit on? ──────────────────────────── aforge asks · waiting ─╮ +│ a schema change is next and it is cheaper before there are rows │ +│ │ +│ ▸ 1 postgres  recommended │ +│ Rows already carry a foreign key into it and the migration is one file. │ +│ + one place to back up │ +│ - another service to run locally │ +│ │ +│ then · the ledger and the rest of the project share one connection │ +│ why this one · because it is the only store the reporting job already reads │ +│ would switch if the ledger ever has to run on a machine with no server on it │ +│ … 4 more lines · o open full │ +│ 2 sqlite beside the project the ledger travels with the checkout │ +│ 3 a file per day  the ledger is readable with cat and nothing else │ +│ 4 something else…  │ +│ │ +│  just this once · for this project │ +│ │ +╰─ ↑↓ choose · enter take it · esc later ──────────────────────────────────────────────────────╯ + o open full · c change · ? ask back · d you decide · t how long · 1–3 jump +  which store should the ledger sit… · alt+a · idle diff --git a/docs/design/questions/screens/the-evidence-stands-beside-the-answers-unfold-96.png b/docs/design/questions/screens/the-evidence-stands-beside-the-answers-unfold-96.png new file mode 100644 index 0000000000000000000000000000000000000000..de17261ac7eae245ed3a5e12bf9167d370f1ef2a GIT binary patch literal 98593 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�Y4-DyLc$pkfKo@HbB%2ud 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 pg --> report + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ +─ answering 1 postgres · just this once ───────────┴──────────────────────────────────────────────────────────────────────────────────────── + ↑↓ choose · enter take it · esc later · → detail c change · x compare · ? ask back · d you decide · t how long + ›  + idle diff --git a/docs/design/questions/screens/the-page-is-two-panes-140.png b/docs/design/questions/screens/the-page-is-two-panes-140.png new file mode 100644 index 0000000000000000000000000000000000000000..5e827b9afcdb4fba178e2074ea8a7d6a93b1834e GIT binary patch literal 77581 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�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 literal 0 HcmV?d00001 diff --git a/docs/design/questions/screens/the-page-is-two-panes-ascii-110.ansi b/docs/design/questions/screens/the-page-is-two-panes-ascii-110.ansi new file mode 100644 index 0000000000..428c9546bd --- /dev/null +++ b/docs/design/questions/screens/the-page-is-two-panes-ascii-110.ansi @@ -0,0 +1,29 @@ + aforge fri 5:51pm +  Home  new conversation ×  +  +────────────────────────────────────────────────────────────────────────────────────────────────────────────── + + ? which store should the ledger sit on? aforge asks · the turn waits on it + a schema change is next and it is cheaper before there are rows + +-------------------------------------------------------------------------------------------------------------- +  ▸ 1 postgres  * recommended   postgres + 2 sqlite beside the project   Rows already carry a foreign key into it and the + 3 a file per day   migration is one file. + 4 something else…   + one place to back up +   - another service to run locally +   +   then · the ledger and the rest of the project share one +   connection +   why this one · because it is the only store the +   reporting job already reads +   would switch if the ledger ever has to run on a machine +   with no server on it +   confidence · fairly sure +   +   what it would look like +    app --> pg --> report +   +- answering 1 postgres · just this once ---------------------------------------------------------------------- + ↑↓ choose · enter take it · esc later · → detail x compare · ? ask back · d you decide · t how long + ›  + idle diff --git a/docs/design/questions/screens/the-page-is-two-panes-ascii-110.png b/docs/design/questions/screens/the-page-is-two-panes-ascii-110.png new file mode 100644 index 0000000000000000000000000000000000000000..f34c1289376cbdc1df9431a5909401ef3c5ec948 GIT binary patch literal 79046 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 Yu_$i8l$ZAlyhiwGJ=T3xp=KTOKXLy{w*UYD literal 0 HcmV?d00001 diff --git a/docs/design/questions/screens/the-page-is-two-panes-column-96.ansi b/docs/design/questions/screens/the-page-is-two-panes-column-96.ansi new file mode 100644 index 0000000000..35c5e716b9 --- /dev/null +++ b/docs/design/questions/screens/the-page-is-two-panes-column-96.ansi @@ -0,0 +1,29 @@ + aforge fri 5:51pm +  Home  new conversation ×  +  +──────────────────────────────────────────────────────────────────────────────────────────────── + +  which store should the ledger sit on? aforge asks · the turn waits on it + a schema change is next and it is cheaper before there are rows + +──────────────────────────────────────────────────────────────────────────────────────────────── +  ▸ 1 postgres  recommended + Rows already carry a foreign key into it and the migration is one file. + + one place to back up + - another service to run locally + + then · the ledger and the rest of the project share one connection + why this one · because it is the only store the reporting job already reads + would switch if the ledger ever has to run on a machine with no server on it + confidence · fairly sure + + what it would look like +  app --> pg --> report + + 2 sqlite beside the project the ledger travels with the checkout + 3 a file per day  the ledger is readable with cat and nothing else + 4 something else…  + +─ answering 1 postgres · just this once ──────────────────────────────────────────────────────── + ↑↓ choose · enter take it · esc later ? ask back · d you decide · t how long + ›  + idle diff --git a/docs/design/questions/screens/the-page-is-two-panes-column-96.png b/docs/design/questions/screens/the-page-is-two-panes-column-96.png new file mode 100644 index 0000000000000000000000000000000000000000..d97879d98d45b84a5cfa5772eade0bf270f1c6e8 GIT binary patch literal 79477 zcmce;WmFtb@GeZyV2eYLMS@ER5Oje6S=^nVfxzOLEbh9v2MF%2iv|rAED+q?-3bnN z^ZS3hAMX9|p8M9>o;fqSJ3T#JUG?-+H65m^EQ5Cbor?fmWGQuYy(8tHe)6>(<&CS`_`RmuO zcJ>ZdR#qk^Ci(^jYU=8;va;e55+WiZpnt-{2@(|)6y)RML)qmyHKOrOguaJ?Eks=CWLyD09Hl!q^BqaY8#EzJR7$N^{h=~wF zNJvOT@K5mZ@Bjb+HWrrF<^FG^7f48Qk`kJ3^M{XN0eP};rbu~4I?@`jVl7r`$@yNl zm__UTxF`@_h4%XJm<} z;gggHo?BIAS)YLI(g)I_{uzRO{oUAyxke%(d3DgQ0>mEpNY;j zAdTt6$!}6}S~^>eIpA}PZ1(VC#^(o&w`u@Dw5va9CPcTeWnEM~7+&nK7^{b(*uhlG z&&RrSmiSFw@HgcOoa)XUdh_Yo`SH#Dg+rGE^6L4CKj7KMXKh;afF5y;Pt64edhz)z z@mf{8)lIL$+oF-Ia%FkM36A(F7bf{OMAY?j1B%S}{KXO{lNbkXI6x15C%0m(w~rK5 z;WG574`(Zmmxwb*I7pno`|`w|vM*!O3OW*epDton+!+y%(b)DCs~*10Sa7sIbwT5C z`|B{)rEIWP%xd(4Xs`w7Ru%^D8<9kv<>i-J(*B)>8k_M6g4dyb?gL_Y-haw?da@V_ z==6Q?-IIIS@~m0@?Wr%z5MU9K68psN@SO0}GW^^*QrGd^R&nl&OJ{n|OjYl76O8C$ z?vJ!-&T5GqSo!X{kbJgR3TpBZ!_-pQV7+fh9*mm0=M-JLs#puiDxDIhVN93>>_7nA zhAB-w`%P1p=1Cz~opD}?TZcde{u4f$^A+SJqpk#wkw?E=P)0A`ZA8tLL z9JT}`Pzkh$7KRXaBNu-U|Bj^oa>rndR})Nfr4TpOj@;yo$GKZ=yWh}W--t5Q@)sy? zqQieA{^h6F)Hi@yLo_@pXk1a4GAWlli3yF*oecQYHsMQ@@bD>`RbxJ5Sy`QJ>L9fR2qIYvdi_{ zm-Uz>m!v6c?)z+^_2?k+a>4hx<9XA{0r^E?z8@`j0ctLI=g-Q7(ev=`Gv#w)g6}3X zUGcdl{?qQfm?!qge^$q<{|+#e>nDpxS*I;0OD?AuGJ!tf@(%PHlTz4)Z_MZmIi!2g zpLGw@bdVJot}W%4M=Y90BLRDURH4F2>TMNr3aB+a>*7LZ;B3I0Jm)qo3PD9DNlY^ zrc0kGCQ!z&lVDFyrR;ACB3tF+~nGu0vOLm9Mo}TH{|g|Jz?Th(ESi| z8RPpPj1GFhaBSonH#t9fKIwSAzfM%CTU%Y7E$sHf`Aa=Yr^GqikpDeLvI&kSID(08 z^qUjY6~ki&TJ;d;IZrH;;5I;l|jXr=sA zjDxGbVyNSn##D#jDMu1rd zp7EY;go(~nMnVuxM!{UZM~|=)Fqw+9)UmRVU9MAV`Nm9HOgJ)$BC36)CCM$B>AV2w zG+q+dr+AW2+hMiK+!kioTX}x+eCk_~;q%EF0X~Q-o%nY2g>*dM3Ji1ct_gTs(&UA9 zTpZ3JYS7X9j>D9&mo<Ty<*Z76mf(bdqXW+0QH6}9Vu}hharY(V*Q}z9m3vu1y zC$GwXo&O2^<3jCVW<75&R?|Ot_(4qUGx%HN20}lOG5X-2&Z}~}(;w!X4fP+-Uf9YC zM>htXd_|z6o9c@5j!eMU^Xrc1$LknNmWjy*!R64ZIqAs24Q6Xji%rk$ZoGFzk$Cr6 zq*woCW2N^{5HEhb?>Zwx+Ollh1U-A zP8MakR#og+V&4ExH zqoDS1nC~%RNT0p_*%(xoom%*dqZcP|oDB+mYu-W~Z1vxPO_4Wjzkl_13zz`jQ zKySphl-?r)ZepsvEDdi_!$5I1UMJNSd6DO_y3jagLM|uWStf$f z2b(bYR4cj2`^Q>;(r{&rp=!`t0gkQD^G=0_T|FdxUpj}8JjjO!*#5E5QDiQz-|cl> zP@b_Q8`Z~Y6Xxa-r?;p@jKF<@AX{eP9wJXxxN_G3W}H=Yv`t2I0QvgO$(WCct!ucM z3vqgMU&0C37RL-RTIWl06TKW9ldQN^)9WvhYuN-=o`eJElHDlj8QCeJFpI0Go4wc)h zKdHhTfUftzU(qa`CK!rcW0=a0KP`8vb?AR3OVd_=R6~BfAcq3crE3|H_5gV>{e1-f z;jm2L=3Jx!<`3tbI5tvx;9NWQu~P5i%g*;q6saz~t#F$LzZ^uS#JZo6fkE_LYd*Uu zEu88hv^@^WVtVmvzEd1V!u!39V<@cB$Px`Yiw<8f@&mAPk63Atv90RGG6GbmI#VolXuBNp(bz!A;zY!c>yq&&Iik@KfwwcAWl{#OhUBd%Pm>fnbA7$`%B<~i0eAIWV<-=k^uQd>DJd*U!9}kVF8a=m&_9)DT^{4m=vp7fS?qn|^?0 z_DZwkSfZieVPdF^MrD}4wQq)5ma|d;3?m{}D}#EFyHL=5IXHT-ah@5fa|r&5+hi;C zb{+g4Rac(bViHWHSBSrYOTijtPI@eN%c1GPB!6mz(K_pYJhFjofr~Qhk)ODQ*8Z6z zR&Ur`iiJ}GKr48S!y5&(sFDk2Fj?_EBL`-pp0Mb9PRxpBchf0)D#E}vb7mbVK%O-t zu7Ykg%n9tg(HU5#w7@08uYAp#Slg3^_5C3EWc_9#`Y~je>+S0sFQIS%#jObQYmC0W zak{#gn(q&2AWf%PUYvj?+Lc&i6+l zAAZK|?WBzCaZOE?SC+z$O8;b9zAFL;IWd$ z?q_ijK(tC;H&1+2F2j}7)Oc&=xQS89mszv?@Ky(M;JWQk6KdLD7M@G+x}~u(?HXdP z>=E;OA%048>R-Wzo*!iCfyduuN4wT^!j$6XXkfa_M4&|)$S+&Z(6o*IjCX|KR?Js_MlL&+0ssS_WX$X%KqL< zOWvrba9Bo7Q1Cq~h!{83LaR8e)Q2=G|EJZgIPCRkPA-JEsL+icM+z?HttD^C^ZHEW z7q|9iiuP(&h_b{cFFl;UX@jv&X{WgmfklQO*lN;3-KZ2UB|w8B>66~kMnwS%?daL3 z{F?HhOtcutMBBB;<>yy#3kjmJZ$?a3+p6nXq*vX2Rz0cHY*^fK>~3=!;OpG#LOLP&ht8z<9{RIT>(y=A6P zZX5_|Ci)~3ko+6XWHpe%$T6gyy<Dm1#qAz!+tdm*0^(5)8ylM?JXBJ$>w z!@F;q!>*U9?dK(d1rBZ3&Rqf!-%N-7aIcK+m&}tg(YFt|A#xIpW`=`&!q91NG5kQ$RebplpZJH63!QAU^jF zX4VP5VWFfR^~5cU_9>b^N`{u11D%K=xJq4V=*Im}mN$nKnOx$;wf>nN=t0a$@b#0J zN(N1c#yxym=s3#0fV3@$+uP7e+xyumD_XGC>$WD_fH>IXvefh5r`(j+aJj}#r6-8_ za_ap9mRW|o;Jn>mBb9Mt=i$3_Q=<=3?qM4@=L0bV@7FPvJQ*bj`!=Tp##Am0kJzjo z?P`hbE^@XA55l!tSHgA1*Pd;+@_srdEWhgStsDyqS28LeyE*=RDH?x z<$1r)p6Fx%YBWW)3+#vzuud(xC>4kyFJJf2ig>83n^*xxqlOsw`J#iUjk90 zP$14&Bf@3U13bzmBZx=eV3MkW?qle20&mH4pW5-$4(Jv0tBWo?w*@?>IHNpGL9(*X zjt-R&a_s0hfQn(fXlPv@>OSA`Ua-^sG>IdNEhD;qw7jd$1~jcITM=QA7fM1v&hK zmx?^sqiaPFzSA^&xj8OHBxX=StJN=3qcMM&T=dh*!o(`P8SLez12aX$W(suE1RC9xs4w!-q@xVDs9Wv>go6t z`hUfT7|OiH`iq!p=C4QlA~0ICKgQRSWQoI`6Sjw~=vso2YAoy;y8n~n&*5x=eN~`IyM^n=QBGaA zFKcHlG?oiyuI!c*+TWaKg*!krgoi5aA&0UY$;})?og0klor4;&v zT83l`ml{jQm_J}>AmOxza$VfNOR&#wfVgOC zbd$WCW&d?m>R2Rv@Z{IXazywe(iHXsH;a*hsOE=yYCTrSTrgZ$M@wr_v1+$4B7EPa zu(XjRVOCt+V9gLV3xsXTF} z<(ANswiv`w%WD=r3rSqe?1T)=_1*)*)K|_T+g6(^iHK!wwTu@edSyde1*dv>GSYi9 z>mqC?qFZo3HRRx85xC`GfS{|*E;kSBtYWZtqYqAAEJCS5%IKd)%m1E0Wt&HN9)09s zs)n7d8=W3bR05{ZSy;B)kUjlUuf+ZN6%rroG4y35pzA1c47WsnrY`>Q=WeXaYGw6B z2C5>))hAW{W_XjJJ*95aO!+dWIvI5+ww?&eGRn0uS-B0i3TNso0kKV~b+@A>tV#ZZ zt&H*K^={TH#?yz;wm61@pBh&DK|A>zxwN6-IngkaxErIC4FZ3Gu8V{(yO>PQgdRQy zc305}_{Vfp_!4H0_y+r!K+#Yo%9W!_C zwJQ4C*8cVG#<4D@W$6j^Ep(o}<MTPsG#sUyAzj0#yiKm&*kEh&!3rK51s0{Z>Am$JrYdTyqv| z6(5WUEkbSdfA?3JBtW~1yOJvM7UG@6TtPMx}jTs*m9 zgI%qSVmG@9KbXmE-L6pvGe365LSGF&&ySg`6~{BMlEO8X{*p;m3BRnT zPeQgZdp8H*9?;&QH>gTqgK^wyWftpY%jcnnYT*!Dyy=PiMY6TVBqw*y7OObwV`*tB z5N{V2pYQ&vEaf~RI$Y-Kdxm<(KCRMjdUk~u6w)+g zu-I;=hxIGS@r?JS)0fPTHLuLYGZ_D}4VPzUeSpbXU_QDl!}{qxd1&d0nK1G@SfxeP^WQ#En_81m zWflNYQIryae(PEI;!FH>l7N9}HqQL!GdP8ookSM)O)Q|Z&rPtt0Fs?3Kj#my>_FqW z^QY5*C&JG62MpN&D+{FWdgp3L?-dSCo09FYBP(RlRY25?3c|;AKk7#x{Ml13%p7fU zxF25uNi|eBOUHWf_I_iTL*g&zmG27j!0JM|+iuaE^P{R4919>DQlxvpJ1{R5hL4$0 z9=QA5z_8A5m<`+h{7nXd97%uaMmM=9!2^;-34F^vDZdwul{3}swmmP*C<7Oo!q;G# zq?o>Tm&ux%wqc^5P>W?*q?`IVw^A)E(fp%-;JgGjqc%kNRA*h5D zz~E2(R59(O$U)(W|6asM$#h%*|2T2WFfPzqm<2GR!APc91dylM!}k#&xy;{7(j{lJ zSh%*+1q?C%5sEi&NqUW;#b5h*PYxdv8VRt__5uJ4HLLF+rau7JpHFDe=xl=MOV;VD zO=ntQrac}+Wj;8ivB^RCC!Qo2Y93#Gan?ZYQ1fv{#%R5gevRd! z=A~#*u5=cyfHf_hAa(X55=V%@oTvYYe$h>(zV}39?rH<3B<#cVb(9~Wo~v)9IGsDQ z%b#6*`!0;zzQ@v&>dyA=Y=`-fC8uf$3{z%fCE~ws_yODpF-uW^IBPVlnY~q5T{xf* zDKr1I^Nx^@O!IQrDJNR)eIf=rZ&=^+N1cI;dP-u5Dysg`_T8WG|RE>)qq?YhQ=O7en%$r4smY`J@`r_Qx4p zY)+d~#v@9l4VUKN=qL1io7wCOuSUvqxmTk~E8oP%e(*Ep*P6O*HiYkT4VS8F=g0@x z9%9-MP0Xg8NPS)TBk*L9MDiC%3JLRur5;{7lVwij_piDu>+s>bbLMgDX=&=LliCMR z)aP~+m&OKzyC)ON8|>dUizNH0r7qm3noNH;*SgF-ki%vgKxg~NwFeg0t#0qeO61^b z!p~?g*O$58Ua_%!Yi<2f<%+@7q<7F@UU;3W#@4!bhc`+1;?g&HjBeM1*yErWn78j{ z?U%gzsKR56f^+{;u8JOi_6s^dejmwbDiXJVL2l^A#zc7BL}O}eRAmBLg~Yap6~(+> z{DZ@hWcIe^?7egR2a!$Qs9NDG$W&byUAnKgT<>o6uXZzjUFm}a?AAl|te+~OZbY^o z+jFL%pkf!iGg~-!V!VYrGE`$@mt@(Afq~U;f)kCmIhb_c*?0bPJSFgTH>GHWN0SI$ zf0T2o=Gu#0eDe1LL?38dQ4)f{i#o)XM3;Tcoe6SZM1C`GR-5zgQ5G9*^aCeirYcLA z$<8i%@KnE@X#3fcuF|*^ZIgZa9p5Ni+>rsO@*dMwuRf%tKOL(If0C+8t2^@p9Ke5`n?gVGiq~*9WffA4 z)1~L=ud$qk(;ZihkF*eX9Oe-rQ7eQ)6a)QOSrndt zB}B9nXBo&`q|L#p^gU#*>!0I{Fcwe%^|;>8+Q?k5#(S9H_HXk35Do7RbG$v#YA zsqmC5)y(^75OE%$4gj!SrobV>I&(XQIEVqV)EjP8uY_`>fn}?a5Xbk$lB1UA-5&`) z8*}7ZTrm1}fbeYMF}~z|5-Ksu8;jmAfh-jWV#oy5*8=5T0V{bljS;_2srV_Yg9;mv zxHTGvH~&In`;}A9hX%8%yI>4G8g##DXiD6Cf<%!7&(p9SX}v0+@PwC8g6iMZxhu4c z9U}|T<$_PWF&*-yN5R~>4R@Gc^yR6M*Gd&1@tVzCLFw;zh;~)?oNc!__qdLFy`2ch z0|`Eu^3d$%d&$CV!`Hb^9Mb>?sy{n}H^Snc(*bI`r^%GS^_SYyl%A~^7zCto{K}Wz z8W?M6Ew4_Xvvk1JNc7l_c10NF1waS-ak>AuSR~d_uY`fS9PE~#2YEu@4+&M64A zc)1AZ6p7_`tI_Ei2z+W6htaYsSH_DiJazX@;OGOX^(-T47xvLs*uo!R$%?((oAwX+~a%0o2X@4>|P5;7o>UB&cm{yn9} ztHjdsa1KL4fMEQU3rNI%oR0U8?^)p&0vmW#4RHjZ=pv71l#bUb8Ctx{+2xc(QdcMW z&e(*a{bJR9r3MF$qMuw6mTE^i&UJ?jA#Z9Zc_YIq&8k+nB=a`~pk*=2Vxaabd6%nb zHpN#KmftWLv9I3inn;Xcs!5hn~iv4Xh>A`gF(lDu&M(-Kvu4RY@S|4>)4yB_d$HvWm6hOD?wF@)g?L`K|j_q3Vj9P{Ou}MZ4rep7MdAT z+O$Rk3bz9RQvSnJAXcJ7;ooZ(d`8Ji#U4|x>Q}(og*KdbWCIlr7xJ)P50EeDqB{T} zM?P5RoH!1Ky{J1OFL}AH%bMr2xxA|<657+0@P=JQg8}#7m$1WmJkB=~~ zg)+>x>6{MOl|`(A%Rbxyz2R6*QPS1gBmf#Yl%L3(XoB0#J5Y_L40X?7%>RLRK{*+7Fl(bf>UjHMFw>9xNhkGY7F}=)KEFrqn?3xZ0F=&_S(2~~vV7TQq?zq4 z6kw8SCo3g`iyx=n+6y518zcTaFvGjmBn5R37fo9!n6k?5D2(koSs`A6>Te@YIX2oN>kIlXN4{zmY!ZfeA9b=tc(S{bqJ)%1ex!y&FTm5k z_qdq7pNE(o#X)ros0Ni8WYB((k?P*{b$z!Y@N{6|fYAaeX*5T-LOG**>KIE(3^v$X z%m$xt^_8ENMY&%>ovfDV5G-!%S6n2HXE-p~+%bdk_9`#fNk6WF74}B?UCIQVe}@dC z2rG5ro40$XR62)Dswyx&Biye(OlB9npi51K2%8DspZSEu_VM}QBY6(t{)M~W01AJT zwk8`*Q}dNr-WENrW^2mT5_-#ah{H0XqI?lCoQ*xzkeAg~Wk!bMCUI0wNfGXXne*kX zV|4o86nIF1E^^ZFkvW=A&749793)6}SQw@v473DPPAo)cW`CCp5y8U1 zn0elAV%gCA+vYs$5EGsPNsSW%B3Gol>@=UWRfO@Ue3TebH(n)0EwnMiW&Wz-fr{hUUCvcv?G?5F2j9JxqYQO>hi@TE zS^fbRvniRI<6&PDx85;z#b&QMlGhL;U`EptwbMPJ0oNo8O?rV<+MS&IyK;=~Tia

i-?nESPfmqO5B7<3Q8pvvco_i z3u|Sx)SLtK?bUk?%BDISgIssBL$6~n8^Mql~cru5BnWA()w zWthP~T4GT2kbvuov;kjQGDs5FKC>$U0De_kc#s{GI}OPwB?XbqZXX@I3<>u5 z5Q-fw2+|}KKo)tda#;-h6Ih+udLbL|5gF$Az0o6e6QV++ZQo#a4X( zaVMy`*nQ1p@1H>I*wj{u9}IkStmB%!d+==XIVtE^;00|zlNy|9V;9Ntxl3wg)ra=8 zmO%?&$NcM*a98ep^8WRZBaq6=WlRS`?@Sh+){OSe$aNl7tM_z`l4>h6>!?7(5n&a# zn7r$Y6SF&QZT|IX_#wBJvk@h@ZGS;w#%1Rnkab^-wyPcmCfiv+#ZQMB9}*I<>)iP( zxh|=IY;l3h-RW567Qz{ckd5nQq_TY$7C=|C^*|Ak01d(1|ZNzfOHc1~3#IoWwsNP?|mdQ*iB0R=$R4kx;iWUxT5HIvfeP z6h)pI#LlVh%JefTCouu7Bw{%lk!RlQV0eB4Y$UNT=9KG|916FI7$Ohg3Zslq$$iVbVy*t)F&y} zz!J_z31~@yCaX)G%7rfwPn&8ox;oDndiEQrzHUkaa7>8T%cZ4&J(JWz5c2*lsyZtW zzFkd4AONK38wB~!Mk>G(^}$|6uHyWA=7m{1R@vBx5@L@pk4T1v)+#NL6h~ag7Bd7L z&fV1_SF{Tk=lP2w)%91o`1UrA21%R5L*-zFEjsokx2%?;BQf4}#g4^><9ag-eN6A! z;A_Vu#w$SVWS+A{ElAi2f%i{5I2Z6P<WHoZ!7BL9R)kZ z572o352dM)2(4|~45 zX_V3Rq!SGjD$0aqcXoeZmf8_gzn2N@K|uykw*uz~C#Z;22hRO5?&R4T;!d^5eLZ5T zmKN}oetH1;%zeo@Chb}0h!u603JNt*jyS9SWR5+|Z!@3Nx<@myI0ka=k?1*bD%|Wd z`QHEM34PiHU8ZE6NYDHC1`qwGkgC3oe^^FTrjWUVTdU4l5Ki#Qwe-%5enF7s^Or|{ z#x`QxMK0DXZc)fW{ItIOw9s0>(gl2lN}!!HXBBE;Ccnt|TfDWVbg|7T=w+bhbk#@X z`3ooOjqU#EX4^EO>kFRW9#Tj~BYjOMp*ig|YfxNx zW_}mP`9gK66)~|m+YQTat?RCNPxmOxu6-~@z;p1ho$dOTHzdI#ru4vh z5{828{=HQ8aLLs!&O(f-lUkI|ACv+(yHtNTv5$OdqWbJIp$kx1LwX60p_mf0Gb6<= z4;?Y4#SF`=Y<*4^gR$gdMm!IvI5jRmp((E3Y|fhvp~nDPTPHn+d=~7sntH?4*AZ#S zZnmYKLcXPYgyzX!$w44agq9$#!H_z^n&gRgnVTcWx!d4n|M)D|0~CbqXjK6wyL&%% z6VCg)9>?R|mNE?N&;KcPkN=Y0&Q5J}q`DjQ9V%c=`%XRecYc5mQwZ4w@{{TtGn7ck zfBi8PaS7dV`>=S1>1#IT`@zs>`0;cfohV6J;`o-^jM4sf;{;H>a`ce_m>>S=*($MB zWv{{SY1T}6sDXR{Ny;(_A!;v zZ8DA$gf6IA)`p!oiI02qr|Yq>YL=ap3yvjKJ{*>y3~HkOj(_G$pbfGL`buq}f~Of>@{MG7@?G)<3(}CXMduUxnbyDHV8W5l&ZL!lODQdk z*wVQj;j)O`mk>&NN*2udH!%_gy<{B0|AsoCor*!>#N#< zN!^+ruKZQo@&P94l>}s;Hsp!EW_*nbKOK}4iI98Que(BzC_{Hc7O9RriyHqjCDVu!tKviOQ#{Bn)*V zd$;F+OyN){Y1{dJ_DO)(r2_q*aIL>8P%(hIoaV%x^A@TzC!xLhkR^t&J41b^)Vp(O z`?go3>xWm;Ai92#o&VCD1uR5k`F7Dq?D`qJ=~wC4g@xM;Xc6BjweP@2A2mt8%EBq# zn_oRr4Ln=!ti(y+6GklI!~(Tz8281^soty-@4)?x?i*PE7ogwsJzIBHWMKz5`@_MZXyFgWe5<>gqJiC_P zej^UtW*A*RP{BuW3xGlR($yfxZ!H$hOaKg@(W76#+mv9Luco$6$*>@lPvzv@6`PVJ zxoWPE&9lrczMg;YeA}W|4?@<$wRAnF7uTZzo!*Obe|WbzftDzVJ(e+4F5g!IXjukT zU9KH3{2l;3tUc2CMl)9ZM6sh83snK29Pw=%aiaJFp^Bksc2p5%wP2de>SAJzs=Agg zzXw$X;V)KIjCGtHgh$O&Hw79!xqt)JO}^3Bj6E0qkUazVj6gKBwWK$4%aM1oFe^ZD ziWVZ`-M+E7OhM510Kjk`E))4x?!8>EotMsj(k#2OZiY|;BTl%Z70LKY&9`I-=9qEyHuA7qd@`MoQz>@lDolG`~tZa zzUv8q2f_X#sxqGTXKuWY(nDO%u9Hr3{#VmoAPOEpRH`*q_|wU z-Uz9K{unA$g4_o*&@AjvrozeVvLurLm?91*z!OIZP+>9m%JoBhu5;p=rU6YWdEvkk zg?lKidzK3uiOJuxUUpQ`jR1<+>rq9D@KhyotcAmEofHEF0*_yw&awS!vC4FeHC3Z< zTV%DD&U0SHSQf(m?CSP?_AT2151_Wk>ckg=zLGe6XXchID!@1aQSG-*&nDhV z1@B(XOj}>JKR-ldi@W1S=b@YsC2;#^f;;Y-kCLo2yZ*+C`hr~JmA%a<+6%YY7zJ@{ zl$FE0^0Hd+hKZ&rt7GA02Imak4?e1PMx{8$@qe0fRt395Rm>%^W&T0v6YFKsPtK6 z3(Y%~9d~BRXp!Sr@QnHZ=>ngj-CnQ8(#e~Bi+s*f6975g_~xtz$Ey*H}H z@SM?4n8(4psVH_)cOvF%mNA^NyUx9zG=IFcK8Vr8cLUeI=_n>G)vV}be`QV$`>r*X zr{wl3<)D^%cd3>+^&Ju47@SaLmnLXY$kw1JhyHTQC*`}@@;Z^*4D6pH{r2}XLwwJV zfA>dy*aaWuYIeK-OXn#hm{Gg^bD?Q_BGnoQ8O*4?1fd`R>DGGZ?&7~|6Qwf%4d0pH%(1Dld+o>Udbc9%G_XQu@5tm%Q^hv zE5m-n$o{>GcHklm33)zf(`OvAWk~;kmRMq2!70Q)u{)L?xs0mis(h|U_$J5mLL4&0 zO!Q?grnMgO*6VMkW#2$UuOKSWQfElNntgXx39R9X@y-eCA}@{7diYToZx$%q_^*-% z-~ZoOedWsJsUoYjRHG03D~ejIlq}PVdX@^XNR~19zDVL62La~`nP@<()VV#^`uPAz zcl;IZxaN5r+`cRtQ{SxIA>Y3sw7U%Jbp?4H9Q{qUEtw4B$ghs*m}WO5?8SQEy&#ft zBt~`0;5buWAgLO!;$m4C{cnHYiI3QOvmZp}uIh5>TNXlkbEtrjA>1uGw*O^IY35$g zk_Gk`Z0h*3{{5tvfwf&u2A(=l;6QTC*ydgJQzGuyk9Q^wWZm`K^N)(~7fIs*ojOTL z{(R*1DYoHyWJ6GJun(>*EX6E!DfJYasM$t4H~qb|czFTzX#uXkHPKmbcD#&p5SRb2X;RJ-D{Pp zL}Td39KA#frjM%qU!=#OA5}lj!HVi04jIZYC?ytOH7gmdkB06%lq(#&2*fwWta&|$ zKq+&wAr^Q7*UxCO-PmB&^7g^AZ}idp*Zt-Gv&(OS>c)CIw97KEKr4WyMASyE3rewAX1B}YrkVl zAhHN^lCr3$5aDCWzW{MlA`d0!fb4S$lM$}<9KuF&BHz%Id`dZ z2o@^H%nBpyyXZO40JQqm?|+TUbxwIj`t$d3DU1{53lX3KK+BIyd&pN3t)cdSk8VW= z->M5Sr7(pnS>gbsu~LqD&uKvB8t>FxJW}02;D&#LWPM!wzxCd!_240o7$iBblsK=+u)4 z4al|NyT~G;KBAxr>Cmzw>(8(8+D4LDwNh=%*>s8FF)4P><8^AjPCdo|NG$Ws(A=6NQFJHB49KNfMRxJLrR1AP@+^N4Y~iMnrwQpXvW}&XW=V&j1@KXERDvk+86EWQTcInTZAoB0kPV87+V z_@GSkcfc~^O|u^vUcj#o_j~5s1F3}24{+L-9gZ2eowY43dPVoulnAF;kZHskc}4^_`&D`A zO0Kc?X+Jh4Up^L*W8$;b9<74FT2D2LO~H94DbY|d&e%_Y)M@khrlm}7kyl=qD70#p zI5;Ro2kY{l8Tabf%Q?mz^^XhK*B@w)9QGJcVDElzPjbTSSEy2TqoH^7e;A;uPQZWi zVRn6y`f)M#HL#oJINK5ywU7w~^{ohkm8NkaJE=r`*l-7@!@IsJsyJv!o`^Oa}k7RH)h95L@6QoGm1l&Y8RBcDi zSVN6M)jpXW88k<}7F=)|x?DzLqBv~_#!j})5y^LKcG8Ez8{Tl2kc0IKVFKJY#b1|Y zMPlQAGJcbQ5kd@-%m@OTui#&!YZZA$B#w4lcH7AV0Rh`EGM3!AQq6|`K2dA^=gz>> zPwi2si#ufflWm(}dG)B^Q3F|HN+;nJ(nul6MNHz9Kg=JZ_DRjJ`E8N0$u zP2Bg~x%ARs+p~^H7o9`w&o3XIOiHnKX(~PEllDg$KpDB_{9sHais!w^| zKUZ%++kmhXj2~ej)gq;$8WQ^!nYm;Ws$ptqt?3w9TT&QB+G9*PM=!Z1{IJor11Z(p zeC@!6?2NnPYIIMX{+OWl2u-h#YK4uzdOfoe%9VH6538Y@n_d56M40?gqxjCuX@+TL?fgu~La15zqpZ&4LY6r!U zU$Tp|)vZ1}_8JRhw@kv;0xBRZ>Agx7=H;I1D1ZnegPJB##TlDJwV{QAI@{)SYI9l= z+(U~>>xbqYAjmF2q#N_u#*k!6ba)@lt~w0))Hcy>;u4jFP!|NcmPH>~;QN*t@gukF z!Sz#T!^TfEpSd;W`qHX%xfNcVl zywK5Lz$}^PliBG>dLHmswPK#9NaqVdzJLT=Huy zka-5yxe!X6Udftf8Jr@t`2`E8J<4Qu_>yyCVP?x4yegGx_tR|uybPg1@aR%^pa8XCL_I+ddMwuj?-gj0yUdt6%c~5ZzDu zd4vmeOUL3|+U*>Ms*aVZ7bE*y&eH%_V6d$q(EgKnIfCMVA1KX%KMw>Ad4KyiZicX| z@N#Gcimmz<^t<8UeBHOaRkBt9wUYc%5usy0Xi z>v(b0_uv_{Se+p9-?Z{AD`rOK_Y{U7;RT4h8#b{nx{(q)xFC!6=csO5r3w+PVE#Fj zhmdc<8;&ft`z=8{68U!sP*EM#Kz|nt^)*Wu_@t2bWPZAAwGi>qem}%R9)?l$Pikp# z(ED*k6?RiB?Z{cHd;x2ZC8`cS+Q$4cXGP>FU4lS$P2->S5Fp26V()m*X$gKFmq&eU zUtbe$oXA=&o%jm4_s?=%h@y(Ed{oDgp7Km4O!$UERzyKRQt;Ok1e8@_0iR!hJDcqM z`6uE~>i+a^d1hbK)g8Wn_S#zaZaUq_hQ`^m`Ukb!n->BzXw-dg7s)Mr=^TbC+{mc2 zQA}$9Z#k!gj?d9CBanoa!)feo(#xtplk%oxJxqiMr)1m^`m#~|a;)M3wXAT-kaPzzrSDz~E z3SJnw>t$y^UHo?dFR5nH0^HJ2oGK0!nSn1(LpZeH`{{bkZ4o&h-jiHop<1_UE0y@H zJY)3g70+)VrX^)0`_kB$SmT`Gi7-L$bH zxGAz55zDspOh}fsdYwf>l`z=R4Wbc`rduHu9mtbS4Z*prdXiG3bOQ&Y=ZG&?*?D`cTY50PR zcA+L#qZJ<%A|mO3y=dbml`y6ITd~Lu?Kfaj4JK=Ppc2huRBujEBRXKwD1WLv0G3%I z;6WG?%~yT{n+*9q%Mb-F+ zo3KgUPO=icC!h}l&NfJ{0-wq1b7M!e#qJW;*tDnm=-bE22L`T>e!n)hhk%EyB&znp zam-X}7b0&p#*sSd{D^4M%&uC!)pD>`+(_;lSg&zL-Wzs;P{e5wi6dl#j8tH`}_OQs%iq$zTlLZ`=uUpCUBNwNqvyZ54Y%1rs$PX z4$h$Eu?Y4}sM}1uhe|>U6yO)!5Pa2vnSaG_7c9#^%Ttmun7#c=JE@Bx7re@F;hmgHGnVOAzZmnIHQ}=JmrbrTuVFr9I@I=_3moTBr(6D3}=N6GmITI(`6@5c-@s^ z+^3QTh4xP{Vi9T}N)2BFex^(PB5LH%nr~GwA}ROXR!@5r2P$zCrZ)PFT!il@qcEE= zteNyRI=o;uQ=xdAKMh${N!oC~sBxB>29qg%YHx%T2JRqQyNxddonUhG&!B+|ZH4`f zM4N*QErj9BHg&Td(`5ORT09-_l+;84P|Bf+%d-{K}p_Yy77*Cb*<=KvP63r!M_w#$M)3xqy7hC zIXyPOKy$l~$-DKVBlhF_IMVt9E@ZS7vWa{+X{}~1ca{9PH799p4p}R=-MYFp++{Z$ zdcWC8Go8o7M93yazR5$zOZ6*KM=C*2Ev(3&R`CL8O;rEe6zLR>5m-jy`V}F+nQmZ4 zRjP+hWBdX!35tJ*88Td1CwxmzQ3T@d+;)>IV(_@`IgXq0uWbz}Y;RQZAP-$j5&g#6 zT4PPdUM(miuSKts=X%~>^{+Wo#ol{WoDjt=$JmdIRKB$~QUA-w-!-92PwrO_5CPph zlibN%rG*sI8#mlLtZUi(N!jl{vL9WdAX@vX;?ecDT^0@LUyWq07r05vCPwG(a`67w zmwn0VLKMT6Hvhdb*Bl@pw8>}0@(t`f@CE+AL-q?s5(D0z4C;&DJL_|yktap@t58_a zvHKsqqys6T`92e%Qftxm85MaP=mHB6;uAHhWA?4q!u_N9zGk@yfIV<-)4maQMBD}Gz7hpAPuVKbfW31OIs}n!TUQLi_azeB( z*sCr!O?!?mw<5_=rddS1vsBT$rGDF87^f4*XZx-M=^kH}I)2@e8L@wYS&Xq{8680e zvwhobsGuuZ{}v;f)O8-`xFeG->Nz#jD=oq?i7V3BK#+a z^EYAu7q-MhseUvxCreMG8FkFq(fTnWV}hPJkvY>-T>|vRoo$=LXy0KsqyVu*N9(F7 z*@^`9P~aYfR=n1y6y=bGD?&n<;z{28Sko4mBGiO=46hv|E4>Y~PmO-P|MpjdkaAdzm+HJAwu!)yo z!Kum5hmB4FML>5E^uoN5Fqf6Mz7Q8rR*&6n?tYgmarYTs-`Lx@#yjA2alys#*T}qV zfGUc?<+2BO53*PM&&}U+d)U&S(%g@y)P_+B%WPq*ciCtE+;-v5fQ_X=@JbZAFQFEO zeA(b|m}XYW_}Tl9OT47A0YitF$w+omZrtvD-61Q%Y-o^_joTMZ)2P=g;({M&+j|O zg7CGkA7)Uh97n?ryc}d|w>^_=+gY8_6hFSYI_+g6CN$T8=~)8a(l}H_0Ws2Xf4CJu+1CWM$dy1FSZVSo zeP0X}crZS+(UPjeD6BeRm8hi~$+si4(|1xJl_Rl=9h-%yNhB832R)rBB)k0K+AO+3 zUrErw*}9NG!xNmLlZ~TwoePy_Hikwy)1Mb2YF^O8Ikct5SA-wS-<5!Ve5G&;E|3dV9VWqUC#x{s;&g}u5Hn=F}$p**w##@vtEuwK@%Mll185B^(0jv+yN zBxH)*v|o^t8o0!$I%o6v?N*G4@|zElp|5@=v0MdynL2@9e^uO)FR)#Go<>p$orgS1 zWJr&2H%yV_H?8W%f=@xl`1rcqVG4oU1-y}|dnA8g`lPVkT5{?DcvLpZ=|ec zP7fW<$)*0E66QYEkh0F@R4jSa1TKKcek4e!R27}SBUNJk3-_*V#yKB2=mAB(h^U@l zJo+0dQJOwovc-q!Xv_*p4iXEbW?fN945=}fJR{m8z`f$PPFMj~A+QjQAw=8>4H`s6 z_$n3;A6?pKImoSgmmN0_FO}J7&yP_CEsR>W?&UpWrvrwIi|79JyR%9)!}-Heo2{YI z=nr7b_V7f;zJlo&e72*%!~n%Y5HzL+W}|@m%r3uH?*CS7J{`mYzgw}_C;i9`OVX+_I)E@_ z`&J;7ipaXcYZKZhUq4rvkT}XJA7mI=K)X0j-3(9bGgFeS!dmhY04O{_t9*$bd>ui? ziR*~^ilvrF{{6VH40uEE304jKE4#IpV8M$;YlU(C5Duoeu3t-vMWF8QU@jIx9rRua zg?YmQ?2RCcMPm{TT_m`8)73*KwO_f&@}584jR2IUOiPT2sMfj+#e6pYgsFHTUF>y# z7F|J!ZZzRlrA>TGKVZ(h-@xU_n(q>vOtV5{5R7@=qI7?oYKH!FHA;`~el3zNE9%}% zIQ8BdE(KIXyi7+{)r+74$8^bsW`zD)FOP0S0Jf6ide`UO+JBlAi-8oD>qynacjjsF z&t<uBwVr)~ zyH4P`JQpCXnUd8Q|K02ISCtJ%SrmoeX!vrzIiJ&N`fZnX#O!ST-Po4=r3$3%cPH0? zQo5xdr1}bKsw{dJ%#QL^tzrunZjlT&m$dVakwFRPw{zkTLC; z^Hg1JLBhJ%Eq*1%K1eyAlHJ;hbgPNM*b(V@jggd33p!hHQFA=7^|h`n{Yy&OtVepNBhprnn5V+d)1qV(14x@Qo%Y>ZoYPRlq9$^R7VCU`&k8&(woi#Jg6ra9j&K5C0pCo72&t#r5$`BhDP4$L&ON6Pl zN3&Yag#Z{pHGY?i0x=G^oo07}op!&J0HBJ+ZUheAr<$FUOaK*ls1AOeBIp#27Ks%p z06LD??)@shjm&+?6MTU#38}!>!hW@4(}!auzNJa?R=N&lU;vG|r-lrvdlNHXPx7E# zWlWn854)EO#ms|T6pDq9OnTiPza|lC>MO^1H#A>-LwB(WZ##Qb?NW%i_WYu^%DQ%4 ztL?wjI+YzaIpZz5sEM-r;=)eV?J^@6W$;bhdu70)KMJsgo6A^q7RGho^>NmuuKK+G zEfls8A7l(To;dmai){^in|356XFJ43@QK)HN}>o9;2ph!R_Hj8eA=)~v;U5CQCAo$ z^+ugm5^Gtp^3$<-yN!>Mv2@8CaQ8cO)K|W30b*;d^pMe|cTy&J<67IfX~~)E9Qn) z9{qFvPNX2sy5Old0T*cT@^gpYpv=5GM0OaWwl10&U#3-tm>sXroMz98wx{_UQWUV1 zp7sU;A&MabOc@1TYGHc95zU)ADM(%T55vNnc`{9TzUDc}V=8iyf*eCBhnMVIRSHXZ zL>Jke@?^$Z(dMVJ%HkWf6N_4}K>)`X0LAkbQyk2j`3^i})DVBiS=GRjKh+p*^13$) zvrNyU3r7o-KB;*d*HS2n0^Gq#K?1SP=Cr3wlx`Mg^Pq<{&qScURDCR%B2x_(R5uG) z941x3(v>Berc>&`1R=udnN&ANXUP-=mp`9#6Y@ z8LR{$GR#EKWWX}IGnpBU2ROdT=+GS3RoI^17@J)Vs;;HtoMwZQ!H3~?@)t!H{P^tr z`(UgDi@brC8S&oBY;ho*XxrC+k#qP`ssQ}Kp5G%CXl`i`78E|^k)bGP5(T%0Xi_2r@mfDFS14zX^ zZTYx5<1);NzAQl-IOL+1vND}71IrHu$lDb~8pv9Ys6uvx{4&&U!SdF)umqRJUSEkH z3;Im!mb`U;Ph~5!k5xDqu(=)H>6=UgXmm3H8y_3&%8QJ4(+h=IKp~Flc0=w7_Om9K zec~x#8T94eRve``?uJz~_&1#6rThx?l6hbrn*)0KIJ4u<53P(s^X=yq#4g3-9#`5E zPJoOhP6QFNtyF|~N-z9Q2>W;$qUFe@sc~DBmSDUL+Co$ruYF!uva;Jd?tak|5{#@T z6a0a$5iBf`CrOla_)7kQf{JI3BPSwVGTtCUMXq`IRMbu#_qbx+(f4j;2qVs$ex})D z7GNFeIyeE<<4&_`m>#Vn^^3b8>mOR(&Ek7i44D9OVAb)iA_UeI@#XwTR)oqBy_XNaasVFsh`KOmXR2zaqG3J2nC4fAmcB;& zr^}9!6cfS(jQ_zfY=BaNbs&$_sMk;K{7qjrjy|g$AOKV4a)InVYSth3{`r%uw3Ke% zD=p3gin(kzESF48^AvpV3TqwPc`w2lA<{%TcWN80I5}K;dR9t<-7?Cqz z9vot#N7zzrQ;ldpHA)wX;M+zgq>J%|2UxcpXSODoaZn6ysYvhu4yifb%xKk?V*HZm zk&b|Q5W@IL$vB?e6=jQpV&F)rWC2a9%@#EFcTSPdE-AUABcO|cGZC@_+*OgZ32@JE zvq+7QIU6;id;}>{(s<*W!^<;?(FiMnsjnXg7d<>l4pqn_;26+TS6%?n2U#t?P(BtV zi8;~{*=Y?;EseXV95Hz{utbWv$C?pTJsq);k_P6>sdI%dE5JML`9|Qynmq-UFyR>; z(ts!W^`neyVluDDlYg_H$R$8!>i1M3PsRetNxnsoBIum_uMA3J*xOcx_Q$WT9@YLs z1Q%nrZ*>X&YwUu@;>uO*ljA>d)4X=CEr@F6Z*3Vt6< z|0Hkss0dNRnSDPxB2a-*{P{>J6c_2zszAa~c>KdS%v}sjDC!#{3hsh-elBU_>dp6z z%R6Z!u3$=1BP=VyuSHV8MYR)2D76iH3rmA%q{47hZ2r>7fFnb!ABL>VteaD4ZqgA z_lCGA(el*FKX%9WWFeC!RFEC)#YJXhoGemQb`Di z_OX^GVBA$BkXagtiu#Rvse=HYH`az9WenpKIAwcEx3ht0L!uwzv`7 zxDo5=G`QT^yXhRJsc zDoNF%P$evII2#qRHO4cNiIOlYM?&})2tBCba^NioLWC9Lb}`uoh05G8zwDiHzmKXG z5Sa;FKW(>=?|L%Hn}U_zf0*<0XS~+zw1Yj9FoV4h{QVv`X_^vLh-C|)&C-wEWqNb< z54auLyjY^@j!oZcJ>V0i2JpU#1iV%7qR;%%4&AShVf3;4eLP$6bsw}VrHj9&#XVWa zd@_99qMMaDUm~Q)ho_{#J@qv|2ib#2$1I^b9YdiQs$E7Ut84s_RB{}$N>_7dtnW%> zadTgsoq6)ka;AbQOixi~I_Bpd_;LUKI+gm&-|5ZL;O_ZSRQ!Aihasqn=$|x&SvG~* zjA9N*sK9Y-VE_j@?Hdn@QMwsgbNkw@OfFN51&gKrqWe6=nz!oi-n#I=qIibG+hDC5 z{^iJ{T!#Y4VB)R)rpAe$^l2Wg4o~Sw({{MBUe{Vwg)ygyF%#tL?1gyQ=q3;8*^oF{ zSIb%$wvN_oH`%*l3s41Bsyt*MPw(>UkLLc|7+-Rwi1;;o{Yz-l;}KP%RGwt9{ z1IxiE)`A7eOZ=xAiTC*&QgO89I&3j&=2AF!-A(aW@@PCphTV>!zK@aw9EB8wiyjvL zJYAg!yLPb(B)$=cSwHn_4Ypdh4jZ@oBQ$XC1bqQ+_bd%*P5rze|M+2@R|%4X{v6T$@r&&Bb)+KVvkj_U7yO&}&CWr|^F_n9rBxW4 zVzt_Hl3}De>TYp4vscW?Za@+9<=ZsXeXZH3iA8+p@LWqkjI%!Nm6g^tPo66(Wxj6> z{&|5bXw=AYL*2Em+a>WW3+o>$=!ozxFtN(Pf6n2|6*a+7dsvw}IzL?Dt;rd$vYcW) z_aX`w1#Atf;?Ahlp-!sov`!PWX1hwJM0{Xb^G&Q?!eS5|qwN`7)ZZ<$Y$y(l zmDf7>2_@&Evggm@csX(h9R%iBL2z( zVMklb?|~`<6u9rdat%nruPmQ+NI__o`Gk6V;_N4^@amDF$)|yU$$A4FGk;vgiG`2} zXdA@M)U3^WyH?#IlFf)=OJ3`v(?TECV;x!Y$`YrA3uY(a-v=jtUK9p)y=Bjvz*zOpS}BYxtcgrzz{W zYGgN(?Xc+2SJN^L3iTN<%Tk!jjOr4D87R1`Vyv(DW{s4Q^{vIz0H}>&+9~kn z=GBY+iK(ahua-$Eb6+Z-6Sn{Jir$?rEwJm4M`LZm}smto--z_L#|A~Oy!Igbh zpX={4oNKTu$NaQvE5Js86Vc(y*-gWOn=IJ8*zj!&0?9T=MACESSZTxhBqY}`+rzntHH%ytI(Vs4}V4c{6>3fOfc{~|js$7X&oP#4;Y}O zq;eBZ+Yaw+i`|DQp6qt85~Oxy&~|A&Jl9O!aWC@VS(F?;LeOC=_ig@eSRhc{+du`k z*^cd_p(Za&prbK<8G*b>)k&lXm6Ie?kVWrnH7s+RO;J^YrpL_K@^M)&LVtn7MrUtd zSDnvqu?86MDMwRNT?fs6`;ZcgN2@k^%vV#C^u(VG6c?M~M#|#-gLvhXYIZG_9kg#~fxe1VoS zr`hr!jh}Q4jaAiYHfD*lTPZJxigeb#Qdb!od@N(66{$t^B&l<$XYxK9(C3Q8cCLB6Q-TE|U^b@xC>r-{;D44Z ztW#)f18==Ve8**|F)C8+N?aySHKc)ub4v|Mur{!+LV^dbfKAIBgbo-a!tBH4T!Cvu zT4naM_&dC5E=5lQ}`RW9o>8f#LOtWc^DrE9$ZD8Se z(0wI4Mkx_tL!^rk)G@8p_!TYt61(#p-$IEdD0p=~I@JF=kvQsdTb-Fg9{}gHDNLEu zfkTC+a4T8m^WR5li73_Pb7uY7mQkORd_bc8pI&z`R=KuZs(xUG_oMw1G8&8@WzuMl z@L`ZSB;zrVE;qpXc!Xg5Zj`;;Ut2pWrN|oQKxH22Uvj)3dM5H&ad;@5Un40LFcqZ| zRZzuj+qn1sBjYK;@OeT#++;m%d+G9f50;_qIh2~cN&>L_woP;~-lJ$(Ib zlDX>qLglaCm^vkf=RT~*4(7?Kmu|Li6u1}_5H({-2-XO^t(2abm-!IYG3AqeghtyK zqfEl(3|<3z$^~1C*pKwj?kkf0Huw-PLp-3&SDzoErC7I05a#p2#DlS+GzLN-ru)TV zvJw4A>fN(6q#m<^T#suuFcC{6O?fovyIJ>mUGiDKfbW}{8c~$3GYZt1bVD~wp%}Ib zZCzaKcZgQ_a5`o^*OLb*L5%YyJmoV165j7+saLHhLfgbRj{kLcvP?T`$Tqnz5k)OI zm)a9RbJfa1!AUlG1OiOS|NfN|#(gF2(A4C(DJtI?TeYc2id&)LrY3yMUoD2_C1ENa z%#d(4sb*@m@N+h^ajpd`rk+%-?q2c(za5E;ipT~^nAf7aR})R*oIe4o4^^6POqnmg z-x*Jm`jBTHVy}d+=HhtC?n7mIv5iuM`HFj@FOkBk!y#t$-A^qEQ%GrZ!sAIh{XpxN z?{n|`K4Zzob*uN%;#1cAa28Yl1BWCe2HuPwqS%v|bL1SU_COarcwC0}&zRZDsuMiB z^Ic!X6JTuFlHX^m>LhWjPWRZW`n9hB$rsu5vzj;ic>+xZO#8*{gumlri)5m4GOMsLxxC*X ziVgf*rz4l&zGu-q$D*u!b49Rmkqaf=0XU;mDe|zQtX+S7mspi`*iK~gW(p!}5&_vy zJn{oYk5LqkuziLZxD)=$jkfT8by0w%qk8D>>va!7U^$&u*_(#RUi3Vk=0tTT>x>cg zx9eMsY@_Q9KE)xj%$yM>6>i^Gh1i;S6$R`s20+!nd<7lpeG>qCpTBc1H0* z7(2YUxXxZh3(N5Ry`Td2jv6Z9tTu}{@cLAX8cgRE)cVFJ%-Yr1nY8DTpF!vzDWsJEcwtWlm~n(ow)aUSxpi5T5M}!%FepZ z$(InyIw72;N>?Mj@M^zV&xOvYvQeD7HgEygE3iC{E;ADdMF<9EFmoyq0-=Vd3t;#n9n18a3UpdM3BM*r=HsfbU&xig40mVfcJThqKJ(_5;_*0|5#%6qy zgM^lpgOsNR(bszK)^9;8OUDqDE@%ST5_tdz@K}ka`Kh(B>#(4{<6@Ux@=kSH3_jJ} zBHgmH8x8owV8nJLZXjj9Y?aFwdl2HJ&hj$yD0L0yCM0=-ph@2(-bTHW`wTZnlQg^s3>s ztu&+HBG79RRfs6fRv7jAQ1s{?7wK~mKeBlJiHe+2-xif}eciv^FKxExpoJjsAxKM2 z6gc}(MLOAB7HT^>U%9Qhzfn=zgd1*LrR`=^5i=5K7%R(;wq?61|u?Lxw-g z{N|*nId<0fagb`)AFX9*BER7^r;ORq{vyXX%etpK^Dw7C(*$X{6-C7bC9)AUoJhPE zBoY{%aqwA_B|AVkrrb;$>-ZoiBI|vT4}JAl+K1Ve z+k(sK4+E9HfIaV#B#enyG`Xr^rQX6^D7(@j523^W_RO`$aYnFq3paG|u@;ZnuYAWM ziFp@J8klWF)^A<;P-*pQa_|J-CGV`hrFVRJccn*0;4CynZ`+iPZv2G&98@>1WAVoU zlay|gAhr<6SV2faE)3*aLo09Hx+qISa*-$HLbo*ynKXj1EtaO>qYT-hL@+eDbqa-& z(NAx)a8jBDil426<&ls0slR@9WE*rn<%O=aCS#axZUTm?difCI*0hTSQ;`7;sBDm{ zzfxUHgEKV`vZ*t9QKIvohYy7%#WD4$NUY#6+cU7Hj>pEWYbO0beI`uqS_?la&rVRl zsT2^%(A2))N$f8-MyHDjNYU}cB;gqas!t_fTQ zb0vQt1%B-zK+OqXNGpNaxwRxIwr0p)t& zs-!*V zMTi4yc9r{*y`FemaNZD`i(e$RkA8=JSVfKu|7yc7xi9Tppy@>UlTMggG+_lap@$~IxQLLX}YrM zoJUX|L+tsWcZP2+Dr<#Oy}-G9KYgTU?@Q}r*BKAYRd_tvi|h;RlPQ1Or2%^oqLQK+ ztX0&u)>;(W1#Q2hB7`IOYeCc5w)X>Yb+(h)@fbm_uon0;yz1iEjymuGp8#FtGpV)@ z3Q%-pII^yWiXq3)p2(t&_z0c^nq6aER?0%WZ4_U_DZ(P2m5M zd3Xu@u2*n@m>6^VLBfKBB(|3`+1%Eq%v}#uDf2z@maj>yHkieBW44O=2X)PS8M6I% zd3dB>pS$t~u$J`}1SrK)?%qZGSwCz$-Nr}pK)61|W-u4A4Tdar-D^kFt+tpWVriZU zpZfK4?S+e|D64Bi$0PI$>Kkv3XwtA^!MY}1$5niD7?257e29q}hDp>^n0%WL;|=5( zFE%0F0+4Xw`R!<6y7`G5)h-^*;PwM2_2JRSY0LY5JW5N16V+ts#PD35s(Wxb7QQzdTnP&(VK)Z9NP7&e48;^Vx*;h_NYx-v>1NAFX@9ov`(!h_`m_(pU|%R}g+6rk zPBp88F;YHXxaq%Xz5Pi>D(hH|hmr~J>59!Uy@e^M3XjPf0r|_wdmoO4WC-kq(eNUQ zv0Ym9>8lZ6h|W9j4Z>N`?oABtHugC8-$*wjiL$1IljLKz0R|IYKZE`HXrE}Wi96m# zroE`P2H1-AsCGH|z0|wmrSR_9M`2{xIJfn%!D7fI-2*8ODzccfmcAM$r=g&L`-WYuymP;l?q~9J{`Ec zp&I-t?MaLzra|y?6yAk9aJfMm;2YAE?l`#Kq7k<(u zy;h0!QAiukoppBWEFm+K8jz>Jt-84Ne*6@3ktYO>8o63s>PQ_3KL~zxMU2I){)*6@6 z6J-ihdEYo)9=&Y~Cw-0G24iGti&#R&omjG+KO3Cm{^NIrgt0L7=r(QztFavh)Ca-jD*>`SRt>EjH9C#9xz^<216?&xmNxTx81Cs2)^&y zSYL3NEZCE{YMj9~u5K8oWYz&excckxV&@$H7v9lb4uHdvN_Y6nu-(f(s;Fa8Tl z(R_SAH5-GTdL}o54j*`Ud4ZfVA!wwkg#BI;5+ID`y!!h6GbIebu076*a3R7^Z&h1{ z{u4>hPnY=b+lNzX_vMLa7vhkA0MgoaXKvM$2M301T5K5ZW5fMHQha-FH`GMPa*FTv zWIS&IJN%FmkT&^!rm1N1^}nm7h=+6?c=@yj=)YB1@0^k85VyT-cb7pE=|@!-PEUlm z;T$M7&(O=%|GP3r!>Dg&bcf5azvF21{?8(&TJQEYft724BhF6h;!EQhlX-6z#o0d_ z)x?3HA2Gl~?DXtW41Q5Xd7D82E7+Eb_o|VMX0NX*TK0`Qy-6OlA3bM%_<$!)S4B~S zznw)6Z*0*s_m8rQ`afk(x|nv2S~vA3ZEJi%4N;bXD6}o~#X0SYed4HN_A;cfR3FK@ zyUfpIMf)vXE8d1LnJea|X z$p0KbK`6H5?ficG-lY^Srqu1VfL4?iTa*}BXX98xDlxk%?vhwqC9u4lU|VJ#Q_t@< z9xtz3NT>2)v@Qyhy!Fo6)^^J}Jujn9J_3h#c4j)-gDQ}R@O-62no?W%cHVaMPt;2J z?b>;CjN5k_ZT*a}q6uZPxkQ zE$EEBJ>w0z zChVxs+H7Z{dXd3P;v~6&|BumUW0N;&N7_pRyWRu_v{&JwedI-~p|p*IDtU zrn-1I+ce)PnRFRFd)HFl+RDeIY{1aL-!%YAtXT9>&2pvE27lo&Kgc<9>U4Dd%{uHy z1L{MXeX9h-hjtyN(0gWdr!C$0G;eA}q(azs2FF5{d0o1zwg`K$oT5 zzj@WI$UF4e_j`66rOY)upEd6c_o`wu@})cP{H9LnpAMe`+U z%$#k9{Iw^`C&igVtak5XQouy-WpbOZNy$d*VortWz?A)g-&z=G?u_gnMxzoO$9 zu&9CCTKMs>b}{c4X}()|)Z#Y?8YS7P!&?7Krao8)0hoS-07_&;SZHE>X~{6=FOn$b zdRRk0QF(?7W^QdX@r0d+o;?eCA4UN7jL7EJmm=YxC%L1*jkW}^b%Pb0x-(JR9Rk2a zoo)L9VNG(JdRf8v7XffSpcHPwFHJqw>^7`sTk-!4@#=2eP6g~KncH*PC4u&!JzQ>z za|RfVtGN;_znJ3q1Uk3(V=5%zw_NohD>;P{ZW+LLSAn%FV4eHjB*3-+_ZH}&+y#ZD%&-PXLV_=9f>5gcAZ)h+qeWed*PRbQZmkf1js3A@TDpS{ z8;7bYC&$Ui1i-cSa9zXcQ7mQ`G||v;I~>edX97c~*K6DkPMqhY8p+%dAwHw+n#oCd zzAJG6S0Og(W>rTcfxa-r-h+GzVsWbxc$(3|DAvd_D-S=jCsCl58brQKhtj`6noYAn27cO;bn62vImF9z$+hhP(x(Aw%0`;uG`WROE=5Obp*h? zfwVY&*N;;w=6zcorU=Wsu;3WpDXLYogP`VE0Y1`MlL;<^wReusMhc_iu)&XlSiiZh zVeuixZ1)0qjLJ5hXD zU+&GCMHpWlywWoM@<|#pbz=Aep>@Fo9%19VXcGSY@kj?0@Alr=!F&UY`cxYKd_z_< zUZP@V51zodri#hIG;|<_)h@j+{>6<(0%-Jq6JoXDqdwP4nSJm#K-C z$B^Ps1xPTpomOg7))e+n%Rd3tv69$!G$FWBHOQfYPvAfuwTIzcZ{@Izc%&ty+IB#C z<@6J`w_^bUt}ymjo0!v6S06Wxp$}db$2;qsxcY`jp^9L`Afbw-W}`Hr<>hz%S$0Dx zLwIXn&cfh?zgV-cLP~RWnGky!eo183vlcT&c1@<*89wk@dO@=5#~$Lo^bExhUN==9 zymY-{MYp?LfX=C|gSG`vmM{go<6|RxTn+y5S}wVg2|nhs`OHueen8uVE9>!K2>p!O zbXWX~K&l~>W#w<@LNEa0a5>>d=D~2lEg_n@?{Gl*k=$N`L;Zw-_kG6aM=*GiLrk4Q zK=lBh45Pg7kBByAc}Hf9>yhy3bTu~3W?Ilgc@JmIcG+tfqCsDgXr-0bzTkJ zZ6L^hb@M;X4#_dRaLR}7R@&uHCoRqf1^gy@L0tMPq$c(s z2qO`Htc^4XcadcNBr7YRb2LwUFM8kRGn*8m${bFJ8q%EwXk|P%W-V(cOtZWgr3rrj zJ3u^CjgozXwvP{vW<8mpY|>x|8KwLUUJFv{_U3OBDvulOLJ z^UYawx5|8_sj-^gLjT*!uns*7wLZ1ij$%c)J;P2jyMdfwF}%Mnd$FDjJ!vY@w`HS)No}U7IAA=1f%JZ`u(aFaGWtAuB^-e zd$MgMqG=(OjepvdqJ%x@fq=pUyGI0YNox@P>!FZo6k#xFbYVPTR$qy)B^o$FV_)zY zBIOQU^6+1~Dou!VxK$>T`cW*Ba~K;a>h+C?urHYvH8>I`IDndxjcE) z1C4jUDqwaFMNq&*nm8r4C=)Qb@HXH16}G=M$<&oKpQo10NUT$Y=ig{{v-CA0#AzpC zyG=4nX%Z%r3z)l|od%|w0Rl)|9_%W~$? zvg5^z%4-b`gPFYb*{!56H{!jF_?Dnk!^nz?8-#MSZP*ThJ4-bQgy5sBh~llf>C|g> zPH`&;oHKEP6$HOmaVXo3^1I>wb0`+E05|-$w$-n*kI3e0{(uyN|7)|hD zeKgH6BN-R1WB*sR)1?8oHH7>qHc5Dew*!g~%nm}Exa0$ujy`bUQPeZ!HiU@+iEC3I#w0i;tM%*S=OAez4qRis@uxU{G{dp zv-aBj>2B-T1bC>-5);h%J-NCw0pdXiDJG0>*1z0z1)dD17X_pV9@#k^l+ z9Il>O2rv5>A3`h35nA&%-E5du7LZI{BpYwQsca!A1<*2GeLiU^`EI@aal?MB4eUdyL^#oqzf?ATI96lSbJ z2bI;&Y&-pKsZC#KbtK7nyvJ9^q z0C$jiDp9z$TKCB5Z13VWHd;0V3FcUUdc!9UiTxC?pj>Ey#N*)nD+s#SK%;{;LJA2g zqYu2aKB_@m@V9NPnsZn%QH7&I9T=&>`owGR9n(dQvb-9>`V)DJQ)sHF1q}*MbEIo_ z8f|a7LRKM4vyajK%Rgbg7#f)J=*DPn15A!VwxA;V@pae&^F0#D4%ek;40vdz(}GT* z#E$wQ6YXgkEv6@1DxhS)DZh;Qz!Dkz!~2kbZXi~GZ8LXvbH?&)LI*>^uWm(YZ2pXB z(LAWI-}!8#@D3obpuw|QR-u|})h67e=9zfB6=rCkZ2x zc2tGiVOp|M| z?-S45-DY{+6mcKkhbSvRDx4K3$9SMTT<^J>0P@-^3$p2hmY`e52|1GlVwTU44E=gF z&o*ba>KjZf_Jgtc9d77Blj5?xQU+E0^sGtP=y*8x6Wh*}At*7@#l+6rxY)XLVU;<- zWu_t=ES%CMp%spjmuR9}t;$RbBru2B>6Zqx#IugeqZPo`%M5@Y)LqVDWx!RWP@-n3 zLo0m#0;N?Z`FCtDK2vzv>1)zPlIExW@p*}s3-4ND&%q{4g_SWuT*eL?H6I`v*^fg! zH$%bYDvLpZB+XD$3x12$?~fS>_EP|ZGX8D)1|?0@vzr0l93!6}nC z^rb`<3Xisu=2~PJJPuN>mTd1~o2~9)4I0K;xjgJ4;Xe8D_wL4bE5hQ@G+Qs7^b|OEZb=Bu z0Q=4+^N_W4Vu`#YyM;T}ef+F(**BB9wm$82DZnB&<9<;kFlBvlz-oDSQ@MC8BQ7e3 zMCeBWT%7yxrr7ReN!6}4_rJmkdMk7&Usexvoall!MzOxMwaxSUNTg`=g*aNJBi}C| z0hgIG=da>}2Y||%e6Rc*3QVW)8M42>Yi_b@Atx7=*%D4r3N4eoul==SaAb+wzeKih zAinhl$o|rHPI9rbV`Uqgdyk_7cd*riCg-jo`xk{qUf!E`uvvRfQpFaI_B!TF-V=@dy52_U@L&m^9 zS9qoSyAFUq>r0C2|BLEm1a_>B#5!!-gdHE5IfLY~ZpsN0isw>6eSaibqH{%I7W8Fr z@nZ~2X$m5yErJ>OjYqD{>t3C_H^F9Y(egB|-UM-r^X_H0!9_iQYAdLW9u>*{m; z-O@fYZm1O$RPS-lPuA%kSn+`zdrF<@rV3^kqBfiL1Whs-bV?d-e#JyEWltGP03r)k zg&wuz!mr=+IQv_dq%S8_^HQ#P8|b(}=B0;{MlX~6qp)MvAgU|(4^rqeS{dulOcIFT z#AAvk_+LE=5xOD$cOT(468Vn*LOatjmZR9jOkL~>>;F`%G;~Tnu0NE3FCU5Yn0^(0 zv?-BA98vE{ni1S*mpfvd1=sF{{f+0>H%+%J)+Gcf(I!!hVtsm3V(nwlkjlk<*Te#O z7QHkubDN4&vKx4Z|L5S0A|i0W1X{N{ELR@udO8`-L7a3ISnNP1JrdV61H)uCl`Frc zbiBdnzh5DWF(i)Yhp9&%0XCunW!Wl7)?A9CmyegK|v9WrLc_XoAF~k-^9ChkuuW8Gbd_K5V zYr$Mn>B_q`uBmxeW6OUeHLL}+bmdOul(ihr(>pX3m9|jG`=&*fM^M0AX??pX%0hn` zn1?7r^&5F~oknUU4bHxa-?1WGt`t}xeZsn|zzi&Es^=l}Em4z&*F!jcjL75>Ps~aN zfMb&Cs^6BDiqUT89DG!MUSJzolt`s6czl!^Z}i9@q3eL&OAI(L*gJC&(ENQtO9*qY zQLOq&qMCv!TjXV^Eg~dhy3vrj9FH7_Sg-;nnOf2|scY?*o_y|}y8yqmFWPvh9=2#f zzg=?lZD=w&b#4!lMj2_DFVckwnO1)8Heky-EdP?i>q$j+*2#((&5KdhbK~eT376#V z70>3Bifa^4UFP~k9(*-WG9=xcVfTj!AQ^W~Knafq4Lxefr(=@F4vyp-_ zO_{80Xz^(x#*4t@sGQ;9S;tjvzBzkX-H($}frRdj% znWsFoUuw~5{u9lD@sdkU*<6H)?m(i<q@X! zqN1!&AXTOqKbKk3t$3pZ4H;-VV9O^yrEzrXbUi#Ot;2FmdC_42j3rW-Z`B~HtUCeq~1Brkc zmGq9_dnBx?tGv3eKX|G!b;Y5tT8Ym$J_GdY{1tB;UnbMHccm5Spo&u&wF%XjV99UHM>oTNUZc%V! z>lc!)1VAqAPqL$B=Zd!AK5ha`zr%FYUnOhN@}G~TcNm_}+QZFC9Y!PoAKxMXS^Sz_ zP@#zA(c85hJZIuTl&)+ey6#bRckT9zbj?w_RjG5CQ0AgPi zposV|-s?~M4_M1QJ>jG|Re}uVkxtz*zQhT)BaqWYG#Ju+K*E!=Mo()ro|$)^av2*f zV#Px=ruU~C#1_BJWB+DN$Xc(~jV0b0+1Pr#&?(Jml18fXXt*^mFd31=#RCchi5e|_ zQ0%KM>P84_x~BVpD}89aiK22IKK<-VMGE!q&vswQWmovPc&mGS@7Q8gPDF)3^*A)YSsnTa^_eegJil1h??&BQm}-7Z{r6IEo8KaU zD;A7p+P&O~@e7f)7tmlvL*mL7s(dt}{-Xg5Q#t4fWuLy$3Bg2K%zWl;%{WhN{?<-L zT(6oJBftJnHlH}M4U`=_7QIbm%&JD$uyZBj=-tN}79QOfX-SgQPnnR{H|DxO#FdQ) zgUM1xnpx{qI6^-W>FO3bJxX{njbv;K?oaNM`OLaDlrERn*_55U?OBmr(O0Yisxp|j zJ7`XET6n}^n88ay90AC7S!CJnzcDLbD*m&}Uq*1b**cy6Qcl&$F!AVhe;gc*3r`d7+6O&7@T z*hgP@Lxs-|Ft8hGR;MfpKHnvx{$IBtviO!P*iic1pXq+%Ne4lqdCs8A$B5EGdi#H_ zk*d2dJ^9%{a4Ae^|HmWeXvD}6>3=F8|ASxse>&d(pBun0|JQf-QYk~(MiyM~|A-(u zeGIo%sFsN(p?}dpR-9iu+5?`^1%?DZU+HQ24vKced@n+%AA^^M3r* zCwmC3REFv2Qb9`e^_8QhVxOT)vi0pFd6aga^61 zATun@1DXDPrpX#I@GdMp7#4QZS}Lhaoh=Lu6gq-6F>@H`pO%^F*JVy5p4VOf8MB!H zRS)amE8i$aQ6JYYj#9)w0)T7c6!d|Zze^5_Tm%_T+PgOnt@;V1kJ*$7h~O3Qn)lm$evNXt^6 zi97=D{5RN$oYOmWp@Iv8Q)q8CA}YJ`+1(6h>l<1t7T;P&1pQ(dCo_FM$9Y{A_)CSi z4#z`tzoMeJsbvr(?jCZWV&G#<9w<3w(G-Ql+GgA`yL{ir;(g83=90_+pU8oI)Y!Je z@9&PVzr1KBv)V%iwRZE|lgC8bcHxYr`q7~zgJp1Ul0MO6R};Q(A%dGW2ZR8272-0% zbzhAsv2eh4q{n)0b2LuvzN*j!=)klr$f^S5v4nC${$pRqa)QfgaDF&DzaX~CDu2sl z&sFD%hl;W}je;GQv^B%Wg5>AIbLe~LyS(2_AfKhnmcZV3Gd38qRC(G0&%WV*GQ#jOqkv5Yuh@cfhPSAH8C0?c7xg5Q?SerDW0dsY_; zBXrW7S6=qOb4V+7nsgbIehb=l1kO1vLsrk)_Ma9@MOumKUP;%px5+@Y(Ng^CV$U1x z(kc&9rMppmY|rrXjy7+JJZ)QhK%)xHRr{5JK9;~q5Co(obILqMjqU3C)?gA*IwH7f z{J@GL%3lmE`SjO@v1^~X1s|vvb3Z$`=qa|s&mgTWa#+nCw($-)hZKaf6j91ncBo>& z967G53K@#T$SQfb>XFc&1FJ&6=6}lD1DYyz2g0XV?`_vb!fA~lx zisV9uau$b}5QIz&#y?~PCF;iD7`F(b{$UPNDl1NV2nWbP+2wErDL!hO@4JP}(*ZHG z8Yt`uIvZQJH^8o{Rk)M62Le9p%$MWBi$8QC5nZ4GArmV13oS0G9rs@@8fl^LKLcjw zw7X6G?jQ0*1AW1yfh%mrSrhYksqV_<_z%8hzRSD<;iQWKELo)kp5&b?+sKO0sd zI7NdBf@H(R+PV$0_=8_z2={|YO62(1YiJr4WJ5ZahNEeY4~ygFZ?$Enp2C68MT1)^ z5HlHgH}4YVN!t*#EputX(^%1aa+!!Q9uPPJdMN2z3l7;k@U^2slsA(iYz!N-6_$&? z8ZTdbFObqH=yYm1Uy}&lV+zU7ahc2-Y4m|iW$u>j`ZZen=S+4EOYa@w&)0S!>%1Jl z3MoLYaiK-NM|9s^T6RMVZ2-uQ zRXPKtDTk#gZlhzYe>Onb$qVt_0p{2VpX=t;kP{9u#H2))XFVpUE2v4IEd#jfjjZ~0z9Vx#Xc zX6;&iz+MNj0wxb*1xAQCX5AqOuAAu184Wi9l}wkZzVIkXkP)-Tw+^i8w4U_jVfV(B zSyC;oyBec$n-9oHM*Bs-3U3j>(n?NoXgMJHf@ZsRSQR4o3DB_p2BN1uWKAiWBOdP_ zWX|1pS@^2g2D55xdOR!G&y@-TIzN6sjKDHWKPbok%sfyNXW3zTIpm*)bGr(jGMKr- zewwQ97{Z4^=95eI7kV#xX9XHj(dHS91oB`!wR|%IS|ZG9IVGfXOL34PO~V=XRd*}H z%BSn4#`!d~-#*r4Yxl~VJoEfc(HIrlRmxLM)*-KFk>I}j_Gegf;;A62zvulcrHd$G& z1yZt2*kjTRzf1B-8%xr3>-$P8DoMX#5O-Nm>NjE;>N;(~a$J0?(DiRpCJE*eX{jVB48pj7aY3W^w;w0vuCfVkCg#!b@NJ5u<=-$*E-RI~ z*0|!7G-a4hnNyyGbkyz{$~NO-uZxy!Me%Tw2O^cg?{Zrd^&P5df#u%q}+1qo~ok-u!$6H-6oAez7?5u^5^y84;9 z_pRaV=mgjBl70c(5=hz4p2t)>Kf(Q!;93pvWE|F1t(&A>wDTIh>~Jki?C+4(Z<3O5t0%vpHwhIbd7#%meSrZK z;=5_sr?<0mFv-;RpN*U*phKZW4Ov9ZdQsANrJd#Z9f3D|H>(`a#y2+=I;-Ddc)B#n zw;HZbf*j2Dx<_ay1!QKkh#|CWA!ei|xMH^d(wfr1nH;9P&=Yr0eb$g6@yh69FttcL zU46Y1Hl$0SoehobiheoT{SDoM+T(KrdQ}qSyG4*>6VkNf5#ZVPCzO!w@W;W^jf`CV7}Z4Ba%0K5WE;WHJWv?;!+ zZuoVQ2FQ=`oU(}Et2P=?)<_%H1od{A+N`CmFh*WfG8w?#EhLppk)^m#oI$@rZTyfvii_PdEZ+i5cSID`yc!7Dw zNKSnCX8Mx&N@L1K+|{iDW<`6&X9+^v!OKgL7(_`4*tfF$T z$n?KLOc#IghOZ0U?q12p!NJf8i*_s43-Ob9mHL5}$7JC!>Lt(jmnI{Z0x#^P4ktMx z%UA7GeB%)%|FOOyOkVl9omm-zCo2Y#wMrCFkKwaBTDVr>8 z$&;LBliYJqdSvC_rV5=k@i0`6SencKJZM(1F%JL?XTX`0(HCb}jctEO*5h%JzpfVG z?%emojk;0=G;YBl#K_uj%@gBGa3TBl|G4p>@o^;&{H z1uGRU)T_y&@NZ+O2|ehy7ebQH_q?%UM`Leh>{fCMU|BD6j7OM)9o`p7@oj7cGT_3v z!)ef#UhMw-q;PtNlsi3mYAYZMN*skXIYUSTlIB$Zevl`gq~AfCkfnTWJc3dVr?~2a zzv;wL8mj>y&@y{z<{~Dpb{uZjprqqh4>Tkn4$korTS;HXv@`$Phy zqC958S`OhW61surbLK#e^<`n^w}V2H18y|PvKTcOO4dOV&`m^I!VP(ieJ_um_E)r> z*`bjY9NhCMl<^&7Ux}!*d%T__g1puc4+cN)Jsxboao)q}!hi6tI=a``fzuqbX ze7wI|>LPy*?hzyxFO{){7#Gayg6QVy(ti>fcwsun=hobiav5aO`|c2zfC=X!_ptjA z83eH}QOhvB2OuJfENdRZ+j3YOfJc5BRNiW81tf#ADbrZiiX!kgrG|7DVqW%1?|{SO z?gEfxxYl<@A43*9t1kvC$$|3FXKKr@VtmR?rxUrRmC2ng5dh*iu$g*XU#^P@=v;5p ziPn-+pwosc>#sfN7chBkxE&v;5S~2^zl_eX079qHs!rPB0U>@xyzoi+dE^4GeeHi#OH_Zgez zzB^tLt&v=A`*HP$B(<)7?oaWBL*{!tqm$mv!UvzK^gXHDjtqhl0RD(d{$wwyKLtry zOA$;)ub@QjQ&4Y(EXTYyN%5{yfNe+7T*AzbqPRg0({G-(GsZ4J8Turp6S}l{szBF;KD*5ix8<@}4D5Dm(oZXh!Hey1Tn6 zc-ow$)(;J*hmjG*IpaUsrBp_8Uci1@~NeN_fH z8soPZKshqneXadzWHWsftoF{+xv#O7mB{9MYXp23yH~?|$c1^q1u#pHG;(tpJe3)E z<7Uo*aq7;DNowFCy(m_ulB&E{{Z(*Bn9;+(!zD^#;h-{>O;>;4Ov^-}JBNVB3q#Zv ztUWdS`thGDL_zSWw6cB$y%E1N!$#v9AmBuZyXp_%`9FwpC9Zw51iv1vJoM4WYl}H# zBThaP+AHmy3Vvl2mq3>6;Xx%dve^F_O%AGv3#grUuNUaF`(Z&Lh@7Bt9@6nvWMsvI z!iC?k=l$~M!I4EWh~8%amehc2cGbpEe;HjCM9yv8T@@-c2-37Z0GK+M#EKX(sZ@uh z=pOmpQnMM1&v$lZajMq*$O2qO0KP{S*2$uyk*W*tcT@V?2F|X%+-gP`JByu)XeWaE zLvn`*3DQdJk6p{CwYR&W>U-jsC$b}9>Sl&QlMI|I4Mh$BmF6%Dp7|hxV=O|99X#OY z-wya-S$FDT--r+-6TJRhhlA&qUV%?v`?w;G3qsoGr&rz;F%w@XTsazfCQH!3%%i&& zbG-0YI{3dHJ2y=*fU0F7Lu#U;q}9woo*L~6>PVy6)+08U1Ha(c#sM-G+3Zg9UmJ7? zD*f!}E)#?w(;uG)({0FNVYh%dJc}akbyyhA{XE&~aVxnd*d% zru(#Qd~52t@f0V`n;#t=IKUbmGbKSeV}*cigCdJXsMv@5v*x-CP+DoJf!>8xT^xi7 z+9jT_X4_hs+7tcqMYq3$k2TnX`h_g=^bEz(5Me|#TGmXJt>&w&Ho|8tUcB!J!iqo; zvrVC>p2&|qaL6%lBY;$8Nza9E`E&x#%T&cyFq`Fn%(k(&D$fb*>Yg#dC%zj80nN(ZzpaAUEdnKESd*at{b63Ha0U1(Q zkDn>OA-WLPkxDXkdOENeudN5vRkYU9?p;!xik+LI9QQ@gk>^3Peh3-G8}Cm#E6d4< zUSY`IpW(_-I=<{iTJ(y_RPMZ;Ix*AUYCE}cZTl*HhlPVm5oLGUV)AVywNa+gb2YH# z_EAn=e>N}NM9|&a^MzZ`uL=D%r_-wL{t;Y4q>=J3Pt`)Z>YtJHL^D_chIjnsfn3uP z?kcsXGbj{wmuC%vc?$kiVlSb8DsBDyJgDM@_9u5=ag|dUa}IS66PVVc{ZVZ6A8n(- zq4~Jc&~`PKv5itY1S{DXyy~eF5#~3Kk7Nnm5@Te_B{3QIy5rp1s@r`>^+2tedcqaR znB7}~usWfqXNR{pUp`Wu;B;Sn0CioMvy+GlK^5yTp8eQ4Kr`6CTRShnLgB5kSyuF7 zTE>H%QI+QGMr6rvex4~iO%3v5wohKOO=nom%K}kOk!i&9?k0~5k0wCBj8%;^#Iw$I z9xfLuhImX^9z7je&p$8gqw6mHi5x{m`+Hb4zPqAO6Bp{q9{oKjc^Ek%Z51YJ4cXT3{ zT_&H@r)l1!E-z}?cxe%~X2dvD?bK;H+UCK+B=ZA&9IL5xC)x}Yx!R}-C@NYQ=dCF^ zu9|I4@lL%&)^&~@++r=WEvJZ6LB<-c?V3NeW+S|sGJGi<=|b!NrP1{68q5C%1NguGQ>US3r*6P0#O0OeF>L4FA3)4AP@?I_}#V zqD8R!<~V5C~Av6T8l@?H4<$FsRcb zWtI&RaXQn?`?u<-tu@mB_juf&Dx}y%#Gqhu2)gU$mLFF%7D()X#qUR7u;SnR~ zi8LUP^vt7W{6o!FyIqXPE;f8;UEffQ{kF3TSl#5*neC`1`6Q?z5TW?D7&zkM^7^l- zO=7kWd^^9L<>QA1)7iIosF1sk{i)7BiSP9Ij_tIJ;qPzpn;s-ScL`z+-)P=*%6i_y zZM%8(f5LtHHw}XrHu_;_x;RwL-1e@bMd~2oGAbXtIF#MOC9#Zzu9#mw^g&n32{oBa zEZ9L7h^ctHTZqP`X;*&`4(Ht;{OIP0rmWLzUVcLdj$89xwDph#lN<8!^KHdB1$-!uouNM-|=^s~TmNROJ$MJ}3L+?(u?xz<2FK(HC%hUhLuMQNzm3 z{-FDXgnj^5Ae8!P0htjwAOlC^dfGVseLLQI?0*)|7annO68ZZLJCk08-sHCJyDhKL z$M9JZ;eMZc5wzC8#+ulb_a~CV24|;m zphwq=U7FPwR*eYYz^X7kR#OTLe7>EB%^WLGWQ4)d=MlvXwBA3~gCr|+)bNQ=Zm@XY zW~GgP4VG2$P+pKf%AV6~oIN*TCf0oCe6`km+RWjM*3a-K?_2^-p)1pmnGiv_d%Nbw zU4wOtB&2WT{Z5_u%|d?2krMQWFkSpB9^byw4yEa0ymjAWUrNQljGMva1gAqkS^pXY zJr~u4%Hqf;F`|!d8C1J$P2Ruo&NE3b(Q?he8FW~?38LJ^X=qDISWM?Xa4CX49d^0r zO77Zu-u<~gZ+ex&a}-IA6;j7rziA(&%*gntuue0sMtSU%^3%8f$pFcPJOjQA2unau z6Tl7D=CEc8qt=g`o@R^8wP%}e)4KI5Yw@CrDq|C@eU0a5 zJ@@MEOUJ3$z59oYoMQldIG24VgtPRO?Q3>WIm_r54?CUjdJJt_%I!5Ht)Sz1 z+Jnt<8z29fh9>&2ikF|U`ne4`J$Rt_yLJoS_P^GZpwoSR4cUp(q5^=roelkDVpIH? z>W)>3%8qewO38E(%)98jXnKv$;H>4t?+` zwEx;3s;?2N^LJCb{?glRmMRfG7kdy4D6>6;=G`uH$DvV+9Lh6b4f`CPx|H92Zbf07 z&wsJFOx@ChkWoa;m)syFprZQ(fZY@;nZ*|f$s;T8xop1?VN>jHp3&>~Z+F*DH21l} z?ByKopk9Ew>}>JfDggBBRl~1sw81|6=Or$ysJ(UAM5^Go!Da?`5T5p-=10U9hQ8&X|kOPk<4pU zlAUL?bCc+YvVGSDHu^XFhCyGjBd@7alLZ(=civMFeopYC-Dd{2;VE!~A9T_FO)c$6+*KkE=e#y@R(%aJN7hvnRtktWBCiH2(^e||# zds-IVq)KYGioh1`9wUcLDO&KjorF`dLgt!&ViLIIi0|$5p|YvmXlKpfViK0oKI(y1 zE63|S^i$G0(%w-KYm3eT@-hpZ-1KEl`I~ZG z;Pwltujj})7nXL&yr&h}#-eCdd2zy4D7w91nH3;i$Q@QI0z_*8tM!uD%Y+eHf<)z; zCwnw2c3oYhShij%h7;d_3cv+b9n`LF!2R;I%3MrbzYkP`B>WZ(uDT&i)tnYsBym%l z)=k`A%C&A~6dn^v9lvCSeSd1?TsWWZgMQg(eJ>?PDGnK8e8aKUrm6gXMIs96&{Q0oXhaqApV`QR zCqGB7kaw64Ib|eN9(<}{W}Slldk^MIsj8}x7u(nBHo}KS{RgG32_y2VomJdRo|sQ> z-;PwQux_UT+|=zV@bfe$+P-G&yPkMz?@lCPd6T9-8c)f<#ON=k_@QxXo?mJF389mwg zw-3{i8a_9LzCy{}_tManhWsL13nkPO;OC}m&_-#ivcAOxsqWG%9mnDE`IV>-SVRXP zN1s40LCxdZf%#qlP$+YyENkA=d#P^UM8)JN38~60Qlb9Oute0Pm!f*Td+=#QDCXv5 zQ%Ga6`-%{5-7E*|3h#i6Mvi~_e4bl_1BfDp;VgbWk|E9zC$cr#)4}z?T#SNj#Yu*t zE8c$q3nCQXJy0l2@37KTircqlK)z z0UyidxyM( zI%Iipc|1zZV_DKUkqYq9yORkr|;3+3kaIOMlqPa-fSMc$+!gjg#?*Xck<>PdV*8gkrzfM-y}ECIgi0N+^WXFSBbu z;ZDW8(Nn)@!Lp??W9Ma=GX}PkoU@8pq4`!r(B!6aY2GB6iqma(^X>WPB0`vjWOs{6 zS3JQ<_X}w8%0E|SpUa*_ok&C2KVhXz{bR%Fw+^Hv$2Ah~q0(P<0^}b2OM+J7tEZ35 zX=3dHYc{?s`W#6u(VMkSD_ZxpZ^c$^^lvB%A{h6%LNJQTr{$$Dnm1y6+Knabh-djns^Vzzyn8zoiB=x|K*2%4Vt3V^kP1v-gJ-%A` ze|Cm0Fh6`Ug)!1^-^wm=;W5`OBDpF<9T%Q_NKS4)0sM_((vu;2fQgqtj+ooURXa^p zFS*LryR&igW#7Bebj-aPP9pb7?h_m#1v_f_JjE+SP`cn_9`xDN);frofNqItxa z(CxrhuRN*InXM0-?_GArd3EQtw3|N1ujau_dZnQ}_#&FdE&}97)uw6}J#&1`7Uc+N zrR6jyHcghJQPHWl-w9c~NKgiXv00r22WaL@S%Uh&VuiocuW@F~yVmWVpA7fZ$ZOY| z3t+Tfa|q;!Yb?Uve0c7F+-dWzckP&V0SUIJx}{e5f(WJ6?GcpIf}*9LtROZLd}QFk@|h6VwzT!rTyX&}u=m>bw5`#)ZyN~OdQw2M?0823_{mS7Z}}e7 zm-<)i5Es&M;b@@J93lA*a%8?Ygm?h-VeL+PC{(KTBMhX(J{AQR(|!C~2(z?XYXpP@ zS^r+Z91(&c)oY0){60Y#jby-LSy_;8;Qa%8kQ~&Ef+Ja7_u`!BsA(T}6)5NM%w)fk zhyRYU*?ZZ(^E8b}RXqcHX7iC27)cKKZt$v1nm&y@T~!`*)RMoJkC27Ta}wSPJQa%%V$cyXc;Tcf?afDv(Us5#to!QBM<7S!%V$wkVEm(xsl%?x~q z2lN|4UN3rXxRYD|m4og>5rb~hh#`ArZGhUYgA@Vb-2w^&6CF>g9$&ruKL((_>e>hq zoR7X53(w;`FfOMoM)@DBUsS&$_-kQ9Nivf}du}%U<}E^eGWr+whWWf)C2zeyzMHi6 zEsiHE=4Hkx;EOAmos0f32XFZ8TBukfSV17(z)Nf;g{D89i&eyyxHG|Oqd(@WZlwFy zQ?F3p*K(nv0O9qBQ3qdo3skF&hfr_sQ7R0VE4daZ>G+l=eDQ0Gi`y0pRim8b^O1&% zTM4`B^}CfX&naH8*)<((Q|zE48eC@a)YIj1+qOVC#n*lGlZOMF(GhR2!MKD?^-aMH zFGro2HbM--AEVAEzd6GiB3B^FT3?W*Ug9Lltj9HHCd@W4hatrLR^jhX zr9N)@z7EZxS4v0Hi=_`Zdc+y|4ybz|tq-SjYJft%SP>yPA?2PtV7ChD&|G)sNcs4t zl6}CKFDm(-xFcivc>?nTG(LzlLSDsh`7>DlZHPv!{VxRIniKmhXT5!(jPX)}DeT-) zxT(kDGWilg>Vlp+QZQrw#g(ZIehs!Bz@w<1OXmz}6lQAfgwX>z_|)eglzQ0vb$OHK zE1LAAkrq$9e1yupqYBr(a*^g}2DEkLX9mi$0AMcg$&+s&*fHA~DO1r)|2eSy4{c-p zp)Fb?jY#;9H%2oumooa!{D={HF*`}%ebQG3P&7q;;7H$xuWu#Gi&^l0P}zE<07zd) zS17;k<)uhC)(w*bI_a)AA=)l4ylr)iFi-LTBtxFHmT#@+{4nPf%x(~rnVJfjo#HGC zZ@utV(rbAZ=gNMs6V+y76^qm1XVxC{xwq6>Zg_%*2sk z0R-;7c9suI$`nTRmT5%X)G)@WbQjSM2OcDZMgUrVEps~x^M+HA*B~hV4Gq{VEg`3q z+!DI8WJGLiMoRJKHoof@$Jc(W91+aFf^&M*dhwW|t3qlWR=Wdyz9kSBWuYl7gxfPp zt+h0sI2W+G)4@MW84rofA88_JY1=s-t6l;z&ZZLzElgw4PIiYqgEZop`aw2S2TQ}< zlgr}q5TN_I(y$%NheF?dzop9gMoW9yjtODr06E0au73C)j>E5Ya{ckHHr5=e%d_Wb zb7*C)5mQzZUz!7`KIM7CQ3rJxPjRvE^U3sqj~Zy$9o?nWS!p^-$5mb|E<#S5NU^`n ztvb(tGf)b9li^EUqhiAgL+%$0MwQ&uTGc`7=nc=v$ks~Il}`FZQSZd*8xcwoBSPrpfrjp^zJSQ4 z6WPU+2jEqKNt=<=eok8b`3LZ<9@>5&jA5-H$1oMXd=u-Z;A?q z*&ALYzz0%a9@o zvb&;@STrX*S$%K2dild@yWh=@;pgg3Wc>(r3LCG(Kq<6N<-CGJ=!TUxKJ4ZD)r!&Q z_i+HX+;~xCFlX1_bexgobI^Ob_SOVK<rXai+e-?U^tA`ARRzG`};(|&SgDh*;6OfJef zQg@R!#>Q-`$@?tH;quCNTd>*mPjsf%80GF(zfI?-fMOq)Lij02wYIFb+2_?2o)k-M z5ai7v)o*PtIfrDcTlYP^v~SPUzccjQlpNiaMz!NPG`N|^_8A+L0Q<#>D#Fb8>1Te$ z033vQRf2MwcKv;vST-!QYPS0@5S5wy@xZkHMb0`Y4vKMiA@J{6S#`*X$uuK>UyzRJuRiPUK(5d z(wj#U79KlQ7vmz01+9B0yFQO{%MTt7@|{P7mQj!;F?6La{0vN>Q>Ir!q?;Io-l26F zu`K_R%=u}Wo%wn1#$W#aNyf*I9yUoo4G)!(fWxWuj!z6;?Dxr%N1`Y;kWctXf4e21 zr^A15SG*5Nbx`-vw5~JFsPJzuLG2Z*hTvyIa`wl&sD+8L2Tl1_j+MbBNI@m%~-za#6nGd4RxQcrem7hK-~u-G8JTvilYD#Y#@irMz5T zANvSh-Az~PdH&U`ym{YRHkopO>>KOJq#L#E&b>GoS%daA03qWr1z(mkJe7}F=bORVM`1VBRbB6u6S)HvfkVk|BAhCQ2EFk+o~o2j`@n*5{i9)m<8H2>qRR-ikl5Ssim$rf8Ssl zcdjFCJ_ir=&)FFlouV;f{>@Yg^`!a$!u?0zxFv_q%_y|~o|BJn$>o2%56?!~_13LprHAt4z6KF0R*I za29ci^|Wf{Wshz1&6koRHqPue4lO!p&rka^*5R?2Un`LnG$&oPto>#h9xU7> zpv|UP?t85vNSq@B5GL?8MN96Ih3a`%3G=zMjs& zWAQhU?+~`*MvuboWAV-LEdSM@PWyZF7NsaUhosbbYtg|W_kOoNnsAM|=8gp6nK+ox zVS9pSvmOI@I`j-@aI7c~g!l6Tp=P0SDEP(w5gYjfpbX@8DGYVFpq%$F^04*!6yk$JVCLTb(LWB@N+0!zsOe~CslCPS7 zC)uAIc=s4X{&U3P$9V0^m37M(%$Ehl5~-EAw{ zzAKWVV|6HG+pPmL#q$C=D)(Jm4uWg8sd8a~s?a9}AfUDav5@PSCLx$RUD!!O6=K#* z`tpPzPQ5EtoEn56bl_Q(3{L2s@FlkzFV`(FUdNF+S{%EP|NSxlTTFbn72H}JIg5PUija7lqYsJuH?MLV*G z<@lR!AB+R}o^wXK7Oo$k)KL4nACa^3cq?1@=0PZyI1pNTpn%X*$@b2mk0ah+w5;+w zP_5?Zqu-kjxK^i@I3dIlupXM7=e^Km0D0pZDuuS`AO7JyrhbW6D9rO+BV-B68*CJ3 zc$0@ctro*&;SF=WlKE=RMJuz^5}hBqlWbeMSH~tm1VZ9+;nlEv+PrA`fA#|HF7k1u z@Hic^ha@i?)6&QNv0Q(QV8&!DIe3T>+35`z8gcj`6EEtjKMDH)-V|$-@&M#}{RxJw za(?W@FeBu3QC8>ov7I?jt5n8e$L-dGfSN?7joR9m-zF~q>NhO#v9m_FLkJgb=< zOTTl?!W0`~dcfWp`wRIFLWL3~>XJoA^Wcd7;SdlMxxb1xiz9X}m+#Tu23>cjO!~w= zf!`1{#PV!`GT1o#oe*;6;-{dF^t^J7INyOeA z2Uw^w%_U{&MJ0>T0{?qVL8ZRaIN|{R09A6on9VRA>YibSs}*3vWlA6?VJ>k*NE4^4 z8+5^Y<=HKkbFRRD{Z_IkvV$1jD~Pu;ug1xDqPav5?vdYNI2;t-SoY}*gU&@uc&Sk86{y&wNa6lBT(g;qY-9RYQ z$CC#A8&gZExKPx;=wW((!&w?iC^anTG7_^X;&*hAA)TmMv_-D6VXm)1F`;cYT?4l@ zwUd46O%1C+6H9Gxo|pMtq?hKT%u)P{2-=dZqc9~=(5 ztSGG!5*Ll5Ydko-4!~6<^*JBbs{JH(-KfopKk@I8r?djmL;rGuMr$p*V!&8_?u!w_ zBu3_gn9tb(&BL`bPIr_0Op1!KZYXV?Jfg5l0}+SkZAW2U=eWVJP(?Rc@U*?4A%o2< zI5MUb2bzLoOxgav?t7unbSU|B@3=2d`|DQNPxr>M=|f77WXOZk>6`lzFhtyNNQT zS5_4M)}9H&l;QLIKjoeETNH2D_LUA*mv?(UXu zq(Qp7mU_nT&+qX*f55Xp?J+w$bKf)f%v{$!=XHM6v*;o!n}V)yr!ma%0238G+0WvihKm(B6QXk1uXUyrLl`8p*dmf^ z`E$M{nf>x;zqg9O_jxM3iq#I{Tiy`=4)nme(wONgt&WBCv!cWXTz|(+We}nH#-)^^ zCZ!`Vzr6@m>Au_))^%M-R|(M3f?UqE%i8HA1}Yx((>3wOlNAD z98>I-G?`T@Vd1Cgv)H(w@yfaIkPTdjVj*8(SAuf`e^PFM$hqDwc#f<}NK`Lb$74IU zEgdoU(=J#;opOUR7)`0P;a>YqqkQ;Ycyi;$$DfT9D&PkZ3zmm8x8>I{e`%jPTD*;M zc1_n_mP~8+Knx*g8I|#>r{#+C(^f);jH^9kCR;F~kI{rAQ$`}ZU$r{!kX$T- z@KMeZD>RQ2`2;#3b!>^QnqGnSc4kb?J6x+ModnG$wsbt>1d()&cUPYfS zrJvd7F~MA1S$w%c{Y%cQLtxO)x3a&q`qgHaHj=4XG4qKLHZEJ5HSzh{+crZAjDS)2 zoul@QhNrkjyc#`LeAQ3067#`)5r}$RP*u{X=Vwu|M7mlN#!tz)-?xftb%uXJw}%9I z^+wcZHO+x1ln7kT%*=8yaXR;%UWw*FB8W)Bsk&##CbNRSJ^ktn9i8dCKoPyg@pxt> z%3Nq7GQLm9HiOA@=>FoIs zX;FC9ziew~fP+5QsyZscC0?MK@FPBM)z0;h9Hih{2*o{{;mbBh4%R=i?6)Vv8q?Sw zG)h`qM~J-j5Yj7O3;>0G7MA3-xoh_cb(*am#?s}qTXI;b0XuF*&JoK_OfPA|D&FbR z`_T=s?_9WQ*Uk?eBr&V_aI0l>H6Y{qvi0(=*X-N_jx8A^i#`R}B8Jfn9Aq|Mx3nCA zIq+{0AQEgk_gteqLTbmzSJAoI=#UKIRNu~T5 zG0e!A`O4*bk{{{U_NJ#tOnRJHVrCWeJ3pCl)q()HPFVeJQZ7fl^j9Zj0V2nC{&@UV zdxA>bDkSRkp=GNWVo{O%?{!VO%S`04l#P5v*UMZG5 zy#X`7?pKT(tY;Jz8;GfnVr10hC@UKDqfUJBRwQ2VHwSCN zdJkX{yxdWBsNVTg=;&iB{(Io9Y@vM4|2;4u^;Rz21>W*+t<;weS$f6&<}O) zNprfmWZ(%Q8nZJ1Rgk3if{LQD0_6v6!A==W0{zv-(mY?Bz+pXW_Jc<; z%FAKb&K#g&!^Yo=Lo`i|pQkzw*~;2InEjY}7ST%i>$`is&F z!8kh7{#vBkV|x*;P~4>~mw)UJ=U3N@Y*DNdSU(yP8XstAE&<^3R~w7^1?hgptJA;3 zedyTb*Y`4q+(0378C!o@!xn;&J5*?Ul~t|O9lVVWf$t8 zf(P7!y(8P2==T?)m~hW>>^pNI;QZDP&RNxJlgdQ-P}bLx1Xq3`p??J%ycI+G_58!T z5HW6JZW(hk+u>*6BgDc$#Dp=QvYZl}95Ed|G$5U5oNY{(6yu!Y@3opC<dC9}(bSB>9U0e5 z&HScW&W&kvunpSs|7-4pG8Rj3!bp_$RN`O6qs>)Rhll(CUHj|Va=QA^!16Jd3C+}#`xjf31Th0($$b~)RKp2|=o4`^B^ON&F zvhT@lySM2gU}-}QA})no&qEj&K#y8?p_|Y9t!zp)Q(GNL4E#$4#$`AUz6gsXpjKrr*3E3-IxByPOMsPE&S@n@79uV z$wrnlpt(cNL}QuE)YA4EnOzH$Kpl_E0#FZAdq}$0&pQ>HpO?C635iwnK8X#bf9_=z zNQty&OBNKSVEH@q97RD2D9bPqKO%m(!BJM}soMNv;W(nIEAICjbWFK6_MEA*N7nrgLKm&)V(;p+=W4BKb}dCtj2?)6qO`~KfdAmP1TRu>~MO~h`bhWiIv++bdE zi^qG+u0`H0D0e3G^@vRLw>mu;rpu#9Q^pq-y z&4qRuIA{UPt;WARj7%`uQwXXRD#Y&U{h}8JamNZXUEP4Vi6;t(4l39+<;*5vX)J7- z#m|a%iZ-nP8K811lOGx!P3s2{dU^BAd?kgz;)-CkBN>KT;yMMF@Ob8r@ycF}EsmbH zEa=Rufm2HF3A;Pr#gNvdU$>~XemteIw~Js&r!q%{*8<)!WURls*c&d^eCb7fFuD)> zFE@Qr6J#%qV5V5fy(>v&@N6ukit z)-U9HrJoZn1}*5UVsUq;TE%nqiq++#jb8VvYBs8WAA9wH+nE6!6gXbDm($I znu8pDe`C8*%VRap7%-2~M>;0WA~d&gl^I|vh)T@-W2@XMCV zLLP0n$3A2V&mlrCuEfDDu^N@}@M(ifm$tPR(k!EQ{d_#~)sMOPj%>gutr@!Rg`udT zrO~JtKmwJL#8ptBvjEqUU+fPj7Z>ZsNP}rO$`s)=6 z^5;^o7YPrts+(#LX#VxXB^l+eK2GMNYjVI{elC!-?wq9d4>U4!7<|01e8M&lyoYz> z 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 literal 0 HcmV?d00001 diff --git a/docs/design/questions/screens/the-page-is-two-panes-detail-140.ansi b/docs/design/questions/screens/the-page-is-two-panes-detail-140.ansi new file mode 100644 index 0000000000..dc2c5556d7 --- /dev/null +++ b/docs/design/questions/screens/the-page-is-two-panes-detail-140.ansi @@ -0,0 +1,40 @@ + aforge fri 5:54pm +  Home  new conversation ×  +  +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + +  which store should the ledger sit on? aforge asks · the turn waits on it + a schema change is next and it is cheaper before there are rows + +───────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────────────────────────────── +  ▸ 1 postgres   recommended │ postgres + 2 sqlite beside the project │ Rows already carry a foreign key into it and the migration is one file. + 3 a file per day │ + one place to back up + 4 something else… │ - another service to run locally + │ + │ then · the ledger and the rest of the project share one connection + │ why this one · because it is the only store the reporting job already reads + │ would switch if the ledger ever has to run on a machine with no server on it + │ confidence · fairly sure + │ + │ what it would look like + │  app --> pg --> report + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ + │ +─ answering 1 postgres · just this once ───────────┴──────────────────────────────────────────────────────────────────────────────────────── + enter take it · esc later · ↑↓ scroll · ← back to the answers c change · x compare · ? ask back · d you decide · t how long + ›  + idle diff --git a/docs/design/questions/screens/the-page-is-two-panes-detail-140.png b/docs/design/questions/screens/the-page-is-two-panes-detail-140.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f2a1cf49fdcd832bf76f7a5e8964e11aadf693 GIT binary patch literal 78180 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 z�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

L`}I4H`b0Shm=lk09DV-*=lG1;PG2 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 pg --> report + + 2 sqlite beside the project the ledger travels … + 3 a file per day  the ledger is reada… + 4 something else…  + +─ answering 1 postgres · just this once ──────────────── + ↑↓ choose · enter take it · esc later + ›  + af-qv-R ▸ + openai/gpt-4o-mini idle diff --git a/docs/design/questions/screens/the-page-is-two-panes-phone-56.png b/docs/design/questions/screens/the-page-is-two-panes-phone-56.png new file mode 100644 index 0000000000000000000000000000000000000000..06aea35c5f763739e7e21c3ea431d71ccd7992d6 GIT binary patch literal 75949 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 literal 0 HcmV?d00001 From 21fe2fac7b96455918438734620714ec5eebb7a7 Mon Sep 17 00:00:00 2001 From: santoshkumarradha Date: Fri, 11 Sep 2026 18:10:52 -0400 Subject: [PATCH 5/8] e2e: the page scenario is drawn wide enough for two panes, and says so A hundred-column terminal can only draw the page as one column: the page is drawn in the body and the task column is charged against the body, two cells even stowed. The scenario pins its own width and its own column setting rather than depending on the machine's profile. Co-Authored-By: Claude Opus 5 --- internal/e2e/questions_e2e_test.go | 39 +++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/internal/e2e/questions_e2e_test.go b/internal/e2e/questions_e2e_test.go index 6aa79308a3..94ad307eed 100644 --- a/internal/e2e/questions_e2e_test.go +++ b/internal/e2e/questions_e2e_test.go @@ -116,6 +116,11 @@ func TestQuestionsE2E(t *testing.T) { const ( questionCols = 100 questionRows = 36 + // questionPageCols is the one scenario that is drawn wider: the page's two + // panes stand where the BODY is a hundred cells or more, and the task + // column — two cells even stowed — is charged against the body, so a + // hundred-column terminal can only ever draw the page as one column. + questionPageCols = 120 ) // questionRig is one aforge on this machine's own keyboard, IN THIS PROCESS. @@ -132,9 +137,13 @@ func questionRig(t *testing.T, name string, overrides map[string]any) *rig { // questionRigAt is the same terminal on a state root and a project the caller // already made — what the reach scenario needs, because two windows answering // one question have to be two windows on ONE machine. -func questionRigAt(t *testing.T, name, home, ws string) *rig { +func questionRigAt(t *testing.T, name, home, ws string, cols ...int) *rig { t.Helper() - return start(t, name, home, ws, questionCols, questionRows, "chat", "--no-host") + wide := questionCols + if len(cols) > 0 && cols[0] > 0 { + wide = cols[0] + } + return start(t, name, home, ws, wide, questionRows, "chat", "--no-host") } // steer types a message and sends it. @@ -505,7 +514,17 @@ var questionCountdown = regexp.MustCompile(`start it in \d+s`) // reply, because an answer that does not reach the asker is a page with no door // out of it. func questionsRoom(t *testing.T) { - r := questionRig(t, "q-room", nil) + // THIS ONE SCENARIO GETS A WIDER TERMINAL AND A STOWED TASK COLUMN, because + // it is the one that drives the page's two panes. The page is drawn in the + // BODY and the column is charged against the body, so the split needs + // `questionPageCols` less the stowed column's two cells to clear the + // two-column floor. Both are pinned here rather than left to the machine's + // own profile: a scenario whose layout depends on a setting somebody's + // laptop happens to carry is a scenario that passes in one place and hangs + // in another. + r := questionRigAt(t, "q-room", + newHome(t, map[string]any{config.KeyTaskColumn: false}), + newWorkspace(t, "q-room", false), questionPageCols) steer(t, r, `Call the ask tool now, exactly once, and run nothing else. `+ `head "which store should the ledger sit on?", kind choice, form room, `+ `reason "a schema change is next and it is cheaper before rows exist", `+ @@ -531,14 +550,11 @@ func questionsRoom(t *testing.T) { shot(t, r, "open") // TWO PANES, AND THE ARROWS MOVING BETWEEN THEM (owner ruling 2026-09-11, - // page pick A). The page splits where the BODY is a hundred cells or wider, - // and the task column is charged against that body — so this is the width - // the terminal has with the column stowed, which is what `ctrl+g` does. - // Below that width the page is one column and `→` is not offered, which is - // why the key is asserted only after the stow. - r.keys("C-g") - split := r.waitFor(15*time.Second, say(t, "questionPageDetailWord")) - screenSays(t, split, "postgres", "the answers keep the left of the split") + // page pick A): the answers on the left, the evidence of the one the pointer + // is on beside them, and `→ detail` on the foot because there IS a pane to + // move into. A page of one column unfolds that evidence under the pointer + // and does not offer the key. + screenSays(t, room, say(t, "questionPageDetailWord"), "the page is two panes at this width") shot(t, r, "split") press(t, r, "Right") @@ -549,7 +565,6 @@ func questionsRoom(t *testing.T) { back := r.waitFor(15*time.Second, say(t, "questionPageDetailWord")) screenSilent(t, back, say(t, "questionPageScrollWord"), "the arrows are the list's again, so the key that gives them back is not offered") - r.keys("C-g") press(t, r, "x") compare := r.waitFor(15*time.Second, say(t, "questionCompareOnlyWord")) From 25fcbf4227e31a4c2dc0ddc2816c1a9380b81e6e Mon Sep 17 00:00:00 2001 From: santoshkumarradha Date: Fri, 11 Sep 2026 18:27:57 -0400 Subject: [PATCH 6/8] manual: the asker's own three sentences are probes now "show me the options side by side", "open it bigger" and "what does each option look like" are the words the owner asked the pages to answer to, so they are on the gate rather than in a lane's report. Co-Authored-By: Claude Opus 5 --- internal/manual/chat_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/manual/chat_test.go b/internal/manual/chat_test.go index 26c865f0d8..ead646066e 100644 --- a/internal/manual/chat_test.go +++ b/internal/manual/chat_test.go @@ -84,6 +84,12 @@ func TestTheChatManualAnswersTheQuestionsPeopleAsk(t *testing.T) { // nine things a person does on it. Each one is asked in the words // somebody would actually type rather than in the key's own name. {"can I open a question up to read it properly", "questions"}, + // And lane R's three, in the asker's own words: the owner asked for + // exactly these sentences (2026-09-11) and each one is a person + // describing the drawing rather than naming a key. + {"show me the options side by side", "questions"}, + {"open it bigger", "questions"}, + {"what does each option look like", "questions"}, {"compare the options it gave me", "questions"}, {"how do I comment on one option", "questions"}, {"ask it something before I decide", "questions"}, From a766fb6b4fdfdc6c7b8856afcdcae7bf4996dc67 Mon Sep 17 00:00:00 2001 From: santoshkumarradha Date: Fri, 11 Sep 2026 18:51:22 -0400 Subject: [PATCH 7/8] questions: the clock's own line survives the split and the page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #954 draws `any key stops the clock · you can still change the answer afterwards` inside the panel's frame. The split and the page lay their own rows and were dropping it: neither pane will hold it — a column half the panel wide cuts it mid-word, and the pane beside the list is ONE answer's case, where a sentence about the whole decision reads as that answer's. So it crosses the seam under both panes on the panel, and stands with the reason on the page. Two words of the manual's new prose outscored the standing-orders page for a held-out question ("always write in british english"), which is what that retrieval floor is for; both were redundant and are gone. Co-Authored-By: Claude Opus 5 --- internal/manual/chat/questions.md | 8 ++--- internal/tui3/questionevidence_test.go | 45 +++++++++++++++++++++++++- internal/tui3/questionpage.go | 8 +++++ internal/tui3/questionpanel.go | 11 ++++++- 4 files changed, 66 insertions(+), 6 deletions(-) diff --git a/internal/manual/chat/questions.md b/internal/manual/chat/questions.md index 3b034398ed..187157e0e4 100644 --- a/internal/manual/chat/questions.md +++ b/internal/manual/chat/questions.md @@ -885,12 +885,12 @@ being text. ## Moving around the page — the arrows, and clicking an answer `↑` and `↓` walk down the answers. The one you are on wears a band, the foot says -`↑↓ choose`, and **the answer you are on is always on screen** — the list scrolls -to it rather than leaving you standing on a row that has gone past the edge. +`↑↓ choose`, and **the answer you are on stays on screen** — the list scrolls to +it rather than leaving you standing on a row that has gone past the edge. `→ detail` hands the arrows to the evidence: `↑↓ scroll` moves it, and `← back to -the answers` gives them back to the list. The foot always says which of the two -the arrows belong to. +the answers` gives them back to the list. The foot says which of the two the +arrows belong to. `enter` **takes** the answer you are on — that is the answer, sent. The page opens standing on the one it would take, so `enter` straight away still takes its diff --git a/internal/tui3/questionevidence_test.go b/internal/tui3/questionevidence_test.go index f8add08d5d..5f41a2ca22 100644 --- a/internal/tui3/questionevidence_test.go +++ b/internal/tui3/questionevidence_test.go @@ -282,7 +282,50 @@ func TestThePagesFootReplacesTheLegend(t *testing.T) { // ([app.questionRoomBeside] reads [app.bodyWidth]). func TestTheColumnsOwnKeyStillWorksWhileThePageIsUp(t *testing.T) { a, _ := standingInAQuestionAt(t, demoQuestionReading(), 120, 40) - if _, took := tapNamed(a, 'g', tea.ModCtrl); took { + if _, took := tapNamed(t, a, 'g', tea.ModCtrl); took { t.Fatal("the page took ctrl+g: a key it never printed is a key the surface under it owes") } } + +// A CLOCK THAT WILL ANSWER SAYS SO IN EVERY DRAWING, AND AT THE WIDTH IT WAS +// WRITTEN FOR. #954 put that sentence inside the panel's frame, which is right; +// the split and the page lay their own rows, so each has to place it — and +// neither pane will do: a column half the panel wide cuts it mid-word, and the +// pane beside the list is ONE answer's case, where a sentence about the whole +// decision reads as that answer's. So it crosses the seam on the panel and +// stands with the reason on the page. +func TestTheClockSaysWhatCanBeDoneAboutItAtTheFramesOwnWidth(t *testing.T) { + clocked := func() session.Question { + q := demoQuestionReading() + q.Policy = session.Policy{Kind: session.PolicyRecommendThenAuto, After: 30 * time.Second} + return q + } + lab := newQuestionLab(t) + lab.a.width, lab.a.height = 140, 60 + q := clocked() + q.Deadline = lab.a.now().Add(30 * time.Second) + lab.raise(q) + rows := questionPlainRows(lab.rows()) + drawn := strings.Join(rows, "\n") + if !strings.Contains(drawn, questionClockAsideWord) { + t.Fatalf("the split dropped the clock's own line:\n%s", drawn) + } + // AND IT CROSSES THE SEAM, WHOLE. A row inside a pane carries three of the + // frame's sides — its own two edges and the seam between the panes — and + // this row has two, which is the sentence at the frame's own width. + for _, row := range rows { + if !strings.Contains(row, questionClockAsideWord) { + continue + } + if got := strings.Count(row, tokens.GlyphFrameSide); got != 2 { + t.Errorf("the clock's line is inside a pane (%d frame sides on the row): %q", got, row) + } + } + + page, _ := standingInAQuestionAt(t, clocked(), 140, 40) + page.qroom.head.question.Deadline = page.now().Add(30 * time.Second) + page.questionRoomTouched() + if got := pageText(page); !strings.Contains(got, questionClockAsideWord) { + t.Errorf("the page dropped the clock's own line:\n%s", got) + } +} diff --git a/internal/tui3/questionpage.go b/internal/tui3/questionpage.go index 24020cda82..9c2d08b323 100644 --- a/internal/tui3/questionpage.go +++ b/internal/tui3/questionpage.go @@ -254,6 +254,14 @@ func (a *app) questionPageHead(width int) []string { out = append(out, questionIndent+a.pal.dim(line)) } } + // AND A CLOCK THAT WILL ANSWER SAYS WHAT A PERSON CAN DO ABOUT IT (#954). + // On the page it belongs with the reason and the attribution, above the + // panes: it is a fact about the QUESTION, so in the left pane it would be + // cut by a column half the page wide and in the right pane it would read as + // the pointer's own answer. + if clock := a.questionClockAside(a.qroom.head, inner); clock != "" { + out = append(out, questionIndent+clock) + } return append(out, "") } diff --git a/internal/tui3/questionpanel.go b/internal/tui3/questionpanel.go index 9a03cb5ca2..6a049174eb 100644 --- a/internal/tui3/questionpanel.go +++ b/internal/tui3/questionpanel.go @@ -252,7 +252,16 @@ func (a *app) questionPanelSplit(q questionShown, inner, spent int) []string { for i := range list { list[i] = questionPanelGap + list[i] } - return append(rows, besides(a.pal, list, pane, left, inner)...) + rows = append(rows, besides(a.pal, list, pane, left, inner)...) + // AND A SENTENCE ABOUT THE WHOLE QUESTION CROSSES THE SEAM. A clock that + // will answer says what a person can do about it (#954); in a column half + // the panel wide that sentence is cut mid-word, and in the pane beside the + // list it would read as the pointer's own answer. So it is drawn under both + // panes, at the frame's own width, which is the width it was written for. + if aside := a.questionClockAside(q, room); aside != "" { + rows = append(rows, "", questionPanelGap+aside) + } + return rows } // questionOpenFullWord is the way to the rest of a cut, spelled from the key From 26a54730d0e96bd3ec3d33a26554dad4b2279717 Mon Sep 17 00:00:00 2001 From: santoshkumarradha Date: Fri, 11 Sep 2026 19:00:14 -0400 Subject: [PATCH 8/8] design: where a sentence about the whole question goes when the panel has two columns The clock's own line is the worked example, and the reason is the part worth keeping: three placements are wrong for three different reasons, and the fourth is the frame's own width inside the frame. Co-Authored-By: Claude Opus 5 --- docs/design/questions/DESIGN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/design/questions/DESIGN.md b/docs/design/questions/DESIGN.md index a9f4d60bc5..a8785d7064 100644 --- a/docs/design/questions/DESIGN.md +++ b/docs/design/questions/DESIGN.md @@ -182,7 +182,7 @@ never resolves a task by itself. - **card** — head · reason/attribution · one row per option (word · consequence · pick mark; a long word wraps, never cut; a checklist's rows carry its ticks and a digit toggles) · answers row. Transcript, home strip, other window, room foot. Every option is a row: the engine's cap (4, 8 on a checklist) is the only bound. Keys are digits `1`… in order; `ask` renumbers whatever the model wrote and hands the answer back in the model's own names. The asker's `form: line` is honoured only for plain options with no structured input; width decides the rest. - **pointer** — every question with answers has the person's pointer (`▸` on a card, the band on a line): `↑↓`/`←→`/`tab` walk it, `enter` takes it, a digit takes at once. It starts on the asker's pick, which says `suggested` in its consequence column; on a confirmation it starts on the answer that loses nothing. The task record page (enter on a needs-you row) draws the node's landing question above its foot and takes its keys through the block's door. Landed 2026-09-10. - **room** — a page over the conversation (the task-room idiom), and the owner's page pick A of 2026-09-11: **two panes with a seam between them** where the body is `railSlimFloor` cells or wider — the answers on the left with the question's own `Attach` under them as ONE dim-titled section (`what it showed you`), and the evidence of the answer the pointer is on beside them — and **one column** narrower than that, the same evidence unfolded under that answer's own row. Nothing folds: the answer the pointer is on IS the open one. `x` compare on the asker's dimensions (fallback: `+`/`−` lines), `c` comment on the focused part, `?` ask back (one exchange per option, answered in place, closes with the question), the foot composes the answer (pick · with · notes · scope), `d` you decide shows the pick and reason first, `D` sets the dial for the kind. **The pointer walks it**: `↑↓` choose (the foot says so) and the answer it is on is always in view, `enter` takes it, a digit walks to it rather than answering, `→ detail` hands the arrows to the evidence pane and `← back to the answers` hands them back; a click on an answer's ROW moves onto it, and a second click on that row is `enter` — one press to read, one to decide. **The page keeps its own key road** — the two tiers written into its foot's rule, in place of the legend. -- **panel split** — the same reading on the block above the box (preview picks A and B, 2026-09-11): where the ANSWERS carry blocks, a panel `railSlimFloor` cells or wider draws the list on the left and the pointer's own evidence on the right, and a narrower one unfolds that evidence under the pointer's row — the row giving up its consequence to it rather than saying it twice. A panel never takes more than half the frame, and what will not fit is cut on a dim row saying how much is left and `o open full`. One account of the case and one block renderer serve both, and the page (`internal/tui3/questionevidence.go`). +- **panel split** — the same reading on the block above the box (preview picks A and B, 2026-09-11): where the ANSWERS carry blocks, a panel `railSlimFloor` cells or wider draws the list on the left and the pointer's own evidence on the right, and a narrower one unfolds that evidence under the pointer's row — the row giving up its consequence to it rather than saying it twice. A panel never takes more than half the frame, and what will not fit is cut on a dim row saying how much is left and `o open full`. **A sentence about the whole QUESTION crosses the seam**, at the frame's own width, inside the frame — the clock's `any key stops the clock · you can still change the answer afterwards` (#954) is the worked example: in a column half the panel wide it is cut mid-word, in the pane beside the list it reads as the pointer's own answer, and under the frame it would sit in the second key tier. On the page the same sentence stands with the reason, above the panes. One account of the case and one block renderer serve both, and the page (`internal/tui3/questionevidence.go`). - **sheet** — many questions from one step or many hands: grouped by shape, `✓`/`?` per row, `enter` opens one, `s` sends what is answered and delegates the rest, "same answer for all like this" on a group; dependent questions withdraw with a reason and the sheet re-flows. **An answer's evidence reads in three tiers**, wherever it is drawn: the label bold in ordinary ink (as on a card — the hue is on the marks alone since the 2026-09-11 colour ruling below), the body ink, and every aside dim behind its own word — `then ·` the consequence, `why this one ·` the pick's reason, `would switch if` (the asker's sentence joined onto the clause, never `if If`), `confidence ·` how sure it is — then the blocks, a blank row above each.

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