Public bilingual documentation site for memtomem (LTM) and memtomem-stm (STM), built with Astro and Starlight.
Node.js 22.12 or newer is required.
npm install
npm run dev
npm run check:docs
npm test
npm run buildnpm run build validates the documentation contract, builds Astro, creates the Pagefind index, and checks every generated internal route and fragment.
src/data/docs-contract.jsonis the reviewed version/count snapshot used by landing pages and CI checks.src/data/upstream-snapshot.jsonpins schema defaults, complete CLI long-option catalogs, and tool membership to exact public source commits. Checks compare names and values, not counts alone.src/content/docs/reference/configuration.mdintentionally mirrors the complete supported Core and STM option surfaces. Do not replace the tables with a curated subset.- Every English document under
src/content/docs/has the same-path Korean mirror undersrc/content/docs/ko/. - Update both languages in one change, then update manifest counts/hashes only after reviewing the upstream schema or CLI.
- Keep local connector files such as
.mcp.jsonuntracked and out of site commits.
- Verify the Core and STM versions and supported surfaces against reviewed upstream checkouts.
- Update
src/data/docs-contract.json, then synchronize every affected English/Korean page. - Add the superseded Core and STM versions to the
STALE_VERSIONSlist inscripts/upstream-contract.mjs(both checkers use it). Keep this list explicit: a site-wide lower-semver rule would reject valid historical notes and independently versioned integrations. - Run
npm testandnpm run buildto check mutation regressions, the contract, generated site, search index, routes, and fragments. - Update every EN/KO Core file and directory link to
v<core.version>, including the unpinned configuration-guide link after confirming the guide still exists at that tag (seeONBOARDING-RELEASE.md). Then runnode scripts/check-onboarding-assets.mjsto verify the link refs and seven published assets from that tag. Review the tagged source before updating any asset hashes, and include links and hashes in the version-bump PR.
Stage each exact commit recorded in sourceSnapshots with git archive, then
run uv sync --group dev --frozen inside each archive. Do not extract from a
dirty checkout or load personal configuration. Invoke each archive's Python:
/path/to/core/.venv/bin/python scripts/extract-upstream.py core /path/to/core CORE_COMMIT
/path/to/stm/.venv/bin/python scripts/extract-upstream.py stm /path/to/stm STM_COMMIT
python3 scripts/smoke-docs.py /path/to/core/.venv/bin /path/to/stm/.venv/binThe extractor prints reviewable JSON in an isolated home and verifies the imported package path. Review its output before replacing the matching snapshot object; the supplied commit must be the archive's verified revision. The smoke test uses a temporary home, no remote models, and the bundled STM demo. It verifies keyword storage/search, force-indexing, MCP proxying and durable metrics; it does not validate embedding downloads or remote services.
Every PR targeting main runs tests, the build, and the published onboarding
asset gate, regardless of which files changed. The gate uses the documented
Core release tag; moving Core's main does not change its fetch target.
The deployment job permits only non-PR events on
main; a manual run on another branch cannot deploy.
Pushes to main deploy through the GitHub Pages workflow in .github/workflows/deploy.yml.