Measured while implementing #6505 (branch claude/issue-6505-predicate-valued-gate-rules). Filed unassigned rather than folded in: the file is in an unmerged PR, so it does not exist on main and cannot be edited from the #6505 branch.
The collision
PR #6510 (Fixes #6445, head cbb77c304, in the merge queue) adds
packages/react/src/__tests__/SchemaRenderer.disabledGateFaultDiagnostic.test.tsx. Its group-1 development cell reads:
mount([{id: 'n1',disabled: FAULT_BARE_DEV}]);
...
// subtracted by NAME rather than by countexpect(nonValidatorWarnings(warn)).toHaveLength(1);expect(allWarnings(warn)).toHaveLength(2);// <- line 372The 2 is our line + the #6505 false positive. FAULT_BARE_DEV is the bare expression 'devonlybadroot.locked == true', the mount helper always supplies type, and id is a string — so disabled must be a boolean is the only thing validateSchema reports for that node.
Once #6505 lands, that node validates, the second warning is never emitted, and allWarnings(warn) is 1. Line 372 goes red.
The file's own design is not at fault and is arguably what caught this: everywhere else it subtracts the noise by name (nonValidatorWarnings), which is invariant under the #6505 fix. Line 372 is the one raw-total pin in a dev cell, and its docblock says why the raw total was worth pinning at all. The other two dev cells (nonValidatorWarnings(...).toHaveLength(0) at ~537, and the dev/prod parity cell at ~643) are unaffected. Production cells are unaffected — the validator is a no-op there, which the file already states.
Scope
Exactly one assertion, in one file:
| file | line | now | after #6505 |
|---|
packages/react/src/__tests__/SchemaRenderer.disabledGateFaultDiagnostic.test.tsx | ~372 | expect(allWarnings(warn)).toHaveLength(2) | 1 |
Why this needs its own card rather than a rider
Neither PR can fix it alone:
So whichever merges second turns the other's suite red on main, and the fix is a one-line edit whose correct value depends on which order that was. Landing order:
Whoever takes it should also consider whether the raw-total pin is worth keeping in a dev cell at all now: with the #6505 false positive gone, allWarnings and nonValidatorWarnings are the same number in every dev cell, so the line's stated value ("a build that printed our line twice") is already carried by the by-name assertion beside it.
Ref: #6445, #6505, PR #6510.
Generated by Claude Code
Measured while implementing #6505 (branch
claude/issue-6505-predicate-valued-gate-rules). Filed unassigned rather than folded in: the file is in an unmerged PR, so it does not exist onmainand cannot be edited from the #6505 branch.The collision
PR #6510 (
Fixes #6445, headcbb77c304, in the merge queue) addspackages/react/src/__tests__/SchemaRenderer.disabledGateFaultDiagnostic.test.tsx. Its group-1 development cell reads:The
2is our line + the #6505 false positive.FAULT_BARE_DEVis the bare expression'devonlybadroot.locked == true', the mount helper always suppliestype, andidis a string — sodisabled must be a booleanis the only thingvalidateSchemareports for that node.Once #6505 lands, that node validates, the second warning is never emitted, and
allWarnings(warn)is1. Line 372 goes red.The file's own design is not at fault and is arguably what caught this: everywhere else it subtracts the noise by name (
nonValidatorWarnings), which is invariant under the #6505 fix. Line 372 is the one raw-total pin in a dev cell, and its docblock says why the raw total was worth pinning at all. The other two dev cells (nonValidatorWarnings(...).toHaveLength(0)at ~537, and the dev/prod parity cell at ~643) are unaffected. Production cells are unaffected — the validator is a no-op there, which the file already states.Scope
Exactly one assertion, in one file:
packages/react/src/__tests__/SchemaRenderer.disabledGateFaultDiagnostic.test.tsxexpect(allWarnings(warn)).toHaveLength(2)1Why this needs its own card rather than a rider
Neither PR can fix it alone:
validateSchemadeclaresdisabled/visible"must be a boolean", so every expression-valued gate is reported invalid — the console line sits right beside the real diagnostic #6505 branch cannot edit a file that is not onmain.disabled/disabledOnpredicate instead of silently greying the control out #6510 cannot pre-adjust to a fix that has not merged without going red now.So whichever merges second turns the other's suite red on
main, and the fix is a one-line edit whose correct value depends on which order that was. Landing order:disabled/disabledOnpredicate instead of silently greying the control out #6510 first, then Dev-modevalidateSchemadeclaresdisabled/visible"must be a boolean", so every expression-valued gate is reported invalid — the console line sits right beside the real diagnostic #6505 — the Dev-modevalidateSchemadeclaresdisabled/visible"must be a boolean", so every expression-valued gate is reported invalid — the console line sits right beside the real diagnostic #6505 PR must carry the one-line edit (the file exists by then), ormaingoes red between the two merges.validateSchemadeclaresdisabled/visible"must be a boolean", so every expression-valued gate is reported invalid — the console line sits right beside the real diagnostic #6505 first, then fix(react): report a faultingdisabled/disabledOnpredicate instead of silently greying the control out #6510 — fix(react): report a faultingdisabled/disabledOnpredicate instead of silently greying the control out #6510 must rebase and change the2to a1.Whoever takes it should also consider whether the raw-total pin is worth keeping in a dev cell at all now: with the #6505 false positive gone,
allWarningsandnonValidatorWarningsare the same number in every dev cell, so the line's stated value ("a build that printed our line twice") is already carried by the by-name assertion beside it.Ref: #6445, #6505, PR #6510.
Generated by Claude Code