docs(#152): reconcile blocked-resolution review findings - #153
Conversation
PR #138 left three Medium contract gaps in the blocked-resolution path. A planned add-requirement dependency was described as a same-state blocked work-item write, a superseded submission left its Gate approval unused, and the golden replay returned live supersede status instead of the frozen original result. Keep the planned dependency on the resolution-submission record and have resolve-block's full refresh observe it, with no blocked-to-blocked mutation. Revoke the prior approval on supersede, require resolve-block to name the active submission, and replay the original applied resource fields on exact-key retry. Sweep the same-round Low findings: delegated-principal targets, refine approval consumption, matrix field names, Adapter API bullets, and the git-integration em dash. Closes #152
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Repository: redhat-et/ProtoBot/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
|
🤖 Review · Commit: |
ReviewFindingsLow
All three Medium findings and the two Low findings from the prior review round are resolved in this commit:
One sub-agent (intent-coherence) raised three scope-creep findings (the Previous runReviewFindingsMedium
Low
Next steps:
Previous run (2)ReviewFindingsMedium
Low
Next steps:
Previous run (3)ReviewFindingsMedium
Low
Labels: Docs-only spec change to the WMS Adapter blocked-resolution lifecycle contract and its Validation Rules, matching this repos convention of a documentation label plus the owning component labels. Next steps:
|
|
🤖 Finished Review · ✅ Success · Started 9:00 PM UTC · Completed 9:21 PM UTC Commit: Runtime: pi · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $5.81 |
- Pin work-item dependencies unchanged and incomplete planned dependency PRECONDITION_FAILED in golden fixture. - Include revoked approvals in rejected status list for submit-resolution and acknowledge, and exercise revoked submission in fixture. - Clarify submit-resolution delegated principal match against configured Materializer subject and add mismatch fixture test. - Split resolve-block superseded check into independent tests for revoked approval and non-active submission ID. Addresses #153
🔧 Fix agent — iteration 1 (bot-triggered)Addressed all review findings by updating drafting-table-wms.md and the golden fixture drafting-table-wms-golden.jsonl with missing tests for dependencies, incomplete planned dependencies, revoked approvals, delegated principal mismatch, and independent non-active submission validation. Fixed (4):
Disagreed (1):
Tests: passed Decision points
Next steps:
|
|
🤖 Finished Fix · ✅ Success · Started 9:22 PM UTC · Completed 9:34 PM UTC Commit: Runtime: pi · Model: google-vertex/gemini-3.8-flash → gemini-3.8-flash · Effort: high · Cost: $0.65 |
|
Risk Assessment: moderate (2/5) DetailsAnchored re-review: Tier 1 signals are unchanged from the prior round (7 files, 261 lines still in the 100-299 bucket, docs-only, no protected/security/CI/dependency paths, bot author) yielding composite 1.25; fresh Tier 2 analysis shows continued high churn/fix-revert rates and strong change-coupling in these frequently-revised spec files (composite 2.71) but same-day last-modified dates keep the age dimension low; Tier 3 remains low at 1.33 given the well-scoped, same-day, fully-addressed, non-controversial linked issue; the weighted composite (0.50x1.25 + 0.30x2.71 + 0.20x1.33 ~= 1.71) again rounds to 2, so the score stays anchored at moderate with no material change from the prior assessment. Previous runRisk Assessment: moderate (2/5) DetailsTier 1 signals are unchanged from the prior review round (7 files, docs-only, no protected/security/CI/dependency paths, bot author) despite lines growing from 209 to 249, which stays in the same LINES_CHANGED bucket; the one incremental commit since the prior review only touched already-docs paths. Tier 2 remains moderately elevated from high churn/fix-revert counts in frequently-revised spec files. Tier 3 remains low: well-scoped, same-day, non-controversial linked issue. Weighted composite rounds to 2 (moderate), matching the prior round's score. Previous run (2)Risk Assessment: moderate (2/5) DetailsBot-authored, docs-only spec-consistency PR (7 files/209 lines, no protected/security/CI/dependency paths) scores low on Tier 1; moderate git churn in frequently-revised spec files raises Tier 2 slightly; a well-scoped, same-day, non-controversial linked issue keeps Tier 3 low; weighted composite rounds to a moderate risk score of 2. |
|
🤖 Finished Review · ✅ Success · Started 9:35 PM UTC · Completed 10:02 PM UTC Commit: Runtime: pi · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $7.33 |
- Update Escalations steps in components.md to record planned dependency on resolution submission without writing onto blocked work item. - Pin VR-044 in golden fixture: satisfy base work-item dependencies, echo planned dependency on submit result, and assert failed_precondition names planned dependency on resolve-block with dependencies unchanged. - Add contract version marker and contract correction notes in drafting-table-wms.md for resolve-block resolution_submission_id and submission-recorded planned dependency. Addresses #153
🔧 Fix agent — iteration 2 (bot-triggered)Addressed review findings by updating components.md escalations sequence to match the blocked-resolution contract, pinning VR-044 in the golden fixture with satisfied ordinary dependencies and specific planned-dependency failure details, and adding contract version and correction notes in drafting-table-wms.md. Fixed (4):
Disagreed (1):
Tests: passed Decision points
Next steps:
|
|
🤖 Finished Fix · ✅ Success · Started 10:03 PM UTC · Completed 10:18 PM UTC Commit: Runtime: pi · Model: google-vertex/gemini-3.8-flash → gemini-3.8-flash · Effort: high · Cost: $1.44 |
|
🤖 Finished Review · ✅ Success · Started 10:19 PM UTC · Completed 10:40 PM UTC Commit: Runtime: pi · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $5.66 |
- Clarify pre-submission add-requirement preflight payload may carry change_set_id directly to preview planned-dependency check. - Rename document revision header in drafting-table-wms.md to avoid collision with per-work-item contract_version. - Add contract correction note for request.refine approval consumption. Addresses #153
🔧 Fix agent — iteration 3 (bot-triggered)Addressed all review findings by clarifying pre-submission add-requirement preflight payload behavior for planned-dependency checks, renaming the contract version header to avoid terminology conflict with contract_version, and adding a contract correction note for request.refine approval consumption. Fixed (3):
Disagreed (1):
Tests: passed Decision points
Next steps:
|
|
🤖 Finished Fix · ✅ Success · Started 10:41 PM UTC · Completed 10:51 PM UTC Commit: Runtime: pi · Model: google-vertex/gemini-3.8-flash → gemini-3.8-flash · Effort: high · Cost: $0.54 |
Superseded by updated review
Superseded by updated review
|
🤖 Finished Review · ✅ Success · Started 10:52 PM UTC · Completed 11:09 PM UTC Commit: Runtime: pi · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $4.91 |
JohnStrunk
left a comment
There was a problem hiding this comment.
Review
Verdict: Approve
No author-actionable findings. I reviewed the full diff at head 5314619d60eee02753b1c76190fc63c2786570f2, all seven changed files, and the governed specification siblings.
Verified the planned-dependency lifecycle, superseded approval revocation, active submission binding, delegated-principal authorization, idempotency replay fields, and the golden fixture coverage. Cross-document links, terminology, and Adapter API registration are consistent.
Residual boundaries: live CI was not triggered, backend-specific translators are not implemented, and the authoritative successful resolve-block transition remains covered by the Materializer/Validation Rules test suite rather than this fixture.
|
PR #153 (#153) reconciled three Medium findings left unresolved from PR #138's final review round (tracked as issue #152). The agent pipeline ran 4 review rounds and 3 fix iterations between 2026-09-18 20:52 and 23:09 UTC, then the PR sat idle for ~3 days (pure human-attention latency, no review dispute) before a human (JohnStrunk) approved with 'no author-actionable findings' and it merged. Round 1's findings were genuine first-pass gaps in a subtle lifecycle contract (fixture coverage, an omitted status value) — reasonable for a first pass. Round 2 surfaced a more notable miss: Proposals filed |
|
🤖 Finished Retro · ✅ Success · Started 8:13 PM UTC · Completed 8:21 PM UTC Commit: Runtime: claude · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $1.71 |
Add AGENTS.md specification-document rule 5 so review agents search all governed docs under docs/ for stale descriptions of a changed contract, lifecycle, or behavior — not only the files the diff touches. Rule 4 only checks that a modified document covers components.md/overview.md (outward coverage). PR redhat-et#153 left components.md describing a now-prohibited same-state dependency write after other governed docs changed the contract; round 1 missed it. This rule is additive to redhat-et#140 (hierarchy manifest completeness), not a substitute. Note: pre-commit could not fetch remote hook repositories (HTTP 403). Equivalent hooks were run via python scripts/lint.py --files AGENTS.md and passed. Closes redhat-et#163
Summary
Reconciles the three unresolved Medium findings from PR #138's final review round, plus the same-round Low findings that share the blocked-resolution contract.
add-requirementno longer implies a same-stateblockedwork-item dependency write. The planned dependency stays on the resolution-submission record; Materializerresolve-blockobserves it during full refresh and returnsPRECONDITION_FAILEDif it is incomplete.resolve-blockmust name the currently-activeresolution_submission_idand consume only that submission's approval.resolution-replaynow returns the frozen original resource (submission: accepted, revision 1) instead of livesubmission_status: superseded.Sibling Validation Rules, Architecture, User Interaction Flow, and Adapter API text are updated so the hierarchy agrees. The golden fixture also covers superseded-approval
resolve-block, delegated-principal mismatch, and refine approval consumption.Testing
resolution-submit/resolution-replayshare the same resource fields.python scripts/lint.py --fileson all changed files (markdownlint, detect-secrets, end-of-file/trailing-whitespace, skillsaw). All hooks passed.Notes
This is a documentation/spec change. A later fullsend-ai-review pass on this PR should not re-flag the three Medium findings from PR #138.
Closes #152
Post-script verification
agent/152-wms-resolution-findings)9675a8eb16c680b258b71cfbfb97554da71129f3..HEAD)