Commit Graph

1800 Commits

Author SHA1 Message Date
Ed Langley 705c92d9ff Merge pull request #197 from fiddlerwoaroof/collapse-fu/gw18
improvise-gw18/yk2s/lx7w/54g1: the cursor's cell has three doors
2026-09-23 08:18:10 -07:00
Ed Langley 968f65afe0 Merge pull request #211 from fiddlerwoaroof/docs/28ri-oga4-diho
docs: one home for the review rules; pin gh/main; audit prose fixes (28ri, oga4, diho)
2026-09-23 08:14:35 -07:00
Ed Langley 0a4f906b1c Merge pull request #218 from fiddlerwoaroof/tooling/7epn-lnsh
tooling: pr-reviews polls past poll 2; stale harness lock names its fix (7epn, lnsh)
2026-09-23 08:14:05 -07:00
Ed Langley cb60166a84 Merge pull request #225 from fiddlerwoaroof/fix/rtud-command-md
command.md: say where each refuse_and_stop refusal is held (improvise-rtud)
2026-09-23 08:13:37 -07:00
Ed Langley c7e48546c3 Merge pull request #220 from fiddlerwoaroof/fix/17ak-help-footer
The TUI help footer's keys come off the keymap (17ak)
2026-09-23 08:13:10 -07:00
Edward Langley a1a9be33f0 Merge gh/main (33cf4969) into collapse-fu/gw18
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-23 08:03:56 -07:00
Edward Langley 7da905cdbb command.md: say where each refuse_and_stop refusal is held (improvise-rtud)
#213 merged before this correction was pushed; the push re-created a
branch main never saw. This lands the final wording on gh/main.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-23 07:59:08 -07:00
Ed Langley 33cf496927 Merge pull request #215 from fiddlerwoaroof/fix/5xbq-1c5m
One page rule for both ends; the help overlay shows how to page (5xbq, 1c5m)
2026-09-23 07:58:59 -07:00
Edward Langley ae281a58a8 Merge gh/main (bf2de499) into collapse-fu/gw18
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-23 07:56:53 -07:00
Ed Langley bf2de4995b Merge pull request #208 from fiddlerwoaroof/fix/b9f2-width-guard
Determinism law: the width guard measures the drills it compared (improvise-b9f2)
2026-09-23 07:56:04 -07:00
Ed Langley 345a35895e Merge pull request #213 from fiddlerwoaroof/wave/refuse-fu
Pin every refusal site, and keep a bad formula in its editor (improvise-v4hg, 514o, 0v8l)
2026-09-23 07:55:36 -07:00
Ed Langley cd55944e98 Merge pull request #216 from fiddlerwoaroof/fix/y5eo-records-startup
improvise-y5eo: a document opening on a records view opens the host in RecordsNormal (after #207)
2026-09-23 07:55:09 -07:00
Edward Langley 41aa4073f1 docs: -d skip reason measured; the ADR exception at both merge rules
improvise-28ri, from the #211 review at 6ccad4b: the recipe's grep has no
-r, so the skills' symlinks arrive as directory operands and are never
read. -d skip only silences "Is a directory", and sort -u would absorb a
duplicate anyway. Measured with BSD grep 2.6.0 and GNU grep 3.12: 3092
matches either way, 462 distinct ids. GNU grep -r follows those
symlinks (3107), so -r must not be added.

improvise-oga4: "Shipping a wave"'s opening and "Repository policy over
the Beads blocks" now point at the ADR exception. The wave SKILL.md
pointer is unwrapped, so a grep for "ADR pull requests" finds it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-23 07:53:01 -07:00
Edward Langley 5e37973fc0 The TUI help footer's keys come off the keymap
improvise-17ak: render_footer hand-wrote l/Tab, h/S-Tab and q/Esc, a key
table no check could read, and already short of the keymap (n, → and ? were
bound and not advertised). It now draws the page indicator followed by
hint_line(Help), truncated in cells.

Derived rather than deleted: the status row carries the same hint, but
draw_status prints status_msg instead of it whenever a message is standing,
and nothing clears the message on entering Help, so deleting the footer's
keys would leave a user who saved and then pressed ? with none.

The guard renders the popup at 140 columns on every page and requires the
footer row to contain hint_line(Help). Red at base; and a literal copy of
today's string fails it as soon as the keymap drops a binding.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-23 07:51:50 -07:00
Edward Langley ebf3dd2ba2 tooling: pr-reviews polls past the second poll; stale harness lock names its fix
improvise-7epn: two cases on the one-tick-per-read clock. One resolves on
poll 3, and one times out after polling up to the deadline. Replacing the
post-poll deadline check with `break` now fails exactly those two
(23 passed, 2 failed), where before it left the suite 23/23.

improvise-lnsh: when `cargo metadata --locked` refuses the opfs-contract
lock, build.sh now says not to remove --locked and names
`cargo update -w --manifest-path harness/opfs-contract/Cargo.toml`.
Checked by hand against a lock with pest pinned to 2.9.1. Evidence is in
context/test-evidence/tooling.md.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-23 07:49:40 -07:00
Ed Langley 12c81dd3d6 Merge pull request #207 from fiddlerwoaroof/fix/v8ab-fresh-slice
improvise-v8ab: a fresh session's slice is the host's startup slice (after #206)
2026-09-23 07:44:07 -07:00
Edward Langley a8737f3fa5 One page rule for both ends; the help overlay shows how to page
improvise-5xbq: resolve::page_rows is now the one home of the page-scroll
rule; the TUI's Move calls it instead of repeating visible_rows * 3 / 4.
A lockstep case pages (PgDn/PgUp, Ctrl-d/Ctrl-u) on a non-square window,
8 rows by 3 columns, and pins the TUI's landing rows as well as comparing
host and client, since one home moves both ends together. Both faults
the ticket injected (page_rows = window_rows / 2; paging by window_cols)
now fail at the first PgDn, before and after the move to one home.

improvise-1c5m: the help overlay draws the mode's own hint (hint_line,
the string #hint carries) in a sticky footer, so a narrow window whose
app bar wraps under #help still says how to page. Playwright case at
600px, red at base, and red again with the footer made non-sticky.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-23 07:41:03 -07:00
Edward Langley 08b87edd49 improvise-y5eo: a document opening on a records view opens the host in RecordsNormal
App::with_storage now ends with settle_normal_mode, the rule every batch
ends with, so the host's startup mode matches the one Sessions::connect
hands a client. #207's startup-slice test gains a records-opening case.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-23 07:40:45 -07:00
Edward Langley 6ccad4b80d docs: only the user's explicit approval accepts or merges an ADR
The user's ruling: "An ADR isn't approved until I say it is." CI, the
reviews and the adversarial review stay required as gates, but none of
them is approval. SKILL.md's "not on a review" pointer is reworded to
match.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-23 07:40:13 -07:00
Ed Langley 52c6a05369 Merge pull request #212 from fiddlerwoaroof/tooling/mkbp-qnpi
pr-reviews re-polls after a slow tick; the harness lock fails loudly (qnpi, mkbp)
2026-09-23 07:39:35 -07:00
Edward Langley 3929196096 clippy: needless borrow in the limit fixture 2026-09-23 07:38:43 -07:00
Edward Langley f3a0ef45e6 Merge commit 'ea119bd9d17deed96bcbe6ce8a27079eee70a135' into fix/v8ab-fresh-slice
# Conflicts:
#	context/test-evidence/command.md
2026-09-22 23:42:13 -07:00
Edward Langley 74dda4c5c7 Merge remote-tracking branch 'gh/main' into wave/refuse-fu
# Conflicts:
#	context/test-evidence/command.md
2026-09-22 23:41:03 -07:00
Edward Langley 0e846b8e41 WIP: evidence and design notes for v4hg, 514o, 0v8l 2026-09-22 23:40:19 -07:00
Ed Langley ea119bd9d1 Merge pull request #209 from fiddlerwoaroof/fix/phg1-record-rewrite-tests
Give RecordRewrite's three untested branches a test that can fail (improvise-phg1)
2026-09-22 23:38:51 -07:00
Edward Langley a00fffc94e rustfmt the width guard (improvise-btyw) 2026-09-22 23:36:49 -07:00
Edward Langley 087aa854b5 Merge remote-tracking branch 'gh/main' into collapse-fu/gw18
# Conflicts:
#	context/test-evidence/clients.md
2026-09-22 23:36:41 -07:00
Edward Langley 1550d390cb pr-reviews re-polls after a slow tick; the harness lock fails loudly
improvise-qnpi: `pr-reviews --wait` checked its deadline before the first
re-poll, so a second boundary between two reads of the clock skipped the
only poll (exit 1 with polls=1, reproduced under CPU load). The deadline
is now checked after each poll. A new case drives it with a PATH shim
whose `date` ticks one second per read, so it fails deterministically on
the old loop rather than under load.

improvise-mkbp: harness/opfs-contract/Cargo.lock pinned pest 2.9.1 while
its path deps require 2.9.2, so every build rewrote it. The resolved lock
is committed and build.sh starts with `cargo metadata --locked`; the
wasm-pack `-- --locked` route was tried and does not work (wasm-pack
re-resolves first). opfs.spec.js now names the fix when harness/serve/opfs
is missing, which is what running web/assemble.sh alone leaves.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:36:00 -07:00
Ed Langley 7767cee9b6 Merge pull request #200 from fiddlerwoaroof/collapse-fu/b5zh
improvise-b5zh: an outer group's header is pruned with its rows
2026-09-22 23:34:50 -07:00
Edward Langley 1499296586 Merge remote-tracking branch 'gh/main' into fix/b9f2-width-guard 2026-09-22 23:34:47 -07:00
Edward Langley 83c3c7d392 Docs: the width guard reads the representation the law compared (improvise-btyw) 2026-09-22 23:34:45 -07:00
Ed Langley de7037365e Merge pull request #188 from fiddlerwoaroof/wire2/2wu3
The inline editor commits by record identity, not viewport position (2wu3)
2026-09-22 23:34:23 -07:00
Edward Langley 7e1e8afba2 Pin RecordRewrite's clear arm at the renamed record (improvise-q2mq)
A blank edit on a measure a renamed drill row lacks must clear at the renamed
key. The phg1 sparse-row test covered only the write arm, so aiming the clear
at the unrenamed key left the workspace green. The reviewer's probe fails under
that rival and nothing else does.

Also corrects the phg1(c) evidence. The swap test cannot see the narrow rival
(eager clears, deferred writes). It does catch the wider one (eager clears and
writes).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:34:08 -07:00
Edward Langley e2b132f594 The width guard counts only drills whose ordered records the law compared (improvise-btyw) 2026-09-22 23:34:05 -07:00
Ed Langley 2a528884a7 Merge pull request #206 from fiddlerwoaroof/fix/lxg0-w1bu
improvise-lxg0/w1bu: a fresh session has no history; records cell kinds checked per column
2026-09-22 23:33:55 -07:00
Edward Langley 72f0c63fff docs: one home for the review rules; pin gh/main; audit prose fixes
improvise-28ri: -d skip only silences "Is a directory" on the skills'
symlinks, which git ls-files lists as files. grep -r never follows them,
so nothing was ever read twice. The "spells no id" sentence now says what
the recipe actually cites.

improvise-oga4: the review-reply and head-SHA rules live only in
agent-rules "GitHub" (plus the after-merge clause moved there); AGENTS.md
points to it, and the code-review skill names it. An ADR's "Approved" is
an extra gate on top of CI, every review answered and the adversarial
review.

improvise-diho: agent-rules rule 7, pin gh/main to a SHA at task start.
Also: build a test-name list in a fresh CARGO_TARGET_DIR, because
git archive's commit mtimes make a reused one return a stale list.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:33:53 -07:00
Ed Langley ef743e926d Merge pull request #201 from fiddlerwoaroof/docs/agents-md-wave
AGENTS.md agrees with the wave skill; bd block superseded; audit scans .agents; gates from ci.yml
2026-09-22 23:29:37 -07:00
Edward Langley 4e451199af Merge gh/main into fix/phg1-record-rewrite-tests
Resolved context/test-evidence/command.md by keeping both appended sides.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:23:53 -07:00
Edward Langley 0ecb1d89a9 Merge gh/main (4b88084) into collapse-fu/b5zh
Resolved context/test-evidence/core.md: gh/main's version, with #191's
two improvise-t0ma entries, plus this branch's improvise-b5zh entry.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:22:44 -07:00
Edward Langley 141be9fca6 Review replies go on the PR thread; ADR PRs merge on the user's approval
- agent-rules "GitHub": authors reply on the PR to every finding they
  address (commit, or why declined); reviewers read existing reviews first
  with scripts/pr-reviews, answer every Codex review on its thread, and
  state the head SHA they reviewed. SKILL.md points reviewers there.
- AGENTS.md "ADR pull requests": numbered open questions, the user answers
  on the PR, "What the user decided", merge only on "Approved" (PR #122).
  SKILL.md "Shepherding" points to it.
- Fix a pointer to the renamed policy section that wrapped across a line
  break and so escaped the rename.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:16:48 -07:00
Edward Langley 8ba64c8ef9 Merge gh/main (4b88084) into wire2/2wu3
Resolved context/test-evidence/clients.md: gh/main's version, whose
improvise-w7qd/5kdr paragraphs continue the entry above the conflict,
followed by this branch's two improvise-0j0f/4img entries.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:14:23 -07:00
Edward Langley 7716d823d2 Merge remote-tracking branch 'gh/main' into collapse-fu/gw18
# Conflicts:
#	context/code/command.md
#	context/test-evidence/clients.md
#	context/test-evidence/command.md
2026-09-22 23:09:55 -07:00
Edward Langley 32d5d8f7f3 Merge gh/main (4b88084) into fix/lxg0-w1bu
Resolved context/test-evidence/command.md: gh/main's version plus this
branch's three entries, kept ahead of gh/main's new JSON-import section.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:09:02 -07:00
Edward Langley 775f02b4e4 improvise-q9eg: correct the false sentence in command.md; evidence
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:08:27 -07:00
Edward Langley 70c33bd3f3 Work is done when its PR has merged; one statement of it, pointed to
- User ruling: work is not done until it is in a PR and that PR has
  merged. Stated once, in AGENTS.md's repo-owned section outside bd's
  markers (renamed "Repository policy over the Beads blocks"); agent-rules
  "Do not merge" and SKILL.md "Shepherding" point to it.
- "Who owns what" no longer says kb facts are batched two sentences
  before saying they are not: repo-map lines are batched, kb facts are
  written as they arrive.
- improvise-8haj: the ID audit takes its file list from git ls-files
  (tracked + untracked, minus ignored), so build output such as
  harness/serve and other agents' worktrees are not scanned; grep -d skip
  passes over the .claude/skills symlinks.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:07:57 -07:00
Edward Langley 42bb8a26a7 The fold sweep also holds the data section and the hidden set still
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:07:06 -07:00
Ed Langley 4b880846b9 Merge pull request #202 from fiddlerwoaroof/fix/6yvg-dz8c-json-float
Every JSON parser reads numbers exactly; derive the float_roundtrip check (improvise-6yvg, improvise-dz8c)
2026-09-22 23:06:31 -07:00
Edward Langley 345bb8cdb6 improvise-q9eg: a key the cursor's door resolved is not re-vetted by its shape
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-22 23:06:11 -07:00
Ed Langley 4e5299f6d7 Merge pull request #198 from fiddlerwoaroof/fix/w7qd-ssoe-help-guards
Grid-move and help-row guards that the #180 re-review found blind (w7qd, ssoe)
2026-09-22 23:05:01 -07:00
Ed Langley 8c3b013c48 Merge pull request #191 from fiddlerwoaroof/collapse-fu/t0ma
improvise-t0ma: pin records_steps and drill_steps as steps
2026-09-22 23:04:35 -07:00