Skip to content

T-ZFM9-the-publish-channel-typechecks-the-snapshot

State: closed/done · Impact: medium · Complexity: small

.github/workflows/publish-lib.yml vendors packages/ts/tsconfig/presets into every TS snapshot mirror as tsconfig-presets/ and rewrites the extends specifier with sed. No mirror has ever compiled against the result — the standalone validation lane runs bun install && bun run build && bun test and optionally bun run smoke, never tsc. The only check today is a grep -q that the sed matched a string. Add bun run typecheck to the lane so the snapshot’s own compiler config is proven to work standalone, not just present.

LocationRole today
.github/workflows/publish-lib.yml:211-227”Build check (ts)” step: bun install, bun run build, bun test, then bun run smoke if a smoke script exists. No tsc/typecheck step.
packages/ts/intersect/package.jsonscripts has build, test, prepublishOnly — no typecheck.
packages/ts/agent-call/package.jsonscripts has build, typecheck (tsc --noEmit), test, test:live, prepublishOnly.
packages/ts/command-seam/package.jsonscripts has build, test, smoke, prepublishOnly — no typecheck.
packages/ts/easy-git/package.jsonscripts has build, test, smoke, prepublishOnly — no typecheck.
packages/ts/detect-runners/package.jsonscripts has build, test, prepublishOnly — no typecheck.
packages/ts/waypost/package.jsonscripts has build, dev, test, prepublishOnly — no typecheck.

The “Build check (ts)” step in publish-lib.yml runs bun run typecheck against the staged snapshot, after bun install and before (or alongside) bun run build. Every TS library on the channel — all six entries in publish-libs.json with "lang": "ts" — carries a typecheck script by the time this step runs, so the step can call it unconditionally rather than probing for its existence the way the smoke step does. The mirrored tsconfig-presets/ is now actually exercised by a compile, not just referenced by a rewritten string.

  1. Confirm T-076A-the-script-vocabulary-lands-in-packages-apps-and-sites has landed a typecheck script in all six TS libraries on the publish channel (intersect, agent-call, command-seam, easy-git, detect-runners, waypost). agent-call already has one; the other five do not today.
  2. In the “Build check (ts)” step of publish-lib.yml, add bun run typecheck after bun install, before bun run build and bun test. Unlike the smoke step, do not guard it with an existence probe — every TS library on the channel is expected to have the script, so a missing one should fail the run loudly rather than be skipped.
  3. Rehearse with gh workflow run publish-lib -f lib=intersect, which runs validation, snapshot assembly, and the standalone build without pushing. Confirm the new step runs and passes.
LocationKindChange
.github/workflows/publish-lib.ymlmodifyAdd a bun run typecheck invocation to the “Build check (ts)” step, run against the staged snapshot.
  • AC-1: .github/workflows/publish-lib.yml’s “Build check (ts)” step contains a bun run typecheck invocation.
  • AC-2: gh workflow run publish-lib -f lib=intersect completes with the typecheck step passing (rehearsal only — no push).
  • AC-3: Removing the typecheck script from a staged TS library (e.g. temporarily, locally) makes the “Build check (ts)” step fail, confirming the step is not silently skipped the way the smoke probe is.
  • Adding the typecheck script itself to the six TS libraries — that is T-076A-the-script-vocabulary-lands-in-packages-apps-and-sites.
  • Any change to the Rust validation lane. cargo test and cargo package are toolchain built-ins; a mirrored crate’s vocabulary is cargo’s, not this project’s, so it needs no equivalent step.
  • Vendoring @sksizer/tsconfig as a real published dependency instead of the tsconfig-presets/ copy-and-sed. That is called out in publish-lib.yml as future work once the package is published, and is unrelated to this task.

T-076A-the-script-vocabulary-lands-in-packages-apps-and-sites


← Back to Tasks