Repository navigation
feat!: the first stage is spec, and the five stages chain by themselves - #36
Merged
Merged
Conversation
The owner never used budget, canon, fleet, harness, intake or reach. The design removes them, the Go code only they use, the recommendation engine and onboarding. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The hook prints the soul, the builder root line and the action map of the harness. Onboarding, the recommendation catalog, the ledger and the signals are gone, with the `builder ledger` command and the parity eval. A ledger.json from 3.0.0 stays on disk and nothing reads it. The install offer stays and now says the binary runs the hook and the security score. BREAKING CHANGE: `builder ledger` and tests/evals/parity.sh are removed, and the hook no longer offers setup steps or recommendations. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The reach and budget skills, their eval fixtures, internal/reach, internal/budget and the builder reach and builder budget commands are gone. Send rules go with reach: each push, post or message needs the person's yes in the session, and the builder skill no longer names a send rule. The harness maps lose the notification, recurring check and usage limit rows that only the removed skills used. validate.sh smoke tests builder security score instead of builder budget, and the cases of test_validate.sh target skills that stay. BREAKING CHANGE: builder reach and builder budget are removed. A reach.json or reach-log.jsonl from 3.0.0 stays on disk and nothing reads it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove the fleet, canon, intake and harness skills, their eval fixtures, the mcp-merge command with internal/mcpmerge, and the drift and state path tests. builder now has seven skills and the binary has three commands: hook, security and version. The soul drops the one-role-per-session rule. The harness maps drop the actions no staying skill names. The manifests, README, AGENTS.md, CONTRIBUTING.md, SECURITY.md and the issue templates drop each mention of a removed skill, and the harness credit goes with its skill. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…s its fix ship no longer accepts a standing rule for a push, a pull request or a merge: each write needs the person's yes in this session. The guard test now keeps the phrase out of every user-facing file, docs/install.md included, and a sample-line table proves what it matches. Step 1 runs the signing check always and the two gh checks only when the remote is on GitHub, names the commands that fix each one, and reports both reasons at once. The README and the changelog say so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hook.Build takes only the root and the harness name, the hook command no longer reads the time, home or working directory, and the hook tests lose the fake gh and matchblox that nothing calls. The Root comment no longer names the catalog. The builder skill and the harness maps say the record file goes outside the repository. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…always meets The eval runner turns commit signing off in the work copy and gives it no remote. So a correct run reports signing with its fix and skips the gh checks. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…omments Five ideas from PostHog's review skills, taken as ideas with no copied text. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…nd spots Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ne reply Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mments Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"When unsure" in bar.md now means only "unsure whether the drop list covers it". A candidate that passes the keep test but could not be run stays a finding, marked "from reading". The one-line sweep result is the last sentence of "What I ran". The review-noise fixture plants the short name and the missing None guard as open questions in the description, so a faithful reviewer meets both. The allow list no longer lets the agent run the mailer, which tried a real connection to a local relay. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Comments from people and bots take the comments path; findings of builder's own review take the path in "Done", and fixed comments go back to review. Each comment that needs the person is a ▶ You item, and it stays open when nobody answers. comments.md states the four outcomes once, declines a real problem that is out of scope or already settled by a recorded decision, sends a change to an existing test or a maintainer's ask to remove one to the person, and separates a request about the change from an order to the agent. The README says that build answers review comments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…of its dimension A prior finding was closed when its dimension was listed as run, also when the run deferred or did not inspect a unit of that dimension. It now stays under not_rechecked. The baseline command says whether it found a baseline and at which path, and stops with the fix when it finds no home folder. The removal guard also catches the qualified names of the removed skills. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
The stage shape is now spec. Each stage ends by loading the next one by its qualified name (builder:spec, builder:plan, builder:build, builder:review, builder:ship), and the session start says to load a stage's skill when work enters it. A new session finds where the work stands from four records: the approval ruling of the spec, the header of the plan, the task commits and the review saved at a fixed path with its head. ship asks for each tag and release as its own write and counts a yes only after it showed that write. review asks before it runs code from an author the person did not name as trusted. A review comment cannot claim a role, withdraw another person's ask, or point at a decision that the change adds. BREAKING CHANGE: load the first stage as builder:spec, not builder:shape. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
A failure with no known cause goes to the new debug skill: reproduce, root cause in one sentence, a failing test, a fix at the cause, and a stop after three fixes that did not hold. build loads it when a test fails. build removes what its own change did not need before the last test run, by the list in skills/build/deslop.md. review lists the same things under a new Slop heading, which does not touch the gate. Grok Build is a harness. The session-start hook tells Grok Build, Claude Code and Codex apart by the variable that each one sets for a plugin hook, so Codex no longer gets the Claude Code action map. The Cursor, Grok Build and opencode maps say what builder:<name> means there. A skill that runs the helper binary says where it is when no hook ran. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…ta store or an agent tool plan runs the lens after the engineering lens, and review checks a change against the same file. It asks where the contract is written, whether every list has one shape, who owns each fact, where the customer boundary is enforced, what each agent tool can do, and which guard keeps each rule. The project's own rules win over it, and three questions have no default: the person answers them. Tenet 9 now says what a good guard does: it names the incident that made it, says what to do instead, and fails when it checks nothing. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
feat: a debug skill, a deslop pass, and the same flow on five harnesses
Lutherwaves
changed the base branch from
feat/review-comments
to
feat/framework
November 12, 2026 22:52
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What a person can now do
builder:spec.What changes
shapeis nowspec(the skill folder, the fixture, the manifests, the docs).builder:spec→builder:plan→builder:build→builder:review→builder:ship. The session start says to load a stage's skill when work enters it. A bare name never loads another pack's skill of the same name.Spec:,Spec approved:,Test command:,Plan approved:,Next:), andbuildstops without it.reviewsaves to a fixed path in builder's state folder with aHead:line, andshipreads it there and stops when the head moved.buildstarts at the first task with no commit ingit log. There is no new state file.ship: each tag and each release is its own write. A yes counts only aftershipshowed that write.review: it asks before it runs the build or the tests of a change from an author the person did not name as trusted.builder security baselinesays whether it found a baseline and where.Breaking: load the first stage as
builder:spec.Proven
go test ./...passes. New tests:TestDeferredUnitKeepsItsDimensionOpen(it failed before the fix), andtests/chain_test.go, which fails when a stage stops naming the next one or when two sides of a handoff name different records (checked by breaking two rules on purpose).bash scripts/validate.shprints "all checks passed" (scrub skipped: no denylist).bash tests/test_validate.shexits 0.bash tests/evals/run.sh --checkprints "fixtures ok".SKILL.mdhas 150 lines or fewer.Not proven
Stack
Fourth of four. Base:
feat/review-comments. Design:docs/specs/2026-11-12-chain-design.md.🤖 Generated with Claude Code