Commit Graph

1677 Commits

Author SHA1 Message Date
Edward Langley 5d56196f56 WIP: one scratch App for the width guard (improvise-b9f2) 2026-09-22 23:00:59 -07:00
Edward Langley 288db9b269 WIP: width guard counts the records the compared drills froze (improvise-b9f2) 2026-09-22 22:50:50 -07:00
Edward Langley cfcc9bff97 Correct the determinism law's width-guard and analyzer claims (improvise-b9f2) 2026-09-22 22:43:14 -07:00
Edward Langley de49716a41 Merge remote-tracking branch 'gh/main' into fix/hzjo-determinism-law
# Conflicts:
#	context/test-evidence/command.md
2026-09-22 22:42:42 -07:00
Ed Langley fdc8e91383 Merge pull request #192 from fiddlerwoaroof/fix/jgzw-tile-virtuals
jgzw: keep _Index/_Dim tileable, and pin the offered set by name
2026-09-22 22:41:32 -07:00
Ed Langley a2f3c8d3e5 Merge pull request #193 from fiddlerwoaroof/fix/view-history
improvise-lrrx/8nd9: view history does not survive a document swap, and a refused step leaves no frame
2026-09-22 22:37:55 -07:00
Edward Langley 3390ab0394 Merge gh/main into fix/jgzw-tile-virtuals
Resolves the append-at-EOF conflict in context/test-evidence/command.md by
keeping both sides: gh/main's version plus this branch's tile.rs section.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 22:32:54 -07:00
Edward Langley c1932094d0 Merge gh/main into fix/view-history; point the client-stack claim at improvise-lxg0
The evidence file is gh/main plus this branch's five entries, inserted at
their original anchor. command.md no longer claims a client's history
cannot hold a dead name: fresh_view seeds a phantom Default frame
(improvise-lxg0, not fixed here).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 22:30:18 -07:00
Edward Langley 0825f9984d rustfmt the determinism law's width guard (improvise-e1sm) 2026-09-22 22:29:09 -07:00
Ed Langley d1c4884399 Merge pull request #196 from fiddlerwoaroof/fix/projection-identities
improvise-exdg/7xyx: a coordinate cell is CellId::Coordinate; FrameGroup::cat deleted
2026-09-22 22:28:36 -07:00
Ed Langley b59af2dfe0 Merge pull request #199 from fiddlerwoaroof/fix/i0v9-second-tab-lock
The worker's status claims success only on its first frame (improvise-i0v9)
2026-09-22 22:28:12 -07:00
Edward Langley f3932c1ca5 Merge remote-tracking branch 'gh/main' into fix/hzjo-determinism-law
# Conflicts:
#	context/code/command.md
#	context/test-evidence/command.md
2026-09-22 22:24:38 -07:00
Edward Langley f24944b437 WIP: determinism law docs — measured catch rate, execute-not-apply scope (improvise-e1sm) 2026-09-22 22:23:26 -07:00
Edward Langley c70c428c47 WIP: determinism law drills every item of the document (improvise-e1sm) 2026-09-22 22:22:29 -07:00
Ed Langley 608ba6a6c8 Merge pull request #195 from fiddlerwoaroof/wire2/59q8
Source scanner: bound test-only items by brackets, evaluate cfg predicates (59q8)
2026-09-22 22:15:24 -07:00
Ed Langley bd95044a6e Merge pull request #182 from fiddlerwoaroof/fix/yf7p-cursor-is-the-only-context
yf7p: no registration can overwrite a parsed field
2026-09-22 22:14:51 -07:00
Ed Langley 810077a0d0 Merge pull request #181 from fiddlerwoaroof/wire2/bok4
A model effect that cannot do what it names refuses its frame (bok4)
2026-09-22 22:13:43 -07:00
Edward Langley aeb88e3eac Merge gh/main into fix/jgzw-tile-virtuals
Resolves the append-at-EOF conflict in context/test-evidence/command.md by
keeping both sides: gh/main's version plus this branch's tile.rs section.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 22:11:35 -07:00
Edward Langley d5854bc11c Merge remote-tracking branch 'gh/main' into fix/i0v9-second-tab-lock
# Conflicts:
#	context/test-evidence/clients.md
2026-09-22 22:11:29 -07:00
Edward Langley c960713f8c The worker's status claims success only on its first frame (improvise-i0v9)
The worker transport wrote "in-page worker · <doc>" when it spawned the
worker, before anything had answered, so a tab whose worker could not start
showed a success-looking status over a blank page. It now writes "starting
the worker · <doc>…", and createShell's arm() takes an `answer` that sawFrame
writes on the first frame, but only while the watchdog is still armed. A
ReadOnly or SeedMissing notice lands BEFORE the Snapshot, and fail() has
already disarmed, so the claim cannot overwrite the precise reason.

The two-tab spec now logs every #status and denies both the premature claim
and "did not answer" before the page clock is walked. A new spec pins the
exact status sequence on the writable path. Reasoning:
context/code/clients.md, "The watchdog".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 22:10:29 -07:00
Ed Langley a164726fbd Merge pull request #183 from fiddlerwoaroof/fix/y1av-cursor-off-zero
y1av: seat the at-cursor panel tests off index 0
2026-09-22 22:09:55 -07:00
Ed Langley 1a6b877482 Merge pull request #194 from fiddlerwoaroof/fix/umi4-edit-seed
improvise-umi4: an editor opens on the value, not on its rounded Display
2026-09-22 22:06:30 -07:00
Edward Langley 2619d1710d Merge gh/main (#190) into wire2/bok4
Only conflict was context/test-evidence/command.md: both sides inserted a
section before the same heading, and both kept in full (gh/main's first).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 22:05:18 -07:00
Ed Langley 5bcc3cacdd Merge pull request #186 from fiddlerwoaroof/fix/edpl-pr-watch-unknown
pr-watch: wait out UNKNOWN and the needs: gap, pass only an allowlisted state (improvise-edpl, improvise-zlj2)
2026-09-22 22:05:10 -07:00
Ed Langley 1158c23d7b Merge pull request #190 from fiddlerwoaroof/fix/6oy4-4w09-wire-numbers
Numbers survive the JSON wire; a NaN cell quiesces (improvise-6oy4, improvise-4w09)
2026-09-22 22:03:33 -07:00
Edward Langley f8f4dd5fa0 Merge remote-tracking branch 'gh/main' into fix/view-history
# Conflicts:
#	context/test-evidence/command.md
2026-09-22 22:02:49 -07:00
Edward Langley 54ef80d960 Merge remote-tracking branch 'gh/main' into wire2/bok4
# Conflicts:
#	context/test-evidence/command.md
2026-09-22 22:01:23 -07:00
Edward Langley 6b3dd8ca3e improvise-exdg: correct the paste claim against #184, and name improvise-kkcy
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:58:43 -07:00
Edward Langley 23a3c4d269 Merge remote-tracking branch 'gh/main' into fix/projection-identities 2026-09-22 21:57:04 -07:00
Edward Langley 25a06d52ff improvise-7xyx: delete FrameGroup::cat and the echo it promised
The field's doc comment said a client echoes it back in ToggleGroup, but
resolve.rs has no toggle-group arm and neither renderer read it. Deleting
it is the minimal honest answer: composing `z` in a browser needs its own
design (the TUI places the cursor on the layout the toggle will produce),
and the operand should come back with that consumer. The h0iv test now
asserts whole-header equality, which is stronger than the (cat, name)
pair it compared.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:56:53 -07:00
Edward Langley 04230a7548 Merge remote-tracking branch 'gh/main' into fix/edpl-pr-watch-unknown 2026-09-22 21:56:21 -07:00
Edward Langley a4fa3ae174 pr-watch: wait on green-but-BLOCKED, the needs: gap before a required check registers (improvise-zlj2, improvise-h3ni)
The required Browser harness check comes from a job that needs: build, so for
a moment per push every registered check is green and GitHub says
MERGEABLE/BLOCKED. #186 at 128a2a0 refused that and exited 1 on healthy PRs.
BLOCKED with no failed check is now waited on (exit 3 if it never clears).
Adds the gap sequence from PR #189's real rollup, and a head moving during
the UNKNOWN wait. Corrects tooling.md's claim that nothing else produces
BLOCKED, the evidence entry's rival-2 claims, and the fixture wording.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:56:15 -07:00
Edward Langley 43ba5e6151 Bound test-only items by brackets and evaluate cfg predicates in the source scanner (improvise-59q8)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:55:32 -07:00
Edward Langley 44a183aa26 Merge remote-tracking branch 'gh/main' into fix/6oy4-float-roundtrip
# Conflicts:
#	context/test-evidence/clients.md
2026-09-22 21:54:12 -07:00
Edward Langley bb1a05674c improvise-exdg: a records coordinate cell projects CellId::Coordinate
A drawn coordinate cell projected id: None, which ADR 002 and gotcha 42
define as "no projected cell". Absence was encoding a permission (the
host's). It is now its own kind, carrying no operand because no client
composes a coordinate rename. render.rs::editable is an exhaustive match
so the next variant must be classified. Paste, clear and edit are
unchanged: every write path still matches Record alone. The test that
pinned the bug (a_coordinate_column_is_projected_with_no_identity) is
replaced by one that enumerates the whole records grid.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:54:11 -07:00
Edward Langley 3bcd8774cb WIP pr-watch: failing cases for the needs-gap BLOCKED and a head moving during UNKNOWN (improvise-zlj2, improvise-h3ni)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:53:01 -07:00
Edward Langley 0680f65da8 Merge remote-tracking branch 'gh/main' into fix/umi4-edit-seed
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:52:26 -07:00
Edward Langley 54d9cc85de WIP: 59q8 red tests
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:52:01 -07:00
Ed Langley da2e5ab9e5 Merge pull request #189 from fiddlerwoaroof/fix/5fzx-skill-symlinks
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
skills: symlink the three hand-kept .claude copies; code-review points at the one gate list (improvise-5fzx, improvise-vjus)
2026-09-22 21:50:42 -07:00
Ed Langley 9aa3581c2d Merge pull request #184 from fiddlerwoaroof/fix/6p8q-records-yank-paste
TUI records-mode yy/p resolve the real record; p declines aggregates (improvise-6p8q, l4mp)
2026-09-22 21:50:15 -07:00
Edward Langley 141e41ec4b improvise-umi4: an editor opens on the value, not on its rounded Display
CellValue's Display writes a non-whole number {:.4}, and every editor seed
was that string, so i then Enter on an untouched 1.23456789 stored 1.2346,
in the TUI (pivot and records) and in the browser, which seeds from the
projected edit_text. CellValue::edit_text is now the one home of the seed:
the shortest decimal that reads back as the same f64 (non-finite values
take the core.md §16 token). display_value_in's two arms and
cell_display's records arm all go through it; the now-orphaned
GridLayout::resolve_display is removed.

Text that reads as a number (007) is exact in the seed but still
reclassified by typed(); filed as improvise-ixxx.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:49:20 -07:00
Edward Langley 0a6e940dc5 Merge remote-tracking branch 'gh/main' into fix/yf7p-cursor-is-the-only-context 2026-09-22 21:48:14 -07:00
Edward Langley 300bf613fc Merge remote-tracking branch 'gh/main' into fix/view-history 2026-09-22 21:47:46 -07:00
Edward Langley 12171fb335 Merge remote-tracking branch 'gh/main' into wire2/bok4
# Conflicts:
#	crates/improvise-command/src/ui/effect.rs
2026-09-22 21:47:23 -07:00
Edward Langley f44767c9a8 Merge remote-tracking branch 'gh/main' into fix/jgzw-tile-virtuals 2026-09-22 21:47:01 -07:00
Edward Langley ffd3ec80be jgzw: keep _Index/_Dim tileable, and pin the offered set by name
The tile bar offering _Index and _Dim is a decision the user already
made (improvise-kos), and it is the only way out of a records layout
that was saved into a real view: R there emits ViewBack on an empty back
stack and claims Pivot mode (filed as improvise-gj5p). A new test names
the whole offered list with _Measure on a column, so a filter dropping
_Measure, or one dropping _Index/_Dim, fails it.

Reasoning: context/code/command.md, cmd/tile.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:46:55 -07:00
Edward Langley 99046f7c63 improvise-8nd9: a history step observes acceptance, not movement
A frame naming the view you are on is still a place (view + mode), and
the client's reduce_view::stepped steps onto it unconditionally. Observing
"active_view changed" dropped that frame on the host and so split host
from client; colon_view_back_respects_whether_history_exists caught it.
App::switch_to_view now says whether the document accepted the view, and
stepped_to asks that rather than re-deriving the condition.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 21:45:36 -07:00
Edward Langley c246dc1df6 improvise-umi4: WIP failing tests — an untouched edit must store the identical value
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:38 -07:00
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 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