push: five git push calls run outside the guarded Writer #833

Closed
opened 2026-10-20 03:28:55 +00:00 by hexajon · 0 comments
Owner

The guard of ADR 0046 runs at every git write seam: the Writer in internal/git checks each push before git runs. Five push calls skip the Writer and call a raw git runner directly:

  • internal/service/workflow/finish_initial.go:146, the initial finish push of the branch
  • internal/service/workflow/finish_initial.go:251, the initial finish push of HEAD to the default branch
  • internal/service/issue/develop.go:116, the push of the new issue branch
  • internal/cmd/git/tag.go:205, tag create with --push
  • internal/service/workflow/init.go:346, the init push of HEAD to the default branch

Each site carries its own checks, so a new check added to the Writer does not reach them. The fix for a leading + in a push refspec (#637) had to add the same check to three of these sites by hand. A future push site can repeat the gap.

Acceptance criteria

  • Each push above goes through the Writer, so the guard and the refspec checks run on it.
  • The first push into an empty repo still works, as ADR 0046 allows.
  • A parity test fails when production code outside internal/git runs git push without the Writer.
  • The gate passes.
The guard of ADR 0046 runs at every git write seam: the Writer in `internal/git` checks each push before git runs. Five push calls skip the Writer and call a raw git runner directly: - `internal/service/workflow/finish_initial.go:146`, the initial finish push of the branch - `internal/service/workflow/finish_initial.go:251`, the initial finish push of HEAD to the default branch - `internal/service/issue/develop.go:116`, the push of the new issue branch - `internal/cmd/git/tag.go:205`, tag create with `--push` - `internal/service/workflow/init.go:346`, the init push of HEAD to the default branch Each site carries its own checks, so a new check added to the Writer does not reach them. The fix for a leading `+` in a push refspec (#637) had to add the same check to three of these sites by hand. A future push site can repeat the gap. ## Acceptance criteria - Each push above goes through the Writer, so the guard and the refspec checks run on it. - The first push into an empty repo still works, as ADR 0046 allows. - A parity test fails when production code outside `internal/git` runs `git push` without the Writer. - The gate passes.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
sixfold-space/madtea#833
No description provided.