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 two exceljs bindings in packages/rest's import-integration suite are still annotated any, so the .xlsx import tests cannot notice an exceljs API break #13453
Filed unassigned and ungraded by the domain:cli dev seat, session session_01TvqBFLRzXdSPcbusDoED9k, while implementing #13426 (PR #13452). Not graded, not routed. ⛔ Reported, not touched — #13426's rulings scoped that PR to the two PRODUCTION sites, so this residue needs a home of its own before that card closes and takes the only written record of it with it.
Measured on origin/main @ bac201e928
packages/rest/src/import-integration.test.ts:325 const ExcelJS: any = (await import('exceljs')).default ?? (await import('exceljs'));
packages/rest/src/import-integration.test.ts:347 const ExcelJS: any = (await import('exceljs')).default ?? (await import('exceljs'));
Both build the fixture workbook the suite then feeds through the server-side .xlsx import route — new ExcelJS.Workbook(), addWorksheet, addRow, wb.xlsx.writeBuffer() — through a value tsc knows nothing about. So the two tests that exercise the .xlsx import path are themselves outside the type system on the exceljs side: if exceljs renamed writeBuffer or changed addWorksheet's arity, these tests would not go red at compile time.
Why it is residue rather than covered by either open card
Both neighbouring cards exclude it, and neither exclusion is an oversight:
Positive control for the first grep: on main today it reports 4 sites (2 production, 2 test) and after PR #13452 lands it should report 2, both in import-integration.test.ts. A zero reads as an instrument failure or as someone having already done this, not as a finding that repaired itself. The second grep is the control that the accessor this would call actually exists in the tree you are measuring — a zero there means PR #13452 has not landed yet and the first count is expected to be 4.
Severity not judged; no urgency claimed. There is no known live defect here — this records that two tests covering a production path are themselves unchecked against the dependency they drive.
Filed unassigned and ungraded by the
domain:clidev seat, sessionsession_01TvqBFLRzXdSPcbusDoED9k, while implementing #13426 (PR #13452). Not graded, not routed. ⛔ Reported, not touched — #13426's rulings scoped that PR to the two PRODUCTION sites, so this residue needs a home of its own before that card closes and takes the only written record of it with it.Measured on
origin/main@bac201e928Both build the fixture workbook the suite then feeds through the server-side .xlsx import route —
new ExcelJS.Workbook(),addWorksheet,addRow,wb.xlsx.writeBuffer()— through a value tsc knows nothing about. So the two tests that exercise the .xlsx import path are themselves outside the type system on the exceljs side: if exceljs renamedwriteBufferor changedaddWorksheet's arity, these tests would not go red at compile time.Why it is residue rather than covered by either open card
Both neighbouring cards exclude it, and neither exclusion is an oversight:
Bufferinterface, so no Node Buffer can be passed toWorkbook.xlsx.load— 6 sites pay it withas any, the 7th is a ledgered error #13378 / PR fix(rest): state the exceljs Buffer-shim assertion once, in a typed test loader #13425 enumeratesxlsx.load(sites specifically. Neither of these two lines callsload— they only WRITE workbooks — so they are outside that card's population by construction, and PR fix(rest): state the exceljs Buffer-shim assertion once, in a typed test loader #13425's diff touchesexport-business-timezone.test.ts,export-integration.test.tsandrest.test.tsonly.packages/restare annotatedany, so tsc checks nothing about the exceljs API on the production xlsx read and write paths #13426 / PR fix(rest): type the two production exceljs dynamic imports behind one named accessor #13452 was ruled to the two production sites, behind one shared accessor. That PR addspackages/rest/src/xlsx-module.ts, whoseloadExcelJs()is exactly what these two lines would call — so the repair, if it is ever graded up, is a two-line substitution rather than a design question.⇒ after both PRs land, these are the last two
const ExcelJS: anybindings in the package.Re-check
Positive control for the first grep: on
maintoday it reports 4 sites (2 production, 2 test) and after PR #13452 lands it should report 2, both inimport-integration.test.ts. A zero reads as an instrument failure or as someone having already done this, not as a finding that repaired itself. The second grep is the control that the accessor this would call actually exists in the tree you are measuring — a zero there means PR #13452 has not landed yet and the first count is expected to be 4.Severity not judged; no urgency claimed. There is no known live defect here — this records that two tests covering a production path are themselves unchecked against the dependency they drive.
Generated by Claude Code