Skip to content

docs: strip the opinions from loop-harness, leaving mechanics (#12) - #18

Merged
SamuelDenani merged 2 commits into
feat/rfc-5-core-principlesfrom
task/12-strip-harness-opinions
Oct 8, 2026
Merged

SamuelDenani merged 2 commits into
feat/rfc-5-core-principlesfrom
task/12-strip-harness-opinions

Conversation

@SamuelDenani

Copy link
Copy Markdown
Owner

What and why

Three of the eight rules in docs/loopwright/loop-harness.md were core
opinions, 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

Edit Detail
Opening paragraph now points at docs/loopwright/principles.md
## Rules of the loop renamed to ## Mechanics
P2 rule (:58-60) deleted
P1 rule (:61-65) replaced by the grill-phase mechanic below
P8 rule (:66) deleted
New ## Opinions section names P1, P2 and P8 with the question each settles
Flow terminal → human merges becomes → merge; P8 owns the actor

The five remaining bullets are mechanics: base branch, closing keywords, draft
until ready, architecture-as-scaffolding, and the boundary-reviewer note.

The new Opinions table names the question, never the answer. A cell
reading "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-rfc holds its spine and drafts in
the 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 it
is not an opinion and does not recreate the duplication.

Verification

Every check from docs/specs/issue-12.md:

Check Result
P2 / P1 / P8 rules gone ✅ all three
Flow terminal updated ✅
bullet count 6 (was 8)
## Mechanics present ✅
## Opinions present ✅
refs to principles.md 2
except / may in the grill bullet 0
prose over 78 chars none

Quality gate: green — passed, 2 warning(s), 6 improvement(s), with
lint 0 errors / 0 warnings. Both warnings are pre-existing and not from this
branch: the typecheck collector is unconfigured, and audit.high is 2
(brace-expansion, js-yaml, both with fixes upstream). No audit.ignore
entry added; .loopwright/baseline.json and .loopwright/config.json
untouched.

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 that
describes 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), and
neither CLAUDE.md's "Do not do these" list nor quality-gate.mjs is 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

SamuelDenani and others added 2 commits October 7, 2026 19:19
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>
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown

✅ Quality gate passed

commit 17b3e9e · baseline ece7656 · 2 warning(s) · 6 improvement(s) 📈

⚠️ 2 warning(s) — not blocking
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 it
  • js-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-baseline and commit .loopwright/baseline.json to 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
SamuelDenani marked this pull request as ready for review October 8, 2026 14:49
@claude

claude Bot commented Oct 8, 2026

Copy link
Copy Markdown

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

@SamuelDenani
SamuelDenani merged commit 83bfcb8 into feat/rfc-5-core-principles Oct 8, 2026
4 checks passed
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