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
finding: the liveness author-lint's array fan-out (getNested) has lost its warned subject a SECOND time — the ledger now has ZERO dotted warned entries #10262
Filed unassigned by the #10068 execution seat (session session_016gcKVsiywU9CcS96S5t9qD). This is #7079 recurring, and the recurrence is the finding — the previous instance was closed by re-subjecting the test to a row that has now itself flipped.
What happened
packages/lint/src/lint-liveness-properties.ts resolves a dotted warn-map path (navigation.runAction) by fanning getNested out over an array container level. Top-level warned keys never reach getNested at all — checkItem takes the path.includes('.') ? getNested(item, path) : [item[path]] branch — so only a dotted warned entry exercises the fan-out.
#10068 flipped app.props.navigation.children.runActionplanned → live (the objectui consumer landed). Measured across all 30 shipped ledgers immediately after that flip:
Zero dotted entries remain.getNested is now exercised by nothing, so the walk is untested in exactly the way its own docblock warns about: a getNested that stopped at index 0 "still warns on every single-entry fixture, on every top-level warned key, and on the first item of every real app — so nothing else in this file would go red."
Why this is a recurrence, not a one-off
This is the same loss the file already records once:
The structural point: the test's subject is a ledger verdict, and ledger verdicts are supposed to move. Coupling a walker property to "whichever row happens to carry authorWarn under an array container today" makes the coverage a function of unrelated cross-repo landings. Twice now, correctly flipping a row to live has silently deleted a regression test.
It did not leave the three assertions red and did not paper over them with a bare silence check. It applied the disposition #6774 used for colorVariant: replaced the positive assertions with a silence pin (authoring runAction must now produce no finding — so a half-reverted flip, or a pin rolled back under it, shows up right there) plus the anti-vacuity guard that authors a still-warned key in the same call, so "no findings" cannot pass because the lint stopped loading ledgers. See the app navigation block at the bottom of packages/lint/src/lint-liveness-properties.test.ts.
That keeps the file honest but does not restore fan-out coverage. That is the debt this card carries.
Options
A — test the walker, not the ledger. Give getNested (or lintLivenessProperties) a seam and unit-test the fan-out against a synthetic warn map. Decouples the property under test from ledger churn permanently; costs a test-only export/seam on a published package and gives up the "real ledger contract test" coupling for this one assertion.
C — accept the gap. Record it and move on. Not recommended: the failure mode is silent and the walk feeds an author-facing advisory.
Recommendation: A. The fan-out is a property of the walker, and the last two years of this row show the ledger cannot be relied on to keep supplying a subject for it. Keep every other assertion in the file ledger-driven — those are genuinely contract tests — and move only this one to the walker's own level.
⚠️ Not urgent, not a shipped defect: nothing an author sees is wrong today. The exposure is that a future regression in getNested would go unnoticed.
Filed unassigned by the #10068 execution seat (session
session_016gcKVsiywU9CcS96S5t9qD). This is #7079 recurring, and the recurrence is the finding — the previous instance was closed by re-subjecting the test to a row that has now itself flipped.What happened
packages/lint/src/lint-liveness-properties.tsresolves a dotted warn-map path (navigation.runAction) by fanninggetNestedout over an array container level. Top-level warned keys never reachgetNestedat all —checkItemtakes thepath.includes('.') ? getNested(item, path) : [item[path]]branch — so only a dotted warned entry exercises the fan-out.#10068 flipped
app.props.navigation.children.runActionplanned→live(the objectui consumer landed). Measured across all 30 shipped ledgers immediately after that flip:agent.lifecycle/memory/guardrails/structuredOutputexperimental)field.relatedListFilterobject.externalSharingModeltool.outputSchemaexperimental)translation.flowsZero dotted entries remain.
getNestedis now exercised by nothing, so the walk is untested in exactly the way its own docblock warns about: agetNestedthat stopped at index 0 "still warns on every single-entry fixture, on every top-level warned key, and on the first item of every real app — so nothing else in this file would go red."Why this is a recurrence, not a one-off
This is the same loss the file already records once:
dashboard.widgets.colorVariantlive → the fan-out lost its only subject → filed as finding: the liveness author-lint's array fan-out (getNested) has no warned subject left, so it is now untested #7079 rather than downgraded into a silence check that would pass on a broken walk.getNested) has no warned subject left, so it is now untested #7079 was closed by re-subjecting the assertion tonavigation.runAction.runActionliveness-ledger row tolive— the objectui half landed, and it needs TWO evidence pointers, not one #10068 flippednavigation.runActionlive → the subject is gone again, and this time there is no replacement anywhere in the ledger.The structural point: the test's subject is a ledger verdict, and ledger verdicts are supposed to move. Coupling a walker property to "whichever row happens to carry
authorWarnunder an array container today" makes the coverage a function of unrelated cross-repo landings. Twice now, correctly flipping a row tolivehas silently deleted a regression test.What #10068 did in the meantime
It did not leave the three assertions red and did not paper over them with a bare silence check. It applied the disposition #6774 used for
colorVariant: replaced the positive assertions with a silence pin (authoringrunActionmust now produce no finding — so a half-reverted flip, or a pin rolled back under it, shows up right there) plus the anti-vacuity guard that authors a still-warned key in the same call, so "no findings" cannot pass because the lint stopped loading ledgers. See theapp navigationblock at the bottom ofpackages/lint/src/lint-liveness-properties.test.ts.That keeps the file honest but does not restore fan-out coverage. That is the debt this card carries.
Options
getNested(orlintLivenessProperties) a seam and unit-test the fan-out against a synthetic warn map. Decouples the property under test from ledger churn permanently; costs a test-only export/seam on a published package and gives up the "real ledger contract test" coupling for this one assertion.getNested) has no warned subject left, so it is now untested #7079 did. Cheapest now, and this card is the evidence it does not hold: it has already failed once, and the wait is unbounded.Recommendation: A. The fan-out is a property of the walker, and the last two years of this row show the ledger cannot be relied on to keep supplying a subject for it. Keep every other assertion in the file ledger-driven — those are genuinely contract tests — and move only this one to the walker's own level.
getNestedwould go unnoticed.