Repository navigation
Conversation
… row (#291, part 2) Once design/interaction-model.md exists, bin/lib/interaction-model-check.sh (sourced by gate-check.sh) reports one FAIL per: - BRD role (top-level actors) with no row in the "Role homes" table; - BRD approval/user-task use case with neither an inbox row nor a stated reason; - design/wireframes/*.html without a valid `Page parameter:` line in its wf-contract block (Module.Entity or "none — <reason>"). Any un-waived finding fails Stage 3. Findings are waived by hand in the register ("Waived artifact interaction-model[/<unit>]: reason"); a project adopted above stage 3 reports ADOPTED. artifact-manifest.tsv gains the interaction-model row (stage 3, report-only), so a missing artifact reports PENDING through the artifact check. checkpoint-design.md asks "who lands where, and how does each role find its work" next to the layout question; brd-to-build-plan.md Step 7 reads wire points from the artifact (the build-plan consumer the manifest row cites). Fixture: tests/wave2/test-interaction-model-gate.sh — base 10 passed/19 failed, head 29/0. Synthetic trees only; no field run yet. Refs #291 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…oles MANUAL, tighter task match, robust wf-contract parse
- Inbox coverage: any line under an "Inbox" heading (table row or -/*/1. bullet)
names a task; the skill's own Step 2 writes inboxes as bullets.
- Roles: BRD actors are not the confirmed role model, so an actor with no
"Role homes" row is MANUAL ("confirm it is a user role, or add a row
`none — <reason>`"), never FAIL; a `none — <reason>` row covers it.
- Task selection: title starts with approve/review/sign-off (after an
optional id prefix), title contains "user task", or mdlRefs names a user
task. "View approval history", "Configure approval thresholds" and
"Disapprove…" are no longer demanded an inbox.
- Wireframes: inline tags stripped before matching (<b>, <code>), block end
found by <div> depth, hyphen and en dash accepted next to the em dash,
CRLF read like LF.
- Wireframe FAILs print one remedy line (add the line, or waive per
wireframe) — the expected path for wireframes drawn before the model.
Fixture: the reviewer's probe trees are cases T3c, T9–T12. 44/0 on head,
27/17 on the previous head 986f4e7, 19/25 on the base branch.
Refs #291
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
4 of 5 tasks
Owner
Author
|
Superseded by #333: the same two commits, replayed onto master after #329 squash-merged. The review history is carried over in #333's body. Generated by Claude Code |
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.
Direct lane
Review status. An independent review returned MERGE-AFTER-FIX. The fixes are in commit
c236e62; see "Changes after review" below.What changed and why (one paragraph):
Part 1 (#317) added
skills/interaction-model.mdand the wireframewf-contractblock, but nothing yet noticed when the artifact was missing or incomplete. This PR adds the facts half and leaves judgement in the skill.bin/lib/artifact-manifest.tsvgains aninteraction-modelrow (stage 3, report-only). Ifdesign/interaction-model.mdis missing, the artifact check reports itPENDINGout loud. This does not block.bin/lib/interaction-model-check.shis sourced bygate-check.shafter the artifact block. Its findings print underInteraction model (stage 3 facts):with denominators:design/wireframes/*.htmlwhosewf-contractblock has no validPage parameter:line.check_stage_3turns any un-waived FAIL into a Stage-3 FAIL. If the only open findings are MANUAL ones, Stage 3 is MANUAL (exit 2).checkpoint-design.mdgains Q1b, "who lands where, and how does each role find its work", asked next to the layout question.brd-to-build-plan.mdStep 7 gets one sentence telling the build plan to read its wire points from the artifact. Without it, the manifest row's build-plan consumer would be a false citation.Changes after review (c236e62):
Inbox coverage. Any line under an "Inbox" heading covers a task: a table row, a
-or*bullet, or a numbered item. The skill's own Step 2 writes inboxes as bullets.Roles. A BRD actor with no Role homes row is now MANUAL. The message names the actor and says: confirm it is a user role, or add a
| <actor> | none — <reason> |row (system actor / merged into another role). Anone — <reason>row counts as covered.Which use cases count as tasks. A use case is checked only when:
UC013:); ormdlRefsnames a user task."View approval history", "Configure approval thresholds" and "Disapprove…" no longer FAIL, and fixture cases assert that.
Wireframe parser.
<b>Page parameter:</b> Sales.Orderand<code>Sales.Order</code>read.wf-contractblock is found by counting<div>depth, not by taking the first</div>.none — <reason>may be a hyphen, an en dash or an em dash, and HTML entities for the dashes are decoded.Projects that write the interaction model mid-build. The Stage-3 check runs again on every gate run. A project that writes
design/interaction-model.mdduring the build therefore gets one FAIL per wireframe drawn before the model existed. That is intended. The FAIL output now ends with one remedy line: add<p>Page parameter: …</p>to the wireframe'swf-contractblock, or waive that wireframe withWaived artifact interaction-model/<file>.html: <reason>.Ambiguities, resolved narrowly:
bin/script reads a role model from PROJECT.md. The only role list anybin/script reads is the BRD top-levelactors, inbin/brd-report.sh, so that is the source. Because it is not the confirmed role model, a missing actor is MANUAL only.RoleandHome page. Inbox lines are any lines under a heading containing "Inbox".UC002covers that id in every BRD. Waivers and FAIL lines use<BRD id>/<UC id>.design/wireframes/*.html, the glob as written.Waived artifact interaction-model: …waives the whole artifact. This is the artifact check's existing hand-written line.Waived artifact interaction-model/<unit>: …waives one finding. The unit is an actor name,<BRD>/<UC>, or a wireframe file name.Waived stage 3does not hide these FAILs, which is consistent withwaiver_applies.PENDING, not a FAIL. This follows the part-2 design rather than the issue's acceptance criterion 4, so projects already past Stage 3 are not suddenly blocked.Field evidence: none yet. This has run only on synthetic project trees, including the independent reviewer's probe trees, reproduced as fixture cases T3c and T9–T12. A field run is still owed on a real project the maintainer chooses.
No client data anywhere in the diff
Size cap: within cap, excluding the fixture and CHANGELOG
Test tier: fixture level, on synthetic trees.
tests/wave2/test-interaction-model-gate.shresults:986f4e7c236e62Existing fixtures on head, all with 0 failed:
test-bug03-gates.shtest-source-sufficiency-gate.shtest-source-ledger.shtest-closeout.shtest-wrong-verdicts.shtest-wireframe-count.shNew instrument, golden input: synthetic, built from the skill shapes and the reviewer's probes, not captured from a real project.
analysis/<name>/.jq, which gate-check already requires; no mac-only tools; CRLF covered. Not run on Git Bash.CHANGELOG line, credited "field retro (Usability/flow defects pass every gate: proposal for a Stage-3 interaction-model deliverable and gate #291)"
Checks run (head
c236e62): all exit 0.bin/render-routing.sh --check: in sync. Baseline is 74,959 words before and after;checkpoint-design.mdis not in the always-on set.bin/check-scripts.shbin/check-portability.shLEAKGUARD_ALLOW_NO_DENYLIST=1 bin/check-no-client-data.shbin/check-pr-discipline.sh origin/integration/2026-10-14Risks:
design/interaction-model.mdcan turn red at Stage 3. A project that writes it mid-build gets one FAIL per legacy wireframe, with the remedy line shown above.none — <reason>row.brd-to-build-plan.mdandcheckpoint-design.mdtriggers the protocol-changed notice at stages 3 and 4.Refs #291
🤖 Generated with Claude Code
https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw