Skip to content

feat(memory): portable project memory via .zo/ directory#44

Merged
SamPlvs merged 1 commit into
mainfrom
claude/lucid-swirles
Apr 15, 2026
Merged

feat(memory): portable project memory via .zo/ directory#44
SamPlvs merged 1 commit into
mainfrom
claude/lucid-swirles

Conversation

@SamPlvs
Copy link
Copy Markdown
Owner

@SamPlvs SamPlvs commented Apr 15, 2026

Summary

  • Project state (STATE.md, DECISION_LOG, PRIORS, sessions, plans, config) moves from ZO repo to delivery repo under .zo/, making projects portable across machines via git pull
  • New zo migrate command copies legacy project state into .zo/ directory
  • zo continue --repo reconnects to a project on a new machine with auto-environment detection
  • zo status --repo and optional project_name auto-detected from .zo/config.yaml
  • ZO public repo retains only platform-level memory (memory/zo-platform/)
  • Backward compatible — legacy layout (targets/, plans/, memory/) still works
  • Sanitised all client references from tracked files (PR-024 enforcement)

Changes

  • New: src/zo/project_config.py — ProjectConfig + LocalConfig Pydantic models, YAML I/O, TargetConfig adapter
  • New: zo migrate CLI command, tests/integration/test_migrate.py (8 tests)
  • New: tests/integration/test_zo_dir_layout.py (8 tests), tests/unit/test_project_config.py (14 tests)
  • Modified: memory.py (memory_root override), orchestrator.py (plan_path override), scaffold.py (.zo/ dirs)
  • Modified: cli.py — discovery layer, updated build/continue/status/gates/watch-training commands
  • Docs: README, COMMANDS.md, specs/architecture.md, specs/memory.md updated
  • Memory: PR-028 added to PRIORS, architecture decision logged, STATE.md updated

Test plan

  • 521 tests passing (36 new), 7 skipped
  • ruff check src/zo/ clean
  • validate-docs.sh 9 passed, 0 failed
  • zo migrate ivl_f5 --repo ~/ivl_f5 successfully migrated prod-001 state
  • No client names in tracked files (grep verified)
  • zo continue --repo on GPU server (blocked on merge)

🤖 Generated with Claude Code

…repos

Project state (STATE.md, DECISION_LOG, PRIORS, sessions, plans, config) now
lives in the delivery repo under .zo/, making projects portable across machines
via git pull. ZO public repo retains only platform-level memory.

New module: project_config.py (ProjectConfig + LocalConfig models, YAML I/O,
TargetConfig adapter). MemoryManager gains memory_root override. Orchestrator
gains plan_path override. Scaffold creates .zo/ dirs. CLI discovery layer
(_detect_delivery_repo, _load_project_context) supports both .zo/ and legacy
layouts. New zo migrate command. zo continue gains --repo flag. zo status
gains --repo and optional project_name.

521 tests passing, ruff clean, validate-docs 10/10. Sanitised all client
references from tracked files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying zero-operators with  Cloudflare Pages  Cloudflare Pages

Latest commit: 909188e
Status: ✅  Deploy successful!
Preview URL: https://1ea34ef0.zero-operators.pages.dev
Branch Preview URL: https://claude-lucid-swirles.zero-operators.pages.dev

View logs

@SamPlvs SamPlvs merged commit 9bb73c4 into main Apr 15, 2026
1 check passed
@SamPlvs SamPlvs deleted the claude/lucid-swirles branch April 15, 2026 10:20
SamPlvs added a commit that referenced this pull request Apr 30, 2026
feat(memory): portable project memory via .zo/ directory
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.

1 participant