chore(stack): remove stack tooling, scope the draft lock, align docs - #364
Merged
Conversation
Nothing drives this machinery any more. Overlays were drained and deregistered, fork/changes and fork/integration are frozen, and upstream is now merged straight into fork/dev -- a plain git merge, because upstream is append-only and the previous sync recorded its ancestry. Removed: fork-stack.ts, rebase-pr-stack.ts, compose-integration-overlays.ts, rebase-integration-overlays.ts and client-overlay-owner.ts with their tests; the compose-integration, rebase-pr-stack and force-update-overlay-tip workflows; client-overlay-ownership.json; the four fork:* package scripts; and the stack-ship-path and client-overlays docs. Kept, deliberately: classify-deployment-diff.sh is not stack tooling. It is the shared definition of what a diff means, run by both fork-release and the smart-host poller so the two cannot disagree about what ships. Its tests still pass. managed-pr-draft-lock.yml still guards #255, #1 and #27, which remain open drafts. Merging #255 would push fork CI plumbing into the upstream mirror, so the lock matters more now that nothing else watches those branches. pr-stack.json survives purely as that workflow's allowlist, trimmed to the three PRs and annotated to say so. The lock read its allowlist from fork/changes, a frozen branch, so edits to the manifest could never have taken effect. It now reads fork/dev. Agent guidance is rewritten rather than deleted: AGENTS.md referenced removed commands in a dozen places, which would have sent an agent to a script that no longer exists. fork-stack.md, stack-history-rewrite.md and fork-base.md are bannered or corrected -- the branches they describe still exist even though the workflow around them does not. Verified: full recursive typecheck clean, 2248 tests pass, classifier tests pass, and the draft lock's jq query still matches the managed PRs and rejects an unmanaged one. The single failing test predates this change. Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
The draft lock triggered on every pull request in the repository, started a run, looked itself up in an allowlist, exited, and left a "Keep managed PR draft" check on PRs it had nothing to do with. Filter it to the bases the managed PRs actually target: main, fork/base and fork/tim. Ordinary work targets fork/dev, so it no longer runs there at all. Not folded into Fork CI, which was the other option considered. Fork CI deliberately does not watch main, and #255 targets main -- merging that would push fork CI plumbing into the upstream mirror, which is the single worst outcome this guard exists to prevent. Folding it in would have quietly dropped the guard on the one PR that most needs it. Docs are aligned to the model that is actually running rather than the one that was proposed: - The handover doc's synchronization section described rebuilding the provenance stack and importing a C1..C2 tree delta. That is gone; upstream is merged. Rewritten around the merge, with the old procedure kept as a short "what this replaced" note and why it was never necessary for upstream. - Core invariants and operational rules no longer instruct importing a tree delta or recording ancestry with merge -s ours. - fork-stack.md was 714 lines describing the removed workflow. Replaced with a short topology doc: what each branch is, that the provenance branches are no longer rebuilt, and that their PRs stay draft. - stack-history-rewrite.md is deleted along with its inbound links. It documents rewriting stack history, which no longer happens. Verified: no reference anywhere to removed tooling or deleted docs, and no broken internal links in the handover doc. Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
patroza
added a commit
that referenced
this pull request
Aug 6, 2026
Reverts the `edited` half of [#359](#359). **My change, my bug** — and it is a merge-gate bypass, so it should go in ahead of the other open PRs. ## What I got wrong #359 added `edited` to the `pull_request` activity types so retargeting a PR would run CI, with a job-level `if` guard skipping edits that did not move the base. I reasoned the guard would keep the cost down. It does — but a **skipped job still publishes a check run**, GitHub counts a skipped required check as **satisfied**, and the skipped run **supersedes** the real one. So editing the title or body of a PR whose checks had *failed* replaces those failures with skipped runs and leaves it mergeable. Observed live on #364 — I edited the body, and: ``` Check skipping Mobile Native Static Analysis skipping Release Smoke skipping Test skipping ``` with `mergeable: MERGEABLE`, `mergeStateStatus: CLEAN`. Every required check satisfied by a run that executed nothing. ## Change Drop `edited` and the four job guards. Keep `ready_for_review`, which is what actually fixed the case #359 was opened for: #357 had been retargeted and then **marked ready**, and nothing fired. ## What this gives up Retargeting without a push no longer triggers CI. That is rarer now that overlays are gone and everything targets `fork/dev`, and it is recoverable — close and reopen fires `reopened`, which is watched. That is how #357 was unblocked in the first place. A gap that needs a deliberate action to work around beats a bypass that needs a title edit to trigger. Co-authored by [@patroza](https://github.com/patroza) opened by [Patrick Roza](https://discord.com/users/95218063095377920) in chat thread **Discord** · [Discord](https://discord.com/channels/1083767712431480922/1534783738322485399/1534783738322485399) · [T3](https://t3vm/?thread=584a9ad3-243e-4308-8a13-49acdd758b17) Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com> Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Nothing drives this machinery any more. Overlays were drained and deregistered,
fork/changesandfork/integrationare frozen, and upstream is now merged straight intofork/dev— a plaingit merge, because upstream is append-only and the previous sync recorded its ancestry.Removed
fork-stack.ts,rebase-pr-stack.ts,compose-integration-overlays.ts,rebase-integration-overlays.ts,client-overlay-owner.ts+ all 5 test filescompose-integration.yml,rebase-pr-stack.yml,force-update-overlay-tip.yml.github/client-overlay-ownership.jsonpackage.jsonfork:stack,fork:stack:sync,fork:overlay-owner,fork:rebase-overlaysstack-ship-path.md,client-overlays.mdKept, deliberately
classify-deployment-diff.shis not stack tooling. It is the shared definition of what a diffmeans, run by both
fork-releaseand the smart-host poller so the two cannot disagree about whatships. Its tests still pass.
managed-pr-draft-lock.ymlstill guards #255, #1 and #27, which remain open drafts. Merging #255would push fork CI plumbing into the upstream mirror — that lock matters more now that nothing else
watches those branches.
pr-stack.jsonsurvives purely as its allowlist, trimmed to those three PRsand annotated to say so.
A latent bug found on the way
The draft lock read its allowlist from
?ref=fork/changes— a frozen branch. Any edit to themanifest could never have taken effect, including the overlay deregistration in #348. It now reads
fork/dev.Guidance rewritten, not just deleted
AGENTS.mdreferenced removed commands in a dozen places (pnpm fork:stack update --push,node scripts/rebase-pr-stack.ts sync --push, …). Deleting the scripts without this would have sentan agent to a script that no longer exists.
fork-stack.md,stack-history-rewrite.mdandfork-base.mdare bannered or corrected rather than deleted — the branches they describe stillexist even though the workflow around them does not.
Draft lock: no longer runs on unrelated PRs
It triggered on every pull request, started a run, looked itself up in an allowlist, exited, and
left a
Keep managed PR draftcheck on PRs it had nothing to do with.Now filtered to the bases the managed PRs actually target —
main,fork/base,fork/tim. Ordinarywork targets
fork/dev, so it does not run there at all.Not folded into Fork CI, which was the other option. Fork CI deliberately does not watch
main,and #255 targets
main— merging that pushes fork CI plumbing into the upstream mirror, thesingle worst outcome this guard prevents. Folding it in would have quietly dropped the guard on the
one PR that most needs it.
Docs aligned to what is actually running
a
C1..C2tree delta. Rewritten around the direct merge, keeping a short what this replaced noteand why that was never necessary for upstream in the first place.
ancestry with
merge -s ours.fork-stack.md: 714 lines describing the removed workflow → a short topology doc. What eachbranch is, that the provenance branches are no longer rebuilt, that their PRs stay draft.
stack-history-rewrite.md: deleted with its inbound links. It documents rewriting stackhistory, which no longer happens.
docs/is nowfork-base.md,fork-stack.md,README.md,sidebar-v2.md,stable-dev-release-branch-handover.md.Verified: no reference anywhere to removed tooling or deleted docs, and no broken internal links in
the handover doc.
Validation
CodexTextGenerationstructured output) reproduces onfork/devunmerged and predates this change.classify-deployment-diff.test.shpasses.jqquery verified against the trimmed manifest: matches [fork] selected upstream candidates #27, rejects anunmanaged number.
Not done
docs/fork-stack.mdis kept (bannered). It has ~10 inbound links fromAGENTS.mdand documents theprovenance branches, which still exist. Removing it is a further docs pass, not part of deleting the
tooling.
Co-authored by @patroza
opened by Patrick Roza in chat thread Discord · Discord · T3