v1.x polish: phase snapshots, generic domain-evaluator, denylist-first#48
Merged
Conversation
…nylist-first Three independent v1.x items landed: 1. Phase completion snapshots (C1): new src/zo/snapshots.py module with PhaseSnapshot pydantic model (schema_version: 1), MD+YAML frontmatter render, write, list, load. Orchestrator writes a snapshot at every gate PROCEED (automated + human). Uses memory_root so portable .zo/memory/snapshots/ works automatically. 23 unit + 5 integration tests. Non-blocking on failure (snapshots are reporting, not gates). 2. Domain-evaluator refactored to generic shell: stripped domain-specific content (physics/chemistry/process engineering). Agent identity comes exclusively from the plan's **Agent adaptations:** block at build time (PR-020 mechanism). Hard stop-rule: if no adaptation present, the agent asks Lead Orchestrator rather than produce a generic report. Plan Architect already proposes these during draft. 3. Denylist-first DL prior codified: PR-026 (Phase 1 learning — curated allowlist silently limited feature space to <1% of available signals) propagated into specs/workflow.md Subtask 1.3 callout + new Pipeline Principles section in .claude/agents/data-engineer.md. Rule: include all signals, exclude only leakage; feature selection is Phase 2 model-dependent; flag any reduction >10x from inherited lists. Memory: STATE.md updated (current position, completed items, what's next, session metadata session-019); DECISION_LOG.md four new entries covering the three features plus the experiment-capture-layer design sketch (implementation deferred per PR-005 until real iteration data grounds the loop heuristics). Tests: 557 passed (+28 from 529), ruff clean, validate-docs 10/10. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploying zero-operators with
|
| Latest commit: |
2cb4e49
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://27378639.zero-operators.pages.dev |
| Branch Preview URL: | https://claude-interesting-dubinsky.zero-operators.pages.dev |
SamPlvs
added a commit
that referenced
this pull request
Apr 30, 2026
v1.x polish: phase snapshots, generic domain-evaluator, denylist-first
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
Three independent v1.x items landed in one session, all post
.zo/portable memory (PR #44-47):src/zo/snapshots.pymodule.PhaseSnapshotpydantic model withschema_version: 1, MD+YAML frontmatter format (same pattern as STATE.md), write/list/load helpers. Orchestrator writes a snapshot at every gate PROCEED (both automated and human paths). UsesMemoryManager.memory_rootso portable.zo/memory/snapshots/works automatically. Non-blocking on failure (snapshots are reporting artifacts, not correctness gates).**Agent adaptations:**block at build time (PR-020 mechanism). Hard stop-rule: if no adaptation is present, the agent asks Lead Orchestrator rather than produce a generic report. Plan Architect already proposes these duringzo draft.specs/workflow.mdSubtask 1.3 callout + new "Pipeline Principles" section in.claude/agents/data-engineer.md. Rule: include all signals, exclude only leakage; feature selection is Phase 2 model-dependent; flag any reduction >10× from inherited lists.Deferred (by design, not scope cut)
zo draft— skipped. Portable.zo/memory (PR feat(memory): portable project memory via .zo/ directory #44) already solved the cross-machine case; you can now runzo draftdirectly on the host that has the data.Memory updates
STATE.md— current position rewritten; three completed items added; What's Next reorganised (three items ticked off, capture-layer sketch added as feat: ZO e2e validated — wrapper fix, README, MNIST project complete #7); session metadata updated (session-019, 557 tests).DECISION_LOG.md— four new entries: denylist codification, domain-evaluator refactor (Option A: pure generic shell), phase snapshots (C1), capture-layer design sketch.PRIORS.md— no update (no failures this session).Test plan
uv run pytest -q— 557 passed, 7 skipped (+28 new tests)uv run ruff check src/zo/— clean./scripts/validate-docs.sh— 10/10 passed, 1 pre-existing warning (stale test-count badge)tests/unit/test_snapshots.py): model defaults, render (frontmatter/body/subtasks/artifacts/duration/placeholders/notes), write (dir creation, filename format, content), list (empty/newest-first/filter-by-phase), load (none/roundtrip)tests/integration/test_phase_snapshots.py): human gate PROCEED writes snapshot, snapshot records gate decision, automated gate PROCEED writes snapshot, snapshot captures subtask state, file has valid YAML frontmatter🤖 Generated with Claude Code