Commit Graph

2330 Commits

Author SHA1 Message Date
Cursor Agent 03e46591bd docs: require tracking GitHub comments/reviews, not just CI checks
Multi-stack agents (especially Cursor cloud) may focus on pr-watch (CI checks
only) and miss review feedback. This makes the obligation explicit.

AGENTS.md - new 'PR Tracking: Checks AND Reviews' subsection:
- Fetch reviews AND comments (reviews are separate API surface)
- Codex/ChatGPT reviews arrive as reviews, not comments
- Use ./scripts/pr-reviews <n> to see all feedback together
- Answer substantive feedback with identity line before done/merge
- Re-check after push that reviews target current head SHA
- Don't wait indefinitely on Copilot/Codex (quota-limited)
- Points to existing wave essay for full workflow

context/cloud-agents.md - new 'PR Tracking' section:
- Brief summary of the obligation
- Points to pr-watch skill for CI, scripts/pr-reviews for reviews
- Cross-references AGENTS.md for full details

Co-authored-by: Ed Langley <fiddlerwoaroof@users.noreply.github.com>
2026-09-25 19:22:46 +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
Ed Langley 6da6a0401d Merge pull request #318 from fiddlerwoaroof/adr007/slugify
feat(core): slugify and the gensym id allocator for ADR 007 (improvise-cq1q.2)
2026-09-25 10:20:29 -07:00
Claude (agent-adr007) 7ddc50ac62 Merge commit '62066e1e1c972218b099a36f3f10440eb93d430e' into adr007/plan
# Conflicts:
#	context/code/core.md
#	context/test-evidence/core.md
2026-09-25 10:05:02 -07:00
Ed Langley 62066e1e1c Merge pull request #325 from fiddlerwoaroof/edl.review
chore: updating missing dep
2026-09-25 01:09:20 -07:00
Edward Langley 0ae25b99c5 chore: updating missing dep 2026-09-25 01:08:55 -07:00
Ed Langley bca936bd05 Merge pull request #324 from fiddlerwoaroof/edl.review
Updates
2026-09-25 01:05:49 -07:00
Edward Langley 8d40b875c5 fix: restore Cargo.nix mods 2026-09-25 00:51:12 -07:00
Ed Langley 4ee5d4b197 Merge pull request #319 from fiddlerwoaroof/feat/nn4s-faces
CI / Build all bundles (push) Has been cancelled
CI / Test and lint (host) (push) Has been cancelled
CI / Nix build (crate2nix) and the repo-stats pipeline (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
feat(faces): Face, Theme and resolve in improvise-protocol; the TUI draws through face_style (improvise-nn4s)
2026-09-25 00:33:32 -07:00
Edward Langley f155d12afe chore: more updates 2026-09-25 00:28:55 -07:00
Edward Langley b155ce9f0e chore: update nix+cargo deps 2026-09-25 00:14:45 -07:00
Edward Langley 43b221d394 chore: update Cargo.nix 2026-09-25 00:12:53 -07:00
Ed Langley 6ad4ef9bcc Merge pull request #323 from fiddlerwoaroof/bd-updates
CI / Build all bundles (push) Has been cancelled
CI / Test and lint (host) (push) Has been cancelled
CI / Nix build (crate2nix) and the repo-stats pipeline (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
chore: update issues
2026-09-25 00:09:24 -07:00
Edward Langley 14141771e4 chore: update issues 2026-09-25 00:08:54 -07:00
Edward Langley cf33a5d78a chore: update issues 2026-09-25 00:07:05 -07:00
Ed Langley 9ddaffead1 Merge pull request #313 from fiddlerwoaroof/chore/1xfb-5-1-repo-stats
chore(tooling): scripts/repo-stats — churn, coupling and doc-growth report (improvise-1xfb.5.1)
2026-09-25 00:03:18 -07:00
Ed Langley 7dc34e8458 Merge branch 'main' into feat/nn4s-faces 2026-09-25 00:01:32 -07:00
Claude (agent-adr007) 6c652c2ed3 fix(core): walk taken suffixes with a loop, not recursion (improvise-cq1q.2)
IdAllocator::suffixed recursed once per taken candidate, and the call was not
in tail position. A document claiming item-1 through item-N aborted the process
on a stack overflow at N of about 11,000 in debug. This answers the Codex P2 on
PR #318. The loop still advances the counter on every candidate it tries.

Three tests are added:
- a long claimed run (20,000), which aborted before the fix;
- claim refusing lookalike virtual ids (_indexer, _measure-1), which the
  review's prefix-match rival passed before;
- a display with leading spaces that must not slug into the reserved `_` space.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 23:41:16 -07:00
Ed Langley e8ea316ace Merge pull request #317 from fiddlerwoaroof/feat/felo6-group-parents
feat: groups nest inside a category and start collapsed; views persist expanded(N) (improvise-felo.6)
2026-09-24 23:39:28 -07:00
Claude (agent-stats) d6adb9e0e3 docs(tooling): the green run could not tell sparse from padded; record the rivals that now can (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-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-faces) 3583359a9c fix(faces): minibuffer faces inherit mode.text-entry, as ADR 004 says (improvise-nn4s.2)
Answers ChatGPT Codex's P2 on PR #319.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 23:02:55 -07:00
Claude (agent-hier) 44718e8ab3 Merge commit 'c91cc055c8ad81afd8f055b71c74af6819020637' into feat/felo6-group-parents
# Conflicts:
#	context/test-evidence/formula-and-io.md
2026-09-24 22:42:49 -07:00
Claude (agent-adr007) 689480bf89 chore(nix): regenerate Cargo.nix for unicase (improvise-cq1q.2)
Regenerated with `crate2nix generate` (0.15.0, from the dev shell). The new
file adds the unicase 2.9.0 crate and the improvise-core edge to it. It also
picks up the test-support feature edges that main's Cargo.lock already had
and Cargo.nix was missing.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 22:36:50 -07:00
Claude (agent-hier) 8d3230e685 fix(core): an expanded fold's depth is non-zero by type, so every fold the API builds reads back (improvise-felo.6)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 22:29:02 -07:00
Claude (agent-stats) 3564410952 docs(tooling): repo-stats runs on folder import; the interim steps are gone (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 22:06:25 -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-faces) e376034453 Merge commit 'c91cc055c8ad81afd8f055b71c74af6819020637' into feat/nn4s-faces 2026-09-24 22:05:35 -07:00
Claude (agent-faces) 92f8ac2113 docs(faces): where faces live and what the first two steps settled (improvise-nn4s)
context/code/protocol.md gains section 10 and tui.md's colour section now
describes face_style; the pointers to axis_fg, minibuf_fg and AxisColor
elsewhere follow. Evidence for the new tests.

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:24 -07:00
Claude (agent-faces) f7d2730736 style(faces): rustfmt the face migration (improvise-nn4s.2)
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:24 -07:00
Claude (agent-adr007) a2ddb06e9a Merge commit 'c91cc055c8ad81afd8f055b71c74af6819020637' into adr007/plan 2026-09-24 22:02:52 -07:00
Claude (agent-stats) 9639c577a4 Merge commit 'c91cc055c8ad81afd8f055b71c74af6819020637' into chore/1xfb-5-1-repo-stats 2026-09-24 22:02:45 -07:00
Claude (agent-adr007) 5cf070ff98 docs(core): why slugify folds with unicase, and the evidence for each id rule (improvise-cq1q.2)
context/code/core.md §19 gives the reasoning behind model::id.
context/test-evidence/core.md records, for each test, the rival that was
injected and the test that caught it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 22:02:41 -07:00
Claude (agent-adr007) e56148fa64 feat(core): slugify and the gensym id allocator for ADR 007 (improvise-cq1q.2)
model::id adds slugify, which case folds, turns each run of spaces into one
`_`, strips everything outside a-z, 0-9, `-` and `_`, then drops leading
underscores. It also adds IdAllocator, which keeps one increment-only counter
per document plus every id seen this session; claim admits hand-written ids
verbatim. Full case folding comes from the unicase crate. Nothing calls it yet.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 22:02:32 -07:00
Ed Langley c91cc055c8 Merge pull request #314 from fiddlerwoaroof/feat/lpzu-import-folder
feat(import): import a folder of CSVs as one sparse model (improvise-lpzu)
2026-09-24 22:02:16 -07:00
Claude (agent-stats) e32a4de406 docs(tooling): cite each headless gap's ticket, and record the empty window and the tools package (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 22:01:08 -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-faces) 12d976b432 feat(faces): the TUI draws axis, wizard-field, mode and minibuffer colours through face_style (improvise-nn4s.2)
axis_fg, minibuf_fg, field_kind_fg and mode_style are gone, and AxisColor
leaves improvise-core. The category-add prompt turns green, ADR 004
clause 8's one declared exception.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 21:58:01 -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-hier) e09ec75226 docs: group hierarchies and fold lines, with the evidence for each rival (improvise-felo.6)
The harness fixtures open their groups explicitly now that groups start closed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 21:54:23 -07:00
Claude (agent-faces) abff562360 feat(faces): Face, Theme, resolve and the shipped theme in improvise-protocol (improvise-nn4s.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:54:11 -07:00
Claude (agent-lpzu) c43ee72402 fix(import): a header-only or measureless file keeps its identity and a view of its own (improvise-lpzu, improvise-8jk6.13, improvise-8jk6.12)
ImportPipeline::from_merge seeds the File items and every file's columns
from Merged::sources, so a header-only CSV keeps its File item and its
columns (unseen columns are proposed as Labels, as an all-null column
is). A file with no measure column gets a records view filtered to it
instead of paging onto another file's hidden measure. Four per-file-view
rules the review found untested now each have a test that fails when
the rule is broken.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 21:47:11 -07:00
Claude (agent-hier) e497aef110 feat: nested group runs reach the wire, and views persist expanded(N) and collapsed folds (improvise-felo.6)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 21:43:55 -07:00
Claude (agent-lpzu) 005b7a769a feat(import): a folder of one CSV keeps its File category and view (improvise-lpzu)
The user's ruling on PR #314: a folder always merges, so even a single
CSV in it records its file identity. A CSV named directly still imports
alone. The "(none)" question is answered as no position, per the user.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 21:36:00 -07:00
Claude (agent-hier) 8dad4b7476 feat(core): groups nest within a category and start collapsed (improvise-felo.6)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 21:22:16 -07:00
Claude (agent-lpzu) 4e68372c25 Merge commit 'b639266b0d8852b106709b19162a0dadf1d114f0' into feat/lpzu-import-folder 2026-09-24 20:59:10 -07:00
Claude (agent-lpzu) ee0ff83a58 docs(import): folder import, sparse records and per-file views (improvise-lpzu, improvise-8jk6.2)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
2026-09-24 20:58:58 -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
Ed Langley b639266b0d Merge pull request #310 from fiddlerwoaroof/chore/1xfb3-agent-author
chore(agents): author agent commits as Claude (<actor>) (improvise-1xfb.3)
2026-09-24 20:54:46 -07:00