Skip to content

feat(land): a gate loosened so the diff passes needs review, like a weakened test - #159

Merged
mgratzer merged 2 commits into
mainfrom
claude/land-loosened-gate-157-3e7460
Nov 10, 2026
Merged

mgratzer merged 2 commits into
mainfrom
claude/land-loosened-gate-157-3e7460

Conversation

@mgratzer

@mgratzer mgratzer commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

A PR that loosens a gate so its own diff passes (raises a budget, adds an exemption, ignore entry or suppression) now needs review by name, the way a weakened test already does: the rubric's Tests check becomes Tests and gates.

Notes

  • Judgment calls (HITL Issue, run unattended): the gate clause says "moved so more passes" and "tightening" where the Issue said "raises" and "lowering", because for a floor (a coverage minimum) lowering is the loosening; the fresh-context review caught this. Otherwise the Issue's wording, shortened.
  • Words: the rubric grows by 54 words (957 to 1011). The cut is the Peer review note (8 words). The review rubric has no test-weakening wording to point here, so the Issue's second candidate didn't apply.
  • lens/hooks/demo.ts renames the line in its sample ## Risk sections; the lens parses check lines generically.

Exercised

forge-land's judge, read-only, from a snapshot of this branch (new) and of its base (old), on draft sandbox PRs (mgratzer/forge-e2e-sandbox) built for this, each based on a fixture branch holding the gate:

  • new, sandbox#57 (raises maxLinesPerFile 15 to 20 for the script it grows) → needs review, Tests and gates: gates.json raises maxLinesPerFile from 15 to 20 ..., Where to look gates.json:2
  • old, sandbox#57 → needs review, under Tests as "loosens the assertion", since the gate there is a test reading the budget
  • new, sandbox#58 (adds its new script to an exempt list) → needs review, Tests and gates: ... bin/titles.js added to the exempt list, Where to look gates.json:5
  • old, sandbox#58 → needs review, under Tests ("weakened")
  • new, sandbox#60 (adds its new script to .size-ignore, read by a lint step, no test involved) → needs review, Tests and gates: gate loosened: .size-ignore gains the entry bin/titles.js, Where to look .size-ignore:1
  • old, sandbox#60 → needs review, but Tests: ok: caught only by the judgment test
  • new, sandbox#59 (lowers the budget 15 to 10, removes an exemption) → low risk, Tests and gates: ok (tightened)
  • old, sandbox#59 → low risk, Tests: ok
  • feat(address-pr-feedback): draft replies for colleagues, assess mode, several reviewers #57, style(skills): drop em dashes from skill prose and docs #59 and #60 new ran on the final wording; feat(review): behavior over mocks, deletable code, and diff size #58 new on the commit before it (direction wording only).
  • Not exercised: a lowered floor (coverage minimum); the old base judge caught every loosening too, by stretching Tests or the judgment test, so this change makes the catch a named check rather than adding one the base never made.
  • Try it: the forge-land read-only command in docs/testing.md ("Exercise a Skill Change") on sandbox#60, with each snapshot.

Plan

Plan as first made (no approver: started unattended by another session with --guard)
  • Durable decisions: widen the existing Tests row of skills/_shared/risk-rubric.md into Tests and gates, no new row, module or variant. Design: interface is the rubric row and its ## Risk line; nothing new is hidden; the decision already lives in the Tests row.
  • Phase 1: rewrite the row and the ## Risk line per the Issue, sync shared copies, run scripts/check-skills.sh; update the lens demo's sample ## Risk lines.
  • Phase 2: exercise forge-land's judge on sandbox PRs that raise a budget, add an exemption, and only tighten, against a base snapshot.
  • Files: skills/_shared/risk-rubric.md and its synced copies, lens/hooks/demo.ts.
  • Conflicts: none (no open PRs; Issue 156 edits skills/_shared/review-dimensions.md, left alone).
  • Out of scope: the review rubric, other checks.

Deviations (as of 14eb2b3):

  • The gate clause says "moved so more passes" and "tightening" instead of the Issue's "raises" and "lowering": for a floor such as a coverage minimum, lowering is the loosening (fresh-context review finding)

Closes #157

Risk

Verdict: needs review, judged on 14eb2b3

  • Peer review: none configured
  • Size: 70 counted lines (0 excluded; the rubric copies are skill prompts, which AGENTS.md calls runtime) → ok
  • Always-review paths: none
  • Tests: ok
  • Exercise: ok
  • Plan: ok
  • Design: ok
  • HITL: feat(land): a gate loosened so the diff passes needs review, like a weakened test #157 shipped without an approved Plan, judgment calls listed
  • Trust: ok
  • Deployment: none
  • What the checks would miss: the change alters what forge-land may call low risk, a policy contract for every unattended merge. The "moved so more passes" wording for a lowered floor (coverage minimum) was not exercised. The shortened Peer review note drops "neither hits nor clears anything by itself", and no exercise covered that.

Where to look (needs review only)

  • PR body, Notes, Judgment calls: feat(land): a gate loosened so the diff passes needs review, like a weakened test #157 is HITL and the Plan had no approver. Do you accept "moved so more passes" and "tightening" in place of the Issue's "raises" and "lowering"?
  • skills/_shared/risk-rubric.md:13: Gates are judged only "for code this diff adds or changes". Will a judge miss a budget raised in the same PR for code that the diff grows only indirectly, or will it flag unrelated config churn?
  • skills/_shared/risk-rubric.md:54: Does "a record, not a check" still stop a judge from treating a named peer reviewer as clearing the verdict? The removed clause said that outright.
  • lens/hooks/demo.ts:22: The lens demo now prints Tests and gates:. Do the lens views that show the Risk section still match a renamed check line, and do they still work on older PRs that say Tests:?

@mgratzer
mgratzer merged commit 7bf3040 into main Nov 10, 2026
2 checks passed
@mgratzer
mgratzer deleted the claude/land-loosened-gate-157-3e7460 branch November 10, 2026 23:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(land): a gate loosened so the diff passes needs review, like a weakened test

1 participant