Skip to content

RLCR: Surface Enumeration Requirement and Partial-Fix Escalation for Cross-Cutting Criteria #193

Open

Description

@new-TonyWang

Context

Observations from an RLCR session (4 rounds, 6 acceptance criteria). Fully sanitized.

Core Pattern

One criterion involving cross-cutting behavioral changes (hiding content across multiple output surfaces) consumed 4 of 5 rounds despite being declared complete each time. The implementer fixed only reviewer-cited locations rather than performing exhaustive surface audits, creating a whack-a-mole cycle.

Suggestions

1. Require Surface Enumeration Before Implementation

For criteria that involve hiding/showing/transforming content across multiple output formats, require the implementer to produce a complete list of all affected rendering paths before writing code. Reviewer validates the list first.

2. Replace Premature Completion Claims with Confidence Levels

Instead of "Remaining Items: None", require confidence assessment: "High — all N surfaces verified" vs "Medium — verified plan-cited surfaces only". This creates honest reviewer signal.

3. Escalate After Two Partial-Fix Rounds

If the same criterion needs fixes in 3+ consecutive rounds, the reviewer should stop providing specific locations and instead require the implementer to submit a full audit. Breaks the reviewer-as-scoper dependency.

4. Strengthen Negative Testing Protocol

Require "assert X is absent from every output format" testing, not just presence checks. This would catch gaps the reviewer finds manually.

5. Tighten Plan Language for Cross-Cutting Concerns

AC descriptions for behavioral rules should explicitly enumerate every output surface, not use vague scope like "across outputs".

6. Enforce Recorded Lessons via Checklists

When a process lesson is recorded, convert it to a mandatory checklist item for subsequent summaries. Simply recording a lesson without enforcement is insufficient — demonstrated by a lesson in Round 2 failing to prevent gaps in Rounds 3-4.

Impact

Estimated 3 excess rounds (60% overhead) in a 5-round session. These suggestions could reduce similar cycles by 50-75%.

Activity

  1. jhinpan commented on Jun 16, 2026

    @jhinpan

    Strong +1 from an independent RLCR session in a very different domain (GPU kernel optimization, ~8 build/review rounds). We hit your exact core pattern: a single change to a dispatch/compatibility surface produced three consecutive code-review rounds that each fixed one edge of the same bug class (an unexpected keyword form → an explicit-null keyword form → a positional-argument form). Your suggestions 1 (surface enumeration), 3 (escalate after two partial-fix rounds), 4 (negative-test the absence/all-forms), and 6 (enforce recorded lessons) would each have collapsed those three rounds into one.

    Two concrete amplifications from the kernel-dispatch flavor of this:

    • Surface enumeration should include the full call contract of the target path, not just the output surfaces. Our regressions were all "the alternate code path the gate re-routes to has a narrower accepted-parameter contract (keyword set + positional arity, including shared trailing params) than the original path." A required step of "enumerate the target's accepted parameters and add a no-execution unit test of the routing predicate for every caller form" would have caught all three at build time instead of across three review rounds.
    • Lessons enforcement (your Extract hardcoded prompts into template system #6) is the highest-leverage fix. Our per-round notes literally said "promote this lesson if it recurs" — and it recurred three times and was still never promoted, because promotion was discretionary. Auto-promotion on the 2nd occurrence (detectable from the per-round notes) would make the mechanism fire exactly when it matters.

    We also saw three findings that I don't think are covered here or in the other open methodology issues; filing them as a separate focused issue and will cross-link. Thanks for writing this up clearly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions