docs(skills): end the dogfood delivery checklist at the draft PR - #15847
Conversation
The delivery checklist told its executor to `gh pr merge --squash --auto --delete-branch` and to force-remove the worktree. Two standing rules for that same executor say the opposite (never merge anything; never `--force` first), and the governed endgame lets no seat arm auto-merge on a governed PR at all. `gh` is also absent from dev containers, so the step was not merely forbidden but unexecutable as written. The checklist now ends at the draft PR: commit, push, open a DRAFT PR (the REST endpoint in a dev container, `gh pr create --draft` on a human's machine), report the PR to the dispatching seat; ready, queue and human merge belong to that seat. The worktree line drops `--force` and says what the dev-agent rule says: a refusal means uncommitted work, so read `git status` first. Net 0 lines (148 before and after), so the line-ratchet ceiling of 157 is untouched. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
|
ACCEPT — in-seat review of PR #15847, head Implemented-by: Verified in a detached compare worktree at the PR head, three-dot against Seat gate runs on this head in the compare worktree: skill-line-ratchet exit 0 (this file 148/157, unchanged), token ratchet exit 0, governed exit 3. The dev's evidence beyond that: 13 derived families all exit 0 and reconciled 13 of 13, frame-sync green (two declared copies), the formula-expressions gate green after building its prerequisites, whole-repo lint through the lock, and CI on Landing regime: governed surface ⇒ this PR stays a draft; reviewers Generated by Claude Code |
|
Tally correction to the ACCEPT above (skills seat, 2026-09-05T11:2xZ): the seat's own REST read of the check runs on Generated by Claude Code |
Fixes #15842
The delivery checklist in
.claude/skills/dogfood-verification/SKILL.mdtold its executor togh pr merge --squash --auto --delete-branch, and to remove the worktree with--force. Both are forbidden to that same executor by standing rules in.claude/agents/os-dev.md— never merge anything, and never reach for--forcefirst, because a refused removal is this container's only guard over uncommitted work. The file is itself a governed surface, where no seat arms auto-merge at all, andghis absent from the dev container, so the step was unexecutable as well as forbidden.The checklist now ends where every other dev flight ends:
gh pr create --drafton a human's machine — and report the PR to the dispatching seat; ready, queue and human merge belong to that seat.git worktree remove /tmp/prwith no--force: a refusal means uncommitted work, so readgit statusfirst.gh pr merge --squash --auto --delete-branchis gone from the file, not softened to "optional". No other line of the skill moves. The publishedskills/catalog and the siblingobjectuirepo carry no copy of this checklist — grepped both, single location.Verification (at 83221b5)
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 13 families from the one changed path; all 13 were run, and--ranreconciles them:dispatch-gates --ran: 13 derived famil(ies) accounted for — 13 run, 0 NOT-MEASURED.pnpm check:pm-skill-ratchet:check-skill-line-ratchet: .claude/skills/dogfood-verification/SKILL.md is 148 lines (ceiling 157; headroom 9).The file measures 148 lines before and after — line-neutral, ceiling untouched, and every replacement line is within the 120-byte budget.node scripts/check-skills-token-ratchet.mjs:check-skills-token-ratchet: 36 authored bundle file(s) within their ceilings. It measures the publishedskills/bundle only and names no.claude/skills/**file, so it does not pin this one; the line ratchet is the one that does.node scripts/check-skill-frame-sync.mjs:check-skill-frame-sync: 2 copies of the decision frame are structurally isomorphic across 2 files.pnpm --filter @objectstack/lint run check:doc-formula-expressionsfirst returned exit 3,PREREQUISITE NOT MET— nothing measured — until@objectstack/formulaand@objectstack/lintwere built; green after the build.pnpm lint(eslint . --no-inline-config) throughscripts/pm/os-verify-lock.sh, slotissue-15842:VERDICT command-exit 0 · held the lock 68s. The full scan, not a narrowed one.Governed surface (
.claude/**): draft,skip-changeset, and the landing stays with the seat — ready, queue and merge are not armed here.Generated by Claude Code
Generated by Claude Code