docs(solutions): record why skill gates state conditions, not git commands - #1386
Conversation
…mands Captured from PR #1385, where one ship gate in ce-debug went through six revisions across nine reviewed heads and every revision was wrong for some ordinary git configuration — a wrong proxy for a clean tree, two wrong commit ranges, `@{u}` on a branch with no upstream, and local refs where the local branch was itself ahead of the remote. Across all of it no reviewer ever found the gate's intent unclear; every finding was a prescribed command failing in a configuration nobody had enumerated. The learning draws the boundary the existing git-workflow state-machine doc never stated: prescribe a mechanism when the skill owns that mechanism, state a condition when another skill owns it. That doc was cited against the simplification twice during review, and its own section 3 prescribes two of the commands that broke here — correct in `ce-commit-push-pr`, which executes the transitions, wrong in a skill that only decides whether to hand off. Also adds the four vocabulary terms the gate turns on: offered work, fix-owned files, issue of record, and residual. Claude-Session: https://claude.ai/code/session_015eproCfjCz2WZdynWFwGiT
PR SummaryCursor Bugbot is generating a summary for commit c3afe97. Configure here. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c3afe97ae2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| Later phases link it rather than opening a second record for the same bug elsewhere, and never ask whether to. Discovering the project's own tracker serves reading prior work, not establishing a new home. An input carrying no such reference simply has none, which is an ordinary state rather than a gap to fill. | ||
|
|
||
| ### Residual | ||
| A review finding a run accepted or deferred rather than fixed, which must reach a durable sink before the run reports itself done — a section in the pull request body, or a ticket in the project's tracker. A finding that lives only in the session is lost when the session ends, so an accepted residual blocks a merge-ready claim until it is recorded somewhere a human will find it. |
There was a problem hiding this comment.
Scope residual to the workflow that uses this meaning
Because this glossary defines shared repository vocabulary, this definition conflicts with established uses of “residual”: skills/ce-doc-review/references/review-output-template.md:85-87 defines residual concerns as unconfirmed, non-actionable observations rather than accepted/deferred findings, and skills/ce-debug/references/post-fix-handoff.md:19 permits a committed residual-findings file when neither a PR nor tracker is available. Future authors following this entry would therefore misclassify review output and omit a supported durable sink; qualify it as the ce-debug handoff meaning or reconcile it with the existing contracts.
AGENTS.md reference: AGENTS.md:L73-L73
Useful? React with 👍 / 👎.
* fix(ce-commit-push-pr): root PR stacks on the parent PR the user named (EveryInc#1365) * fix(ce-babysit-pr): decode gh output as UTF-8 on Windows (EveryInc#1368) * fix(ce-prototype): cover decisions settled by seeing, not just driving (EveryInc#1369) * perf(tests): cut suite wall time by splitting the largest test file (EveryInc#1370) * fix(tests): stop the cross-model routes test reading the working tree (EveryInc#1371) * fix(ce-doc-review): ask only where a real choice exists, batch the rest (EveryInc#1373) * chore(orca): re-pin upstream provenance baseline to 421a337 Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ce-doc-review): align Orca ownership wording with Apply routing Co-authored-by: Cursor <cursoragent@cursor.com> * feat(ce-prototype): add a seeing-mode craft floor and durable storage (EveryInc#1374) * fix(ce-pov): stop the panel guessing the cross-model host argument (EveryInc#1375) * chore(cross-model): pin the Grok peer to 4.6 (EveryInc#1376) * docs(skills): rewrite user skill pages for accuracy and clearer use (EveryInc#1377) * fix(commit): append known plan unit ids to commit subjects (EveryInc#1379) * fix(ce-work): stop sandboxed workers committing in linked worktrees (EveryInc#1382) * fix(ce-doc-review): edit HTML plans in native format (EveryInc#1381) * fix(ce-code-review): cover adversarial after quota or auth no-review (EveryInc#1380) * fix(skills): correct a rejected dispatch instead of spending the fallback (EveryInc#1383) * fix(ce-compound): find Claude sessions started outside the repo root (EveryInc#1378) * ci(windows-native): retry peer-job-runner smoke on ctypes flake (EveryInc#1384) * fix(ce-debug): stop asking at the handoff, stop shipping unoffered work (EveryInc#1385) * docs(solutions): record why skill gates state conditions, not git commands (EveryInc#1386) * fix(skills): drop the residual-findings record file for real sinks (EveryInc#1387) * fix(ce-doc-review): run the cross-model pass when CROSS_MODEL_PEERS is unset (EveryInc#1389) * fix(ce-proof): sync with current Proof v3 contract (EveryInc#1390) * fix(skill-authoring): make goal-first the default when authoring and reviewing skills (EveryInc#1391) * fix(cross-model): let reviews run on Fable and pin model/effort from CE config (EveryInc#1392) * docs(cross-model): point superseded peer benchmarks at the luna/xhigh decision (EveryInc#1393) * fix(cross-model): discover the Codex.app-bundled codex CLI and name the peer-CLI requirement (EveryInc#1395) * feat(cross-model): add cross_model_review_mode checkout egress gate (EveryInc#1396) * fix(ce-compound-refresh): compare knowledge-track learnings against guidance they name (EveryInc#1399) * docs(solutions): capture the named-guidance contradiction-check learning (EveryInc#1400) * fix(ce-compound): prefer the repo's own frontmatter vocabulary over the Rails-era enums (EveryInc#1394) * fix(ce-work): stop asking about branches before starting work (EveryInc#1397) * fix(review): answer covered cases on skill prose with the condition, not a patch (EveryInc#1401) * fix(scratch): fall back to $TMPDIR when /tmp cannot host the scratch root (EveryInc#1398) * feat(ce-skill-work): repo-local skill for authoring, editing, reviewing, and responding to review on skills (EveryInc#1402) * fix(ce-pov): reject non-final peer positions instead of folding them in (EveryInc#1403) * feat(manifest): add Agent Plugins v1.0.0 manifest support (EveryInc#1345) * chore: release main (EveryInc#1354) * fix(ce-work): run cross-model verification on warm checkouts (EveryInc#1404) * fix(orca): reconcile upstream skill contracts * fix(orca): preserve additive Codex session roots --------- Co-authored-by: Trevin Chow <trevin@trevinchow.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Summary
A learning captured from #1385, where one decision gate in
ce-debug— "does this verified fix go out as a PR?" — was rewritten six times across nine reviewed heads, and every revision was wrong for some ordinary git configuration.The part worth keeping: not one reviewer ever said the gate's intent was unclear. Every finding was a prescribed git command failing in a configuration nobody had enumerated — a branch with no upstream, a local branch ahead of its remote, a branch that already had an open PR. The explanation was never the defect; the mechanism was. The fix was to delete the commands and state the condition, leaving the agent to establish it against the repo actually in front of it.
Why this is not already covered
git-workflow-skills-need-explicit-state-machines.mdwas cited against that simplification twice during review, so the fair question is whether this duplicates it. It does not — the two are close to inverses:Folding them together would have put two opposed causes under one root cause. The boundary neither doc previously stated: prescribe a mechanism when the skill owns that mechanism; state a condition when another skill owns it.
The sharpest evidence is that the state-machine doc's own §3 prescribes
@{u}andgit log <upstream>..HEAD— two of the exact commands that broke ince-debug. They are correct there, becausece-commit-push-prexecutes the transitions and handles the no-upstream case. Copied into a skill that only decides whether to hand off, they broke.Follow-up this surfaces
That doc reads broader than its evidence and wants a scope caveat: its title and prevention lines say "Git/GitHub skills" with no ownership qualifier, and it carries no
applies_whenblock, so itsce-commit/ce-commit-push-prscope never reaches a reader who arrives by grep. Two independent reviewers reading it as a general mandate is the demonstration, not a hypothetical. Deliberately not done here — cross-doc edits belong toce-compound-refresh.Vocabulary
Four terms the gate turns on, each verified against how they are actually used in the tree: offered work (in an open PR, as against merely pushed or merely present), fix-owned files, issue of record, residual.
Validation
Grounding validation ran as an independent pass: 15 claims checked against the tree, 12 verified with quoted
file:lineevidence — and it caught two count errors in the author's own account of events. The draft said five of six revisions were wrong when the enumeration shows all six, and "ten review rounds" when the PR record shows nine reviewed heads. Both are corrected to what the record substantiates.bun test3101 pass / 0 fail;release:validateclean.Related: #1385
Security Disclosure
No security-relevant changes — documentation only. The doc describes a shell-injection finding from #1385 as supporting evidence; nothing here changes executable behavior.
Agent Disclosure
Claude Code · claude-opus-5[1m]