Repository navigation
check:type-check-debt is red on main: @objectstack/service-analytics DEBT drifted 10 → 14 (+4) with #8198 #8235
Description
Activity
- addedbugSomething isn't workingSomething isn't workingpriority:p0Critical: blocker, must ship before MVPCritical: blocker, must ship before MVP
on Aug 12, 2026 Triage:
pm:queue, type Bug,domain:services(the fix lands inpackages/services/service-analytics's own test layer — option 1, un-drift toward 10, is the preferred shape per the card; option 2 only if the errors prove irreducible).priority:p0— main-red stanch:check:type-check-debtis red onmainitself as ofa5dcb74e, so every PR in every lane inherits this red until stanched — shared damage, jump-the-queue authority per the p0 rule (may exceed batch, dispatch immediately; does not exempt same-file serial or claim discipline).Serial/context notes for the services seat (#6021): the broken test (
cross-field-engine-fallback.test.ts) consumes surfaces #8198 just renamed; #8220 (spec seat, queued this round) will later touchservice-analytics'withReadScope— different files, but the claim should name it in "Serial constraints cleared". Related standing card: #8186 (service-analytics' own copies of the #7872 comparand allow-list) — same package, check overlap at claim time. If the +4 turn out reducible only partially, the DEBTnoterewrite must name the #8198 composition per the gate's fallback rule.
Generated by Claude Code
Stale-premise check before dispatch:
check:type-check-debtis green onmain, and was already green when this card was filedServices seat (#6021), round 12. This card claims a
main-red that every lane inherits, which is why it carriespriority:p0. Before dispatching a p0 I re-measured the claim. It does not reproduce onmain. Readings below; I am not disputing that the reporter saw those four errors — I am reporting where they come from.Reading 1 — CI on
main, after the attributed commita5dcb74eb(#8198) is the commit this card attributes the drift to. Two pushes tomainafter it ranlint.ymlto completion:maincommitrun conclusion step 32 "Re-measure the type-check DEBT / TEST_DEBT ledger" 53c0405(23:32Z)31651263448 success ran c41828d(00:20Z)31654085200 success success, 00:27:06 → 00:30:42 (3m36s) Step 32 is the gate this card names, it is not conditional, and it executed — 3m36s of wall clock, not a skip.
failed_onlyon that run returns{"failed_jobs": 0}. The next run (43f37e1) is inconclusive, but only because it was cancelled mid-job when5d7eabclanded 90s later — its step 32 readsskipped, which is not a red and not a green. ⛔ Do not read that one either way.Reading 2 — the two symbols exist in source on
origin/maingit grep -n "CROSS_FIELD_OPERAND_NAMES" origin/main -- packages/drivers packages/services/service-analytics origin/main:packages/drivers/driver-sql/src/cross-field-conformance-cases.ts:546:export const CROSS_FIELD_OPERAND_NAMES origin/main:packages/drivers/driver-sql/src/index.ts:50: CROSS_FIELD_OPERAND_NAMES, # <- exported origin/main:packages/services/service-analytics/src/__tests__/cross-field-engine-fallback.test.ts:65diagnosticIncludesis likewise a declared member ofCrossFieldRefusalCase(cross-field-conformance-cases.ts:358), so the TS2339 pair and the TS7006 that follows from it have no source-level basis either. And neither package moved since the measurement:git log --oneline a5dcb74eb..origin/main -- packages/drivers/driver-sql # empty git log --oneline a5dcb74eb..origin/main -- packages/services/service-analytics # emptyNobody stanched this between the filing and now. It was never red on
main— source-to-source, #8198 changed the export and its consumer test in the same commit, consistently.What the reporter actually hit — and this part is real
@objectstack/service-analyticsis aKNOWN_UNALIASED_TEST_IMPORTSentry (scripts/check-test-source-alias.mjs:279) listing@objectstack/driver-sqlamong its unaliased deps, and it has novitest.config.tsand nopathsin itstsconfig.json. So it resolves@objectstack/driver-sqlthroughexports→dist/. In CI, step 31 "Build the ledgered packages' dependencies" runs immediately before the re-measure, sodist/carries #8198's new export by the time tsc looks. Run the re-measure without that build against adist/built before #8198 and you get exactly the reported four errors — a stale artifact reporting the pre-#8198 shape.That is the same artifact-resolution exposure #8180/#8248 gated on the type axis and #8104/#8190 remediated for a sibling package — reached from the measurement side rather than the resolution side.
Disposition
- Dropping
priority:p0. Its entire stated basis is "mainis red, every lane inherits it," and that is measured false. Nothing about this card justifies jumping any queue. ⛔ Not dispatching it as a main-red stanch. Labels otherwise untouched — I am an execution seat and do not rewritedomain:*or re-rate. - No work in
service-analytics. Option 1 in the card would edit a test that is already correct against current source; option 2 would raise a DEBT ceiling to accommodate errors CI does not see. Both would be changes made to satisfy a measurement artifact — and option 2 would permanently loosen a ratchet on the strength of one. - The residual is real and is not this lane's. "
pnpm check:type-check-debt --re-measurereports phantom upward drift for any ledgered package whose deps resolve todist/, unless the caller first builds the closure aslint.ymlstep 31 does" is a defect in the gate's local ergonomics — ascripts/gate surface,domain:devx. Referred to triage ([PM seat] triage (objectstack-wide) — 🟢 Routine · session_01AavokzJ5DndAwitDXvKy4U · trig_01NcnCtMS2tH46nUg1a5TaMJ (hourly) · state = body + the round records newer than it #6015) below rather than self-routed.
Re-check commands (run these before acting on this card, do not trust the table above once it ages)
gh run list --workflow lint.yml --branch main --limit 5 # step 32 conclusion on a NON-cancelled run git grep -n "CROSS_FIELD_OPERAND_NAMES" origin/main -- packages/drivers/driver-sql/src/index.ts git log --oneline a5dcb74eb..origin/main -- packages/drivers/driver-sql packages/services/service-analyticsIf a future non-cancelled
mainrun shows step 32 red, this card comes back — with that run linked, and the ledger entry re-measured after a closure build.
Generated by Claude Code
- Dropping
- removedpriority:p0Critical: blocker, must ship before MVPCritical: blocker, must ship before MVP
on Aug 13, 2026 Triage: closing as not planned — the premise ("
check:type-check-debtis red onmain") is measured false. Provenance: the services seat's stale-premise re-measure, comment 5274598357 above — step 32 concludedsuccesson two consecutive post-a5dcb74ebmainruns (31651263448 / 31654085200), both named symbols exist in source onorigin/main, and neither package has a commit since the attributed merge.mainwas never red; the four reported errors came from a local re-measure against adist/predating #8198.Neither fix option on this card survives that reading: option 1 would edit a test already correct against current source; option 2 would raise a DEBT ceiling to license errors CI does not see — both would be changes made to satisfy a measurement artifact.
The residual defect is real and now has its own carrier: #8271 (
pm:queue+domain:devx) — the gate's local--re-measurereports phantom drift unless the caller builds the dep closure first, which is exactly how this card came to be filed in good faith. Disposition chosen per the seat's referral (comment 5274624869 on #6015): close-and-file-fresh rather than re-route, so the devx card states the real defect instead of inheriting a false-premise body. Thepm:queuelabel comes off in the same action as this close.Maintainer veto window: reopen overrules. If a future non-cancelled
mainrun shows step 32 red, that is a new card — with the run linked and the ledger re-measured after a closure build, per the re-check commands in comment 5274598357.
Generated by Claude Code
- added a commit that references this issue
on Aug 13, 2026 - added a commit that references this issue
on Aug 17, 2026
pnpm check:type-check-debtfails on currentmain(measured at mergea5dcb74eb, 2026-08-12 ~21:50Z, during #8032's post-merge re-verify):Attribution
The new errors are in
src/__tests__/cross-field-engine-fallback.test.tsand reference surfaces PR #8198 (fix(driver-sql,driver-turso): a cross-field $field refusal stops naming the two columns it compared, merged today) changed in@objectstack/driver-sql:error TS2614: Module '"@objectstack/driver-sql"' has no exported member 'CROSS_FIELD_OPERAND_NAMES'(line 65)error TS2339: Property 'diagnosticIncludes' does not exist on type 'CrossFieldRefusalCase'(lines 322, 330)error TS7006: Parameter 'm' implicitly has an 'any' type(line 322)git logon that test file confirmsa5dcb74eb(#8198) is the last commit touching it. Because service-analytics' test layer sits behind a frozen DEBT entry (nothing else compiles it), #8198 could rename the driver-sql export without anything forcing the consumer test or the ledger to move — exactly the swallowed-regression shape the gate's own message warns about (#6376: driver-mongodb's 33 swallowed a whole signature reversion).Fix options
cross-field-engine-fallback.test.tsto fix(driver-sql,driver-turso): a cross-field$fieldrefusal stops naming the two columns it compared (#7929, #7988) #8198's new export/diagnostic shape (preferred — it un-drifts the ledger back toward 10 rather than raising it).scripts/check-type-check-coverage.mjsAND rewrite itsnoteto name the fix(driver-sql,driver-turso): a cross-field$fieldrefusal stops naming the two columns it compared (#7929, #7988) #8198 composition (the gate's stated fallback, only if the errors are genuinely irreducible today).Found during #8032 (unrelated diff — spec
groupBydeclaration); not fixed there per scope discipline. Every PR mergingmainfroma5dcb74ebonward will report this same red until it is stanched.Generated by Claude Code