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
Filed by the domain:ui execution-seat PM from a sweep the objectui#6839 tree-flake repair (PR #8664) ran. ⛔ Not graded and not assigned.
Filed as one card with a shared checklist rather than seven cards, deliberately: the mechanism differs per package but the recipe is the transferable artifact, and splitting it scatters the recipe. ⚠️ Whoever takes it should still probe each file separately — see the warning at the end.
The family
contractEnvelope-6839 is 11 files. Two have no DOM (core/extract-records, react/nonGridRowCeiling) and are not in scope. Of the nine DOM files:
⭐ Two are ALREADY VACUOUS today — independent of any flake
These are not "at risk of a future race". Their refusal arms cannot fail for the right reason now:
plugin-dashboard/src/__tests__/ObjectPivotTable.contractEnvelope-6839.test.tsx — waits on queryByTestId('pivot') and the refusal arm expects 0 on that same node. ⇒ "drawn empty" and "drawn before the data arrived" are one reading. The arm cannot distinguish the two states it exists to distinguish.
plugin-gantt/src/ObjectGantt.contractEnvelope-6839.test.tsx — the inverse gap. Its positive arms already wait for the bars, but the refusal arm reads bars === 0 straight after a wait on find having merely been CALLED — no completion anchor at all. It passes whether the component refused or simply had not rendered yet.
The other five, each with what makes it weak
file
the wait it uses
plugin-calendar/ObjectCalendar
one shared wait on queryByTestId('calendar-view') — ⭐ its own comment already calls it "a mount signal rather than a rows signal"
plugin-charts/ObjectChart
lastSchema ?? queryByTestId('chart-empty-state') — ⚠️this package HAS a lazy boundary, so it is the closest kin to kanban's two-race case
A refusal arm needs a COMPLETION ANCHOR — something that appears only once the fetch has settled and only on the refusing branch (PR test(plugin-tree): split the contractEnvelope-6839 waits by expected outcome #8664 used the component's own "No records" panel, verified to render below the loading early return). ⛔ Without one, the arm can pass by timing out on an absence, which is a pin that never fails for the right reason.
Keep "refused" and "not yet rendered" as separate observations, carried as separate booleans, so one cannot stand in for the other.
⚠️ Two warnings for whoever takes it
⛔ Do not port a diff shape into an undiagnosed race. PR #8664's own finding: plugin-tree has zeroReact.lazy in its sources, so kanban's chunk-reveal race does not exist there and only the mirrored-state half applied — the symptoms even differ (expected 1 to be 2, a partial draw, versus kanban's expected +0 to be 2). plugin-charts does have a lazy boundary and plugin-tree did not, so the family is not uniform. Each file needs its own component-level probe.
⭐ A repeat-run sweep is too weak an instrument to clear these. PR #8664 ran all nine DOM files × 5 loaded iterations for 0 failures — and reported that with its power rather than as a clean bill: the pre-fix tree file's own observed rate was ~1 in 12, and 5 runs miss an 8%-per-run flake about two thirds of the time. ⇒ ⛔ Do not treat a green batch as evidence a sibling is fine; the two vacuous ones above would pass such a sweep forever.
Provenance
Swept 2026-09-08 by the PR #8664 seat via git ls-files | grep contractEnvelope-6839, with the two already-known files (kanban repaired, tree broken) as the lit control. ⚠️ The per-file characterisations above are readings of each file's wait expression, not probes of each component — that is the work this card is asking for.
Filed by the
domain:uiexecution-seat PM from a sweep the objectui#6839 tree-flake repair (PR #8664) ran. ⛔ Not graded and not assigned.Filed as one card with a shared checklist rather than seven cards, deliberately: the mechanism differs per package but the recipe is the transferable artifact, and splitting it scatters the recipe.⚠️ Whoever takes it should still probe each file separately — see the warning at the end.
The family
contractEnvelope-6839is 11 files. Two have no DOM (core/extract-records,react/nonGridRowCeiling) and are not in scope. Of the nine DOM files:⭐ Two are ALREADY VACUOUS today — independent of any flake
These are not "at risk of a future race". Their refusal arms cannot fail for the right reason now:
plugin-dashboard/src/__tests__/ObjectPivotTable.contractEnvelope-6839.test.tsx— waits onqueryByTestId('pivot')and the refusal arm expects 0 on that same node. ⇒ "drawn empty" and "drawn before the data arrived" are one reading. The arm cannot distinguish the two states it exists to distinguish.plugin-gantt/src/ObjectGantt.contractEnvelope-6839.test.tsx— the inverse gap. Its positive arms already wait for the bars, but the refusal arm readsbars === 0straight after a wait onfindhaving merely been CALLED — no completion anchor at all. It passes whether the component refused or simply had not rendered yet.The other five, each with what makes it weak
plugin-calendar/ObjectCalendarqueryByTestId('calendar-view')— ⭐ its own comment already calls it "a mount signal rather than a rows signal"plugin-charts/ObjectChartlastSchema ?? queryByTestId('chart-empty-state')—plugin-dashboard/ObjectDataTablequeryByTestId('rows') ?? queryByTestId('table-empty-state')— the exact two-branch shape PR #8664 replacedplugin-map/ObjectMapLoading map...to clear — ⭐ its own comment calls it "a settle signal rather than a rows signal"plugin-timeline/ObjectTimelinedata-item-countto be non-null — satisfied the instant the renderer mounts,'0'included⭐ The checklist, from the two repairs that landed
loadingearly return). ⛔ Without one, the arm can pass by timing out on an absence, which is a pin that never fails for the right reason.⛔ Do not port a diff shape into an undiagnosed race. PR #8664's own finding: plugin-tree has zero
React.lazyin its sources, so kanban's chunk-reveal race does not exist there and only the mirrored-state half applied — the symptoms even differ (expected 1 to be 2, a partial draw, versus kanban'sexpected +0 to be 2). plugin-charts does have a lazy boundary and plugin-tree did not, so the family is not uniform. Each file needs its own component-level probe.⭐ A repeat-run sweep is too weak an instrument to clear these. PR #8664 ran all nine DOM files × 5 loaded iterations for 0 failures — and reported that with its power rather than as a clean bill: the pre-fix tree file's own observed rate was ~1 in 12, and 5 runs miss an 8%-per-run flake about two thirds of the time. ⇒ ⛔ Do not treat a green batch as evidence a sibling is fine; the two vacuous ones above would pass such a sweep forever.
Provenance
Swept 2026-09-08 by the PR #8664 seat via⚠️ The per-file characterisations above are readings of each file's wait expression, not probes of each component — that is the work this card is asking for.
git ls-files | grep contractEnvelope-6839, with the two already-known files (kanban repaired, tree broken) as the lit control.