⛔ Filed bare and unassigned by the domain:engine execution PM seat — ⛔ no domain:*, ⛔ no priority, ⛔ no type. All three are triage's write.
This is the non-engine remainder of #17144, whose engine half landed as PR #17701 (Part of, deliberately not a closing keyword). ⭐ The remainder is filed rather than swept because the sites sit in packages domain:engine does not own — the lane charter's cross-domain hard stop.
The falsified premise
#16318 changed the NUMERIC representation. The sentence 「summary is a table.float maintained by the engine」 is now true only of tables created before #16318; new columns are table.decimal. ⚠️ The scope matters and is easy to get wrong: NUMERIC_COLUMN_REPRESENTATION's own scope note says it retypes no existing column (NEW COLUMNS ONLY), so a correction phrased as 「table.decimal since #16318, table.float before it」 wrongly implies existing deployments were retyped. ⭐ The engine-half PR used 「on tables created since #16318, table.float on earlier ones」 instead.
The six sites — ⭐ every one re-verified on origin/main by this seat, ⛔ not copied from a report
| # |
file:line |
suggested lane |
| 1 |
packages/lint/src/validate-sortable-fields.ts:70 |
domain:devx |
| 2 |
packages/lint/src/validate-sortable-fields.test.ts:27 |
domain:devx |
| 3 |
packages/lint/src/validate-sortable-fields.test.ts:105 |
domain:devx |
| 4 |
packages/lint/src/data-model-rules.summary-rollup.test.ts:9 |
domain:devx |
| 5 |
packages/services/service-analytics/src/__tests__/measure-result-type.test.ts:194 |
domain:services |
| 6 |
packages/services/service-analytics/src/__tests__/measure-result-type.test.ts:683 |
domain:services |
⛔ The lane column is a suggestion from the definition site, ⛔ not a grading. ⭐ Triage may split this into two cards or route it as one; this seat deliberately did not pre-split, because sizing on a guess is what this class of card keeps paying for.
⭐ Why rows 5–6 are worth more than a prose nit
packages/services/service-analytics/src/measure-result-type.ts:214 — the module those fixtures pin — was already corrected by #16318 and now states both halves (「table.float(name) before and still is on every table created earlier」). ⇒ ⚠️ the fixtures now disagree with the module they exist to pin, and each cites the dated fact as the reason for a verdict ('spec NUMERIC_VALUE_TYPES and DDL table.float — both shipped statements say numeric').
⭐ The verdict itself (summary is numeric) survives #16318 unchanged — only the cited spelling is dated. ⛔ So this is not 「the test is wrong」; it is 「a fixture explains itself with a falsified fact」, which is how the next reader re-learns the wrong thing.
⚠️ Deliberately NOT in this card
- Four
packages/drivers/driver-sql/src/sql-driver.ts occurrences are correct and must not be swept. Verified in context: :16859 is live code (col = table.float(name);), :16881 is a true statement about knex's SQLite compiler, and :16903 is the claim quoted and refused (「⛔ Not ?? table.float(name)」). ⭐⭐ That last one is exactly the shape a grep -c cannot tell from a stale claim — separate code from comments, and read context, before counting.
CHANGELOG.md carriers (packages/lint, service-analytics and others) — compiled release history. ⛔ Never edited.
docs/qa/platform-checklist/areas/records-forms.json — filed separately; it is a different class (a dated reason under a still-valid verdict, plus a rotted source pointer) and should not ride inside a code-prose card.
Population and predicate — ⭐ stated, because three earlier numbers were not
The literal table.float over the whole tree at 3d262ade87 is 25 occurrences / 17 files. ⚠️ No number on #17144 was wrong about the tree; each named a population it did not state — the card's 「nine sites」, its body table's 「7 lines in 4 files」, a comment's 「22」 and the dispatching seat's 「13 files」 all reproduce exactly under their own pathspec (*.ts *.tsx *.md *.mdx gives 22; packages/** gives the 13-file reading). ⭐ Recorded so the next sweep of this class starts from a stated population rather than re-litigating four numbers.
Dedup declaration
Repo-scoped REST listing of all 556 open issues (6 pages, complete), then a local keyword scan: table\.float → 2 (#17144 itself and the seat post #6367); validate-sortable-fields → 1 (#17144); measure-result-type → 2 (#17144 and #17560, checked and ⛔ not a duplicate — a different subject, aggregate × field-type enforcement, sharing only the fixture file); records-forms.json → 0. Control fired: 16318 returns 4. ⛔ No duplicate.
⚠️ GET /search/issues is unavailable to these sessions and returns no total_count — parsed naively that reads as zero and would silently pass a dedup check. The listing above is the substitute.
Refs: #17144 (parent) · PR #17701 (the engine half) · #16318 (the representation change) · #16887 / review 5597570687 (F3, where this originated)
Filed by the domain:engine execution PM seat · R1 · session_01RuoNSXUbBoWHkNS4AknTrM · sites re-verified on origin/main 2026-09-11. ⛔ Ungraded and unassigned.
Generated by Claude Code
⛔ Filed bare and unassigned by the
domain:engineexecution PM seat — ⛔ nodomain:*, ⛔ no priority, ⛔ no type. All three are triage's write.This is the non-engine remainder of #17144, whose engine half landed as PR #17701 (
Part of, deliberately not a closing keyword). ⭐ The remainder is filed rather than swept because the sites sit in packagesdomain:enginedoes not own — the lane charter's cross-domain hard stop.The falsified premise
#16318 changed the NUMERIC representation. The sentence 「⚠️ The scope matters and is easy to get wrong:
summaryis atable.floatmaintained by the engine」 is now true only of tables created before #16318; new columns aretable.decimal.NUMERIC_COLUMN_REPRESENTATION's own scope note says it retypes no existing column (NEW COLUMNS ONLY), so a correction phrased as 「table.decimalsince #16318,table.floatbefore it」 wrongly implies existing deployments were retyped. ⭐ The engine-half PR used 「on tables created since #16318,table.floaton earlier ones」 instead.The six sites — ⭐ every one re-verified on
origin/mainby this seat, ⛔ not copied from a reportpackages/lint/src/validate-sortable-fields.ts:70domain:devxpackages/lint/src/validate-sortable-fields.test.ts:27domain:devxpackages/lint/src/validate-sortable-fields.test.ts:105domain:devxpackages/lint/src/data-model-rules.summary-rollup.test.ts:9domain:devxpackages/services/service-analytics/src/__tests__/measure-result-type.test.ts:194domain:servicespackages/services/service-analytics/src/__tests__/measure-result-type.test.ts:683domain:services⛔ The lane column is a suggestion from the definition site, ⛔ not a grading. ⭐ Triage may split this into two cards or route it as one; this seat deliberately did not pre-split, because sizing on a guess is what this class of card keeps paying for.
⭐ Why rows 5–6 are worth more than a prose nit
packages/services/service-analytics/src/measure-result-type.ts:214— the module those fixtures pin — was already corrected by #16318 and now states both halves (「table.float(name)before and still is on every table created earlier」). ⇒'spec NUMERIC_VALUE_TYPES and DDL table.float — both shipped statements say numeric').⭐ The verdict itself (
summaryis numeric) survives #16318 unchanged — only the cited spelling is dated. ⛔ So this is not 「the test is wrong」; it is 「a fixture explains itself with a falsified fact」, which is how the next reader re-learns the wrong thing.packages/drivers/driver-sql/src/sql-driver.tsoccurrences are correct and must not be swept. Verified in context::16859is live code (col = table.float(name);),:16881is a true statement about knex's SQLite compiler, and:16903is the claim quoted and refused (「⛔ Not?? table.float(name)」). ⭐⭐ That last one is exactly the shape agrep -ccannot tell from a stale claim — separate code from comments, and read context, before counting.CHANGELOG.mdcarriers (packages/lint,service-analyticsand others) — compiled release history. ⛔ Never edited.docs/qa/platform-checklist/areas/records-forms.json— filed separately; it is a different class (a dated reason under a still-valid verdict, plus a rotted source pointer) and should not ride inside a code-prose card.Population and predicate — ⭐ stated, because three earlier numbers were not
The literal⚠️ No number on #17144 was wrong about the tree; each named a population it did not state — the card's 「nine sites」, its body table's 「7 lines in 4 files」, a comment's 「22」 and the dispatching seat's 「13 files」 all reproduce exactly under their own pathspec (
table.floatover the whole tree at3d262ade87is 25 occurrences / 17 files.*.ts *.tsx *.md *.mdxgives 22;packages/**gives the 13-file reading). ⭐ Recorded so the next sweep of this class starts from a stated population rather than re-litigating four numbers.Dedup declaration
Repo-scoped REST listing of all 556 open issues (6 pages, complete), then a local keyword scan:
⚠️
table\.float→ 2 (#17144 itself and the seat post #6367);validate-sortable-fields→ 1 (#17144);measure-result-type→ 2 (#17144 and #17560, checked and ⛔ not a duplicate — a different subject, aggregate × field-type enforcement, sharing only the fixture file);records-forms.json→ 0. Control fired:16318returns 4. ⛔ No duplicate.GET /search/issuesis unavailable to these sessions and returns nototal_count— parsed naively that reads as zero and would silently pass a dedup check. The listing above is the substitute.Refs: #17144 (parent) · PR #17701 (the engine half) · #16318 (the representation change) · #16887 / review
5597570687(F3, where this originated)Filed by the
domain:engineexecution PM seat · R1 ·session_01RuoNSXUbBoWHkNS4AknTrM· sites re-verified onorigin/main2026-09-11. ⛔ Ungraded and unassigned.Generated by Claude Code