feat: complete v1 — platform-aware scaffold + MNIST/CIFAR-10 demos#54
Merged
Conversation
Close the three remaining Known Issues from STATE.md: - Device detection (Mac vs Linux): scaffold now emits a CPU compose template on macOS / no-GPU Linux instead of a broken `deploy.resources.devices: capabilities: [gpu]` block. Auto-detects via `detect_environment()`, falls back to GPU template on probe failure (safest default for Linux build servers). - MNIST Phase 6 packaging: full Phase 1-6 deliverables produced in `mnist-digit-classifier-delivery/` — 99.66% test accuracy, 16 tests (data + model + oracle + ONNX + PyTorch export round-trip). - Plan Environment section: already shipped session-013, marked stale. CIFAR-10 added as second-dataset platform validation: 91.62% test accuracy, 19 tests, in `cifar10-classifier-delivery/`. Validates the plan's documented domain priors about cat-dog being the canonical confusion pair. All 14 ZO CLI commands smoke-tested and working: --version, --help, init (no-tmux + dry-run + reset), preflight, status, experiments list/show/diff, gates set, migrate, watch-training (Rich Live dashboard renders against ZOTrainingCallback output), build, continue, draft. Both v1 demo plans pass `zo preflight` 6/7. Two formats × two locations of trained weights for corruption protection: experiments/exp-001/best.pt (full training checkpoint) + models/<proj>_cnn.pt (slim state_dict + config) + ONNX export with sidecar `.onnx.data`. Test count 669 → 675 (6 new TestPlatformAwareCompose tests). ruff clean (src/zo/), validate-docs 10/10. v1 acceptance criteria (PRD §9) all met. PR-033 (platform-aware templates) and PR-034 (MPS-pytest tensor extraction) added to PRIORS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6 tasks
SamPlvs
added a commit
that referenced
this pull request
Apr 30, 2026
feat: complete v1 — platform-aware scaffold + MNIST/CIFAR-10 demos
SamPlvs
added a commit
that referenced
this pull request
Apr 30, 2026
First slice of the public docs site — 13 MDX pages organised into Get-Started, Concepts, and CLI Reference sections. Brand v2 system applied (coral primary, paper/canvas backgrounds, Geist font, simplified C mark in logo + favicon). Pages shipped: - introduction.mdx — landing - quickstart.mdx — 5-minute first run - installation.mdx — prerequisites + setup.sh walkthrough - concepts/overview.mdx — five primitives + design principles - concepts/the-plan.mdx — 8 required sections, schema, edit-mid-project - concepts/the-oracle.mdx — tiered metric, statistical significance, examples - concepts/agents.mdx — 20 agents, two teams, tier routing, customisation - concepts/phases-and-gates.mdx — 6 phases, 3 gate types, autonomous loop - concepts/memory-and-continuity.mdx — STATE/DECISION_LOG/PRIORS, .zo/, semantic search - cli/overview.mdx — pipeline, modes, all commands at a glance - cli/init.mdx — full reference with layout modes + dry-run + reset - cli/draft.mdx — Plan Architect + scouts, custom agents, adaptations - cli/build.mdx — flagship command, smart mode detection, gate modes Brand assets: - docs/logo/light.svg (ink stroke + coral dot for paper bg) - docs/logo/dark.svg (cream stroke + coral dot for canvas bg) - docs/favicon.svg (coral simplified C, mid-tone for browser tabs) mint.json brand config: primary #D87A57, light bg #F4EFE6 (paper), dark bg #12110F (canvas), Geist headings + body, footer GitHub link, search prompt, suggest-edit + raise-issue feedback. Existing docs/*.md files (COMMANDS, SAMPLE_PROJECT, TROUBLESHOOTING, DELIVERY_STRUCTURE) stay in place during transition — the README still links to them. docs/README.md documents local dev (mintlify dev), the file structure, brand tokens, deploy steps, and the migration table from existing .md sources to MDX destinations. Framework decision rationale (vs Astro Starlight) recorded in DECISION_LOG: Mintlify wins on user adoption — pattern recognition (Anthropic/Vercel/Linear/Cursor all use Mintlify), built-in AI search, positioning signal, battle-tested mobile + edge-cases, lower maintenance burden = fresher docs over time. Brand fidelity matters most on the marketing site; docs prioritise speed-to-answer. Deploy: connect Mintlify to the GitHub repo (one-click on mintlify.com, free OSS plan), point at docs/, attach docs.zero-operators.dev custom domain. Auto-deploys on push to main thereafter. This commit updates PR #54 (v1 completion) — docs scaffold is part of the v1 story. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
scaffold_delivery(gpu_enabled=...)auto-detects host GPU and emits the correct compose template (CPU on macOS / no-GPU Linux, GPU otherwise). Fixes the brokendeploy.resources.devices: capabilities: [gpu]block on Mac.What changed
Platform —
src/zo/scaffold.py+src/zo/cli.pySplit
_COMPOSE_TEMPLATEinto GPU and CPU variants. New_resolve_compose_template()helper picks based ongpu_enabled: bool | None. CLI's_init_commit_writesprobes viadetect_environment()and passes through. Service name kept asgpuacross both for cross-platform README parity.Tests —
tests/unit/test_scaffold.py+tests/unit/test_cli.py6 new
TestPlatformAwareComposetests (explicit modes, auto-detect both ways, detection-failure fallback, CPU service-name parity). One existing test made host-independent.Demos —
plans/cifar10-classifier.md+ delivery repos (separate)CIFAR-10 plan added (public benchmark, no client data). Both demo delivery repos live at
~/Documents/code/personal/{mnist-digit-classifier,cifar10-classifier}-delivery/— outside this repo, not part of this PR. Each has full Phase 1-6 artifacts (reports/{data_quality,training,analysis,model_card,validation}.md), trained weights in two formats × two locations (PyTorch + ONNX, redundancy against corruption), drift detection scaffold, and oracle + unit + export tests.Memory
sessions/session-023-2026-04-26.mdper CLAUDE.md "On Session End" protocol.Docs
README test count 669 → 675, demos badge added, status section refreshed.
Verification
pytestpytestpytestruff check src/zo/validate-docs.shzo preflighton both planszo watch-trainingRich Live dashboardZOTrainingCallbackoutputv1 acceptance criteria (PRD §9)
.zo/portable state)Test plan
PYTHONPATH=src pytest tests/ -q— 675 passedruff check src/zo/— cleanbash scripts/validate-docs.sh— 10/10onnx.checker.check_modelfor bothzo watch-trainingRich Live dashboard renderscapabilities: [gpu])🤖 Generated with Claude Code