Skip to content

Replace Python ingestion and audit tooling with TypeScript - #2

Merged
bcomnes merged 2 commits into
masterfrom
refactor/typescript-tooling
Sep 19, 2026
Merged

bcomnes merged 2 commits into
masterfrom
refactor/typescript-tooling

Conversation

@bcomnes

@bcomnes bcomnes commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor

Stack: 1 of 3 — merge this first

Full stack: #2 → #3 → #5, managed with gh stack. #5 adds the blog, GitHub author registry/cache, feeds, source edit links, and related visual refinements. Those additions are intentionally excluded from this layer.

Base: master. This is the tooling-only slice extracted from #1. Next: #3, which stacks the DOMStack website improvements on this branch.

Summary

Replace Python ingestion, audit, and test-serving infrastructure with TypeScript/Node while keeping the current website implementation unchanged.

  • Port Runtime API-reference generation and content helpers.
  • Port Silk ingestion/editorial processing and invoke the staged importer directly, preserving ownership/exclusions, pruning, curated content, missing-wiki behavior, and code fences.
  • Port all product content audits into tools/audits/ with a shared entry point. Derive expected raw outputs from committed source metadata; navigation JSON remains generated in this PR.
  • Port ingestion tests with semantic family-rendering, ownership, editorial, and content-audit regressions. Retire opaque Python-parity hashes, duplicate staged-tree coverage, and diagnostic snapshots; reduce editorial fixtures from 40 to 17.
  • Replace the Python browser-test server with tools/serve-output.ts.
  • Update scripts, tooling typecheck paths, and Node-only CI. Validate/deploy the same artifact, remove duplicate production push audits, and retain browser failure artifacts.

Scope boundaries

  • No changes anywhere under src/ relative to master.
  • DOMStack remains at the existing lockfile version, 12.0.0-beta.5. Dependency versions and package-lock.json are unchanged.
  • Existing importer/title-authoring behavior is retained; H1 title deduplication and corresponding importer adjustments belong to the next PR.
  • JavaScript allowance remains enabled for existing browser modules; their conversion belongs to the next PR.
  • No layout/data refactor, styling changes, client fixes, redirect migration, or incremental index here.
  • Ingestion remains manual and separate from the site build/CI. Node 24 is sufficient; Python is no longer required.

The small #lib/* package alias supports the extracted tooling. The public-copy helper moves to TypeScript, with its existing importer updated to reference the new extension.

Validation

Full npm run check passed in an isolated worktree with an independent npm ci using the unchanged lockfile:

  • Typecheck and unit tests, including 585-document byte-identical import round trips.
  • Clean build; audit of 607 HTML pages and 147,844 internal links/anchors.
  • All content audits, 5 site tests, 12 browser tests, and 10 tooling tests.
  • Repeated build produces identical output without source changes.
  • git diff master -- src is empty; whitespace checks pass.

Local browser validation used installed Brave through ORO_BROWSER_EXECUTABLE; CI installs Playwright Chromium. Newly triggered CI results should be checked separately.

History preservation

The original combined branch is preserved at 515761e. The initial stack split (#2 → #3) reproduced that exact tree, verified by matching Git tree IDs. Subsequent commits add fixes, dependency upgrades, and cleanup. See #1 for the prior discussion and design history.

Cleanup validation

The tooling-test cleanup passed the full npm run check in the isolated tooling worktree, including 12 browser tests and reproducibility. No src or dependency changes were added to this layer.

@bcomnes
bcomnes merged commit 24aef3b into master Sep 19, 2026
1 check passed
@bcomnes
bcomnes deleted the refactor/typescript-tooling branch September 19, 2026 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants