Skip to content

obligation-check.sh: LOOK staleness reads the FIRST VALID AT in a report, so a review file with dated addenda goes STALE #155

Closed

Description

@MendixMau

What happens

bin/lib/obligation-check.sh reads the report's VALID AT: <hash> with head -c 8000 | grep -oiE 'VALID AT…' | head -1. It does this twice: _ob_stale (~l.248) and the proof check (~l.305). Both take the first stamp in the first 8000 bytes.

A project that keeps one dated review file and appends an addendum per build row, each with its own VALID AT, is judged by the headline's original stamp. After later model commits the LOOK obligation reports STALE, although every page was looked at again after its last change.

Evidence (card-disbursement requirements-driven build, 2026-09-26)

  • gate-check.sh <p> 5 printed "Obligation look STALE: … valid-at , 10 model commit(s) since". Every page in the report had been re-looked in three dated addenda further down the same file.
  • Per page, the page's last model change was checked against its latest shot; one "later change" was comments only.
  • The workaround ran into the proof rule next:
    1. The project added a report-level VALID AT: <newest> to the headline, with a written justification, and renamed the original stamp "First true at".
    2. That tripped the proof rule: every PROOF-OF-LOOK: line anywhere in the file must cite a shot newer than the (single) stamp, so the older rows' proof lines FAULTed ("screenshots older than VALID AT").
    3. The project re-shot all pages on the current commit, kept only current PROOF-OF-LOOK: lines, and turned the older ones into plain "earlier (superseded)" lines.
    4. After that, look went 3 of 4 discharged.

Suggested fix (pick one, and say it in module-review.md)

  • Section-aware: read the newest VALID AT (by commit time, not position). Check each PROOF-OF-LOOK: line against the stamp of the section it sits in. Staleness is per page: a page is stale when its latest proof predates the page's last model change.
  • One report per pass: module-review.md says "one LOOK report per pass, never addenda", and the check warns (not FAULTs) when a file holds more than one VALID AT, naming the rule.

The first matches how people actually keep review files. The second is a one-line guard plus a skill sentence. Either needs captured golden reports of both shapes and the obligation fixtures.

Files

  • bin/lib/obligation-check.sh: _ob_stale, _ob_look_proof_broken
  • skills/module-review.md: stage 5 report shape

Activity

  1. added 3 commits that reference this issue on Oct 8, 2026
  2. MendixMau commented on Oct 14, 2026

    @MendixMau
    OwnerAuthor

    Fixed by #321, which landed on master in the integration squash #329 (commit 31e90ae) after independent review. Closing; reopen if it still reproduces on master.


    Generated by Claude Code

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions