Skip to content

docs(solutions): record why skill gates state conditions, not git commands - #1386

Merged
tmchow merged 1 commit into
mainfrom
tmchow/compound-ship-gate-learning
Aug 15, 2026
Merged

docs(solutions): record why skill gates state conditions, not git commands#1386
tmchow merged 1 commit into
mainfrom
tmchow/compound-ship-gate-learning

Conversation

@tmchow

@tmchow tmchow commented Aug 15, 2026

Copy link
Copy Markdown
Collaborator

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.md was 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:

state-machine doc this doc
Cause too few explicit observations — state carried past a transition that invalidated it too much prescription — a mechanism specified where a condition sufficed
Remedy add re-checks at the decision point delete the commands, name the condition
Applies to skills that execute git transitions skills that delegate them

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} and git log <upstream>..HEAD — two of the exact commands that broke in ce-debug. They are correct there, because ce-commit-push-pr executes 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_when block, so its ce-commit / ce-commit-push-pr scope 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 to ce-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:line evidence — 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 test 3101 pass / 0 fail; release:validate clean.

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

  • Model: Claude Code · claude-opus-5[1m]

…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
@cursor

cursor Bot commented Aug 15, 2026

Copy link
Copy Markdown

PR Summary

Cursor Bugbot is generating a summary for commit c3afe97. Configure here.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread CONCEPTS.md
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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@tmchow
tmchow merged commit 7b681b9 into main Aug 15, 2026
5 checks passed
ethras added a commit to ethras/compound-engineering-orca that referenced this pull request Aug 16, 2026
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant