Commit Graph

1744 Commits

Author SHA1 Message Date
Edward Langley ead796890b The aggregate paste decline no longer sends the user into a drill (improvise-48jd)
Inside a drill p declines too, so 'drill in to paste' led to a second refusal.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:43:19 -07:00
Edward Langley f8345ea8c6 A keys row can only be looked up, and an ex row can name no key (v29m)
HelpLine::Keys carries a KeyRow whose fields are private to a module
whose only constructor looks the keys up; a builder that types one is a
compile error. ex! asserts at compile time that every word after the
command name is a placeholder, so ':q  or press Q' does not build.
':add-items <cat> a b c ...' is now ':add-items <cat> <item> ...'.
Renderers read the row through accessors (src/ui/help.rs, render.rs).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:43:18 -07:00
Edward Langley 62dba66232 Merge gh/main into fix/6p8q-records-yank-paste
Resolves the append-at-EOF conflict in context/test-evidence/command.md,
keeping gh/main's entries and then this branch's.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:43:13 -07:00
Edward Langley ea1f2d313b improvise-lrrx/8nd9: view history does not survive a document swap
install_workbook clears view_back_stack and view_forward_stack beside
cursors, so `<` after LoadModel or AcceptWizardModel no longer walks
the outgoing document's views. ViewBack and ViewForward now observe the
switch as SwitchView does (improvise-swzk): a frame the document refuses
is consumed, leaves no frame behind, and restores no mode. Each fix holds
without the other.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:43:10 -07:00
Edward Langley 07d9732b7a Refuse DeleteView of an absent view and AddFormula into an absent category (improvise-40j4)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:43:02 -07:00
Edward Langley 8fe55e0b4a Witness every bok4 refusal with a frame test (improvise-9fpl)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:42:05 -07:00
Ed Langley 800348ad11 Merge pull request #185 from fiddlerwoaroof/fix/headless-exit-extent
CI / Build all bundles (push) Has been cancelled
CI / Test and lint (host) (push) Has been cancelled
CI / wasm32 check (browser bundle crates) (push) Has been cancelled
CI / Browser JS unit tests (node --test) (push) Has been cancelled
CI / Knowledge base consistency (push) Has been cancelled
CI / Lint the harness crate (push) Has been cancelled
CI / Browser harness (OPFS contract + shell) (push) Has been cancelled
CI / Deploy to GitHub Pages (push) Has been cancelled
Headless CLI: pin the extent (up8g); exit 1 on a refusal, not an abort (c5ip, udt2)
2026-09-22 21:42:03 -07:00
Edward Langley 3c6001ac7b Merge remote-tracking branch 'gh/main' into fix/6oy4-float-roundtrip
# Conflicts:
#	context/test-evidence/command.md
#	context/test-evidence/protocol.md
2026-09-22 21:41:49 -07:00
Edward Langley e6d7d13e90 The advertised-key guard judges by what the fold moved, off every edge (6562)
heard() compared command types, so a clamped move counted as acting. It
now folds the outcome and compares the view slice (status and disarm
aside); a Model command counts as sent. The fixture is a 3x3 grid with
the cursor at (1,1), three tiles with the cursor at 1, help page 1.
Direction is out of reach for any did-it-move check, so every grid key
is also pressed from the centre and must land where its binding says.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:40:17 -07:00
Edward Langley 128a2a093e Merge remote-tracking branch 'gh/main' into fix/edpl-pr-watch-unknown 2026-09-22 21:40:14 -07:00
Edward Langley ddf463e366 fmt 2026-09-22 21:38:58 -07:00
Edward Langley fc0b13c465 Merge remote-tracking branch 'gh/main' into fix/hzjo-determinism-law 2026-09-22 21:38:03 -07:00
Edward Langley 8641f9a59d code-review skill: point at agent-rules Gates instead of restating it (improvise-vjus); two gate lessons in agent-rules
The restated list said cargo fmt --all --check, which reaches one of two
workspace roots, and omitted direnv exec, checkers.sh and node-test.sh.
agent-rules gains two rules from PRs #176 and #177.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:38:03 -07:00
Edward Langley 384e04acbc The inline editor commits by record identity, not viewport position (improvise-2wu3)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:37:56 -07:00
Edward Langley 60dbe970b0 hzjo: the determinism law, over every command and independent contexts
Every registered command, under every argument list that builds it, must
give equal effects in four contexts built independently from the shipped
demo. Separately built Apps give each HashMap its own RandomState, so a
command that follows hash order disagrees with itself; the old law ran
execute twice on one context and could not fail. A companion test keeps
that property honest, and the exemption list is checked both ways.

Reasoning: context/code/command.md.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:37:55 -07:00
Edward Langley 2abf89ade9 skills: .claude/skills/{kb,pr-watch,code-review} become symlinks to .agents (improvise-5fzx)
The three were byte-identical hand-kept copies (same blob on gh/main), the
shape improvise-1f8e found drifted in wave. Done the way PR #175 did wave and
beads-merge already was.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:37:29 -07:00
Edward Langley c5e72e889f Merge remote-tracking branch 'gh/main' into fix/help-keys-checks
# Conflicts:
#	context/test-evidence/protocol.md
2026-09-22 21:37:17 -07:00
Edward Langley da8c67109a CellDisplay equality is the wire's, so a NaN cell quiesces (improvise-4w09); docs and evidence for both 2026-09-22 21:37:12 -07:00
Ed Langley 1c184a5cc2 Merge pull request #176 from fiddlerwoaroof/fix/6qet-collapse-row
CI / Build all bundles (push) Has been cancelled
CI / Test and lint (host) (push) Has been cancelled
CI / wasm32 check (browser bundle crates) (push) Has been cancelled
CI / Browser JS unit tests (node --test) (push) Has been cancelled
CI / Knowledge base consistency (push) Has been cancelled
CI / Lint the harness crate (push) Has been cancelled
CI / Browser harness (OPFS contract + shell) (push) Has been cancelled
CI / Deploy to GitHub Pages (push) Has been cancelled
improvise-6qet: a collapsed group is one aggregate row, and z's cursor follows it
2026-09-22 21:36:41 -07:00
Ed Langley e3c08df156 Merge pull request #177 from fiddlerwoaroof/wire2/j4qt
CI / Build all bundles (push) Has been cancelled
CI / Test and lint (host) (push) Has been cancelled
CI / wasm32 check (browser bundle crates) (push) Has been cancelled
CI / Browser JS unit tests (node --test) (push) Has been cancelled
CI / Knowledge base consistency (push) Has been cancelled
CI / Lint the harness crate (push) Has been cancelled
CI / Browser harness (OPFS contract + shell) (push) Has been cancelled
CI / Deploy to GitHub Pages (push) Has been cancelled
A read-only tab refuses edits instead of painting what it cannot save (j4qt)
2026-09-22 21:35:42 -07:00
Edward Langley 2db69d927a pr-watch skill: exit 0 now means mergeable; UNKNOWN is the fourth false green (improvise-edpl)
Only the .agents copy is edited: .claude/skills/pr-watch becomes a symlink to
it in the improvise-5fzx PR, and editing both here would make that PR's merge
a modify/delete conflict.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:34:45 -07:00
Edward Langley d1a9ef9add pr-watch: wait out UNKNOWN mergeability; pass only an allowlisted state (improvise-edpl)
GitHub reports UNKNOWN for a while after the base moves, and PRs #172 and
#179 both exited 0 there. UNKNOWN is now waited on (exit 3 on timeout), a
failed check or CONFLICTING ends the wait, and the pass condition is
MERGEABLE with CLEAN, UNSTABLE or HAS_HOOKS. BLOCKED, DIRTY, BEHIND, DRAFT
and any unshipped state fail closed. The suite enumerates the whole table.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:34:07 -07:00
Edward Langley 473ac9622e Merge remote-tracking branch 'gh/main' into wire2/2wu3 2026-09-22 21:33:08 -07:00
Edward Langley e0550fc51f WIP pr-watch: failing cases for UNKNOWN mergeability (improvise-edpl)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:32:18 -07:00
Edward Langley c831e5ea4a WIP: float_roundtrip on frame parsers; failing NaN quiescence test (improvise-6oy4, improvise-4w09) 2026-09-22 21:32:00 -07:00
Edward Langley 34ef2802d2 Merge remote-tracking branch 'gh/main' into wire2/bok4
# Conflicts:
#	context/test-evidence/command.md
2026-09-22 21:31:45 -07:00
Edward Langley 216b14860d improvise-6qet: the grouped harness spec expects the collapsed group's row
grouped.spec.js asserted a collapsed group contributes no rows (8 data rows).
It now contributes one per Store (10), labelled Upland, and its cells are
not editable. The editable assertion was checked against cell_id without
folds_a_group: it fails with 6 editable cells where 0 are expected.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:31:06 -07:00
Edward Langley 8d51ad70f2 Give the Refuse effect its wire verdict: its text travels as SetStatus
gh/main's vocabulary_is_complete requires every effect to be on the wire or
named with a verdict. Refuse's portable half is its status text; the flag is
one host batch's outcome (context/code/cli.md §10).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:31:01 -07:00
Ed Langley ae96b8ccaa Merge pull request #179 from fiddlerwoaroof/fix/kb-guard-followups
CI / Build all bundles (push) Has been cancelled
CI / Test and lint (host) (push) Has been cancelled
CI / wasm32 check (browser bundle crates) (push) Has been cancelled
CI / Browser JS unit tests (node --test) (push) Has been cancelled
CI / Knowledge base consistency (push) Has been cancelled
CI / Lint the harness crate (push) Has been cancelled
CI / Browser harness (OPFS contract + shell) (push) Has been cancelled
CI / Deploy to GitHub Pages (push) Has been cancelled
kb: count keys, tie the rm ledger to the file it describes, fix the guard's docs (ih3k, yea8, za97)
2026-09-22 21:29:29 -07:00
Edward Langley a4910eb4c1 Merge remote-tracking branch 'gh/main' into fix/y1av-cursor-off-zero 2026-09-22 21:29:13 -07:00
Edward Langley 4277cf6f84 y1av: seat the at-cursor tests off index 0
delete-formula-at-cursor, switch-view-at-cursor and delete-view-at-cursor
were asserted with the cursor at 0 of a one-element list, where the item
under the cursor and the first item are one item. A DeleteFormulaAtCursor
hard-wired to index 0 passed the whole workspace. Now each cursor sits at
index 1 of a longer list; the index-0 rivals fail.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:28:58 -07:00
Edward Langley 0d8e6a908b Merge remote-tracking branch 'gh/main' into fix/headless-exit-extent 2026-09-22 21:28:53 -07:00
Edward Langley ffe8aed6b4 improvise-c5ip, improvise-udt2: exit 1 on a refusal, never on an abort
The headless exit code read `last_batch_aborted()`, which answers "did a chain
stop", not "did the request happen" — wrong both ways. `commit-cell-edit` at
bottom-right lands its write, saves, and then `EnterAdvance`'s `AbortChain`
exited 1 (c5ip); `add-item` into a missing category refuses without aborting
and exited 0 (udt2).

`App` gains a per-batch `batch_refused`, reset beside `batch_aborted` and
written only by `App::refuse(msg)`, which sets the status and the flag
together; commands reach it through `effect::refuse`. `main.rs` exits 1 on
`last_batch_refused()` only. Not a severity on `status_msg`: that would be
portable ViewState and would go stale across its ~60 writers.

Strays into ui/app.rs (four small additions) — flagged in the hand-back.
Unconverted refusals are filed as improvise-i3o5; headless `q` as improvise-ep5o.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:28:44 -07:00
Edward Langley 0ed2e41c32 Merge gh/main into fix/6p8q-records-yank-paste
The TUI's records yank now reads records_value unfiltered, the value the browser
yanks since improvise-dsxq; the blank case is filed as improvise-s1lx.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:28:30 -07:00
Edward Langley ef7775efc0 Merge remote-tracking branch 'gh/main' into wire2/j4qt
# Conflicts:
#	context/test-evidence/clients.md
2026-09-22 21:28:26 -07:00
Ed Langley f95dc25d64 Merge pull request #172 from fiddlerwoaroof/wire2/lane
CI / Build all bundles (push) Has been cancelled
CI / Test and lint (host) (push) Has been cancelled
CI / wasm32 check (browser bundle crates) (push) Has been cancelled
CI / Browser JS unit tests (node --test) (push) Has been cancelled
CI / Knowledge base consistency (push) Has been cancelled
CI / Lint the harness crate (push) Has been cancelled
CI / Browser harness (OPFS contract + shell) (push) Has been cancelled
CI / Deploy to GitHub Pages (push) Has been cancelled
Vocabulary completeness guard, position-free ModelCommand, one source scanner (h3y7, hkbc, c7mu)
2026-09-22 21:27:50 -07:00
Edward Langley 1dd9bba452 WIP: 2wu3 red test and by-identity commit
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:27:16 -07:00
Edward Langley a6e36511b5 WIP: failing tests, numbers across the serialized wire (improvise-6oy4) 2026-09-22 21:26:58 -07:00
Ed Langley c28b81a6de Merge pull request #173 from fiddlerwoaroof/fix/df2w-i0v9-browser-page
CI / Build all bundles (push) Has been cancelled
CI / Test and lint (host) (push) Has been cancelled
CI / wasm32 check (browser bundle crates) (push) Has been cancelled
CI / Browser JS unit tests (node --test) (push) Has been cancelled
CI / Knowledge base consistency (push) Has been cancelled
CI / Lint the harness crate (push) Has been cancelled
CI / Browser harness (OPFS contract + shell) (push) Has been cancelled
CI / Deploy to GitHub Pages (push) Has been cancelled
df2w: an open, empty formula panel is drawn in the browser
2026-09-22 21:25:46 -07:00
Edward Langley 2cd503019e Merge remote-tracking branch 'gh/main' into fix/6qet-collapse-row 2026-09-22 21:25:34 -07:00
Edward Langley 5ea122b3ea improvise-6p8q/l4mp: context reasoning and test evidence
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:24:54 -07:00
Ed Langley fbe7459cc6 Merge pull request #178 from fiddlerwoaroof/fix/dsxq-yank-value-proj
CI / Build all bundles (push) Has been cancelled
CI / Test and lint (host) (push) Has been cancelled
CI / wasm32 check (browser bundle crates) (push) Has been cancelled
CI / Browser JS unit tests (node --test) (push) Has been cancelled
CI / Knowledge base consistency (push) Has been cancelled
CI / Lint the harness crate (push) Has been cancelled
CI / Browser harness (OPFS contract + shell) (push) Has been cancelled
CI / Deploy to GitHub Pages (push) Has been cancelled
Browser yy yanks the projected value, not the edit text re-parsed (improvise-dsxq)
2026-09-22 21:24:18 -07:00
Edward Langley 7e1bf86260 Merge remote-tracking branch 'gh/main' into fix/yf7p-cursor-is-the-only-context 2026-09-22 21:23:54 -07:00
Edward Langley d4b60d7979 yf7p: no registration can overwrite a parsed field
CmdRegistry::register loses its contextualize parameter. Every
contextualizer in the tree was one of two shapes: the command's
CursorState, now filled by the registry itself through AtCursor (a slot
typed &mut CursorState, so it cannot point at a parsed field); or a
read of context copied into the command only to be read back
(toggle-panel-visibility, cycle-panel-focus, move-panel-cursor), now
read in execute. The five overwrites review injected are unwritable.

Reasoning: context/code/cli.md section 8.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:23:43 -07:00
Edward Langley 8aaddeea1d WIP improvise-6p8q: records yank/paste lockstep
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:23:32 -07:00
Edward Langley ddc0bf4ce2 Merge remote-tracking branch 'gh/main' into wire2/bok4 2026-09-22 21:22:16 -07:00
Ed Langley 398caf6462 Merge pull request #175 from fiddlerwoaroof/docs/wave-agent-rules
CI / Build all bundles (push) Has been cancelled
CI / Test and lint (host) (push) Has been cancelled
CI / wasm32 check (browser bundle crates) (push) Has been cancelled
CI / Browser JS unit tests (node --test) (push) Has been cancelled
CI / Knowledge base consistency (push) Has been cancelled
CI / Lint the harness crate (push) Has been cancelled
CI / Browser harness (OPFS contract + shell) (push) Has been cancelled
CI / Deploy to GitHub Pages (push) Has been cancelled
wave skill: agent standing rules move into the repo; one home for the brief checklist (improvise-1f8e)
2026-09-22 21:21:43 -07:00
Edward Langley 8df9431199 WIP improvise-6p8q: yank of a coordinate/creating column
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:20:22 -07:00
Edward Langley 119f84f345 Merge remote-tracking branch 'gh/main' into wire2/lane 2026-09-22 21:20:09 -07:00
Edward Langley d9d064c882 Forward guard reads an effect name past attributes and doc comments (improvise-94x2); clippy slice fix
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:20:07 -07:00