Commit Graph

164 Commits

Author SHA1 Message Date
Edward Langley 1bd665a754 docs(context): bring the repo map, gotchas and kb up to ADR 005/009 crates
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-10 15:28:08 -07:00
Claude (dbsp-circuit) 912580469a Merge commit '7dafd243' into adr009/zset-ffi
# Conflicts:
#	scripts/build-doc-site.mjs
2026-10-10 15:12:52 -07:00
Claude (dbsp-circuit) 5f2755dc8a docs(doc-site): publish the zset-ffi pages (improvise-bw4p.1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-10 14:30:19 -07:00
Claude (dbsp-delivery) 62810cb3ba Merge gh/main (b574c6eb) into adr009/delivery
# Conflicts:
#	Cargo.nix
#	scripts/build-doc-site.mjs
2026-10-10 12:45:36 -07:00
Claude (dbsp-delivery) eb15df6c36 docs(context): the reasoning and the evidence for delivery (improvise-z2vr)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-10 12:11:48 -07:00
Claude (adr009-derived) c0e6bd8f33 feat(incremental): the Derived trait, Eager and the differential harness (improvise-t8ow)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 23:46:47 -07:00
Claude (adr009-zset) 1bb73cbe4f docs(zset): the reasoning, the evidence and the wasm gate entry (improvise-tk51)
Registers zset in nix/ci.nix's wasmCrates and the doc site, shortens the
comment runs, and fixes the clippy findings in the test crate.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 23:03:32 -07:00
Ed Langley 5f8c3f8c82 chore(merge): pull request #309 from fiddlerwoaroof/docs/felo4-adr-incremental-evaluation
docs(adr): ADR 009 incremental evaluation (proposed) (improvise-felo.4)
2026-10-09 22:50:58 -07:00
Edward Langley cc113c732f docs(context): answer the review of the repo-map split
- repo-stats reads the gotcha list from context/gotchas.md (the digest in
  repo-map.md no longer measures the doc-growth signal) and reports it as
  `docs.gotchas`; the test fixture and its derived expectations follow.
- AGENTS.md and the wave agent-rules protect gotchas.md and
  file-inventory.md like the repo map they were split from.
- doc-site.md's publication table lists the two new pages.
- file-inventory.md's Context docs rows describe the three files correctly.
- the code-review skill points at gotchas.md for the long form.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 21:42:24 -07:00
Claude (adr9-steward) ee09edee0e Merge commit 'b0ae354f53f87465a408ada68c216ed7beec7424' into adr9-rev-steward 2026-10-09 21:17:49 -07:00
Edward Langley f0119a437d docs(context): condense repo-map to a digest; move gotchas and inventory to their own pages
repo-map.md was 173 KB (~43k tokens), too long to be part of every new
agent's context. The full gotcha text moves verbatim to context/gotchas.md
and the per-file inventory (with the old Wasm/CLI/Testing sections) to
context/file-inventory.md; the map keeps a one-or-two-line digest per
gotcha under the same numbers, so every `gotcha N` citation still resolves.

The doc-site manifest publishes the two new pages, and `gotchas` gets the
same gotcha-N anchors as `repo-map`.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 21:13:55 -07:00
Ed Langley b0ae354f53 Merge pull request #337 from fiddlerwoaroof/adr005/numtower
feat(numtower): ADR 005 step 1, the numeric tower crate (improvise-59nw.1)
2026-10-09 20:47:05 -07:00
Claude (adr9-steward) 491266f2e8 Merge commit '0bbf82690c788a9fa99425c4511a12cb8487f222' into adr9-rev-steward
# Conflicts:
#	scripts/build-doc-site.mjs
2026-10-09 13:34:45 -07:00
Claude (adr007-steward) c10eca98e0 docs(adr): keep the _Measure section for stored measures, and mark ADR 007's amendment accepted (improvise-cq1q.1)
The Opus review of 46c8a967: a new-version file had nowhere to declare
its stored measures. The ## Category: _Measure section stays and lists
them with displays and ids; its header declares nothing. Clause 6 says
input text means files and command-language text, distinct from
interactive typing. The sort note says plain string order, not numeric.

The user approved the amendment on PR #326 (2026-10-09), so its Status,
the accepted ADR's pointer, core.md section 20 and the doc-site title
no longer say proposed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 10:04:28 -07:00
Claude (adr007-steward) 38058ec73f docs(adr): move ADR 007's amendment to its own file, stating only what it changes (improvise-cq1q.1)
On the user's instruction an ADR states only what its decision changes,
and mentions an existing convention only where it conflicts. The accepted
ADR 007 is restored to main's text plus a one-line pointer, so merging
this PR keeps it; the amendment is context/adr/007-stable-identities-
amendment-1.md (280 lines, from 784), with a table of the accepted rules
it replaces. The doc site lists the new file, and core.md section 20
points at it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-09 09:43:16 -07:00
Claude (numtower) edbb50c426 feat(numtower): benchmark, wasm CI entry, and the reasoning and evidence docs (improvise-59nw.1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-08 22:07:44 -07:00
Claude (adr9-steward) 1fd4d5e7b9 Merge commit 'f0fb6880b084c043e9eb614713e1209667a42a81' into adr9-rev-steward 2026-10-08 21:34:11 -07:00
Claude (adr5-steward) 66f317e1b8 Merge remote-tracking branch 'gh/main' into adr5-steward-b2 2026-10-08 20:41:13 -07:00
Claude (adr9-steward) 502373c025 Merge commit '50e1314d069a4f6e549cd7d9795b6491a89bf903' into adr9-rev-steward 2026-10-05 14:43:31 -07:00
Claude (felo13) 49ea84ca5f fix(docs): register the layout evidence pages; test the two gaps the review found (improvise-felo.13)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-10-02 19:18:47 -07:00
Edward Langley 303a0388fb chore: stuff 2026-09-27 10:27:12 -07:00
Ed Langley ad1032d35f fix: probe Nix store with supported command\n\nUse nix store ping instead of the nonexistent nix-store --ping operation.\n\nPosted-by: ChatGPT (GPT-5.6 Sol) 2026-09-26 00:56:25 -07:00
Ed Langley 58cc47c480 fix: harden cloud agent bootstrap\n\nStart Nix during bootstrap, gate tracker mutations on a valid bd pin, and fail when required Nix setup fails.\n\nPosted-by: ChatGPT (GPT-5.6 Sol) 2026-09-25 18:54:09 -07:00
Cursor Agent 190b330c4e fix(pr-watch-test): run_case_capture in parent shell, not subshell
The run_case_capture helper was being called in command substitution
(out=$(run_case_capture ...)), which runs it in a subshell. This caused
the ok/bad updates to the pass/fail counters to be discarded.

Fix by having the helper write output to a caller-provided file parameter,
then reading from that file in the caller. This keeps the helper in the
parent shell where counter updates are preserved.

Addresses Codex P2 review on commit ec30c8a7.

Co-authored-by: Ed Langley <fiddlerwoaroof@users.noreply.github.com>
2026-09-26 01:38:18 +00:00
Cursor Agent ec30c8a7de fix: address three Codex P2 review findings
1. Shebang (Codex P2): scripts/agent-bootstrap.sh and .claude/hooks/session-start.sh
   now use #!/usr/bin/env bash instead of #!/bin/bash, matching repo convention
   enforced by checkers.sh.

2. Fail-closed bd pin (Codex P2): .claude/hooks/session-start.sh local path now
   exits 2 with a warning when pinned or running version cannot be parsed,
   instead of silently succeeding. An unparseable version is not a pass.

3. pr-reviews failure (Codex P2): scripts/pr-watch no longer uses '|| true' to
   swallow pr-reviews failures. If pr-reviews fails (fetch error, malformed
   response), pr-watch now exits 6 with a warning. Empty successful fetch
   (no reviews) is still exit 0.

   - Added exit 6 to usage text and skill documentation
   - Added test case 'pr-reviews failure exits 6' using malformed JSON fixture
   - All 57 pr-watch tests pass

Co-authored-by: Ed Langley <fiddlerwoaroof@users.noreply.github.com>
2026-09-26 01:30:00 +00:00
Cursor Agent 3104e89ae5 feat(pr-watch): integrate reviews/comments into pr-watch
The pr-watch skill and script now cover reviews/comments, not just CI checks.
An agent reading only the pr-watch skill now knows to track both.

.agents/skills/pr-watch/SKILL.md:
- Reframed: 'watching a PR' means checks AND reviews
- Added 'Reviews and Comments' section with the three surfaces table
- Added 'Review Obligations' subsection (answer feedback, identity line, etc.)
- Documented --reviews (default) and --no-reviews flags
- Cross-references AGENTS.md for full workflow details

scripts/pr-watch:
- Added --reviews (default) and --no-reviews flags
- After exit 0 (green/mergeable), calls scripts/pr-reviews to show all
  reviews and comments. Does not change exit code — answering is agent's job.
- Updated usage text to document the new behavior
- Composes with existing pr-reviews (fixture mode passes through)

scripts/pr-watch-test.sh:
- Added mk_reviews_empty() and mk_reviews_with_review() helpers
- Added review fixtures to all cases that exit 0 (pr-reviews needs them)
- Added tests: 'green with reviews shows review output' and
  '--no-reviews skips review output'
- All 56 tests pass

AGENTS.md / context/cloud-agents.md:
- Updated cross-references to point to pr-watch skill as agent-facing recipe
- Simplified text now that pr-watch handles reviews automatically

Co-authored-by: Ed Langley <fiddlerwoaroof@users.noreply.github.com>
2026-09-25 19:35:50 +00:00
Cursor Agent 106d4fd3ac feat: make nix develop the default toolchain path
User ruling: agents must work inside nix develop (or direnv) for this repo.
Bare system cargo that fails edition2024 is a misconfigured session.

Changes:

1. scripts/agent-bootstrap.sh:
   - Added section 0: seed nix flake inputs automatically
   - Cargo warm now runs inside 'nix develop --command'
   - Added --skip-nix-seed flag for environments that don't need it
   - Updated environment notes to emphasize nix-first

2. .cursor/environment.json:
   - Removed --skip-cargo-warm (full nix-backed warm now default)

3. AGENTS.md:
   - Added 'Toolchain' row to multi-stack table (nix develop required)
   - Added 'Toolchain Requirement' subsection with usage examples
   - Updated local agents guidance to use 'direnv allow'

4. context/cloud-agents.md:
   - Bootstrap now lists nix-seed as step 1
   - 'What does not work' table updated: bare system cargo now listed as
     failing; nix develop works after bootstrap
   - Updated nix section to reflect automatic seeding

Previous soft gap: nix-seed was a manual footnote; now it runs in bootstrap.

Co-authored-by: Ed Langley <fiddlerwoaroof@users.noreply.github.com>
2026-09-25 19:20:34 +00:00
Cursor Agent 8dcbfbfc77 feat: align agent stacks (Claude, Cursor) on shared bootstrap
Unifies coding-agent setup across Claude Code and Cursor so both stacks get:
- Pin-matched bd from flake.nix
- Fresh Dolt beads tracker sync (not stale JSONL export)
- Same skills via symlinks to .agents/skills/

Key changes:

1. scripts/agent-bootstrap.sh: stack-agnostic bootstrap that handles bd
   installation, tracker sync, and optional cargo warming. Works for any
   agent stack (Claude, Cursor, or manual).

2. .claude/hooks/session-start.sh: now a thin wrapper that calls the
   shared bootstrap for cloud sessions, keeping only the local pin-check
   inline.

3. .cursor/environment.json: configures Cursor cloud agents to run the
   bootstrap via 'install'.

4. .cursor/skills/: symlinks to .agents/skills/* so Cursor agents
   discover the same skills Claude has.

5. AGENTS.md: adds Multi-Stack Agent Support section; clarifies that
   scripts/kb is the KB interface (Prolog MCP is not required and not
   available in all stacks).

6. context/cloud-agents.md: updated for multi-stack support; added KB
   section emphasizing scripts/kb over Prolog MCP.

The canonical skill source remains .agents/skills/. Both .claude/skills/
and .cursor/skills/ are symlinks to it, so there is one truth that both
stacks read.

Co-authored-by: Ed Langley <fiddlerwoaroof@users.noreply.github.com>
2026-09-25 18:59:25 +00:00
Claude (agent-stats) 4ef847ce30 test(tooling): the repo-stats suite tells a sparse model from a padded one, and --out refuses a foreign CSV (improvise-1xfb.5.1)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 23:07:25 -07:00
Claude (agent-adr005) 1fe3a85d1e docs(adr): ADR 005 exact decimal arithmetic (proposed) (improvise-l2b8)
A two-level numeric tower: exact decimals (rust_decimal) by default, inexact f64 by Scheme's contagion rule. Measured against f64, bigdecimal and num-rational, and against ADR 009's exact f64 accumulator. Registered on the doc site.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 22:10:43 -07:00
Claude (agent-stats) 14a91c9cc2 feat(tooling): repo-stats imports its directory with improvise import <dir> (improvise-1xfb.5.1)
Folder import (improvise-lpzu, #314) keeps sparse records and makes a
view per file, so the category padding, the explicit file list and the
generated per-file views are gone.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 22:05:49 -07:00
Claude (agent-stats) 2dcf001b87 ci: keep code-maat and its JRE out of the ci shell; nix-build takes them from .#repo-stats-tools (improvise-1xfb.5.1)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 21:59:36 -07:00
Claude (agent-stats) 024543c72c fix(tooling): repo-stats survives a window of empty commits, and the fixture covers renames, the root crate and a refused script (improvise-1xfb.5.1)
churn.csv now has a fixed header. When no file changed in the window,
no model is built and the report says so. docs/*.md, README.md and
RELEASING.md count as prose, and .codex/ as agent docs. The suite no
longer builds improvise itself, because checkers.sh scrubs the linker's
environment.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 21:56:54 -07:00
Claude (agent-stats) 77b6f2dbba Merge commit 'b639266b0d8852b106709b19162a0dadf1d114f0' into chore/1xfb-5-1-repo-stats
# Conflicts:
#	context/test-evidence/tooling.md
2026-09-24 20:55:47 -07:00
Claude (agent-stats) acd724079a ci: run the repo-stats suite and a report-only push step in nix-build (improvise-1xfb.5.1)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 20:51:04 -07:00
Claude (agent-stats) 20335ee616 test(tooling): the repo-stats suite runs the whole pipeline over its fixture (improvise-1xfb.5.1)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 20:46:21 -07:00
Claude (agent-stats) 2cd246780b feat(tooling): repo-stats computes its churn tables in improvise (improvise-1xfb.5.1)
code-maat's CSVs and a per-file churn CSV go into one directory, one
sparse model is imported from it, and a checked-in improvise script
builds and exports the views the report prints.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 20:43:53 -07:00
Claude (agent-1xfb3) 0539fb37ac docs(agents): a cherry-pick keeps its source's author, and the check is per own commit (improvise-1xfb.3)
The wrapper's contract drops cherry-pick, because git ignores
GIT_AUTHOR_NAME there, and rule 8's cherry-pick -x should keep who wrote
the commit. A new case asserts it. The pre-push check now asks that every
commit you made names your actor, since a stacked or cherry-picked commit
keeps its own author. Answers the Codex P2 and the review on PR #310.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 20:39:18 -07:00
Claude (agent-stats) 73a8556937 chore(tooling): scripts/repo-stats and its fixture suite (improvise-1xfb.5.1)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 20:28:12 -07:00
Claude (agent-1xfb3) eff92f3e3c chore(tooling): add scripts/agent-git, which authors a commit as Claude ($BEADS_ACTOR) (improvise-1xfb.3)
Sets GIT_AUTHOR_NAME for one git command and refuses when BEADS_ACTOR
is unset or empty. Its suite runs in the kb job's checkers.sh row.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 20:18:17 -07:00
Edward Langley 322875b30a docs(adr): ADR 009 incremental evaluation (proposed) (improvise-felo.4)
An in-house DBSP core as a problem-agnostic crate, plugged in behind a
trait in improvise-core, with the eager evaluator kept as the oracle.
Adds examples/retraction_drift.rs, which measures f64 retraction drift
against the eager fold and the exact decimal sum.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 20:14:37 -07:00
Edward Langley 69e8549124 ADR 007: accepted (improvise-sboz)
The user approved revision 8 on PR #210 (owner comment 5824468104,
2026-09-25 00:17:10Z, "looks good, approved"). Status-only change on top
of fcb8f539, which the delta review passed (issuecomment-5824516651).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 17:22:33 -07:00
Edward Langley 4830fa3069 Merge commit 'ad217cc12a48ed7e3900aa02f94aae1a6fe4c857' into docs/sboz-stable-identities 2026-09-24 15:38:24 -07:00
Edward Langley c6b53eaa77 pr-reviews: hand jq its JSON on stdin, not argv (improvise-5jxt)
On #210 the review and comment JSON outgrew ARG_MAX, and
`jq -n --argjson ...` failed to exec with exit 126 before printing
anything. A `combine` helper now pipes the three documents to `jq -s`
through the printf builtin, on both the fixture path and the live path.

The new suite cases put about 2 MB on each surface, so a fix that moves
only one document off argv still fails. Both rivals fail 5 of 30: the
pre-fix script, and a partial fix that keeps the issue comments on argv.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 15:22:00 -07:00
Edward Langley 595111ff95 Merge commit '08ad7b8136baa8d1d26f532ab18a5f78bdfefb61' into docs/sboz-stable-identities 2026-09-24 12:43:42 -07:00
Edward Langley bc7e5f9bb3 Merge PR #290 (4fe8c0dc) into the 2026-09-24 integration wave 2026-09-24 02:44:20 -07:00
Edward Langley 4fe8c0dc7b Merge gh/main (220abc61) into fix/cota-assume-unchanged
context/test-evidence/tooling.md: both sides appended at the same point
(this branch's cota entry; gh/main's checkers-test and later entries).
Both kept.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 02:21:29 -07:00
Edward Langley 941eb0fd8e Merge commit '9a0d1ba7' into rb-245 2026-09-24 02:03:28 -07:00
Edward Langley 9a0d1ba77a Merge gh/main (220abc61) into tooling/dak5-ci-suites
#297's rulings kept: no bash floor, no find_modern_bash probe in
checkers.sh (it runs suites under the dev shell's $BASH), and no
toolchain-policing step in the build job. This branch's CI table kept:
ci_suites, --ci, --would-run, and the --ci steps in ci.yml (build, js, kb),
which replace gh/main's hand-listed kb, --self-test and remaining-checkers
steps. The kb row already runs every suite those steps named.
check-ci-graph passes on the merged ci.yml.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 02:00:44 -07:00
Edward Langley c29e32f1bb pr-reviews-test: delete the fake clock's untested date pass-through
Copilot on #297: `pr-reviews` only calls `date +%s`, so the REAL_DATE
pass-through never ran. It is deleted rather than tested. The fake now refuses
any other arguments with exit 2, so a new `date` call shows up as a failure.

Rival: with pr-reviews calling `date -u +%s`, "a review arriving on the third
poll is seen" and "--wait keeps polling until its deadline" fail (23/25).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 01:38:37 -07:00