chore(gates): share toolkit-self checkout detection #1097

Merged
pullings merged 1 commit from i/1079-shared-toolkit-discriminator into main 2026-09-04 02:30:22 +02:00
Owner

Refs #1079

Scope

manifest-check and post-cut now use one named isToolkitSelfCheckout seam to distinguish release-toolkit's own checkout from an adopter checkout. The helper checks for .forgejo/workflows/reusable-release.yml; both callers retain their existing behavior and messages.

The old duplicate implementation in manifest_check.go and inline post-cut probe are gone. The helper is deliberately named as the future call site for any additional toolkit-self behavior.

AC disposition

  • The two guards share one implementation: both callers invoke isToolkitSelfCheckout.
  • The shared seam is named for future callers: cmd/rt/toolkit_self.go.
  • Positive/negative control: TestIsToolkitSelfCheckout passes for the absent and present marker.
  • Caller behavior remains covered: manifest-check adopter/toolkit-self mismatch tests and post-cut external/self bookkeeping tests pass.

Verification

  • Original branch base: 7185d28f67
  • Integrated current main base: 56e8f7e808
  • Head: 456472f8d5
  • go build ./...: pass
  • go vet ./...: pass
  • go test ./... -count=1: pass
  • bats tests/*.bats: 1..170, 170 pass
  • shellcheck --severity=warning over all scripts/**/*.sh: pass
  • go run ./cmd/rt fragment-check changelog.d: pass
  • git diff --check: pass

The default shellcheck invocation still reports the pre-existing informational SC2016 in scripts/contract-paths-check.sh; no shell script is changed here.

Refs #1079 ## Scope manifest-check and post-cut now use one named isToolkitSelfCheckout seam to distinguish release-toolkit's own checkout from an adopter checkout. The helper checks for .forgejo/workflows/reusable-release.yml; both callers retain their existing behavior and messages. The old duplicate implementation in manifest_check.go and inline post-cut probe are gone. The helper is deliberately named as the future call site for any additional toolkit-self behavior. ## AC disposition - [x] The two guards share one implementation: both callers invoke isToolkitSelfCheckout. - [x] The shared seam is named for future callers: cmd/rt/toolkit_self.go. - [x] Positive/negative control: TestIsToolkitSelfCheckout passes for the absent and present marker. - [x] Caller behavior remains covered: manifest-check adopter/toolkit-self mismatch tests and post-cut external/self bookkeeping tests pass. ## Verification - Original branch base: 7185d28f67826807adec38b579efa9de8e3ee16c - Integrated current main base: 56e8f7e808a83478ad9fa44ef6638b25931c5fcf - Head: 456472f8d59eb7aeeab773ee0292999ba7617cd7 - go build ./...: pass - go vet ./...: pass - go test ./... -count=1: pass - bats tests/*.bats: 1..170, 170 pass - shellcheck --severity=warning over all scripts/**/*.sh: pass - go run ./cmd/rt fragment-check changelog.d: pass - git diff --check: pass The default shellcheck invocation still reports the pre-existing informational SC2016 in scripts/contract-paths-check.sh; no shell script is changed here.
chore(gates): share toolkit-self checkout detection
All checks were successful
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 11s
ac-closure-check / ac-closure check (pull_request) Successful in 8s
ac-closure-check / check (pull_request) Successful in 0s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 17s
check-self-bootstrap / check (pull_request) Successful in 7s
fragment-check / changelog fragment-kind (pull_request) Successful in 9s
fragment-check / check (pull_request) Successful in 0s
gitea-twin-check / check (pull_request) Successful in 5s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 19s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 6s
manifest-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 3s
go-ci / lint + build + test (pull_request) Successful in 49s
tests / bats (pull_request) Successful in 19s
tests / shellcheck (pull_request) Successful in 3s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 3s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 4s
workflow-parse-check / check (pull_request) Successful in 0s
tests / dated-examples (pull_request) Successful in 27s
13b66161de
sentry requested changes 2026-09-04 01:07:18 +02:00
Dismissed
sentry left a comment

Exact-head review at 13b66161de: REQUEST_CHANGES. The shared isToolkitSelfCheckout seam is correctly added and used by both manifest-check and post-cut, and its absent/present control passes. However, this head is based at 7185d28 while the PR base is a8168da, and its base-relative diff silently rolls back landed release-toolkit#1087 work. It changes mirror-release.yml back to runs_on=docker and the old since_tag expression; changes reusable-mirror-release.yml back to rejecting the caller-supplied tag_name plus default since_tag combination, skipping every existing release including incomplete ones instead of adopting it, and downloading assets through the wrong API URL; removes the adopted summary contract from tests/workflows.bats; and deletes changelog.d/1087-mirror-backfill-fixes.fixed.md. The PR body only describes #1079 and does not disclose this release-path regression. Restore the base branch #1087 changes or otherwise preserve them while keeping this seam isolated before approval. Local Go test/vet pass, and Forgejo CI is terminal-success at 26/26.

Exact-head review at 13b66161dee3f2152633287f6277f8daaadddf3b: REQUEST_CHANGES. The shared isToolkitSelfCheckout seam is correctly added and used by both manifest-check and post-cut, and its absent/present control passes. However, this head is based at 7185d28 while the PR base is a8168da, and its base-relative diff silently rolls back landed release-toolkit#1087 work. It changes mirror-release.yml back to runs_on=docker and the old since_tag expression; changes reusable-mirror-release.yml back to rejecting the caller-supplied tag_name plus default since_tag combination, skipping every existing release including incomplete ones instead of adopting it, and downloading assets through the wrong API URL; removes the adopted summary contract from tests/workflows.bats; and deletes changelog.d/1087-mirror-backfill-fixes.fixed.md. The PR body only describes #1079 and does not disclose this release-path regression. Restore the base branch #1087 changes or otherwise preserve them while keeping this seam isolated before approval. Local Go test/vet pass, and Forgejo CI is terminal-success at 26/26.
carpenter force-pushed i/1079-shared-toolkit-discriminator from 13b66161de
All checks were successful
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 11s
ac-closure-check / ac-closure check (pull_request) Successful in 8s
ac-closure-check / check (pull_request) Successful in 0s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 17s
check-self-bootstrap / check (pull_request) Successful in 7s
fragment-check / changelog fragment-kind (pull_request) Successful in 9s
fragment-check / check (pull_request) Successful in 0s
gitea-twin-check / check (pull_request) Successful in 5s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 19s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 6s
manifest-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 3s
go-ci / lint + build + test (pull_request) Successful in 49s
tests / bats (pull_request) Successful in 19s
tests / shellcheck (pull_request) Successful in 3s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 3s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 4s
workflow-parse-check / check (pull_request) Successful in 0s
tests / dated-examples (pull_request) Successful in 27s
to 0227933f34
Some checks failed
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 15s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (pull_request) Successful in 4s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 16s
gitea-twin-check / check (pull_request) Failing after 4s
go-ci / lint + build + test (pull_request) Successful in 26s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 14s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 6s
manifest-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 3s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 16s
tests / bats (pull_request) Successful in 20s
tests / shellcheck (pull_request) Successful in 3s
tests / dated-examples (pull_request) Successful in 18s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 3s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
ac-closure-check / ac-closure check (pull_request) Successful in 6s
ac-closure-check / check (pull_request) Successful in 0s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 20s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 30s
fragment-check / check (pull_request) Successful in 0s
2026-09-04 01:15:53 +02:00
Compare
sentry approved these changes 2026-09-04 01:21:22 +02:00
Dismissed
sentry left a comment

Exact-head follow-up superseding REQUEST_CHANGES 6250: APPROVED at 0227933f34. The base-relative diff is now exactly the five #1079 seam files; the shared isToolkitSelfCheckout implementation is used by manifest-check and post-cut, and the absent/present control passes. The previous #1087 rollback is gone. Go tests/vet, formatting, and diff checks pass. The only red context is gitea-twin-check / check (25/26 overall): go run ./cmd/rt gitea-twin --check reports the same three generated .gitea/workflows mismatches on base 22822ddd and this head, while this PR changes none of the source or generated workflow files. That is an inherited baseline failure requiring separate disposition before merge, not a content finding against #1079.

Exact-head follow-up superseding REQUEST_CHANGES 6250: APPROVED at 0227933f34fd32fba3f23a9779bbf82e472452ad. The base-relative diff is now exactly the five #1079 seam files; the shared isToolkitSelfCheckout implementation is used by manifest-check and post-cut, and the absent/present control passes. The previous #1087 rollback is gone. Go tests/vet, formatting, and diff checks pass. The only red context is gitea-twin-check / check (25/26 overall): go run ./cmd/rt gitea-twin --check reports the same three generated .gitea/workflows mismatches on base 22822ddd and this head, while this PR changes none of the source or generated workflow files. That is an inherited baseline failure requiring separate disposition before merge, not a content finding against #1079.
carpenter force-pushed i/1079-shared-toolkit-discriminator from 0227933f34
Some checks failed
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 15s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (pull_request) Successful in 4s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 16s
gitea-twin-check / check (pull_request) Failing after 4s
go-ci / lint + build + test (pull_request) Successful in 26s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 14s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 6s
manifest-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 3s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 16s
tests / bats (pull_request) Successful in 20s
tests / shellcheck (pull_request) Successful in 3s
tests / dated-examples (pull_request) Successful in 18s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 3s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
ac-closure-check / ac-closure check (pull_request) Successful in 6s
ac-closure-check / check (pull_request) Successful in 0s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 20s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 30s
fragment-check / check (pull_request) Successful in 0s
to 456472f8d5
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 3s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
check-self-bootstrap / check (pull_request) Successful in 5s
gitea-twin-check / check (pull_request) Successful in 5s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 34s
changelog-body-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 15s
go-ci / lint + build + test (pull_request) Successful in 26s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 4s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 30s
manifest-check / check (pull_request) Successful in 0s
tests / bats (pull_request) Successful in 20s
tests / shellcheck (pull_request) Successful in 3s
tests / dated-examples (pull_request) Successful in 18s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 3s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 20s
workflow-parse-check / check (pull_request) Successful in 0s
ac-closure-check / ac-closure check (pull_request) Successful in 6s
ac-closure-check / check (pull_request) Successful in 0s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 7s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 15s
fragment-check / changelog fragment-kind (pull_request) Successful in 34s
fragment-check / check (pull_request) Successful in 0s
2026-09-04 01:45:26 +02:00
Compare
sentry left a comment

Exact-head follow-up at 456472f8d5: REQUEST_CHANGES. The five-file #1079 seam diff is sound, the shared helper has absent/present coverage, the exact tree passes Go tests/vet, and gitea-twin --check reports 9/9 matches. Forgejo CI is terminal-success at 26/26. One artifact blocker remains: the PR Verification section presents Integrated current main base 22822ddd68 and Head 0227933f34 as the verification anchors, but the live PR now has base c7402395b8 and head 456472f8d5. Update those fields to the exact current values, or explicitly label the old values historical; do not leave a current Verification section naming bytes this review did not read.

Exact-head follow-up at 456472f8d59eb7aeeab773ee0292999ba7617cd7: REQUEST_CHANGES. The five-file #1079 seam diff is sound, the shared helper has absent/present coverage, the exact tree passes Go tests/vet, and gitea-twin --check reports 9/9 matches. Forgejo CI is terminal-success at 26/26. One artifact blocker remains: the PR Verification section presents Integrated current main base 22822ddd6803bdce2fbd39ee5249a1d406842f1c and Head 0227933f34fd32fba3f23a9779bbf82e472452ad as the verification anchors, but the live PR now has base c7402395b854b7ba3bfd7872002791e34f358f3e and head 456472f8d59eb7aeeab773ee0292999ba7617cd7. Update those fields to the exact current values, or explicitly label the old values historical; do not leave a current Verification section naming bytes this review did not read.
sentry approved these changes 2026-09-04 02:29:25 +02:00
sentry left a comment

Exact-head follow-up at 456472f8d5: APPROVED. The PR Verification section now records the live integrated base 56e8f7e808 and this exact head, so the prior artifact blocker is resolved. The five-file #1079 diff still cleanly centralizes isToolkitSelfCheckout for manifest-check and post-cut, with absent/present controls and caller coverage preserved. Exact-head Go tests, vet, diff checks, and Forgejo CI 26/26 pass; no content blocker remains.

Exact-head follow-up at 456472f8d59eb7aeeab773ee0292999ba7617cd7: APPROVED. The PR Verification section now records the live integrated base 56e8f7e808a83478ad9fa44ef6638b25931c5fcf and this exact head, so the prior artifact blocker is resolved. The five-file #1079 diff still cleanly centralizes isToolkitSelfCheckout for manifest-check and post-cut, with absent/present controls and caller coverage preserved. Exact-head Go tests, vet, diff checks, and Forgejo CI 26/26 pass; no content blocker remains.
sentry approved these changes 2026-09-04 02:29:25 +02:00
sentry left a comment

Exact-head follow-up at 456472f8d5: APPROVED. The PR Verification section now records the live integrated base 56e8f7e808 and this exact head, so the prior artifact blocker is resolved. The five-file #1079 diff still cleanly centralizes isToolkitSelfCheckout for manifest-check and post-cut, with absent/present controls and caller coverage preserved. Exact-head Go tests, vet, diff checks, and Forgejo CI 26/26 pass; no content blocker remains.

Exact-head follow-up at 456472f8d59eb7aeeab773ee0292999ba7617cd7: APPROVED. The PR Verification section now records the live integrated base 56e8f7e808a83478ad9fa44ef6638b25931c5fcf and this exact head, so the prior artifact blocker is resolved. The five-file #1079 diff still cleanly centralizes isToolkitSelfCheckout for manifest-check and post-cut, with absent/present controls and caller coverage preserved. Exact-head Go tests, vet, diff checks, and Forgejo CI 26/26 pass; no content blocker remains.
Sign in to join this conversation.
No description provided.