Skip to content

fix(workflow): run No Mistakes only in initialized repos - #62

Merged
edheltzel merged 3 commits into
masterfrom
policy/no-mistakes-opt-in
Nov 10, 2026
Merged

edheltzel merged 3 commits into
masterfrom
policy/no-mistakes-opt-in

Conversation

@edheltzel

Copy link
Copy Markdown
Owner

Intent

The user reviewed the global No Mistakes policy and decided it is not a requirement of every project. The do-* skills that invoke No Mistakes must check whether this repo was already initialized before running it. If the no-mistakes remote exists (or no-mistakes axi shows this repo), run the gate. If not, do not run it, do not ask, do not run no-mistakes init, and publish the normal way.

The binary being installed is not enough. This covers do-commit, do-git-safe-pr-workflow, do-it, and the docs that describe them (README ship table, commit.md, git-safe-pr-workflow.md, it.md).

The user then asked to run cpp and land this change on master. todo.txt was left uncommitted because it conflicts with an unrelated stack (docs/doskills-cutover-status) that already owns that file.

What Changed

  • Run No Mistakes in do-commit, do-git-safe-pr-workflow, and do-it only when the repo is already initialized, as identified by its remote or axi.
  • Publish uninitialized repos normally without initialization prompts; block publication when an initialized repo’s binary or gate is unavailable.
  • Update README and workflow docs, and replace the duplicated research draft with links to current guidance.

Risk Assessment

✅ Low: The bounded instruction changes satisfy the opt-in policy and close the prior missing-binary bypass consistently across the affected workflows and documentation.

Testing

Completed read-only change and execution-surface inspection after GitButler failed. No executable policy tests or rendered UI checks applied; no live behavior or visual evidence was produced.

  • Live validation: ⚠️ no-surface - 0 of 3 scenarios driven live against the product
Scenario Result Live Evidence
Publish from an unenrolled repo normally, even when the No Mistakes binary is installed, without offering initialization. ⏸️ untested no This routing exists only in natural-language skill instructions. Repository inspection found no executable consumer for it. Disposable repositories alone cannot execute these instructions; a replaceme…
Publish from a repo enrolled through its remote or axi registration using the gate. ⏸️ untested no Gate selection is described only in Markdown. No runtime policy interface is supplied, and this phase cannot start another pipeline. Instruction inspection does not prove agent execution.
Attempt publication from an enrolled repo with a missing binary or unusable gate and stop without publishing. ⏸️ untested no The guard and blocked-status propagation are agent instructions without an executable implementation to drive. A source-matching test would violate the test-quality rule; model interpretation requires…
  • Outcome: ⚠️ 2 warnings across 2 runs (4m16s)

Pipeline

Updates from git push no-mistakes

✅ **Intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

🔧 **Review** - 1 issue found → auto-fixed ✅
  • 🚨 skills/global/workflow/do-commit/references/procedure.md:19 - The intent requires: "If the no-mistakes remote exists (or no-mistakes axi shows this repo), run the gate." In an initialized repo where the binary is unavailable on PATH, the combined check fails and the new instruction, "If the check fails, skip this section and publish with but push or git push," explicitly bypasses the gate. The same fallback appears at skills/global/workflow/do-git-safe-pr-workflow/SKILL.md:40 for publication and PR operations; skills/global/workflow/do-commit/SKILL.md:29 covers cp/cpp/land, and skills/global/workflow/do-it/SKILL.md:25 delegates cpp to it. Separate enrollment from tool availability: allow normal publication only when the repo is unenrolled, and report a blocker when an enrolled repo cannot run the gate. Remove the missing-binary fallback case; it exceeds the authorized opt-out.

🔧 Fix applied.
✅ Re-checked - no issues remain.

⚠️ **Test** - 2 warnings
  • ⚠️ this change has no live-validatable surface; proceed without live validation? (0 of 3 scenarios were driven live against the product); Publish from an unenrolled repo without running or offering to initialize No Mistakes, even when its binary is installed.: The change contains natural-language instructions only; there is no executable policy interface to drive. A replacement harness would test invented behavior.; Publish from a repo enrolled through its remote or axi registration using the No Mistakes gate.: Gate selection is described in Markdown consumed by agents, with no runtime implementation changed. This phase also cannot start another pipeline.; Attempt publication from an enrolled repo with a missing binary or unusable gate and stop without pushing or opening a PR.: The guard exists only as agent instructions. Reading those instructions cannot prove execution, and no executable consumer is supplied for live validation.
  • Live validation: ⚠️ no-surface - 0 of 3 scenarios driven live against the product
Scenario Result Live Evidence
Publish from an unenrolled repo without running or offering to initialize No Mistakes, even when its binary is installed. ⏸️ untested no The change contains natural-language instructions only; there is no executable policy interface to drive. A replacement harness would test invented behavior.
Publish from a repo enrolled through its remote or axi registration using the No Mistakes gate. ⏸️ untested no Gate selection is described in Markdown consumed by agents, with no runtime implementation changed. This phase also cannot start another pipeline.
Attempt publication from an enrolled repo with a missing binary or unusable gate and stop without pushing or opening a PR. ⏸️ untested no The guard exists only as agent instructions. Reading those instructions cannot prove execution, and no executable consumer is supplied for live validation.
  • but diff 8cfdf69e196b1de9dfa7d07b1d05c5a3a81274be attempted; GitButler rejected the worktree as a bare repository.
  • git diff --stat 8cfdf69e196b1de9dfa7d07b1d05c5a3a81274be 79fea519b2488ca588bbd105ef52e12e96a95687
  • Read-only diff and manual inspection of all eight changed Markdown files against the authoritative intent and R1 decision.
  • git rev-parse HEAD and git diff --stat 79fea519b2488ca588bbd105ef52e12e96a95687 confirmed the supplied target with no local changes.
  • Inspected the site entry points to distinguish documentation rendering from policy execution.

🔧 No changes applied.
2 warnings still open:

  • ⚠️ Live policy behavior remains unverified. This change updates only Markdown instructions and documentation; no executable policy consumer is supplied. Source assertions cannot prove agent behavior, and live model interpretation is excluded from CI by the test-quality rule. A human must decide whether to proceed without live validation.
  • ⚠️ this change has no live-validatable surface; proceed without live validation? (0 of 3 scenarios were driven live against the product); Publish from an unenrolled repo normally, even when the No Mistakes binary is installed, without offering initialization.: This routing exists only in natural-language skill instructions. Repository inspection found no executable consumer for it. Disposable repositories alone cannot execute these instructions; a replacement script would test invented behavior.; Publish from a repo enrolled through its remote or axi registration using the gate.: Gate selection is described only in Markdown. No runtime policy interface is supplied, and this phase cannot start another pipeline. Instruction inspection does not prove agent execution.; Attempt publication from an enrolled repo with a missing binary or unusable gate and stop without publishing.: The guard and blocked-status propagation are agent instructions without an executable implementation to drive. A source-matching test would violate the test-quality rule; model interpretation requires a separate development-only evaluation.
  • Live validation: ⚠️ no-surface - 0 of 3 scenarios driven live against the product
Scenario Result Live Evidence
Publish from an unenrolled repo normally, even when the No Mistakes binary is installed, without offering initialization. ⏸️ untested no This routing exists only in natural-language skill instructions. Repository inspection found no executable consumer for it. Disposable repositories alone cannot execute these instructions; a replaceme…
Publish from a repo enrolled through its remote or axi registration using the gate. ⏸️ untested no Gate selection is described only in Markdown. No runtime policy interface is supplied, and this phase cannot start another pipeline. Instruction inspection does not prove agent execution.
Attempt publication from an enrolled repo with a missing binary or unusable gate and stop without publishing. ⏸️ untested no The guard and blocked-status propagation are agent instructions without an executable implementation to drive. A source-matching test would violate the test-quality rule; model interpretation requires…
  • but show 79fea519b2488ca588bbd105ef52e12e96a95687 — unavailable because GitButler rejects the gate repository as bare.
  • git diff 8cfdf69e196b1de9dfa7d07b1d05c5a3a81274be 79fea519b2488ca588bbd105ef52e12e96a95687 — read-only inspection of all changed instructions and documentation.
  • Inspected .agents, scripts, .github, and site configuration for an executable policy consumer.
  • git status --short — confirmed no testing changes remained.
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

- Check the no-mistakes remote before do-commit, do-it, and the PR workflow
- A repo that never ran init publishes the normal way

@pullfrog pullfrog 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.

✅ No new issues found.

Reviewed changes — Reviewed the enrollment-based publication instructions and matching documentation across all nine changed files; validation was source inspection, not live agent execution.

  • Enrollment routing: do-commit and do-git-safe-pr-workflow require repository enrollment, not merely an installed binary, before invoking No Mistakes.
  • Blocked publication: Enrolled repositories stop when the binary or gate is unavailable, and do-it propagates the blocked result; unenrolled repositories publish normally without initialization prompts.
  • Documentation: README and workflow pages reflect the routing, and the duplicated research draft now links to current guidance.

Pullfrog  | View workflow run | Using gpt-6.1-sol | 𝕏

@edheltzel
edheltzel merged commit af85e07 into master Nov 10, 2026
2 checks passed
@edheltzel
edheltzel deleted the policy/no-mistakes-opt-in branch November 10, 2026 17:46
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