From 504edb35afc57c523d62fa81deb42368fbdd3999 Mon Sep 17 00:00:00 2001 From: Adam Page Date: Thu, 1 Oct 2026 08:34:52 -0500 Subject: [PATCH 1/2] docs: make Astro content canonical and retire MkDocs adapter --- .gitignore | 11 +- HANDOFF.md | 13 + README.md | 18 +- astro-site/MIGRATION.md | 4 + astro-site/README.md | 8 +- astro-site/package.json | 4 +- .../public}/assets/favicon.png | Bin .../guides/stage/ablation-dilation.html | 0 .../guides/stage/ablation-kernelsize.html | 0 .../guides/stage/ablation-se-ratio.html | 0 .../guides/stage/ablation-temporal.html | 0 .../assets/guides/stage/ablation-width.html | 0 .../assets/guides/stage/sleep-cycle-pie.html | 0 .../public}/assets/logo-white.png | Bin {docs => astro-site/public}/assets/logo.png | Bin .../public}/assets/sleepkit-banner.png | Bin .../public}/assets/sleepkit-logo-dark.png | Bin .../public}/assets/sleepkit-logo-light.png | Bin .../assets/tasks/detect/ambiq-watch.webp | Bin .../tasks/detect/demo-sleep-cycle-pie.html | 0 .../assets/tasks/sleepkit-task-diagram.svg | 0 .../assets/tasks/stage/ambiq-watch.webp | Bin .../tasks/stage/demo-sleep-cycle-pie.html | 0 .../assets/tasks/stage/sleep-cycle-pie.html | 0 .../assets/tasks/stage/sleep-stage.svg | 0 {docs => astro-site/public}/assets/tcn.svg | 0 .../assets/zoo/apnea/sa-2-tcn-lg-cm.html | 0 .../assets/zoo/apnea/sa-2-tcn-sm-ahi-cm.html | 0 .../zoo/apnea/sa-2-tcn-sm-ahi-scatter.html | 0 .../assets/zoo/apnea/sa-2-tcn-sm-cm.html | 0 .../assets/zoo/detect/detect-2-cm.html | 0 .../assets/zoo/detect/detect-2-eff.html | 0 .../assets/zoo/detect/detect-2-eff.json | 0 .../assets/zoo/detect/detect-2-tst.html | 0 .../assets/zoo/detect/detect-2-tst.json | 0 .../assets/zoo/detect/sleep-detect-2-cm.png | Bin .../assets/zoo/detect/sleep-detect-demo.html | 0 .../assets/zoo/stage/block-latency.html | 0 .../assets/zoo/stage/sleep-stage-4-cm.png | Bin .../assets/zoo/stage/sleep-stage-5-cm.png | Bin .../zoo/stage/sleep-stage-demo-example.html | 0 .../assets/zoo/stage/sleep-stage-demo.html | 0 .../assets/zoo/stage/ss-2-tcn-sm-cm.html | 0 .../assets/zoo/stage/ss-2-tcn-sm-eff.html | 0 .../assets/zoo/stage/ss-2-tcn-sm-tst.html | 0 .../assets/zoo/stage/ss-3-tcn-sm-cm.html | 0 .../assets/zoo/stage/ss-3-tcn-sm-eff.html | 0 .../assets/zoo/stage/ss-3-tcn-sm-tst.html | 0 .../assets/zoo/stage/ss-4-tcn-sm-cm.html | 0 .../assets/zoo/stage/ss-4-tcn-sm-eff.html | 0 .../assets/zoo/stage/ss-4-tcn-sm-tst.html | 0 .../assets/zoo/stage/ss-5-tcn-sm-cm.html | 0 .../assets/zoo/stage/ss-5-tcn-sm-eff.html | 0 .../assets/zoo/stage/ss-5-tcn-sm-tst.html | 0 astro-site/scripts/build-content.mjs | 175 -------- astro-site/scripts/build-examples.mjs | 25 ++ astro-site/scripts/build-notebooks.py | 2 +- astro-site/scripts/build-reference.mjs | 17 +- astro-site/scripts/canonical-content.test.mjs | 21 + astro-site/scripts/check-doc-examples.py | 4 +- astro-site/scripts/check-output.mjs | 21 +- astro-site/scripts/normalize-markdown.mjs | 90 ---- .../scripts/normalize-markdown.test.mjs | 64 --- .../src/content/docs/datasets/byod.mdx | 9 +- .../src/content/docs/datasets/cmidss.mdx | 9 +- .../src/content/docs/datasets/index.mdx | 34 ++ .../src/content/docs/datasets/mesa.mdx | 13 +- .../src/content/docs/datasets/stages.mdx | 13 +- .../src/content/docs/datasets/synthetic.mdx | 46 +-- .../src/content/docs/datasets/ysyw.mdx | 12 +- .../docs/detection-annotated-dataset.mdx | 15 +- .../src/content/docs/detection-comparison.mdx | 13 +- .../docs/detection-evaluation-protocol.mdx | 21 +- .../docs/detection-first-experiment.mdx | 11 +- .../content/docs/detection-frozen-split.mdx | 13 +- .../src/content/docs/detection-golden.mdx | 15 +- .../src/content/docs/detection-int8.mdx | 17 +- .../content/docs/detection-label-policy.mdx | 19 +- .../src/content/docs/detection-profiling.mdx | 13 +- .../src/content/docs/detection-recipe.mdx | 25 +- .../content/docs/detection-sample-clock.mdx | 15 +- .../docs/detection-source-alignment.mdx | 13 +- .../src/content/docs/features/byofs.mdx | 11 +- .../src/content/docs/features/fs_c_ear_9.mdx | 8 +- .../src/content/docs/features/fs_h_e_10.mdx | 7 +- .../src/content/docs/features/fs_w_a_5.mdx | 8 +- .../src/content/docs/features/fs_w_p_5.mdx | 7 +- .../src/content/docs/features/fs_w_pa_14.mdx | 8 +- .../src/content/docs/features/index.mdx | 173 ++++++++ astro-site/src/content/docs/guides/index.mdx | 34 ++ .../content/docs/guides/stage-ablation.mdx | 17 +- .../content/docs/huggingface-artifacts.mdx | 23 +- .../src/content/docs/index.mdx | 132 +++--- .../content/docs/model-licensing-policy.mdx | 9 +- .../src/content/docs/models/byom.mdx | 13 +- .../src/content/docs/models/index.mdx | 16 +- .../src/content/docs/modes/configuration.mdx | 22 +- .../src/content/docs/modes/demo.mdx | 54 ++- .../src/content/docs/modes/download.mdx | 34 ++ .../src/content/docs/modes/evaluate.mdx | 293 +++++++++++++ astro-site/src/content/docs/modes/export.mdx | 297 ++++++++++++++ .../src/content/docs/modes/index.mdx | 19 +- astro-site/src/content/docs/modes/train.mdx | 308 ++++++++++++++ astro-site/src/content/docs/quickstart.mdx | 277 +++++++++++++ .../src/content/docs/staging-baseline.mdx | 11 +- .../src/content/docs/staging-training.mdx | 13 +- astro-site/src/content/docs/tasks/apnea.mdx | 65 +++ astro-site/src/content/docs/tasks/arousal.mdx | 8 + .../src/content/docs/tasks/byot.mdx | 12 +- astro-site/src/content/docs/tasks/detect.mdx | 57 +++ .../src/content/docs/tasks/index.mdx | 20 +- astro-site/src/content/docs/tasks/stage.mdx | 179 ++++++++ astro-site/src/content/docs/usage/cli.mdx | 172 ++++++++ astro-site/src/content/docs/usage/python.mdx | 198 +++++++++ astro-site/src/content/docs/zoo/apnea.mdx | 90 ++++ astro-site/src/content/docs/zoo/detect.mdx | 98 +++++ astro-site/src/content/docs/zoo/index.mdx | 38 ++ astro-site/src/content/docs/zoo/stage.mdx | 245 +++++++++++ astro-site/src/navigation.mjs | 100 ++++- astro-site/src/redirects.json | 1 + .../detection-preparation-performance.md | 6 +- .../ambiq-device-model-license-draft.md | 2 +- {docs => docs-maintainers}/reusable-blocks.md | 0 .../shared-foundation.md | 6 +- docs/assets/tasks/apnea/apnea-classes.md | 8 - .../detect/detect-default-class-table.md | 4 - .../tasks/stage/stage-default-class-table.md | 9 - docs/assets/usage/json-configuration.md | 95 ----- docs/assets/usage/python-configuration.md | 97 ----- docs/assets/zoo/apnea/apnea-model-hw-table.md | 3 - .../assets/zoo/apnea/apnea-model-zoo-table.md | 3 - .../zoo/detect/detect-model-hw-table.md | 3 - .../zoo/detect/detect-model-zoo-table.md | 3 - .../zoo/detect/sleep-detect-2-config.md | 69 ---- docs/assets/zoo/stage/stage-model-hw-table.md | 6 - .../assets/zoo/stage/stage-model-zoo-table.md | 6 - docs/css/custom.css | 208 ---------- docs/css/mkdocstrings.css | 4 - docs/css/termynal.css | 109 ----- docs/datasets/index.md | 33 -- docs/features/index.md | 70 ---- docs/guides/index.md | 31 -- docs/js/custom.js | 144 ------- docs/js/termynal.js | 264 ------------ docs/modes/download.md | 31 -- docs/modes/evaluate.md | 93 ----- docs/modes/export.md | 97 ----- docs/modes/train.md | 109 ----- docs/quickstart.md | 155 ------- docs/tasks/apnea.md | 46 --- docs/tasks/arousal.md | 5 - docs/tasks/detect.md | 54 --- docs/tasks/stage.md | 156 ------- docs/usage/cli.md | 164 -------- docs/usage/python.md | 98 ----- docs/zoo/apnea.md | 71 ---- docs/zoo/detect.md | 79 ---- docs/zoo/index.md | 33 -- docs/zoo/stage.md | 222 ---------- mkdocs.yml | 227 ---------- .../previous-docs-train-detect-model.ipynb | 0 pyproject.toml | 12 - scripts/gen_ref_pages.py | 36 -- uv.lock | 386 ------------------ 164 files changed, 3204 insertions(+), 3933 deletions(-) create mode 100644 HANDOFF.md rename {docs => astro-site/public}/assets/favicon.png (100%) rename {docs => astro-site/public}/assets/guides/stage/ablation-dilation.html (100%) rename {docs => astro-site/public}/assets/guides/stage/ablation-kernelsize.html (100%) rename {docs => astro-site/public}/assets/guides/stage/ablation-se-ratio.html (100%) rename {docs => astro-site/public}/assets/guides/stage/ablation-temporal.html (100%) rename {docs => astro-site/public}/assets/guides/stage/ablation-width.html (100%) rename {docs => astro-site/public}/assets/guides/stage/sleep-cycle-pie.html (100%) rename {docs => astro-site/public}/assets/logo-white.png (100%) rename {docs => astro-site/public}/assets/logo.png (100%) rename {docs => astro-site/public}/assets/sleepkit-banner.png (100%) rename {docs => astro-site/public}/assets/sleepkit-logo-dark.png (100%) rename {docs => astro-site/public}/assets/sleepkit-logo-light.png (100%) rename {docs => astro-site/public}/assets/tasks/detect/ambiq-watch.webp (100%) rename {docs => astro-site/public}/assets/tasks/detect/demo-sleep-cycle-pie.html (100%) rename {docs => astro-site/public}/assets/tasks/sleepkit-task-diagram.svg (100%) rename {docs => astro-site/public}/assets/tasks/stage/ambiq-watch.webp (100%) rename {docs => astro-site/public}/assets/tasks/stage/demo-sleep-cycle-pie.html (100%) rename {docs => astro-site/public}/assets/tasks/stage/sleep-cycle-pie.html (100%) rename {docs => astro-site/public}/assets/tasks/stage/sleep-stage.svg (100%) rename {docs => astro-site/public}/assets/tcn.svg (100%) rename {docs => astro-site/public}/assets/zoo/apnea/sa-2-tcn-lg-cm.html (100%) rename {docs => astro-site/public}/assets/zoo/apnea/sa-2-tcn-sm-ahi-cm.html (100%) rename {docs => astro-site/public}/assets/zoo/apnea/sa-2-tcn-sm-ahi-scatter.html (100%) rename {docs => astro-site/public}/assets/zoo/apnea/sa-2-tcn-sm-cm.html (100%) rename {docs => astro-site/public}/assets/zoo/detect/detect-2-cm.html (100%) rename {docs => astro-site/public}/assets/zoo/detect/detect-2-eff.html (100%) rename {docs => astro-site/public}/assets/zoo/detect/detect-2-eff.json (100%) rename {docs => astro-site/public}/assets/zoo/detect/detect-2-tst.html (100%) rename {docs => astro-site/public}/assets/zoo/detect/detect-2-tst.json (100%) rename {docs => astro-site/public}/assets/zoo/detect/sleep-detect-2-cm.png (100%) rename {docs => astro-site/public}/assets/zoo/detect/sleep-detect-demo.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/block-latency.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/sleep-stage-4-cm.png (100%) rename {docs => astro-site/public}/assets/zoo/stage/sleep-stage-5-cm.png (100%) rename {docs => astro-site/public}/assets/zoo/stage/sleep-stage-demo-example.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/sleep-stage-demo.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-2-tcn-sm-cm.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-2-tcn-sm-eff.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-2-tcn-sm-tst.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-3-tcn-sm-cm.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-3-tcn-sm-eff.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-3-tcn-sm-tst.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-4-tcn-sm-cm.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-4-tcn-sm-eff.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-4-tcn-sm-tst.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-5-tcn-sm-cm.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-5-tcn-sm-eff.html (100%) rename {docs => astro-site/public}/assets/zoo/stage/ss-5-tcn-sm-tst.html (100%) delete mode 100644 astro-site/scripts/build-content.mjs create mode 100644 astro-site/scripts/build-examples.mjs create mode 100644 astro-site/scripts/canonical-content.test.mjs delete mode 100644 astro-site/scripts/normalize-markdown.mjs delete mode 100644 astro-site/scripts/normalize-markdown.test.mjs rename docs/datasets/byod.md => astro-site/src/content/docs/datasets/byod.mdx (87%) rename docs/datasets/cmidss.md => astro-site/src/content/docs/datasets/cmidss.mdx (80%) create mode 100644 astro-site/src/content/docs/datasets/index.mdx rename docs/datasets/mesa.md => astro-site/src/content/docs/datasets/mesa.mdx (86%) rename docs/datasets/stages.md => astro-site/src/content/docs/datasets/stages.mdx (89%) rename docs/datasets/synthetic.md => astro-site/src/content/docs/datasets/synthetic.mdx (50%) rename docs/datasets/ysyw.md => astro-site/src/content/docs/datasets/ysyw.mdx (73%) rename docs/detection-annotated-dataset.md => astro-site/src/content/docs/detection-annotated-dataset.mdx (88%) rename docs/detection-comparison.md => astro-site/src/content/docs/detection-comparison.mdx (94%) rename docs/detection-evaluation-protocol.md => astro-site/src/content/docs/detection-evaluation-protocol.mdx (91%) rename docs/detection-first-experiment.md => astro-site/src/content/docs/detection-first-experiment.mdx (93%) rename docs/detection-frozen-split.md => astro-site/src/content/docs/detection-frozen-split.mdx (91%) rename docs/detection-golden.md => astro-site/src/content/docs/detection-golden.mdx (90%) rename docs/detection-int8.md => astro-site/src/content/docs/detection-int8.mdx (93%) rename docs/detection-label-policy.md => astro-site/src/content/docs/detection-label-policy.mdx (90%) rename docs/detection-profiling.md => astro-site/src/content/docs/detection-profiling.mdx (92%) rename docs/detection-recipe.md => astro-site/src/content/docs/detection-recipe.mdx (90%) rename docs/detection-sample-clock.md => astro-site/src/content/docs/detection-sample-clock.mdx (92%) rename docs/detection-source-alignment.md => astro-site/src/content/docs/detection-source-alignment.mdx (87%) rename docs/features/byofs.md => astro-site/src/content/docs/features/byofs.mdx (82%) rename docs/features/fs_c_ear_9.md => astro-site/src/content/docs/features/fs_c_ear_9.mdx (77%) rename docs/features/fs_h_e_10.md => astro-site/src/content/docs/features/fs_h_e_10.mdx (83%) rename docs/features/fs_w_a_5.md => astro-site/src/content/docs/features/fs_w_a_5.mdx (78%) rename docs/features/fs_w_p_5.md => astro-site/src/content/docs/features/fs_w_p_5.mdx (78%) rename docs/features/fs_w_pa_14.md => astro-site/src/content/docs/features/fs_w_pa_14.mdx (79%) create mode 100644 astro-site/src/content/docs/features/index.mdx create mode 100644 astro-site/src/content/docs/guides/index.mdx rename docs/guides/stage-ablation.md => astro-site/src/content/docs/guides/stage-ablation.mdx (81%) rename docs/huggingface-artifacts.md => astro-site/src/content/docs/huggingface-artifacts.mdx (94%) rename docs/index.md => astro-site/src/content/docs/index.mdx (54%) rename docs/model-licensing-policy.md => astro-site/src/content/docs/model-licensing-policy.mdx (96%) rename docs/models/byom.md => astro-site/src/content/docs/models/byom.mdx (87%) rename docs/models/index.md => astro-site/src/content/docs/models/index.mdx (90%) rename docs/modes/configuration.md => astro-site/src/content/docs/modes/configuration.mdx (88%) rename docs/modes/demo.md => astro-site/src/content/docs/modes/demo.mdx (80%) create mode 100644 astro-site/src/content/docs/modes/download.mdx create mode 100644 astro-site/src/content/docs/modes/evaluate.mdx create mode 100644 astro-site/src/content/docs/modes/export.mdx rename docs/modes/index.md => astro-site/src/content/docs/modes/index.mdx (64%) create mode 100644 astro-site/src/content/docs/modes/train.mdx create mode 100644 astro-site/src/content/docs/quickstart.mdx rename docs/staging-baseline.md => astro-site/src/content/docs/staging-baseline.mdx (95%) rename docs/staging-training.md => astro-site/src/content/docs/staging-training.mdx (95%) create mode 100644 astro-site/src/content/docs/tasks/apnea.mdx create mode 100644 astro-site/src/content/docs/tasks/arousal.mdx rename docs/tasks/byot.md => astro-site/src/content/docs/tasks/byot.mdx (79%) create mode 100644 astro-site/src/content/docs/tasks/detect.mdx rename docs/tasks/index.md => astro-site/src/content/docs/tasks/index.mdx (74%) create mode 100644 astro-site/src/content/docs/tasks/stage.mdx create mode 100644 astro-site/src/content/docs/usage/cli.mdx create mode 100644 astro-site/src/content/docs/usage/python.mdx create mode 100644 astro-site/src/content/docs/zoo/apnea.mdx create mode 100644 astro-site/src/content/docs/zoo/detect.mdx create mode 100644 astro-site/src/content/docs/zoo/index.mdx create mode 100644 astro-site/src/content/docs/zoo/stage.mdx create mode 100644 astro-site/src/redirects.json rename {docs => docs-maintainers}/detection-preparation-performance.md (93%) rename {docs => docs-maintainers}/licenses/ambiq-device-model-license-draft.md (98%) rename {docs => docs-maintainers}/reusable-blocks.md (100%) rename {docs => docs-maintainers}/shared-foundation.md (98%) delete mode 100644 docs/assets/tasks/apnea/apnea-classes.md delete mode 100644 docs/assets/tasks/detect/detect-default-class-table.md delete mode 100644 docs/assets/tasks/stage/stage-default-class-table.md delete mode 100644 docs/assets/usage/json-configuration.md delete mode 100644 docs/assets/usage/python-configuration.md delete mode 100644 docs/assets/zoo/apnea/apnea-model-hw-table.md delete mode 100644 docs/assets/zoo/apnea/apnea-model-zoo-table.md delete mode 100644 docs/assets/zoo/detect/detect-model-hw-table.md delete mode 100644 docs/assets/zoo/detect/detect-model-zoo-table.md delete mode 100644 docs/assets/zoo/detect/sleep-detect-2-config.md delete mode 100644 docs/assets/zoo/stage/stage-model-hw-table.md delete mode 100644 docs/assets/zoo/stage/stage-model-zoo-table.md delete mode 100644 docs/css/custom.css delete mode 100644 docs/css/mkdocstrings.css delete mode 100644 docs/css/termynal.css delete mode 100644 docs/datasets/index.md delete mode 100644 docs/features/index.md delete mode 100644 docs/guides/index.md delete mode 100644 docs/js/custom.js delete mode 100644 docs/js/termynal.js delete mode 100644 docs/modes/download.md delete mode 100644 docs/modes/evaluate.md delete mode 100644 docs/modes/export.md delete mode 100644 docs/modes/train.md delete mode 100644 docs/quickstart.md delete mode 100644 docs/tasks/apnea.md delete mode 100644 docs/tasks/arousal.md delete mode 100644 docs/tasks/detect.md delete mode 100644 docs/tasks/stage.md delete mode 100644 docs/usage/cli.md delete mode 100644 docs/usage/python.md delete mode 100644 docs/zoo/apnea.md delete mode 100644 docs/zoo/detect.md delete mode 100644 docs/zoo/index.md delete mode 100644 docs/zoo/stage.md delete mode 100644 mkdocs.yml rename docs/guides/train-detect-model.ipynb => notebooks/archive/previous-docs-train-detect-model.ipynb (100%) delete mode 100644 scripts/gen_ref_pages.py diff --git a/.gitignore b/.gitignore index 7843de9..a6d25ed 100644 --- a/.gitignore +++ b/.gitignore @@ -161,8 +161,6 @@ venv.bak/ # Rope project settings .ropeproject -# mkdocs documentation -/site # mypy .mypy_cache/ @@ -188,8 +186,13 @@ cython_debug/ # Generated documentation astro-site/node_modules/ astro-site/.astro/ -astro-site/src/content/docs/ astro-site/src/data/ -astro-site/public/ astro-site/test-results/ astro-site/playwright-report/ + +astro-site/src/content/docs/reference/ +astro-site/public/reference/ +astro-site/public/notebooks/ +astro-site/public/examples/ +astro-site/src/content/docs/guides/train-detect-model.md +astro-site/public/evidence/ diff --git a/HANDOFF.md b/HANDOFF.md new file mode 100644 index 0000000..84be044 --- /dev/null +++ b/HANDOFF.md @@ -0,0 +1,13 @@ +# Canonical Astro documentation + +Issue: AmbiqAI/sleepkit#48. Branch: codex/canonical-astro-docs. + +Goal: retire the MkDocs compatibility layer without changing published content or runtime behavior. + +Baseline build passed. Source and output baselines are saved under /tmp/sleepkit-canonical-baseline. Worktree is isolated from prior migration work. + +Plan: keep authored MDX and navigation; retain API/notebook generation; remove unused MkDocs config/dependencies; verify content, links, downloads and browser behavior. Publish PR for review; do not merge without approval. + +Implementation: authored MDX and static public assets are tracked; navigation is direct Astro configuration; static redirects are checked in. API, notebook and example-download generation remain. Removed MkDocs config, converters, duplicate notebook sources and docs dependency group; lock regenerated. sleepKIT retains golden-contract evidence at docs/evidence and private notes in docs-maintainers. + +Verified: baseline and migrated route sets identical; all static assets, notebook downloads and example downloads byte-identical; authored MDX unchanged. Build/type/output checks passed, including generation-preserves-authored-source regression. Browser suites passed (heartKIT 8, sleepKIT 17). Clean install with generated outputs removed, build/type/output checks and visual review passed. No third-party lockfile package versions changed. heartKIT lock regeneration also aligns its project version with pyproject.toml. PR publication pending. EDGE cleanup is already landed. AOT MkDocs is an active exported-model offline-doc feature, intentionally retained. diff --git a/README.md b/README.md index 3e3ba42..c814a90 100644 --- a/README.md +++ b/README.md @@ -115,26 +115,26 @@ Checkout the [Guides](https://ambiqai.github.io/sleepkit/guides) to see detailed ### Hugging Face baseline artifacts -See [the artifact publishing guide](docs/huggingface-artifacts.md) for the additive +See [the artifact publishing guide](astro-site/src/content/docs/huggingface-artifacts.mdx) for the additive `python -m sleepkit.artifacts` workflow, starting with the historical SD-2-TCN-SM TFLite baseline. Staging and publication dry runs require no training runtime. ### Python detection recipe -See [the detection recipe guide](docs/detection-recipe.md) for a sensor-to-artifact +See [the detection recipe guide](astro-site/src/content/docs/detection-recipe.mdx) for a sensor-to-artifact pipeline with built-in feature generation, fitted preprocessing, held-out evaluation, and unlabeled inference. It is additive to the legacy task CLI. -The [first golden experiment](docs/detection-golden.md) pins the membership -baseline's config and dataset evidence. The [profiling harness](docs/detection-profiling.md) +The [first golden experiment](astro-site/src/content/docs/detection-golden.mdx) pins the membership +baseline's config and dataset evidence. The [profiling harness](astro-site/src/content/docs/detection-profiling.mdx) measures preparation, loading and training while preserving its finite sampling contract. ### Saved-feature sleep staging -The [staging baseline guide](docs/staging-baseline.md) provides an explicit +The [staging baseline guide](astro-site/src/content/docs/staging-baseline.mdx) provides an explicit read → preprocess → window → evaluate path for the historical SS-3 Keras model. It records cohort/input hashes and coverage while keeping historical provenance -limitations visible. The [staging training recipe](docs/staging-training.md) adds +limitations visible. The [staging training recipe](astro-site/src/content/docs/staging-training.mdx) adds explicit subject splits, Keras training, and prospective golden declarations. ### Licensing @@ -142,13 +142,13 @@ explicit subject splits, Keras training, and prospective golden declarations. The code and Ambiq-authored documentation/site content use [BSD-3-Clause](LICENSE), except material with a separate notice. Model weights and datasets have their own terms; public availability does not imply commercial-use permission. See the -[model licensing policy](docs/model-licensing-policy.md) for per-model choices, +[model licensing policy](astro-site/src/content/docs/model-licensing-policy.mdx) for per-model choices, research restrictions and proposed optional Ambiq device terms. ### Shared foundation direction -The [cross-KIT architecture proposal](docs/shared-foundation.md) describes the path +The [cross-KIT architecture proposal](docs-maintainers/shared-foundation.md) describes the path toward reusable heliaEDGE blocks, first-class TensorFlow/PyTorch workflows, measured input-pipeline improvements, and traceable golden releases across the KITs. -The [reusable-block candidates](docs/reusable-blocks.md) and synthetic signal recipe +The [reusable-block candidates](docs-maintainers/reusable-blocks.md) and synthetic signal recipe exercise the first local interfaces with Git-pinned heliaEDGE backend profiles. diff --git a/astro-site/MIGRATION.md b/astro-site/MIGRATION.md index 8f0039f..45a4186 100644 --- a/astro-site/MIGRATION.md +++ b/astro-site/MIGRATION.md @@ -45,3 +45,7 @@ Landing installation examples are copyable Bash commands with no Termynal progre ## Public documentation boundary Private implementation API modules and their redirects are excluded. Shared architecture proposals, reusable-component experiments, feature-preparation implementation notes and unadopted draft license terms stay in the repository and are not published. Public task workflows and model licensing guidance remain. The public site now contains 55 authored Markdown pages, one notebook and 110 API modules (216 catalog symbols). Output checks reject internal routes and private modules in the catalog/reference model. + +## Canonical sources + +The one-time MkDocs adapter has been retired. Authored pages are now in `src/content/docs/`, navigation in `src/navigation.mjs`, and static assets in `public/`. API and notebook generation remain. See README.md for source ownership. diff --git a/astro-site/README.md b/astro-site/README.md index 6fa3f59..88faa21 100644 --- a/astro-site/README.md +++ b/astro-site/README.md @@ -19,10 +19,14 @@ npm run check:output npm test ``` -`prepare:docs` regenerates `src/content/docs`, `src/data` and `public`. Do not edit those directories. Edit Markdown under `../docs`, Python docstrings, or the owning scripts. `mkdocs.yml` supplies the existing navigation during migration. `.cache/conversion.json` records syntax conversions and items requiring visual inspection. +Edit authored Markdown/MDX in `src/content/docs/`, navigation in `src/navigation.mjs`, static redirects in `src/redirects.json`, and static assets in `public/`. These are canonical sources and are never replaced by the build. -The notebook page uses `notebooks/train-detect-model.ipynb`, preserving its saved outputs, three figures and downloadable original. The earlier `docs/guides/` copy is retained as an archive download. Neither source is overwritten. Historical notebook outputs do not establish validation against the latest package. +`prepare:docs` generates only downloadable configuration examples, notebook guides/assets, and Python API pages/data. API output under `src/content/docs/reference/`, notebook `.md` pages under `guides/`, `src/data/`, and `public/{reference,notebooks,examples}/` are ignored. Edit Python docstrings or the notebooks in `../notebooks/` for those outputs. There is no MkDocs configuration or Markdown conversion step. + +The notebook page uses `notebooks/train-detect-model.ipynb`, preserving its saved outputs, three figures and downloadable original. The earlier documentation copy is retained in `notebooks/archive/` as an archive download. Neither source is overwritten. Historical notebook outputs do not establish validation against the latest package. The documentation workflow checks pull requests and publishes main to GitHub Pages. It can also be dispatched manually on main. It does not publish Python packages. Package publishing remains in the release workflows; documentation no longer depends on a package release. Public reference generation excludes underscore-prefixed implementation modules before rendering, so they do not appear in pages, catalog, search or machine-readable exports. `scripts/public-docs.mjs` lists repository-only maintainer/proposal pages omitted from publication. Their sources remain in the repository. + +Golden-contract evidence remains canonical under `../docs/evidence/` because experiment declarations reference those paths. The build copies it to `public/evidence/`; do not edit the generated copy. diff --git a/astro-site/package.json b/astro-site/package.json index 1400e45..415b2a0 100644 --- a/astro-site/package.json +++ b/astro-site/package.json @@ -9,7 +9,7 @@ "npm": ">=11" }, "scripts": { - "prepare:docs": "node scripts/build-content.mjs && python3 scripts/build-notebooks.py && node scripts/build-reference.mjs", + "prepare:docs": "node scripts/build-examples.mjs && python3 scripts/build-notebooks.py && node scripts/build-reference.mjs", "predev": "npm run prepare:docs", "dev": "astro dev", "prebuild": "npm run prepare:docs", @@ -17,7 +17,7 @@ "postbuild": "node scripts/publish-reference.mjs", "precheck": "npm run prepare:docs", "check": "astro check", - "check:output": "python3 scripts/check-doc-examples.py && node --test scripts/normalize-markdown.test.mjs && node scripts/check-output.mjs", + "check:output": "node --test scripts/canonical-content.test.mjs && python3 scripts/check-doc-examples.py && node scripts/check-output.mjs", "test": "playwright test" }, "dependencies": { diff --git a/docs/assets/favicon.png b/astro-site/public/assets/favicon.png similarity index 100% rename from docs/assets/favicon.png rename to astro-site/public/assets/favicon.png diff --git a/docs/assets/guides/stage/ablation-dilation.html b/astro-site/public/assets/guides/stage/ablation-dilation.html similarity index 100% rename from docs/assets/guides/stage/ablation-dilation.html rename to astro-site/public/assets/guides/stage/ablation-dilation.html diff --git a/docs/assets/guides/stage/ablation-kernelsize.html b/astro-site/public/assets/guides/stage/ablation-kernelsize.html similarity index 100% rename from docs/assets/guides/stage/ablation-kernelsize.html rename to astro-site/public/assets/guides/stage/ablation-kernelsize.html diff --git a/docs/assets/guides/stage/ablation-se-ratio.html b/astro-site/public/assets/guides/stage/ablation-se-ratio.html similarity index 100% rename from docs/assets/guides/stage/ablation-se-ratio.html rename to astro-site/public/assets/guides/stage/ablation-se-ratio.html diff --git a/docs/assets/guides/stage/ablation-temporal.html b/astro-site/public/assets/guides/stage/ablation-temporal.html similarity index 100% rename from docs/assets/guides/stage/ablation-temporal.html rename to astro-site/public/assets/guides/stage/ablation-temporal.html diff --git a/docs/assets/guides/stage/ablation-width.html b/astro-site/public/assets/guides/stage/ablation-width.html similarity index 100% rename from docs/assets/guides/stage/ablation-width.html rename to astro-site/public/assets/guides/stage/ablation-width.html diff --git a/docs/assets/guides/stage/sleep-cycle-pie.html b/astro-site/public/assets/guides/stage/sleep-cycle-pie.html similarity index 100% rename from docs/assets/guides/stage/sleep-cycle-pie.html rename to astro-site/public/assets/guides/stage/sleep-cycle-pie.html diff --git a/docs/assets/logo-white.png b/astro-site/public/assets/logo-white.png similarity index 100% rename from docs/assets/logo-white.png rename to astro-site/public/assets/logo-white.png diff --git a/docs/assets/logo.png b/astro-site/public/assets/logo.png similarity index 100% rename from docs/assets/logo.png rename to astro-site/public/assets/logo.png diff --git a/docs/assets/sleepkit-banner.png b/astro-site/public/assets/sleepkit-banner.png similarity index 100% rename from docs/assets/sleepkit-banner.png rename to astro-site/public/assets/sleepkit-banner.png diff --git a/docs/assets/sleepkit-logo-dark.png b/astro-site/public/assets/sleepkit-logo-dark.png similarity index 100% rename from docs/assets/sleepkit-logo-dark.png rename to astro-site/public/assets/sleepkit-logo-dark.png diff --git a/docs/assets/sleepkit-logo-light.png b/astro-site/public/assets/sleepkit-logo-light.png similarity index 100% rename from docs/assets/sleepkit-logo-light.png rename to astro-site/public/assets/sleepkit-logo-light.png diff --git a/docs/assets/tasks/detect/ambiq-watch.webp b/astro-site/public/assets/tasks/detect/ambiq-watch.webp similarity index 100% rename from docs/assets/tasks/detect/ambiq-watch.webp rename to astro-site/public/assets/tasks/detect/ambiq-watch.webp diff --git a/docs/assets/tasks/detect/demo-sleep-cycle-pie.html b/astro-site/public/assets/tasks/detect/demo-sleep-cycle-pie.html similarity index 100% rename from docs/assets/tasks/detect/demo-sleep-cycle-pie.html rename to astro-site/public/assets/tasks/detect/demo-sleep-cycle-pie.html diff --git a/docs/assets/tasks/sleepkit-task-diagram.svg b/astro-site/public/assets/tasks/sleepkit-task-diagram.svg similarity index 100% rename from docs/assets/tasks/sleepkit-task-diagram.svg rename to astro-site/public/assets/tasks/sleepkit-task-diagram.svg diff --git a/docs/assets/tasks/stage/ambiq-watch.webp b/astro-site/public/assets/tasks/stage/ambiq-watch.webp similarity index 100% rename from docs/assets/tasks/stage/ambiq-watch.webp rename to astro-site/public/assets/tasks/stage/ambiq-watch.webp diff --git a/docs/assets/tasks/stage/demo-sleep-cycle-pie.html b/astro-site/public/assets/tasks/stage/demo-sleep-cycle-pie.html similarity index 100% rename from docs/assets/tasks/stage/demo-sleep-cycle-pie.html rename to astro-site/public/assets/tasks/stage/demo-sleep-cycle-pie.html diff --git a/docs/assets/tasks/stage/sleep-cycle-pie.html b/astro-site/public/assets/tasks/stage/sleep-cycle-pie.html similarity index 100% rename from docs/assets/tasks/stage/sleep-cycle-pie.html rename to astro-site/public/assets/tasks/stage/sleep-cycle-pie.html diff --git a/docs/assets/tasks/stage/sleep-stage.svg b/astro-site/public/assets/tasks/stage/sleep-stage.svg similarity index 100% rename from docs/assets/tasks/stage/sleep-stage.svg rename to astro-site/public/assets/tasks/stage/sleep-stage.svg diff --git a/docs/assets/tcn.svg b/astro-site/public/assets/tcn.svg similarity index 100% rename from docs/assets/tcn.svg rename to astro-site/public/assets/tcn.svg diff --git a/docs/assets/zoo/apnea/sa-2-tcn-lg-cm.html b/astro-site/public/assets/zoo/apnea/sa-2-tcn-lg-cm.html similarity index 100% rename from docs/assets/zoo/apnea/sa-2-tcn-lg-cm.html rename to astro-site/public/assets/zoo/apnea/sa-2-tcn-lg-cm.html diff --git a/docs/assets/zoo/apnea/sa-2-tcn-sm-ahi-cm.html b/astro-site/public/assets/zoo/apnea/sa-2-tcn-sm-ahi-cm.html similarity index 100% rename from docs/assets/zoo/apnea/sa-2-tcn-sm-ahi-cm.html rename to astro-site/public/assets/zoo/apnea/sa-2-tcn-sm-ahi-cm.html diff --git a/docs/assets/zoo/apnea/sa-2-tcn-sm-ahi-scatter.html b/astro-site/public/assets/zoo/apnea/sa-2-tcn-sm-ahi-scatter.html similarity index 100% rename from docs/assets/zoo/apnea/sa-2-tcn-sm-ahi-scatter.html rename to astro-site/public/assets/zoo/apnea/sa-2-tcn-sm-ahi-scatter.html diff --git a/docs/assets/zoo/apnea/sa-2-tcn-sm-cm.html b/astro-site/public/assets/zoo/apnea/sa-2-tcn-sm-cm.html similarity index 100% rename from docs/assets/zoo/apnea/sa-2-tcn-sm-cm.html rename to astro-site/public/assets/zoo/apnea/sa-2-tcn-sm-cm.html diff --git a/docs/assets/zoo/detect/detect-2-cm.html b/astro-site/public/assets/zoo/detect/detect-2-cm.html similarity index 100% rename from docs/assets/zoo/detect/detect-2-cm.html rename to astro-site/public/assets/zoo/detect/detect-2-cm.html diff --git a/docs/assets/zoo/detect/detect-2-eff.html b/astro-site/public/assets/zoo/detect/detect-2-eff.html similarity index 100% rename from docs/assets/zoo/detect/detect-2-eff.html rename to astro-site/public/assets/zoo/detect/detect-2-eff.html diff --git a/docs/assets/zoo/detect/detect-2-eff.json b/astro-site/public/assets/zoo/detect/detect-2-eff.json similarity index 100% rename from docs/assets/zoo/detect/detect-2-eff.json rename to astro-site/public/assets/zoo/detect/detect-2-eff.json diff --git a/docs/assets/zoo/detect/detect-2-tst.html b/astro-site/public/assets/zoo/detect/detect-2-tst.html similarity index 100% rename from docs/assets/zoo/detect/detect-2-tst.html rename to astro-site/public/assets/zoo/detect/detect-2-tst.html diff --git a/docs/assets/zoo/detect/detect-2-tst.json b/astro-site/public/assets/zoo/detect/detect-2-tst.json similarity index 100% rename from docs/assets/zoo/detect/detect-2-tst.json rename to astro-site/public/assets/zoo/detect/detect-2-tst.json diff --git a/docs/assets/zoo/detect/sleep-detect-2-cm.png b/astro-site/public/assets/zoo/detect/sleep-detect-2-cm.png similarity index 100% rename from docs/assets/zoo/detect/sleep-detect-2-cm.png rename to astro-site/public/assets/zoo/detect/sleep-detect-2-cm.png diff --git a/docs/assets/zoo/detect/sleep-detect-demo.html b/astro-site/public/assets/zoo/detect/sleep-detect-demo.html similarity index 100% rename from docs/assets/zoo/detect/sleep-detect-demo.html rename to astro-site/public/assets/zoo/detect/sleep-detect-demo.html diff --git a/docs/assets/zoo/stage/block-latency.html b/astro-site/public/assets/zoo/stage/block-latency.html similarity index 100% rename from docs/assets/zoo/stage/block-latency.html rename to astro-site/public/assets/zoo/stage/block-latency.html diff --git a/docs/assets/zoo/stage/sleep-stage-4-cm.png b/astro-site/public/assets/zoo/stage/sleep-stage-4-cm.png similarity index 100% rename from docs/assets/zoo/stage/sleep-stage-4-cm.png rename to astro-site/public/assets/zoo/stage/sleep-stage-4-cm.png diff --git a/docs/assets/zoo/stage/sleep-stage-5-cm.png b/astro-site/public/assets/zoo/stage/sleep-stage-5-cm.png similarity index 100% rename from docs/assets/zoo/stage/sleep-stage-5-cm.png rename to astro-site/public/assets/zoo/stage/sleep-stage-5-cm.png diff --git a/docs/assets/zoo/stage/sleep-stage-demo-example.html b/astro-site/public/assets/zoo/stage/sleep-stage-demo-example.html similarity index 100% rename from docs/assets/zoo/stage/sleep-stage-demo-example.html rename to astro-site/public/assets/zoo/stage/sleep-stage-demo-example.html diff --git a/docs/assets/zoo/stage/sleep-stage-demo.html b/astro-site/public/assets/zoo/stage/sleep-stage-demo.html similarity index 100% rename from docs/assets/zoo/stage/sleep-stage-demo.html rename to astro-site/public/assets/zoo/stage/sleep-stage-demo.html diff --git a/docs/assets/zoo/stage/ss-2-tcn-sm-cm.html b/astro-site/public/assets/zoo/stage/ss-2-tcn-sm-cm.html similarity index 100% rename from docs/assets/zoo/stage/ss-2-tcn-sm-cm.html rename to astro-site/public/assets/zoo/stage/ss-2-tcn-sm-cm.html diff --git a/docs/assets/zoo/stage/ss-2-tcn-sm-eff.html b/astro-site/public/assets/zoo/stage/ss-2-tcn-sm-eff.html similarity index 100% rename from docs/assets/zoo/stage/ss-2-tcn-sm-eff.html rename to astro-site/public/assets/zoo/stage/ss-2-tcn-sm-eff.html diff --git a/docs/assets/zoo/stage/ss-2-tcn-sm-tst.html b/astro-site/public/assets/zoo/stage/ss-2-tcn-sm-tst.html similarity index 100% rename from docs/assets/zoo/stage/ss-2-tcn-sm-tst.html rename to astro-site/public/assets/zoo/stage/ss-2-tcn-sm-tst.html diff --git a/docs/assets/zoo/stage/ss-3-tcn-sm-cm.html b/astro-site/public/assets/zoo/stage/ss-3-tcn-sm-cm.html similarity index 100% rename from docs/assets/zoo/stage/ss-3-tcn-sm-cm.html rename to astro-site/public/assets/zoo/stage/ss-3-tcn-sm-cm.html diff --git a/docs/assets/zoo/stage/ss-3-tcn-sm-eff.html b/astro-site/public/assets/zoo/stage/ss-3-tcn-sm-eff.html similarity index 100% rename from docs/assets/zoo/stage/ss-3-tcn-sm-eff.html rename to astro-site/public/assets/zoo/stage/ss-3-tcn-sm-eff.html diff --git a/docs/assets/zoo/stage/ss-3-tcn-sm-tst.html b/astro-site/public/assets/zoo/stage/ss-3-tcn-sm-tst.html similarity index 100% rename from docs/assets/zoo/stage/ss-3-tcn-sm-tst.html rename to astro-site/public/assets/zoo/stage/ss-3-tcn-sm-tst.html diff --git a/docs/assets/zoo/stage/ss-4-tcn-sm-cm.html b/astro-site/public/assets/zoo/stage/ss-4-tcn-sm-cm.html similarity index 100% rename from docs/assets/zoo/stage/ss-4-tcn-sm-cm.html rename to astro-site/public/assets/zoo/stage/ss-4-tcn-sm-cm.html diff --git a/docs/assets/zoo/stage/ss-4-tcn-sm-eff.html b/astro-site/public/assets/zoo/stage/ss-4-tcn-sm-eff.html similarity index 100% rename from docs/assets/zoo/stage/ss-4-tcn-sm-eff.html rename to astro-site/public/assets/zoo/stage/ss-4-tcn-sm-eff.html diff --git a/docs/assets/zoo/stage/ss-4-tcn-sm-tst.html b/astro-site/public/assets/zoo/stage/ss-4-tcn-sm-tst.html similarity index 100% rename from docs/assets/zoo/stage/ss-4-tcn-sm-tst.html rename to astro-site/public/assets/zoo/stage/ss-4-tcn-sm-tst.html diff --git a/docs/assets/zoo/stage/ss-5-tcn-sm-cm.html b/astro-site/public/assets/zoo/stage/ss-5-tcn-sm-cm.html similarity index 100% rename from docs/assets/zoo/stage/ss-5-tcn-sm-cm.html rename to astro-site/public/assets/zoo/stage/ss-5-tcn-sm-cm.html diff --git a/docs/assets/zoo/stage/ss-5-tcn-sm-eff.html b/astro-site/public/assets/zoo/stage/ss-5-tcn-sm-eff.html similarity index 100% rename from docs/assets/zoo/stage/ss-5-tcn-sm-eff.html rename to astro-site/public/assets/zoo/stage/ss-5-tcn-sm-eff.html diff --git a/docs/assets/zoo/stage/ss-5-tcn-sm-tst.html b/astro-site/public/assets/zoo/stage/ss-5-tcn-sm-tst.html similarity index 100% rename from docs/assets/zoo/stage/ss-5-tcn-sm-tst.html rename to astro-site/public/assets/zoo/stage/ss-5-tcn-sm-tst.html diff --git a/astro-site/scripts/build-content.mjs b/astro-site/scripts/build-content.mjs deleted file mode 100644 index 21e8fe3..0000000 --- a/astro-site/scripts/build-content.mjs +++ /dev/null @@ -1,175 +0,0 @@ -import { internalPages } from "./public-docs.mjs"; -import { - existsSync, - readFileSync, - writeFileSync, - mkdirSync, - readdirSync, - cpSync, - rmSync, -} from "node:fs"; -import { dirname, resolve, relative } from "node:path"; -import { - convertPage, - createState, - parseNav, - buildSidebar, -} from "../node_modules/@ambiqai/helia-ui/scripts/lib/mkdocs-convert-render.mjs"; -import { normalizeMarkdown, expandSnippets } from "./normalize-markdown.mjs"; -const source = resolve("../docs"); -const out = resolve("src/content/docs"); -const walk = (dir) => - readdirSync(dir, { withFileTypes: true }).flatMap((e) => - e.isDirectory() ? walk(resolve(dir, e.name)) : [resolve(dir, e.name)], - ); -const state = createState(); -const titles = {}; -rmSync(out, { recursive: true, force: true }); -mkdirSync(out, { recursive: true }); -rmSync("public/examples", { recursive: true, force: true }); -mkdirSync("src/data", { recursive: true }); -function readSnippet(file) { - const path = resolve(source, file); - if (!path.startsWith(source + "/")) - throw Error(`Snippet outside docs: ${file}`); - if (!existsSync(path)) { - if (file !== "assets/segmentation_example.html") - throw Error(`Missing snippet: ${file}`); - state.handPass.push(`Missing source snippet: ${file}`); - return "> The source repository does not include this example asset."; - } - if (file.endsWith(".html")) - return `