Repository navigation
Stage spec proposal text and validate before creating public issues - #650
Merged
Merged
Conversation
Spec-sized public Security fixes now stage their proposed Spec text (top issue plus Tickets with blocking edges) for validation, and thirdshift creates the issues and their native sub-issue and blocked-by links from the staged text. A rejection creates nothing, and a publishing session that creates a public issue on the side fails loudly with the leak closed, as the single-fix staged path does. Private bigger fixes keep the session-created path. Closes #647
Standards review finding: add_sub_issue and add_blocked_by repeated the database-id lookup plus single-field POST shape. Both delegate to a private post_by_id helper now.
This was referenced Oct 10, 2026
Merged
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.
Summary
Spec-sized public Security fixes now stage their proposal text and get it validated before any public issue exists. Thirdshift creates the issues and their native links from the staged text.
Seams exercised:
secure security-fixend to end for a public spec; the staged-spec protocol parse; the existingcheck_public_fix_textvalidation.Evidence
gh issue create), and thirdshift validated only after creation — write-up text copied into an issue was already public before any rejection.After:
cargo testgreen on the final tree — all 41 targets ok (956 bin unittests;security_run92 passed, including the new staged-spec tests;spec_run68 passed), 0 failed. Focused runs:a_bigger_public_fix_publishes_tickets_and_ends_as_the_spec_run,invalid_security_fix_specs_are_not_marked_ready_or_dispatched(rejected staged specs create zero public issues), anda_spec_session_side_effect_public_issue_fails_the_fix_and_is_closed(side-effect leak closed, fix fails loudly) all pass.Merge Danger
Door: two-way — reverting restores session-created spec publishing; no migrations, no data changes.
Blast Radius: security-fix publishing — changes
secure security-fixfor spec-sized findings on public repositories only; the private-repository path is unchanged.Unaddressed findings
Standards
parse_staged_proposal(src/security/fixing.rs:340) vsparse_staged_spec_proposal(src/security/fixing.rs:219) share the marker /Title:/Body:shape. Declined as a non-blocking judgement call (the reviewer itself would not block): the single-issue and spec-with-tickets protocols evolve separately, and a shared splitter would couple them. Refuting runs:staged_proposal_parses_title_and_bodyandstaged_spec_parses_top_issue_and_tickets_with_blockingboth pass; full suite green. This is my technical call, not a Spec or Day-shift decision, so noneeds-triageissue was filed.FixSize(src/security/fixing.rs:102,:126,:159). Declined: polymorphism would be heavier than three small branches at this size and matches the file's existing style. Refuting runs: the single and spec end-to-end paths (staged and private) are all green insecurity_run(92 passed). My technical call, so noneeds-triageissue was filed.Addressed rather than listed: the third Standards smell (
add_sub_issue/add_blocked_byduplication) was fixed — both delegate to the privateGitHub::post_by_id(src/github.rs:218), covered by the staged-spec happy-path test.Spec
None. The review filed no Spec findings; its one robustness observation (a Ticket body containing the literal substrings
Ticket:orBlocked by:fails closed, rejecting the proposal without leaking anything) is safe by construction and needs no Day-shift decision, so no issue was filed for it.Review coverage: both axes read all 7 changed files. No changed file was left unread by the review.
Closes #647
Built with muse · default model · default effort