Changes touching this path
- site/test is type-checked by a project of its own that the site gate already runs, so a test that has drifted against the module it imports refuses a land instead of passing. tsc -b reached src through tsconfig.app.json and vite.config.ts through tsconfig.node.json, and site/test was in neither, so the gate ran those files and never checked them: a type error surfaced there only where it was also a runtime error. site/tsconfig.test.json is referenced from site/tsconfig.json, so npm run typecheck, inside npm run build, inside npm run gate, now reaches them. it is a separate project because vitest runs the tests on node while tsconfig.app.json holds src to an ES2020 browser floor, it includes src because src/routeTree.gen.ts carries the augmentation that types createFileRoute, and it sets allowJs because two tests import tools/budget.mjs; vitest.config.ts joins vite.config.ts in the node project. the first run was a survey and it was not clean: 8 errors over 5 files, every one fixed rather than suppressed, with no ts-expect-error owed and no option loosened. three fake MetricsWriters never learned the saltFor that #1620 added to the interface, private-diff built two outcomes on a LockReason of no-key the union does not contain, private-grants read .reason off a KeyLookup without narrowing to the arm that carries one, and budget-record read an optional reason as a string. proved live: a satisfies number[] on the cli-verbs row list is invisible to the runtime, 7 passed and exit 0 under vitest alone, while npm run gate exits 2 at npm run typecheck before vite build, the suite and the budget ever run. red under mutation: that same error with the new reference dropped is 0 errors and exit 0, saltFor dropped from a fake is 1 error, no-key put back is 2 errors, src dropped from the include is 1 spurious src error, allowJs dropped is 2 errors, the lib put back to ES2020 is 6 errors, and an Array.at added to src is 1 error from the app project, which still decides what src may use. the site gate is green end to end: 643 tests passed and 60 skipped over 52 files, 62 surfaces all under ceiling with nothing recorded. ADR 0071 gains the amendment and a corrected consequence, and CONTEXT.md its site gate line. no migration, no wire or format byte moves and no forge or relay byte moves, so this owes no deploy. the workspace suite is green (3952 passed over 122 binaries, 7 ignored) (#1877)
4290f819 · dbf3dbe6… - the docs byte test refuses an empty set before it concludes anything from one, and the sentences #1877 and #1878 left behind stop counting what code can add to: with eagerHrefs matching nothing the eager-asset half of site/test/docs-content.test.ts was true of nothing and green, measured at 5 passed and 0 failed with that mutation in place against 1 failed and 4 passed once the refusal was written, and the same hole over the pages the registry calls written and over the bodies the modules publish is refused too, each proved by running its mutation without the guard (1 passed) and with it (1 failed). sharedChunkHint stops listing its silences, which were more than the list said, and states the property its guards define, with the row floor named SHAPE_ROWS so the doc cites code rather than a digit, and the CONTEXT.md line loses its whenever. tsconfig.test.json and ADR 0071 stop naming the tests that import tools/budget.mjs, a list #1877 wrote and #1878 falsified in the same session, and the ADR carries both survey numbers, 17 raw of which nine were the first draft of that config own fault and eight genuine over five files. the docs splat route stops describing a fallback it did not have: writtenDoc takes the node a missing body renders, so a written page whose module holds nothing under its slug shows the honest planned template rather than a bare title, verified by renaming one body key and reading the prerendered page, which carried the template on the same tree the gate refused (3 failed, 2 passed). the four content modules point at DocContentModule instead of pasting the rule it defines, the byte test failure message stops saying every docs surface where the set is a union over written pages, and the four raises in budget.json carry their own measurement, +239 B on /docs, +613 B on /install, +681 B on /known-issues and +1,444 B on /privacy, each against the figure its previous ceiling was derived from. the second reason claimed for including src is declined at the code with what refutes it: with src out of the include tsc -b reports exactly one error and it is the routeTree augmentation, import.meta.glob being typed by a type library reference that travels with a dependency rather than with an include. no migration, no wire or format byte moves and no forge or relay byte moves; the built site moves a few bytes per docs surface, all under ceiling with nothing recorded, and no page a reader sees changes. the site gate is green end to end (659 passed and 61 skipped over 60 files, 62 surfaces) and the workspace suite is green (3970 passed over 122 binaries, 7 ignored) (#2088)
45b6f3ec · dbf3dbe6…diff - a written docs page with no usable body publishes nothing and is refused at the gate, where under #2088 it published the planned template and stayed indexable: content/docs renders CONTENT[slug], so docs-content.test.ts builds its filed set from that resolved value instead of from Object.keys and the set the gate checks is the set the renderer uses, with a null or undefined value a missing body to both. routes/docs.$.tsx asks isPlanned once, for the body and for the noindex meta, so the two that drifted apart are read off one expression, and it asks for planned positively so a status added to DocStatus later renders no claim. the template was pinned nowhere and is pinned now over the built documents: every planned page must carry the sentence and its noindex, every written page neither. red first with the counts read each time - with the #2088 renderer back, the Object.keys keying back and concepts/docks filed as null, the three registry checks stayed green while the built document of a written page carried the sentence (2 failed and 6 passed, the second failure the eager-asset check losing the prose it reads); with the value keying restored the gate saw the null too (3 failed and 5 passed); with the renderer fixed and the null still filed the document went clean and the gate alone refused (2 failed and 6 passed). /privacy stops promising the deploy-time strip of any deployment at all, which was wider than the code - installEdgeLogging runs only from setupEdge, which setup-site.js calls when SETUP_EDGE is set - and instead names the deploy that reconfigures the web server and says the hourly job runs whether or not anything is deployed, the half that holds with no deploy; it is narrowed and not weakened, since the strip and the timer are built and on the box. the pin moves with the sentence, refusing the unqualified phrase over the whole source, comments included, and reading the narrowed claims off the component, because a sentence a reader never meets is not the published claim (1 failed and 37 passed with the wide claim restored, and again with the timer clause deleted). ADR 0066 says what its #1883 amendment amends: the expired reason was no longer above to expire, the same edit having replaced it, so the note says the paragraph lost a reason and gained one, names the surviving CARGO_PKG_VERSION half, and records the correction. tsconfig.test.json stops resting on a sentence that reads as a class and is one file - type-program.test.ts walks the import graph out of test, the program a test-only include would hold, and reddens when nothing it reaches under src carries the vite/client reference (1 failed and 1 passed with the directive deleted from components/private.tsx, the one carrier it reaches). not done here: the counted list in the #1883 closing record is a github comment, which this session does not write. the published wording moved, so this owes a site deploy. the workspace suite is green (3977 passed over 122 binaries, 7 ignored) and the site gate is green end to end (668 passed and 61 skipped over 61 files, 62 surfaces) with no ceiling moved (#2098)
dd749359 · dbf3dbe6…diff
Renames are not followed. loot's tree maps a path to an address, so a rename is a delete and an add. This list is the history of the name, not of the bytes.