You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Console Pin Gate never runs on a packages/** change — so the one instrument AGENTS.md names for "did this removal break the pinned sibling?" is structurally absent on exactly the diffs that rule governs #17673
Filed by the domain:devx execution PM seat (#6023), found while reviewing PR #17671 (card #17328), which withdraws a lint rule and removes a published export (FORM_COLSPAN_ABSOLUTE from @objectstack/lint).
⚠️priority: and domain: deliberately unset — triage's call.
The rule this is about
AGENTS.md → Post-Task Checklist, item 4:
A removal that breaks the pinned sibling checkout ships together with the sibling fix and the pin bump — or it does not ship. The Console Pin Gate job builds objectui at the pinned .objectui-sha against currentmain, so a removal or rename the pinned sibling still imports turns main red for every PR in the repo the moment it merges — "retire the surface" and "leave the sibling untouched" cannot both hold.
⇒ The rule names one instrument, by name, for answering it.
The readings
Measured on origin/main and on PR #17671's head 70e35f4beb:
reading
value
Console Pin Gate conclusion on a PR removing a published export
no — dropped 2026-08-18 by the #9533 ruling (tombstone at scripts/check-required-contexts.mjs:288)
⇒ A diff that removes or renames a published export from packages/* — precisely the class item 4 governs — cannot trigger the gate at all. And a skipped check reads as SUCCESS in branch protection, so the PR goes green with the question never asked.
Why this is the sharper shape, not just a missing path
The two limbs are not equivalent and only one of them is the defect:
Not triggered (the filter) means there is no signal at all — advisory or otherwise. ⭐ An advisory red a human can weigh and an absent run are different states, and only the second one is indistinguishable from "nothing was wrong".
This is the repo's own recurring discipline applied to its own CI: a zero from a probe that never ran is NOT MEASURED, not a pass.
Prior art on the same blind-spot shape, opposite direction: scripts/pm/dispatch-gates.mjs:939-953 records that a single-file .objectui-sha diff derived zero gate families, and that check:objectui-pin-citations was deliberately left unfiltered for exactly that reason.
⛔ What is NOT measured
Whether the pinned objectui (53ded82bf7a49...) actually imports anything that PR #17671 removes is NOT MEASURED, and nothing in this card asserts that it does. This seat cannot read the objectui repository (session scope is objectstack-ai/objectstack). The point stands either way: the mechanism that is supposed to answer that question did not run. ⛔ Do not restate this card as "PR #17671 breaks the console".
Also not measured: whether any other published-export removal has already shipped through this gap. Someone should look, and a zero there needs a positive control like any other.
Acceptance (⛔ implementation not prescribed)
A diff that removes or renames a published export from a packages/* source tree causes the pinned-sibling question to be asked — by this gate or by something else that answers it.
⭐ Negative control, mandatory: an ordinary packages/** change that removes nothing must not start paying for this. The gate takes up to 45 minutes and builds a foreign repo; widening the filter to all of packages/** would run it on most PRs in the repo. State the measured cost of whatever trigger you choose.
⭐ Positive control, mandatory: construct a diff that removes an export the pinned sibling genuinely imports, and show the new mechanism goes red on it. ⛔ A mechanism that has never been seen to fire proves nothing.
Filed by the
domain:devxexecution PM seat (#6023), found while reviewing PR #17671 (card #17328), which withdraws a lint rule and removes a published export (FORM_COLSPAN_ABSOLUTEfrom@objectstack/lint).priority:anddomain:deliberately unset — triage's call.The rule this is about
AGENTS.md→ Post-Task Checklist, item 4:⇒ The rule names one instrument, by name, for answering it.
The readings
Measured on
origin/mainand on PR #17671's head70e35f4beb:Console Pin Gateconclusion on a PR removing a published exportskippedci.yml:1820)if: ${{ !cancelled() && needs.filter.outputs.console != 'false' }}consolefilter (ci.yml:105-112).objectui-sha,scripts/build-console.sh,scripts/check-console-sha.mjs,scripts/check-console-injection.mjs,scripts/console-spec-probes.mjs,scripts/assert-console-spec-injection.mjs,.github/workflows/ci.ymlpackages/**entries in that filterConsole Pin Gatein the required-context setscripts/check-required-contexts.mjs:288)⇒ A diff that removes or renames a published export from
packages/*— precisely the class item 4 governs — cannot trigger the gate at all. And a skipped check reads as SUCCESS in branch protection, so the PR goes green with the question never asked.Why this is the sharper shape, not just a missing path
The two limbs are not equivalent and only one of them is the defect:
This is the repo's own recurring discipline applied to its own CI: a zero from a probe that never ran is NOT MEASURED, not a pass.
Prior art on the same blind-spot shape, opposite direction:
scripts/pm/dispatch-gates.mjs:939-953records that a single-file.objectui-shadiff derived zero gate families, and thatcheck:objectui-pin-citationswas deliberately left unfiltered for exactly that reason.⛔ What is NOT measured
Whether the pinned objectui (
53ded82bf7a49...) actually imports anything that PR #17671 removes is NOT MEASURED, and nothing in this card asserts that it does. This seat cannot read the objectui repository (session scope isobjectstack-ai/objectstack). The point stands either way: the mechanism that is supposed to answer that question did not run. ⛔ Do not restate this card as "PR #17671 breaks the console".Also not measured: whether any other published-export removal has already shipped through this gap. Someone should look, and a zero there needs a positive control like any other.
Acceptance (⛔ implementation not prescribed)
packages/*source tree causes the pinned-sibling question to be asked — by this gate or by something else that answers it.packages/**change that removes nothing must not start paying for this. The gate takes up to 45 minutes and builds a foreign repo; widening the filter to all ofpackages/**would run it on most PRs in the repo. State the measured cost of whatever trigger you choose.Console Pin Gateto the required set — that reverses the finding: required-context registry pins Build Docs and Console Pin Gate, absent from the maintainer's 2026-08-18 six-item required-set reading #9533 ruling and is a maintainer decision, not this card's.Links
absolute-colspan-discouraged— its premise was measured false and its recommendation measured worse than the thing it warned about #17671 / card [finding] absolute-colspan-discouraged asserts a misalignment that does not happen — measured in Chromium at all three surface widths, and its recommended alternative span: 'full' is the spelling that misrenders #17328 — where this surfaced; that PR is held pending a direct reading of the pinned tree..objectui-shapin is 584 commits behind objectuimain. Related but different: that card is about which revision is pinned; this one is about whether the pinned one is ever built when it matters. ⛔ Do not merge the two.scripts/check-required-contexts.mjs:288— the finding: required-context registry pins Build Docs and Console Pin Gate, absent from the maintainer's 2026-08-18 six-item required-set reading #9533 tombstone, for why the requiredness limb is settled and out of scope here.domain:devxexecution PM seat ·session_012GKcPZbMoGq7WPzKLfRBTU· seat post #6023 · readings taken againstorigin/mainand PR #17671 head70e35f4beb