Skip to content

Session Handoff [engineering]: Write Guard Push Target Reads Released as 2.0.1125, Directory and Tokenizer Guard Lane Next #3327

Closed

Description

@ptr727

Next steps, in priority order

  1. The guard's remaining allow gaps, one lane at a time, all in gh-write-guard.py. Done for each lane means a merged PR into develop, a develop-versus-branch differential showing zero deny-to-allow flips, and a revert proof for its new tests. The push-target lane is done (Judge a Push Against the Repository and Branches It Actually Writes #3316).
  2. Small non-guard lane, beside the guard lanes: Clear Repository-Location Variables in Every Temporary-Repository Test Through One Helper #3324. Temporary-repository tests outside the guard inherit an ambient GIT_DIR, and spec/audit.py --selftest was confirmed to write commits into the caller's repository when run from a git hook. Done means each such test clears the git location variables the way Run the Write Guard Self-Test Without an Ambient GIT_DIR #3323 did for the guard's self-test, with a test that fails without it.
  3. The guard's over-denials, after step 1: 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, Read Only Real GH_REPO Setters as Unread in the Write Guard #3286, Read a GH_REPO Only in the Wrapper Body It Reaches in the Write Guard #3144's and Close Three Small GH_REPO and Merge-Message Gaps in the Write Guard #3145's over-deny halves, Let a Top-Level Command-Text GH_REPO Export Override an Inherited One in the Write Guard #3163, Scope a Wrapper's GIT_DIR to Its Own Body in the Write Guard #3309, Measure the Write Guard's HOME and XDG_CONFIG_HOME Override Over-Denial #3311, and the three Judge a Push Against the Repository and Branches It Actually Writes #3316 introduced: Skip the Source-Only Refspec Mapping for a Delete Push in the Write Guard #3314 (source-only mapping applied to a delete push), Resolve a Leading ~+ Directory Rather Than Failing Closed in the Write Guard #3318 (a leading ~+), and Read a cd or pushd Word as the Builtin Only in Command Position in the Write Guard #3319 (a pushd/popd word outside command position). Then Consolidate the Write Guard's Flag-Value Argv Walks #3285, Share One Command-Position Walker Across the Write Guard's Readers #3308, and Move the Write Guard's Option-Prefix, Eval-Reading, and Cluster Sites Onto One Helper Each #3008, helper consolidation, last.

External blockers

  • None.

Internal dependencies

State

The parked decision queue

There are 0 open decision issues at this close. The maintainer approved develop merges for this session, and merging and releasing #3321 accepting constituent-PR coverage for Merge Gate item 2, through prompts this round.

What the last round did

What not to repeat

  • gh pr checks <pr> --watch --required on this repository. It exits 1 with "No required checks reported", because the required check comes from a ruleset. The previous link's advice to use --required was wrong. Use timeout <n> gh pr checks <pr> --watch and read the full list.
  • Expecting a Lite-effort Copilot round on a promotion head to state coverage. It reviewed Promote the Write Guard Push Target Reads, Self-Test Isolation, and Smoke Stub Pin Bump to Main #3321's head with no file table, so pr_review.py exits 45. Every constituent PR needs a published attestation or a Copilot table at its merged head, which is what lets the promotion case stand. Have each lane run pr_review.py attest after every push a recorded pass covers.
  • Narrowing a lane's own unpushed denials between local passes. Held this round: the guard lane filed five residuals instead of narrowing, and landed without the extra rounds the Read Config and Alias Rewrites the Write Guard Missed #3306 lane spent.
  • Guard-shaped text in a heredoc. Write such text with the Write tool or a script file.

New learnings

  • None beyond the entries above.

Activity

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

    @ptr727
    OwnerAuthor

    Continued in #3349, round 34 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