Repository navigation
Description
Problem
Part of #588. This is the publication commit-addition slice of #329, dependent on #817 for the whole-object and shared push-selection boundary.
At origin/main (a0347a715fab580ece45edfcb3d13509620459a8), publication scans have a distinct matching and selection contract (.devtools/scripts/check-leaks.sh:494, .devtools/scripts/check-leaks.sh:631, .devtools/scripts/check-leaks.sh:716). They check committed additions after an explicit base, use that base's pattern policy, and compare changed binary occurrences. Moving only the whole-object scanner in #817 would leave this publication enforcement behind.
Acceptance criteria
- AC1: Publication requires the supplied
DEVTOOLS_LEAK_BASEto resolve to a readable commit and requires complete history; its pattern rules and path allowances come from that base, never the checkout or index under review. - AC2: Every selected commit's full metadata retains its current findings, including messages and author/committer data, even if later commits remove the value from file contents.
- AC3: Added text and new path names retain the frozen shell's publication findings and locations, including rename targets, empty files, deletion followed by re-addition and merge changes; removed base content cannot cancel an added-text finding.
- AC4: Changed binaries tolerate inherited occurrences and reject new occurrences according to the existing per-rule and matched-value contract, including overlapping matches, anchored and empty matches, renamed binaries and documentation-domain exceptions.
- AC5: Publication results depend on committed bytes, not staged or unstaged removals, and remain unchanged by diff presentation settings or attributes that would otherwise hide content or shift reported lines.
- AC6: For each supplied tip that resolves to a commit, publication-scoped pushes scan the commits reachable from that tip but not from the explicit base, regardless of destination-known history.
- AC7: Publication-scoped pushes preserve refactor(leaks): port whole-object range and push scans to Go #817 AC2, AC3, AC4, AC5, AC6, AC7 and AC8 for the shared whole-object and push-selection boundary.
- AC8: Publication results retain statuses 0/1/2, stream placement, ordering, numbered text or binary locations and opaque sensitive names; incomplete input fails instead of passing, and values and their escaped display forms never appear in output.
- AC9: Non-functional: existing consumer entry points end as thin shell wrappers that probe Go subcommand support without writes or consuming input, use the frozen shell unchanged when binary or capability is absent, and preserve supported execution's streams and status without fallback or repeat execution after failure.
- AC10: Non-functional: the Go path works on Linux, macOS and Windows while preserving N-2 consumer configuration and the current task's explicit-versus-default mode selection.
- AC11: Non-functional: adoption documentation describes the unchanged distinction between publication additions, staged comparison and whole-object scans, including compatibility fallback and rollback.
- AC12: Non-functional: no temporary matched content remains after success or failure.
Scope and non-goals
In scope: --publish and base-relative commit scanning under DEVTOOLS_LEAK_MODE=publish, including task invocation. Hook wiring means only --pre-push and --pre-push-hook mode handling; it excludes hook installation. #817 owns the shared whole-object and push-selection boundary; AC7 requires compatibility with its final AC2, AC3, AC4, AC5, AC6, AC7 and AC8 rather than a second definition here. Source evidence includes .devtools/scripts/check-leaks.sh:549, .devtools/scripts/check-leaks.sh:620, .devtools/scripts/check-leaks.sh:716, .devtools/scripts/check-leaks.sh:770, .devtools/scripts/check-leaks.sh:862 and .devtools/tasks/leaks.toml:6. PR publication currently invokes this scope at packages/agents/source/skills/pr/shared/scripts/create-pr.sh:190.
Coverage: .devtools/scripts/check-leaks.bats:151; publication matching cases from .devtools/scripts/check-leaks.bats:1774 up to, but excluding, the test starting at .devtools/scripts/check-leaks.bats:1885, which belongs to #817 together with the cases at .devtools/scripts/check-leaks.bats:1890 and .devtools/scripts/check-leaks.bats:1913; and base, isolation, task and binary cases from .devtools/scripts/check-leaks.bats:1932 through the test starting at .devtools/scripts/check-leaks.bats:2095. Shared whole-object and tag cases belong to #817. Caller regressions start at tests/skills/pr/scripts/pr-workflow.bats:621, tests/skills/pr/scripts/pr-workflow.bats:633, tests/skills/pr/scripts/pr-workflow.bats:642, tests/skills/pr/scripts/pr-workflow.bats:650, tests/skills/pr/scripts/pr-workflow.bats:658 and tests/skills/pr/scripts/pr-workflow.bats:680; they verify unchanged publication invocation, not new PR workflow behavior.
Overlap: preserve origin/main's exported *_PRIVATE_STRINGS handling and existing incomplete-input refusal. All #501 behavior changes remain non-goals: worktree/machine source resolution, precedence, fail-closed checks for unreadable configured sources, source notices and provisioning. All #551/#573 behavior changes remain non-goals: devtools:gitleaks local/ci mode selection, origin base resolution, full-index snapshot scanning, caller changes and local history reduction. This port closes none of those issues.
Non-goals: changing the inherited-value policy, adding a publication base resolver, changing PR review/cache/write authority, narrowing CI, .devtools/scripts/install-pre-push.sh and hook installation (#819), the shared-hooks work in #277, recursively scanning submodules or broadening detection beyond the existing literal limitations. #277 is not a blocker for this mode-handling scope. Whole-object behavior, tag payloads, ref-line parsing, OID widths, destination discovery and zero-line hook/manual selection remain owned by #817; this issue only verifies their unchanged integration under AC7. Removing the frozen compatibility path requires separate N-2 follow-up work under D9.
Approach
Port the scoped requirements to Go while retaining the frozen shell compatibility behavior and #817's shared contract. Implementation choices remain open within these requirements.
Dependencies
Blocked by #753 before replacement activation; cite the merged protection evidence. #817 is a prerequisite for the shared boundary used by AC7; verify its final AC2, AC3, AC4, AC5, AC6, AC7 and AC8. #329 tracks the containing migration. #819 owns the installer, and #277 is not a dependency of this issue. #501 and #551/#573 retain the exclusions above. #661 governs N-2 compatibility; #333 owns binary distribution without creating a higher minimum pin for this port.
Size
M. One pull request for publication commit additions and task/mode handling using #817's shared boundary; no installer work.
Verify plan
Write failing Go cases for an added text occurrence, a changed binary's new matched value and base-relative selection independent of destination history first. Port the publication-specific Bats cases before reducing their shell coverage; retain #817's shared regression coverage.
- AC1: missing, invalid and unreadable base, shallow history, unreadable base policy and attempted weakening of base patterns/allowances in both checkout and index. Compare accepted base forms and outcomes with the frozen shell; do not introduce the gitleaks resolver from fix(leaks): scope local gates to branch history and the staged tree #551.
- AC2, AC3: inherited base values, unrelated edits, commit metadata, additions later removed, removed-and-added occurrences, renames into private names, deletion/re-addition, empty files, symlinks, gitlinks and merge changes. Compare exact commit/path/line findings and absence of inherited-only text findings.
- AC4: unchanged inherited binary matches; extra occurrences; equal category counts with different matched values; anchored and zero-length patterns; overlapping literal and pattern occurrences; rename plus modification; and exempt documentation names followed by a real match. Compare counts, rule labels and binary locations with the frozen shell.
- AC5: staged and unstaged removal of committed findings, binary attributes, size thresholds, external diff settings, context and inter-hunk overrides, and unreadable diff-order settings, independently and combined; the same committed finding and line remain.
- AC6: multiple commit tips and a destination that already knows commits after the publication base. Assert that each tip retains its full base-relative commit-addition findings; destination exclusions must not reduce that commit selection.
- AC7: run refactor(leaks): port whole-object range and push scans to Go #817's shared regression fixtures in publication mode and cite their evidence against refactor(leaks): port whole-object range and push scans to Go #817 AC2, AC3, AC4, AC5, AC6, AC7 and AC8. Verify integration with publication commit results without changing or duplicating that boundary's requirements or claiming its Bats cases.
- AC8: missing blobs, failed Git operations and incomplete producer output, sensitive names with newlines/backslashes, and a configured literal matching the escaped display form. Capture streams separately, compare statuses and order and search for all synthetic values and escaped forms.
- AC12: assert temporary matched content is removed after success and each failure class.
- AC9: real entry-point fixtures with absent binary/capability, supported clean/finding/error results and output-then-error; probe must preserve ref input and arguments, supported failure must run once with no fallback, and operational probe errors must refuse.
- AC10: unchanged task defaults, explicit range unaffected by publication defaults, scoped hook input, native platform tests and N-2 fixtures; shell parity where available. Record the same 100-commit publication fixture over 20 warm process runs for each implementation, excluding builds, and investigate regressions.
- AC11: compare help/adoption text with the exercised entry points and verify rollback in a disposable fixture.
- Run
mise run test-leaksand the affected PR workflow regressions with the branch binary, thenmise run check, fresh coverage and both coverage-floor tasks. Check build(agents): protect replacement Go enforcement paths #753's enforcement and registration protection. If maintained skill sources change, run generation, token measurement and deployment in order andmise run check-generated-skills. - Definition of done: D1 each AC is verified at the merged head, with the commands and results cited in the pull request's Verification. D2 an independent review approves the exact merged head, and every finding has a recorded disposition. D3 required checks pass with no gate loosened. D4 the leak scans the repository specifies are clean, and every post made for this work (comments, descriptions) passes the per-post leak review before it is posted. D5 every commit is signed. D6 the documentation matches, or the description says
No doc impactwith the reason. D7 every commit carries anAssisted-bytrailer and the pull request carries theprovenance:agent-assistedlabel. D8 the change stays within the pull request size limits. D9 follow-up work, including deferred review findings, is filed as issues, each with a Problem section and numbered acceptance criteria and linking this issue; the pull request's Related section lists them, and any code that defers work links its issue. D10 the merge closes this issue through a closing reference, the project board shows the state Done, and a finalStatus:comment names the merge commit.
Risks
Binary category totals can conceal newly introduced values, and display escaping can itself expose a configured literal. Current regression cases cover both. Confusing destination-relative objects with base-relative commit additions can silently narrow a scoped push. Undo: revert this PR to restore the frozen publication path and its callers.
Operator authority
standing rule names the operator: #753 must protect replacement enforcement before activation, with its required exact-head owner review; existing publication and merge authority remain required. The thin-wrapper migration requirement follows #329 and #588.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Work type
Projects
- StatusShow more project fieldsBacklog
Activity
tbhb-agent commentedon Oct 26, 2026
Refinement: NOT READY —
#817and#818both define the whole-object push boundary, and#277disposition is unrecordedModel: gemini-4-argon-high
Checked
originidentifiestbhb-dev/devtoolsandorigin/mainresolves toa0347a715fab580ece45edfcb3d13509620459a8.tbhb-dev/devtools#818(open,Feature, labelchange:feat, zero comments) and the issues named by its body or required by the refinement check:#329,#588,#817,#501,#551,#573,#753,#661,#333, and#277.origin/mainsource and test references in#818:.devtools/scripts/check-leaks.sh:494(scan_publishheader and stream/decoder contract through.devtools/scripts/check-leaks.sh:618),.devtools/scripts/check-leaks.sh:549(count_matchesbinary per-rule and matched-value counting),.devtools/scripts/check-leaks.sh:620(publish_diffenvironment/config isolation),.devtools/scripts/check-leaks.sh:631(emit_publish),.devtools/scripts/check-leaks.sh:672(emit_publish_pre_push),.devtools/scripts/check-leaks.sh:770(base-pinned.leak-allowand.leak-patternsresolution through.devtools/scripts/check-leaks.sh:812), and.devtools/scripts/check-leaks.sh:862(publication stream and whole-object stream dispatch through.devtools/scripts/check-leaks.sh:872)..devtools/tasks/leaks.toml:6(devtools:lint-leaksmappingDEVTOOLS_LEAK_MODE=publishto--publishwhen invoked with zero positional arguments).packages/agents/source/skills/pr/shared/scripts/create-pr.sh:190(invokingdevtools:lint-leaksunderDEVTOOLS_LEAK_MODE=publishandDEVTOOLS_LEAK_BASE=$leak_base, alongsidecreate-pr.sh:193andcreate-pr.sh:207)..devtools/scripts/check-leaks.bats:151(mode-spanning documentation tailnet domain test) and.devtools/scripts/check-leaks.bats:1774through.devtools/scripts/check-leaks.bats:2095(extending to.devtools/scripts/check-leaks.bats:2104).tests/skills/pr/scripts/pr-workflow.bats:626,tests/skills/pr/scripts/pr-workflow.bats:654, andtests/skills/pr/scripts/pr-workflow.bats:663(lines inside the publication caller regression tests starting attests/skills/pr/scripts/pr-workflow.bats:621,:650, and:658).tbhb-dev/devtools#817andtbhb-dev/devtools#818: both issues currently define the whole-object tag/non-commit payload and pre-push ref-line/destination-selection boundary without referencing each other (Gap 1).#501and#551/#573behavior changes remain non-goals:#818keeps#501's worktree/machine source resolution, fail-closed configured-source checks, source notices, and provisioning in#501, and keeps#551/#573'sdevtools:gitleaks--mode local/--mode ci, origin base resolver, full-index snapshot scan, and local history reduction in#551(with minor wording cleanup noted in Gap 3).tbhb-dev/devtools#277(cited as a pre-push installer prerequisite by parent#329):#277isopenwithlabels: [](notrefinement:readyand not done; its Round 1 refinement comment isRefinement: NOT READY), and#818does not state#277's disposition relative to#818's claimed hook wiring (Gap 2).Operator authorityagainst.agents/agent-skills.conf:4-9andtbhb-dev/devtools#753:#818accurately records that#753must protect the replacement Go enforcement andagentreposubcommand registration paths before activation, with exact-head owner review required, and that existing publication and merge authority remain required.Gaps
Blocker —
#817and#818both define the whole-object and pre-push ref/destination boundary without one owning it and the other referencing it.At
origin/main,emit_publish_pre_push(.devtools/scripts/check-leaks.sh:672-726) and the dispatcher (.devtools/scripts/check-leaks.sh:865-869) reuseemit_objects(.devtools/scripts/check-leaks.sh:352-411) andscan(.devtools/scripts/check-leaks.sh:134-247) for ref names, non-commit push tips, and outgoing tag/non-commit payloads, while duplicatingemit_pre_push's ref-line validation andgit ls-remotedestination selection (.devtools/scripts/check-leaks.sh:443-492). Currently,#817(AC2–AC8,Coverageat.devtools/scripts/check-leaks.bats:1890and.devtools/scripts/check-leaks.bats:1913) and#818(AC6,AC7,Scope and non-goalscovering.devtools/scripts/check-leaks.bats:1774through:2095and "Whole-object path-association quirks stay unchanged wherever that scan is reused", andVerify planforAC6, AC7) both specify the whole-object tag/payload and pre-push ref-line/destination contract, and neither issue names the other.Action: Have
#817own the whole-object scanning boundary (and shared push ref-line/destination discovery), and update#818(Problem,AC6,AC7,Scope and non-goals,Dependencies, andVerify plan) to reference#817explicitly, list#817inDependencies, and scope#818to the publication commit-addition contract (--publishand base-relative commit scanning inDEVTOOLS_LEAK_MODE=publish) plus delegating ref names and outgoing non-commit/tag objects during scoped pushes to#817's boundary.Blocker —
tbhb-dev/devtools#277is neitherrefinement:readynor done, and#818leaves its pre-push hook boundary ambiguous relative to#329and#277.Parent
#329states that the pre-push installer needs the shared-hooks fix from#277. Live#277isopenwith norefinement:readylabel and aRefinement: NOT READYRound 1 review. Meanwhile,#818states underSizethat it coversthe publication scan contract and its task and hook wiringwhile listinginstalling hooksunderNon-goals, without mentioning#277or.devtools/scripts/install-pre-push.sh:72-74.Action: Clarify in
#818'sScope and non-goals,Dependencies, andSizewhether "hook wiring" means only the--pre-push/--pre-push-hookmode handling underDEVTOOLS_LEAK_MODE=publishin.devtools/scripts/check-leaks.sh:778,847-850(leaving.devtools/scripts/install-pre-push.shand#277out of scope for#818), or, if#818touches.devtools/scripts/install-pre-push.sh, list#277as a blocker and wait until#277isrefinement:readyor done.Minor (non-blocking) — tighten
#501and#551/#573non-goal wording andpr-workflow.batsline citations inScope and non-goals.Scope and non-goalssaysAC2 to AC4 and AC8 absorb #501's retained private-list matching and incomplete-input refusal for this mode. That behavior already exists atorigin/main(.devtools/scripts/check-leaks.sh:116-127,514-520,613), whereas#501is strictly about loading private strings across worktrees/machine refs, failing closed on unreadable configured sources, and reporting the source. RewordOverlapandNon-goalsto state directly that#818preservesorigin/main's exported*_PRIVATE_STRINGShandling while all#501and#551/#573behavior changes remain non-goals.tests/skills/pr/scripts/pr-workflow.bats:626,:654, and:663point inside test bodies rather than the@testdeclarations attests/skills/pr/scripts/pr-workflow.bats:621,:633,:642,:650,:658, and:680.Minor (non-blocking) —
AC9prescribes a specific probing mechanism not named in#818'sOperator authority.AC9requires thin shell wrappers (the operator port rule recorded in#329and#588), but also prescribes the specific mechanism (that probe Go subcommand support without writes or consuming input). Either cite the#329/#588thin-wrapper operator rule in#818'sOperator authorityand keepAC9focused on observable N-2 fallback and single-execution stream/status behavior, or move the subcommand-probe mechanism note toApproach.Split
No further split of
#818is needed (Size: M, one PR) once#818references#817as the owner of the whole-object boundary and keeps hook installation (.devtools/scripts/install-pre-push.shand#277) out of scope.Definition of done
The definition of done for #818 (Feature). Tick each item and give its evidence.
A ticked box below indicates planning coverage in the issue's acceptance criteria and verification plan, not completed work.
Evidence: Planned in
Verify plan, which mapsAC1throughAC12to test checks and explicitly requiresD1 each AC is verified at the merged head, with the commands and results cited in the pull request's Verification(subject to resolving theAC6/AC7boundary ownership with#817in Gap 1).Evidence: Planned in
Verify plan(D2 an independent review approves the exact merged head, and every finding has a recorded disposition).Evidence: Planned in
Verify plan(mise run test-leaks, PR workflow regressions,mise run check,cover-go-check,cover-py-check,mise run check-generated-skillswhen applicable,#753protection check, andD3 required checks pass with no gate loosened) andOperator authority(exact-head owner review under#753).check-leaks.shwith the repository's private-strings list, and the leak review of each post.Evidence: Planned in
Verify plan(D4 the leak scans the repository specifies are clean, and every post made for this work (comments, descriptions) passes the per-post leak review before it is posted).Evidence: Planned in
Verify plan(D5 every commit is signed).docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why.Evidence: Planned in
AC11(adoption documentation for publication additions, staged comparison, whole-object scans, fallback, and rollback) andVerify plan(AC11verification andD6 the documentation matches, or the description says No doc impact with the reason).provenance:agent-assistedlabel.Evidence: Planned in
Verify plan(D7 every commit carries an Assisted-by trailer and the pull request carries the provenance:agent-assisted label).Evidence: Planned in
Size(M. One pull request) andVerify plan(D8 the change stays within the pull request size limits).Evidence: Planned in
Scope and non-goals(Removing the frozen compatibility path requires separate N-2 follow-up work under D9) andVerify plan(D9 follow-up work, including deferred review findings, is filed as issues, each with a Problem section and numbered acceptance criteria and linking this issue; the pull request's Related section lists them, and any code that defers work links its issue).Status:comment names the merge commit.Evidence: Planned in
Verify plan(D10 the merge closes this issue through a closing reference, the project board shows the state Done, and a final Status: comment names the merge commit).Round: 1 of 3
tbhb-agent commentedon Oct 26, 2026
Refinement: READY — publication commit-addition boundary, #817 delegation, and #277/#819 exclusions are clear and verifiable
Model: gemini-4-argon-high
Checked
originidentifiestbhb-dev/devtoolsandorigin/mainresolves toa0347a715fab580ece45edfcb3d13509620459a8.tbhb-dev/devtools#818(open,Feature, labelchange:feat, Round 1 refinement comment) and every issue named in its body:#588,#329,#817(and its Round 1 comment),#819,#277,#501,#551,#573,#753,#661, and#333.origin/mainpath:lineclaims in#818:.devtools/scripts/check-leaks.sh:494(scan_publishheader and stream/decoder contract through.devtools/scripts/check-leaks.sh:618),.devtools/scripts/check-leaks.sh:549(count_matchesper-rule and matched-value binary counting through.devtools/scripts/check-leaks.sh:581),.devtools/scripts/check-leaks.sh:620(publish_diffdiff-setting isolation through.devtools/scripts/check-leaks.sh:629),.devtools/scripts/check-leaks.sh:631(emit_publishthrough.devtools/scripts/check-leaks.sh:670),.devtools/scripts/check-leaks.sh:716(emit_publish_pre_pushcommit-tip versus whole-object split inside.devtools/scripts/check-leaks.sh:672-726),.devtools/scripts/check-leaks.sh:770(base-pinned.leak-allowand.leak-patternsresolution through.devtools/scripts/check-leaks.sh:812), and.devtools/scripts/check-leaks.sh:862(publication stream and whole-object stream dispatch through.devtools/scripts/check-leaks.sh:878)..devtools/tasks/leaks.toml:6(devtools:lint-leaksmappingDEVTOOLS_LEAK_MODE=publishto--publishwhen invoked with zero positional arguments).packages/agents/source/skills/pr/shared/scripts/create-pr.sh:190(publication leak gate invocation alongsidepackages/agents/source/skills/pr/shared/scripts/create-pr.sh:189,:193, and:207).tests/skills/pr/scripts/pr-workflow.bats:621,tests/skills/pr/scripts/pr-workflow.bats:633,tests/skills/pr/scripts/pr-workflow.bats:642,tests/skills/pr/scripts/pr-workflow.bats:650,tests/skills/pr/scripts/pr-workflow.bats:658, andtests/skills/pr/scripts/pr-workflow.bats:680(exact@testlines for publication caller regressions)..devtools/scripts/check-leaks.bats:151,.devtools/scripts/check-leaks.bats:1774through.devtools/scripts/check-leaks.bats:1889,.devtools/scripts/check-leaks.bats:1890,.devtools/scripts/check-leaks.bats:1913, and.devtools/scripts/check-leaks.bats:1932through.devtools/scripts/check-leaks.bats:2104(the test starting at.devtools/scripts/check-leaks.bats:2095). Note that.devtools/scripts/check-leaks.bats:1885(@test "AC2 an added binary file is named by the binary marker") exercisespublish_finding(run_check --publish) rather than tag objects, so it is part of the publication-specific Bats cases covered by#818AC4,AC8, andVerify plan("Port the publication-specific Bats cases before reducing their shell coverage"), while#817claims the shared tag cases at.devtools/scripts/check-leaks.bats:1890and.devtools/scripts/check-leaks.bats:1913; there is no overlap between#817and#818.#817:#817owns the whole-object and shared push-selection boundary (#817AC2–AC8), while#818owns the publication commit-addition contract (AC1–AC6,AC8), cites#817AC2,AC3,AC4,AC5,AC6,AC7, andAC8inAC7,Scope and non-goals,Dependencies, andVerify plan, and lists#817as a prerequisite.#277and#819:#818defines hook wiring as--pre-pushand--pre-push-hookmode handling only, excludes.devtools/scripts/install-pre-push.shand hook installation (owned by#819), and records that#277is not a dependency or blocker for this scope.#501and#551/#573:Scope and non-goalsandDependenciespreserveorigin/main's exported*_PRIVATE_STRINGShandling and incomplete-input refusal while keeping all#501and#551/#573behavior changes out of scope.Operator authority: cites#753(exact-head owner review for protected replacement enforcement and registration paths under.agents/agent-skills.conf:4-9), existing publication and merge authority, and the thin-wrapper migration requirement from#329and#588.AC1–AC12andVerify plan: every AC is observable, testable, scoped to one outcome, free of unapproved implementation prescriptions, covers non-functional requirements (AC9–AC12), and has a concrete verification check inVerify plan.Gaps
None
Split
No further split is needed.
#818is sizedM(one pull request) covering publication commit-addition scanning and task/mode handling on top of#817's shared whole-object and push-selection boundary, with pre-push hook installation separated into#819.Definition of done
The definition of done for #818 (Feature). Tick each item and give its evidence.
A ticked box below indicates planning coverage in the issue's acceptance criteria and verification plan, not completed work.
Evidence: Planned in
Verify plan, which mapsAC1throughAC12to concrete verification checks and requiresD1 each AC is verified at the merged head, with the commands and results cited in the pull request's Verification.Evidence: Planned in
Verify plan(D2 an independent review approves the exact merged head, and every finding has a recorded disposition).Evidence: Planned in
Verify plan(mise run test-leaks, PR workflow regressions,mise run check, fresh coverage and both coverage-floor tasks,mise run check-generated-skillswhen applicable,#753protection check, andD3 required checks pass with no gate loosened) andOperator authority(exact-head owner review under#753).check-leaks.shwith the repository's private-strings list, and the leak review of each post.Evidence: Planned in
Verify plan(D4 the leak scans the repository specifies are clean, and every post made for this work (comments, descriptions) passes the per-post leak review before it is posted).Evidence: Planned in
Verify plan(D5 every commit is signed).docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why.Evidence: Planned in
AC11(adoption documentation for publication additions, staged comparison, whole-object scans, compatibility fallback, and rollback) andVerify plan(AC11check andD6 the documentation matches, or the description says No doc impact with the reason).provenance:agent-assistedlabel.Evidence: Planned in
Verify plan(D7 every commit carries an Assisted-by trailer and the pull request carries the provenance:agent-assisted label).Evidence: Planned in
Size(M. One pull request for publication commit additions and task/mode handling using #817's shared boundary; no installer work) andVerify plan(D8 the change stays within the pull request size limits).Evidence: Planned in
Scope and non-goals(Removing the frozen compatibility path requires separate N-2 follow-up work under D9) andVerify plan(D9 follow-up work, including deferred review findings, is filed as issues, each with a Problem section and numbered acceptance criteria and linking this issue; the pull request's Related section lists them, and any code that defers work links its issue).Status:comment names the merge commit.Evidence: Planned in
Verify plan(D10 the merge closes this issue through a closing reference, the project board shows the state Done, and a final Status: comment names the merge commit).Round: 2 of 3