Skip to content

Session Handoff [engineering]: Guard gh-Target Rewrite and Windows Loader Fixes Released as 2.0.1069, gh-Target Follow-Ups Next #3152

Closed

Description

@ptr727

Next steps, in priority order

  1. The guard's gh-target follow-ups, one lane in gh-write-guard.py. Read a gh Write's Subcommand and Target the Way gh Parses Them #3135 now finds gh's command and subcommand the way gh itself does. Build on that reading for Read an Inherited GH_REPO From the Session Environment in the Write Guard #3147 (an inherited GH_REPO from the session environment), Read a Run-Time Word Before gh's Command and a Bare GH_REPO export in the Write Guard #3136 (a run-time word before gh's command, a bare export GH_REPO), Read a gh Write Behind a Run-Time Command Word in the Write Guard's Target Check #3131 (a gh write behind a run-time command word), Read a GH_REPO Only in the Wrapper Body It Reaches in the Write Guard #3144 and Close Three Small GH_REPO and Merge-Message Gaps in the Write Guard #3145 (small gaps Read a gh Write's Subcommand and Target the Way gh Parses Them #3135 introduced), Read a Positional Repository and the Missing Write Subcommands in the Write Guard #3133 (a positional repository, missing write subcommands), and Read a gh api Write Target Outside a repos/ Path in the Write Guard #3132 (gh api targets outside repos/). Leave a Literal gh Target Inside Heredoc Data Unread in the Write Guard #3134 (heredoc data read as a command) is an over-deny, so it waits for step 3. Done means a merged PR into develop with a develop-versus-branch differential and a revert proof.
  2. The guard's remaining allow gaps, one lane at a time, all in gh-write-guard.py. Grouping carried from Session Handoff [engineering]: Three Lanes and Two Promotions Released as 2.0.1049 and 2.0.1051, gh Write-Target Guard Lane Next #3094:
  3. The guard's over-denials, after step 2: Narrow Three Write-Guard Reads That Deny More Broadly Than Git Pushes #2953, Scope a Branch Pattern's Push Operations to the Branches It Can Match in the Write Guard #2964, Read Only an Eval That Runs in the Write Guard's Include Reading #2975, Keep the Write Guard's Terminal-Option Exception When a Redirection Precedes the Option #2981, Write Guard Denies Heredoc Data Inside an Unquoted Backtick Substitution #3000, Read a Commit's Exact -n as a Value Where It Follows a Value Option in the Write Guard #3070, Read a Process Substitution as One Word in the Write Guard's Commit and Merge Walks #3073, End a Merge's Words at a Comment in the Write Guard's Run-Time Check #3076, Read Quoting the Write Guard's Quote-Keeping Lex Cannot Align #3084, Leave a Literal gh Target Inside Heredoc Data Unread in the Write Guard #3134. Then Move the Write Guard's Option-Prefix, Eval-Reading, and Cluster Sites Onto One Helper Each #3008, helper consolidation, last.
  4. Non-guard lanes, which run beside the guard lanes: Reject a Dash-Prefixed Agents Name Before the Handoff to Install-Agents #3129 (a dash-prefixed -Agents name binds install-agents' -All switch, on both loaders), Test the Docker Task Workflow's Credential Check, Login, and Hook Inputs #3148 (test the Docker task workflow's credential check, login, and hook inputs), and Smoke-Build a Dispatched Run of the Smoke Caller Snippet Past Its Paths Filter #3149 once its question is answered (see the parked queue).

External blockers

  • None. CodeRabbit is rate limited and advisory, so it isn't worth waiting on.

Internal dependencies

  • Steps 1 and 2 run one lane at a time, since each edits gh-write-guard.py. Each lane claims both agent-safety READMEs along with the guard. Brief the claim to cover every file the fix needs, because a commit outside the claim gets refused as "Modify Shared Resources".
  • Step 3 runs after step 2, because narrowing a deny while allow gaps are still open has repeatedly opened a new allow in the same reader.
  • Move the Write Guard's Option-Prefix, Eval-Reading, and Cluster Sites Onto One Helper Each #3008 goes last, because moving shared sites onto helpers rewrites lines every other guard lane edits.
  • Start a guard lane after any promotion it would wait behind has merged. A lane held at READY beside a promotion that draws guard fixes goes CONFLICTING.

State

The parked decision queue

There are 0 open decision issues. This round asked three questions in session, all answered with the recommendation: squash-merge #3135 after the classifier refused it as "Merge Without Review" (merged), how #3079 treats a run-time repository value (fail closed only when the owner is run-time, recorded on #3079), and merge and release #3146 (merged and dispatched). #3149 carries an open question with no decision label. It is put to the maintainer at this close, and the answer is recorded in a comment.

What the last round did

What not to repeat

New learnings

Activity

  1. added
    handoffA link in the session handoff chain, one open issue per track
    on Oct 16, 2026
  2. ptr727 commented on Oct 16, 2026

    @ptr727
    OwnerAuthor

    Parked queue at close: 0 open decision issues. The one unlabeled open question, #3149, was put to the maintainer and answered: a dispatch bypasses the paths filter, keeping workflow_dispatch: (recorded on #3149). #3149 is now ordinary work for step 4.

  3. ptr727 commented on Oct 16, 2026

    @ptr727
    OwnerAuthor

    Continued in #3166, round 29 on track engineering.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    handoffA link in the session handoff chain, one open issue per track

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions