docs: Sprint Q.3 plan — consume sc-publish develop update - #526
Conversation
Q.3 is scoped as a pure consume-and-verify sprint: re-vendor plugins/sc-publish from sc-publish develop (ce85b4d, includes PR #38's fixes) and confirm sc-compose's install/test/CI surface still passes. sc-compose does not own sc-publish's internal probe/workflow logic; the three residual defects found in PR #38's independent review (pypi build_system branch, GH Release/winget probe fail-open on transient errors) are filed as sc-publish#39/#40/#41 and explicitly out of scope here.
QA Findings UpdateGenerated: 2026-08-19T00:00:00Z Machine Status (JSON){
"sprint": "Q.3",
"task": "PHASE-Q3-PLAN-GATE",
"branch": "sprint/q-3-sc-publish-consume-update",
"commit": "402af1e",
"pr": 526,
"verdict": "FAIL",
"deliverables": {
"complete": 3,
"total": 6,
"percent": 50
},
"findings": {
"blocking": 1,
"important": 2,
"minor": 2
},
"blocking_ids": ["ATM-QA-001"],
"merge_readiness": "blocked",
"merge_reason": "req-qa FAIL with 1 Blocking finding: docs/project-plan.md (the repo's self-declared authoritative release/sprint baseline) has no Sprint Q.3 entry and still states Phase Q is complete via Q.1/Q.2 alone. This reproduces the exact process gap this plan_gate was convened to close. arch-qa PASS (0 blocking/important) on architectural boundary conformance.",
"next_action": "team-lead/sprint author updates docs/project-plan.md and docs/phase-Q/phase-Q-plan.md per ATM-QA-001/002 (and optionally ATM-QA-003/004/005) on this branch, then resubmit for a plan_gate recheck.",
"owner": "team-lead"
}Findings Summary
Blocking Findings
Detailed Findings
arch-qa: PASS, 0 blocking/important. Confirmed: consumer/owner boundary respected (no sc-publish internal logic modification proposed), known upstream defects (#39/#40/#41) correctly routed out-of-tree, exact-target list is a non-expanded subset of the phase plan's consumer-owned-files contract, verification requirements are evidence-based (byte-for-byte diff, real workflow-run URL) not self-certifying, no RULE-012 boundary implications, no ATM_HOME coupling. arch-qa also flagged (non-blocking) that the assignment JSON used Resolved Since Last Pass
Merge Readiness
Next Action
|
- project-plan.md: add Q.3 entry and status (Blocking ATM-QA-001) - phase-Q-plan.md: add Q.3 to sequencing table and acceptance-criteria checklist (Important ATM-QA-002) - sprint-q-3 doc: define the Release Preflight "explicit expected external-service stop" escape clause and give deliverable 4 an exact pytest command tied to the pinned bootstrap venv (Important ATM-QA-003, Minor ATM-QA-004) - sprint-q-2 doc: flip stale status: in_progress to status: complete now that Q.2 is merged (Minor ATM-QA-005) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Final Quality ReportGenerated: 2026-08-19T23:40:00Z Machine Status (JSON){
"sprint": "Q.3",
"task": "PHASE-Q3-PLAN-GATE-R2",
"branch": "sprint/q-3-sc-publish-consume-update",
"commit": "e8397d6",
"pr": 526,
"verdict": "PASS",
"findings": {
"blocking": 0,
"important": 0,
"minor": 0
},
"blocking_ids": [],
"merge_readiness": "ready",
"merge_reason": "Both required reviewers (req-qa, arch-qa) PASS with 0 blocking/important findings; all 5 round-1 findings independently reverified as closed; deliverable completion 6/6 (100%); PR #526 CI fully green (14/14 SUCCESS, mergeStateStatus CLEAN).",
"next_action": "none",
"owner": "none",
"recommendation": "Sprint Q.3's plan is gated PASS. Team-lead may proceed to dispatch Q.3 implementation (the actual plugins/sc-publish re-vendor). Quality-mgr will run a standard implementation QA-1 pass (req-qa, arch-qa, rust-qa-agent, rust-best-practices-agent, rust-service-hardening-agent) once the re-vendor diff lands, and will specifically verify the Required Validation section's commands were actually executed with evidence recorded (byte-for-byte diff, double dry-run exit codes, validate-manifest, Release Preflight run URL or recorded expected stop, pinned-venv pytest run)."
}Validated ScopeRound 2 plan_gate recheck of Sprint Q.3's docs-only plan (re-vendor plugins/sc-publish from sc-publish develop ce85b4d; verify sc-compose's own install/test/CI surface; no sc-publish internal logic modified). req-qa and arch-qa re-reviewed the round-1 fix commit e8397d6 (4 changed files: docs/project-plan.md, docs/phase-Q/phase-Q-plan.md, docs/phase-Q/sprint-q-3-sc-publish-consume-update.md, docs/phase-Q/sprint-q-2-sc-compose-publish-cutover.md) and independently re-verified all 5 round-1 findings (ATM-QA-001..005) against current file content rather than accepting the fix claims at face value. req-qa: PASS, deliverables 6/6 (100%), all 5 findings confirmed closed with file:line evidence. arch-qa: PASS, 0 blocking/important, confirmed no architectural boundary drift introduced by the fix (consumer/owner boundary intact, no sc-publish-internal-logic modification implied, exact-target list unchanged in scope). PR #526 CI: 14/14 checks SUCCESS, mergeStateStatus CLEAN. Findings Summary (Final)
Residual Risks
Merge Readiness
RecommendationSprint Q.3's plan is gated PASS. Team-lead may proceed to dispatch Q.3 implementation (the actual plugins/sc-publish re-vendor). Quality-mgr will run a standard implementation QA-1 pass (req-qa, arch-qa, rust-qa-agent, rust-best-practices-agent, rust-service-hardening-agent) once the re-vendor diff lands, and will specifically verify the Required Validation section's commands were actually executed with evidence recorded (byte-for-byte diff, double dry-run exit codes, validate-manifest, Release Preflight run URL or recorded expected stop, pinned-venv pytest run). |
QA Findings UpdateGenerated: 2026-08-20T02:01:00Z Machine Status (JSON){
"sprint": "Q.3",
"task": "SPRINT-Q3-QA-REVIEW",
"branch": "sprint/q-3-sc-publish-consume-update",
"commit": "559fbbe",
"pr": 526,
"verdict": "FAIL",
"deliverables": {
"complete": 1,
"total": 6,
"percent": 16.7
},
"findings": {
"blocking": 3,
"important": 4,
"minor": 1
},
"blocking_ids": ["Q3-QA-001","Q3-QA-002","Q3-QA-003"],
"merge_readiness": "blocked",
"merge_reason": "req-qa FAIL with 3 Blocking findings against the sprint's own 6 acceptance criteria. Only AC1 (plugins/sc-publish/ parity) is closed with fresh evidence; AC2 (clean second dry-run), AC3 (revalidated manifest/order/version/package checks), AC4 (clean/expected-stop Release Preflight rehearsal), AC5 (pinned-venv pytest re-run), and AC6 (no sc-publish internal-logic modification) are open, unverifiable, or contradicted by direct file evidence. arch-qa and simplification-reviewer both PASS on their narrower scopes (architectural boundary conformance, scope-creep/dead-path). rust-qa-agent confirms fmt/clippy PASS; cargo test --workspace fails on 5 pre-existing sc-lint fixture test binaries reproduced identically on develop HEAD (environment gap, not a sprint regression) — CI's own hosted 'test' jobs (ubuntu/macos/windows) are green at this commit since CI runs the setup-sc-lint action this local run lacked.",
"next_action": "comp resolves Q3-QA-001 (file upstream issue + revert local patch, or land fix upstream and re-vendor), re-runs the Release Preflight rehearsal (Q3-QA-002) and cargo test --workspace + pinned-venv pytest (Q3-QA-003/005) post-fix, records all evidence in the sprint doc, and reconciles the AC checklist (Q3-QA-004/ARCH-001) before resubmitting for a QA-2 recheck.",
"owner": "team-lead"
}Findings Summary
Blocking Findings
Detailed Findings
QA-002 (rust-qa-agent, Minor, correctness): Reviewer summary: req-qa=FAIL (3 Blocking, 2 Important, deliverables 1/6=16.7%); arch-qa=PASS (0 blocking, 1 Important — ARCH-001, Resolved Since Last Pass
Merge Readiness
Next Action
|
QA Findings UpdateGenerated: 2026-08-20T02:13:00Z Machine Status (JSON){
"sprint": "Q.3",
"task": "SPRINT-Q3-QA-REVIEW-R2",
"branch": "sprint/q-3-sc-publish-consume-update",
"commit": "ab93be0",
"pr": 526,
"verdict": "FAIL",
"deliverables": {
"complete": 5,
"total": 6,
"percent": 83.3
},
"findings": {
"blocking": 1,
"important": 0,
"minor": 1
},
"blocking_ids": ["Q3-QA2-001"],
"merge_readiness": "blocked",
"merge_reason": "req-qa FAIL with 1 new Blocking finding (Q3-QA2-001) on AC4. All 5 round-1 findings independently reverified as fix-holds: Q3-QA-001 (byte-identity restored between installed and vendored release-preflight.yml, sc-publish#43 filed), Q3-QA-003 (cargo test --workspace evidence recorded with exact command/env var), Q3-QA-004/ARCH-001 (AC checklist now accurate), Q3-QA-005 (pinned venv path recorded). However Q3-QA-002's underlying acceptance criterion (AC4) is not actually met: the fresh Release Preflight rehearsal (run 32351284694) stopped on an unrelated credential/permission error (PyPI/TestPyPI secret-metadata HTTP 403, rejected CARGO_REGISTRY_TOKEN HTTP 403), not the sprint doc's own defined 'expected external-service stop' (the human-authorized-publication gate). The sprint doc itself correctly leaves this AC unchecked. arch-qa and simplification-reviewer both PASS with 0 findings (byte-identity independently re-verified, clean pure-subtraction revert, no residual workaround). rust-qa-agent: fmt/clippy/tests all PASS (tests confirmed green with SC_LINT_SOURCE_ROOT set, control run without it reproduces the same pre-existing environment-only failures); 1 Minor finding still outstanding (QA-002, stale doc reference to a removed GitHub Action, not yet fixed this round).",
"next_action": "comp resolves the GitHub Actions secret-metadata read permission and/or rotates the CARGO_REGISTRY_TOKEN so a Release Preflight rehearsal reaches the documented human-authorized-publication stop (or runs clean end-to-end), records that run's evidence in the sprint doc, and optionally fixes the still-outstanding QA-002 doc reference, before resubmitting for a QA-3 recheck.",
"owner": "team-lead"
}Findings Summary
Blocking Findings
Detailed Findings
Reviewer summary: req-qa=FAIL (1 Blocking — Q3-QA2-001; deliverables 5/6=83.3%); arch-qa=PASS (0 blocking/important, both carried-forward findings confirmed resolved by independent byte-for-byte re-diff); rust-qa-agent=findings (fmt/clippy/tests all PASS with documented env var; 1 Minor carried-forward finding still open); simplification-reviewer=PASS (0 findings, clean pure-subtraction revert with no residual workaround, ab93be0 confirmed genuinely docs-only). Resolved Since Last Pass
Merge Readiness
Next Action
|
Final Quality ReportGenerated: 2026-08-20T16:10:00Z Machine Status (JSON){
"sprint": "Q.3",
"task": "SPRINT-Q3-QA-REVIEW-R3",
"branch": "sprint/q-3-sc-publish-consume-update",
"commit": "d4f03d4",
"pr": 526,
"verdict": "PASS",
"findings": {
"blocking": 0,
"important": 0,
"minor": 1
},
"blocking_ids": [],
"merge_readiness": "ready",
"merge_reason": "All four required reviewers PASS with 0 blocking findings; deliverable completion 8/8 (100%); PR #526 CI fully green (16/16 SUCCESS, mergeStateStatus CLEAN) at commit d4f03d4. Round-2's sole Blocking finding (Q3-QA2-001) is confirmed withdrawn per RCA issue #527 and independently reconfirmed this round with literal AC4 text citation, not reintroduced in any form.",
"next_action": "none",
"owner": "none",
"recommendation": "Sprint Q.3 QA gate is closed PASS. Team-lead may merge PR #526 to develop. The one non-blocking Minor finding (Q3-QA3-001) may be addressed opportunistically in a future documentation pass and is not a merge condition."
}Validated ScopeRound 3 recheck after comp re-vendored against sc-publish develop 0fa5b05 (including PR #45's merged fail-closed-probe and manifest-driven-upload-tool fixes) and rewrote the sprint doc's AC4 language. All four required reviewers independently re-reviewed the full 71-file sprint diff (develop...HEAD) and the sprint doc's literal AC text, per this round's explicit 'quote, don't paraphrase' instruction (issue #527). req-qa: PASS, deliverables 8/8 (100%), 0 blocking findings; independently quoted the sprint doc's literal AC4 text (lines 62-66, 164-170) and cross-referenced it against the fresh Release Preflight rehearsal run 32388936922, verifying all four named failed step-ids (environment-secrets, credential-liveness, registry-state, channel-results) exist as real steps in the installed release-preflight.yml; explicitly reconfirmed round-2 finding Q3-QA2-001 was correctly withdrawn and no unstated standard was reintroduced. arch-qa: PASS, 0 blocking/important findings, no architectural boundary drift. simplification-reviewer: PASS, 0 findings, byte-identity of the re-vendored plugins/sc-publish/ tree independently re-verified against a live sc-publish checkout at 0fa5b05. rust-qa-agent: PASS, 0 findings; fmt clean, clippy clean (0 warnings, -D warnings), cargo test --workspace green (125 passed, 4 expected sc-publish#42 go_native failures) with SC_LINT_SOURCE_ROOT set; confirmed the sole Rust diff (crates/sc-compose/tests/cli/render.rs) correctly aligns the binary_paths fixture field with release/homebrew/formula.rb.j2. PR #526 CI: 16/16 checks SUCCESS, mergeStateStatus CLEAN at commit d4f03d4. Findings Summary (Final)
Residual Risks
Merge Readiness
RecommendationSprint Q.3 QA gate is closed PASS. Team-lead may merge PR #526 to develop. The one non-blocking Minor finding (Q3-QA3-001) may be addressed opportunistically in a future documentation pass and is not a merge condition. |
Adds the Sprint Q.3 plan doc, scoped as a pure consume-and-verify sprint.
Boundary this plan enforces: sc-compose is a consumer of
sc-publish, not its owner. Q.3 re-vendorsplugins/sc-publishfrom sc-publish develop (ce85b4d, includes PR #38's fixes) and verifies sc-compose's own install/test/CI surface — it does not modify sc-publish's internal probe/workflow logic.The three residual defects found in PR #38's independent review (pypi
build_systembranching, GH Release/winget probe fail-open on transient errors) are sc-publish's own bugs and have been filed there:Docs-only, no code changes. Per team-lead/quality-mgr's plan_gate process, this should go through plan review before Q.3 implementation is dispatched to comp.
🤖 Generated with Claude Code