Repository navigation
docs: strip the opinions from loop-harness, leaving mechanics (#12) - #18
Merged
SamuelDenani merged 2 commits intoOct 8, 2026
Merged
Conversation
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The three rules that are core opinions now live in principles.md, so stating them here too made two sources of truth for one rule. Replaced in place by a reference: the section is renamed to Mechanics, a new Opinions section names P1, P2 and P8 with the question each settles, and the opening paragraph points at the doc. The grill-phase fact that was an exception to P1 is re-homed as a descriptive mechanic. The Flow terminal drops the actor, since P8 owns it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
✅ Quality gate passedcommit
|
| Check | Baseline | Now | Verdict | |
|---|---|---|---|---|
| TypeScript errors | — | n/a | collector not configured — see docs/loopwright/quality-gate.md | |
| High advisories | 0 | 2 | regressed 2 (tolerance 0) |
High advisories
brace-expansion— high: brace-expansion: Quadratic-time expansion of the{a},b}rewrite causes CPU denial of service · fix available — upgrade itjs-yaml— high: js-yaml: maxTotalMergeKeys does not limit CPU use for empty merge sources · fix available — upgrade it
📊 All metrics
| Check | Baseline | Now | Verdict | |
|---|---|---|---|---|
| ✅ | Failing tests | 0 | 0 | holding |
| ✅ | Failing test suites | 0 | 0 | holding |
| TypeScript errors | — | n/a | collector not configured — see docs/loopwright/quality-gate.md | |
| ✅ | Lint errors | 0 | 0 | holding |
| ✅ | Lint warnings | 0 | 0 | holding |
| ✅ | Critical advisories | 0 | 0 | holding |
| High advisories | 0 | 2 | regressed 2 (tolerance 0) | |
| ✅ | Suppressed advisories | 0 | 0 | holding |
| 📈 | Line coverage | 84.67% | 85.01% | improved 0.34% |
| 📈 | Branch coverage | 78.93% | 79.44% | improved 0.51% |
| 📈 | Function coverage | 89.65% | 89.71% | improved 0.06% |
| 📈 | Statement coverage | 85.01% | 85.41% | improved 0.40% |
| 📈 | Duplicated code | 0.90% | 0.88% | improved 0.02% |
| ✅ | Highest function complexity | 14 | 14 | holding |
| 📈 | Average function complexity | 1.81 | 1.80 | improved 0.01 |
| ✅ | Oversized files | 0 | 0 | holding |
| ✅ | Skipped tests | 0 | 0 | holding |
| ✅ | Focused tests (.only) | 0 | 0 | holding |
| ✅ | Tests with no assertion | 0 | 0 | holding |
| ✅ | Coverage-ignore hints | 1 | 1 | holding |
| ✅ | Type suppressions (@ts-ignore etc.) | 2 | 2 | holding |
| ✅ | Inline lint suppressions | 2 | 2 | holding |
| ✅ | Empty catch blocks | 0 | 0 | holding |
📈 This PR improves 6 metric(s). Run
node .loopwright/scripts/quality-gate.mjs --update-baselineand commit.loopwright/baseline.jsonto lock the gain in.
Generated by .loopwright/scripts/quality-gate.mjs · reproduce locally with node .loopwright/scripts/run-report.mjs --all && node .loopwright/scripts/quality-gate.mjs · full reports are in the workflow artifacts.
SamuelDenani
marked this pull request as ready for review
October 8, 2026 14:49
Code reviewNo issues found. Checked for bugs and CLAUDE.md compliance. |
This was referenced Oct 8, 2026
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 and why
Three of the eight rules in
docs/loopwright/loop-harness.mdwere coreopinions, and
docs/loopwright/principles.md(added by #11) now states them.Two lists of rules is two sources of truth, and the one nobody updates starts
lying — so this replaces each of the three in place with a reference.
Part of #12.
What changed, all in one file
docs/loopwright/principles.md## Rules of the loop## Mechanics:58-60):61-65):66)## OpinionssectionFlowterminal→ human mergesbecomes→ merge; P8 owns the actorThe five remaining bullets are mechanics: base branch, closing keywords, draft
until ready, architecture-as-scaffolding, and the
boundary-reviewernote.The new
Opinionstable names the question, never the answer. A cellreading "the human merges by default" would be principle text, which is exactly
the duplication this PR removes.
The P1 exception is re-homed, not deleted. The old P1 bullet carried
"except the grill phase itself, whose task spine and drafts are
session-scoped". P1 admits no exception, so that clause had nowhere to live.
It is now a descriptive mechanic —
/grill-rfcholds its spine and drafts inthe session, neither is committed, a crashed grill restarts — with no
except,no
may, and no mention of P1. It asserts nothing about what should be, so itis not an opinion and does not recreate the duplication.
Verification
Every check from
docs/specs/issue-12.md:Flowterminal updated## Mechanicspresent## Opinionspresentprinciples.mdexcept/mayin the grill bulletQuality gate: green —
passed, 2 warning(s), 6 improvement(s), withlint 0 errors / 0 warnings. Both warnings are pre-existing and not from thisbranch: the
typecheckcollector is unconfigured, andaudit.highis 2(
brace-expansion,js-yaml, both with fixes upstream). Noaudit.ignoreentry added;
.loopwright/baseline.jsonand.loopwright/config.jsonuntouched.
How this PR was produced, and what is missing
This task was blocked twice by the auto-mode permission classifier
(
[Instruction Poisoning]) — reasonably, since an agent editing the file thatdescribes the constraints agents operate under is indistinguishable, without
project context, from an agent stripping its own guardrails. The edit is
de-duplication: all three claims live in
principles.md(P2, P3, P8), andneither
CLAUDE.md's "Do not do these" list norquality-gate.mjsis touched,so the net constraint on any future agent is unchanged.
The edits landed after the user authorised them explicitly, applied through the
dedicated edit tool rather than a shell script.
No local branch review was run. Generating the diff for a reviewer was
itself denied, and the denial covers pursuing the same read through another
tool or a sub-agent. So this PR carries the gate result and the per-check
verification above, and relies on the Claude review workflow for the
fresh-context read. Reviewers should know the diff has had no second pair of
eyes before CI.
🤖 Generated with Claude Code