Skip to content

chore: apply repo standards (merge commits, TS7, vscode config) - #18

Merged
bhouston merged 8 commits into
mainfrom
chore/13-repo-standards
Nov 6, 2026
Merged

bhouston merged 8 commits into
mainfrom
chore/13-repo-standards

Conversation

@bhouston

Copy link
Copy Markdown
Owner

Closes #13
Closes #14
Closes #15
Closes #16

  • CONTRIBUTING.md: PRs are merged with merge commits; do not squash. (Repo setting allow_squash_merge still needs to be disabled by an admin; the automated gh repo edit was not permitted in this session.)
  • TypeScript: removed incremental, tsBuildInfoFile, composite and references from all tsconfigs; root tsc script is now pnpm -r --workspace-concurrency=1 exec tsc (topological, per package) instead of tsc -b; typescript upgraded to ^7.0.2. The trainer/cli paths aliases to sibling src/ were removed because they only worked under project references (they caused rootDir errors otherwise); packages resolve each other through built workspace dist output, which the topological build order provides.
  • .vscode/settings.json and .vscode/extensions.json committed (gitignore narrowed to keep the rest of .vscode/ ignored). Toolchain is already oxlint/oxfmt so the editor formatter matches.

Validation

pnpm build, pnpm tsc, pnpm lint, pnpm test (18 files / 61 tests pass), pnpm size, pnpm release:check (9 pass) all green locally with TypeScript 7.0.2.

Remove incremental/tsBuildInfoFile/composite/references from all tsconfigs,
replace root `tsc -b` with a per-package `tsc` run in topological order,
and drop the src path aliases that only worked under project references
(packages now resolve each other through built workspace dist output).

Closes #14
bhouston added a commit that referenced this pull request Sep 25, 2026
## Summary
Stage 1 of the org-wide v2 repo standard: tooling, hooks, CI, and
release workflow.

- `engines.node` → `>=22` (root + `three-ntc` + `three-ntc-trainer`);
`packageManager` was already `pnpm@11.27.0` from #35
- `pnpm-workspace.yaml`: `minimumReleaseAgeExclude` entries use package
names, not `name@version` (`three`, `@tanstack/charts`)
- Canonical `.oxfmtrc.json` (repo's `routeTree.gen.ts` exclusion is
already covered by the canonical `**/*.gen.ts` pattern)
- Canonical `.oxlintrc.json` base: turned
`eslint/no-unused-private-class-members` and `unicorn/no-new-array` to
`error` now (produce zero errors); kept `typescript/no-explicit-any` off
— enabling it currently errors on ~60 call sites, deferred to stage 3
per the standard
- Canonical `commitlint.config.js` (explicit `type-enum`)
- Canonical `scripts/check-pr.mjs` + `.github/workflows/pr-policy.yml` —
job renamed to `contribution` (branch protection requires this exact
name); commitlint title/range checks now run as pr-policy steps instead
of being invoked from inside check-pr.mjs
- `.github/workflows/ci.yml` — job renamed to `ci` (branch protection
requires this exact name), canonical concurrency group, added
format-check (`oxfmt --check`) and Codecov steps, kept this repo's
dist-verification, release:check, bundle-size, and
blocking-prod/advisory-dev audit steps. The `skip-gpu` workflow_call
input now defaults to `true` (canonical `release.yml` calls `ci.yml`
with no inputs, so the default has to keep skipping GPU there — matches
current behavior where release.yml explicitly passed `skip-gpu: true`)
- `.github/workflows/release.yml` — byte-identical canonical file

`lint-staged`, `.husky/pre-commit`, `.husky/commit-msg`, and
`CONTRIBUTING.md` were already canonical from #35, no changes needed.

## Deliberate deviation to flag
The previous `release.yml` had a repo-specific "Restore generated
changelog from the previous release" step (downloads the prior release's
`CHANGELOG.md` before `@semantic-release/changelog` runs, since root
`CHANGELOG.md` isn't committed to git). The v2 standard calls for
`release.yml` to be byte-identical to the canonical file, which doesn't
have this step. I copied it byte-for-byte per the standard, but **this
means the next release's `CHANGELOG.md` will start fresh instead of
appending to history** unless that behavior is restored some other way
(e.g. committing CHANGELOG.md, or a different mechanism). Flagging for
the maintainer's decision — did not add a workaround since the standard
is explicit about byte-identical here.

## Validation (in worktree)
- `pnpm install` — lockfile unchanged
- `pnpm build` — pass
- `pnpm tsc` — pass
- `pnpm lint` — pass (warnings only, no errors)
- `pnpm exec oxfmt --check .` — pass
- `pnpm test` — 18 test files / 61 tests passed
- `pnpm release:check` — 9/9 passed
- `pnpm size` — within budget (three-ntc 9168B/11000B, three-ntc-trainer
44820B/52000B)
- `node .../standards/check-drift.mjs <worktree>` — clean except the
documented `.oxlintrc.json` `no-explicit-any` exception above

## Note
There's a stale, conflicting open PR #18 (`chore/13-repo-standards`)
from an earlier session touching overlapping files — left untouched per
instructions.

Closes #36
Keep main's vscode config, CONTRIBUTING, TypeScript 7.1 and vitest 5; drop
composite/references from the remaining tsconfigs (incl. playground) and
check every package with its own tsc.
@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@bhouston
bhouston merged commit aa37150 into main Nov 6, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants