Repository navigation
Conversation
The pre-script sets authorization.mutation_authorized from the runner-only FULLSEND_TRIAGE_MUTATION_AUTHORIZED variable: exact 'true' authorizes, unset or 'false' stays report-only, any other value fails closed (exit 1, no bundle). The variable is never exposed to the sandbox. Enabling it in CI is gated on TC-6191. Implements TC-6934 Assisted-by: Claude Code Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Re-pin the triage-security child base to the commit carrying the mutation-authorization opt-in and re-lock triage-security only; the verify-pr harness and lock entry are unchanged. Implements TC-6934 Assisted-by: Claude Code Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reviewer's GuideIntroduces a trusted runner-side mutation-authorization opt-in for triage-security collection while preserving report-only defaults and fail-closed handling, documents the security and rollout model, and refreshes the pinned triage-security harness/lock to the requested upstream revision. Sequence diagram for runner-side triage mutation authorizationsequenceDiagram
participant Runner
participant PreScript as pre_triage_security.py
participant Collector as collect_bundle
participant Bundle as Bundle
participant Executor as execute_plan
participant Jira
Runner->>PreScript: collect
PreScript->>PreScript: parse_mutation_authorization
alt FULLSEND_TRIAGE_MUTATION_AUTHORIZED is true
PreScript->>Collector: collect_bundle(mutation_authorized=true)
Collector->>Bundle: authorization.mutation_authorized=true
Bundle-->>Executor: authorized result
Executor->>Jira: execute mutation actions
else unset or false
PreScript->>Collector: collect_bundle(mutation_authorized=false)
Collector->>Bundle: authorization.mutation_authorized=false
Bundle-->>Executor: report-only result
else invalid value
PreScript-->>Runner: EvidenceError on stderr, exit 1
PreScript-->>Runner: no bundle written
end
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've reviewed your changes and they look great!
Sourcery assessment
Needs a human reviewer. If the runner has FULLSEND_TRIAGE_MUTATION_AUTHORIZED=true, collection records the bundle as authorized and the executor can perform Jira mutations; those writes may remain after reverting this change.
|
🤖 Finished Verify Pr · ✅ Success · Started 4:02 PM UTC · Completed 4:11 PM UTC Commit: Runtime: claude · Model: claude-opus-4-8 · Effort: high · Cost: $4.58 |
|
[sdlc-workflow/verify-pr] Re: @sourcery-ai[bot] review — Classified as suggestion — the comment flags the by-design behavior that a runner with |
Verification Report for TC-6934 (commit 6e16027)
Overall: PASSAll verification checks pass or are N/A. The PR implements the runner-side mutation-authorization opt-in exactly as specified: fail-closed parsing (exact This comment was AI-generated by sdlc-workflow/verify-pr v0.13.10. |
Summary
pre_triage_security.py collectnow reads the runner-only opt-inFULLSEND_TRIAGE_MUTATION_AUTHORIZEDand passes it tocollect_bundle→build_bundle→authorization.mutation_authorized, replacing the hardcodedFalse.true→true; unset orfalse→false(unchanged report-only default); any other value →ERROR:on stderr, exit 1, no bundle written (fail closed).FULLSEND_RELEASE_DECISIONS); it is not added to the harnessenv.sandboxand never reaches the sandbox.execute_planalready acceptsmutation-authorizedresults only when the bundle is authorized (covered by the existingtest_authorized_actions_execute_in_order_with_footnoted_comments/test_unauthorized_mutating_plan_fails_without_jira_calls).fullsend.md"Triage-security release orchestration" documents the opt-in and that enabling it in CI is gated on TC-6191..fullsend/harness/triage-security.yamlbase:to8f17cfaf(sha256441a08b5…) and re-locks triage-security only viafullsend lock triage-security; the verify-pr harness and lock entry are byte-identical. The re-pin also carries TC-7141's bare built-invertex-aiprovider into the triage-security pin, so running it from this repo needs fullsend ≥ v0.45.0 (already the documented prerequisite).Merge with a merge commit (no rebase/squash): the
base:URL pins8f17cfaffrom this PR.Replaces #355 (same commits, reopened from an upstream branch so
fullsend lockcan fetch the pinned commit).Tests
test_mutation_authorization_opt_in_reaches_collector(unset/false/true),test_invalid_mutation_authorization_fails_closed(7 malformed values),test_authorized_bundle_satisfies_input_contract.python3 -m pytest plugins/sdlc-workflow/scripts/ -q→ 740 passed, 3 skipped;uvx skillsaw0 errors;claude plugin validate plugins/sdlc-workflowpassed.Implements TC-6934
🤖 Generated with Claude Code
Summary by Sourcery
Enable controlled runner-side authorization of triage-security mutations while maintaining fail-closed report-only defaults and updating the pinned harness.
New Features:
Bug Fixes:
Enhancements:
Build:
Documentation:
Tests: