Design Notes
This page is contributor-oriented. It summarizes the implementation intent behind the package rather than teaching day-one usage.
Product invariants
These rules shape the implementation:
- A project directory is the top-level execution and audit boundary.
- The system reads scoped context before provider-driven writes.
- One iteration should attempt one focused change.
- Keep-or-revert decisions rely on objective verification.
- Rejected changes are reverted with
git revert, not destructive resets. - Git history is part of the product memory.
MVP architecture choices
- Python 3.11+
src/package layoutpyproject.tomlpackagingPyYAMLfor YAML parsingpydanticv2 for manifest and config validation- system
gitCLI rather than GitPython - provider integrations as wrappers around local CLIs or executables
- JSON and JSONL for artifacts and append-only records
Public surface and core internals
- Public API entry point:
goalseek.api - CLI entry point:
goalseek.cli.app:cli - Loop orchestration:
LoopEngineandStepEngine - Scope and config services:
ManifestService,ProjectService - Persistence:
ArtifactStore,StateStore,SummaryService
Scaffold intent
The generated project layout is deliberately simple:
program.mdstores hypothesis and planning contextexperiment.pystores the main writable experiment implementationhidden/supports evaluation assets and other non-provider-visible inputsruns/andlogs/keep local experiment state inspectable
Contributor guidance
- Prefer changes that keep the audit trail obvious.
- Treat manifest scope checks as correctness features, not convenience checks.
- Keep new provider integrations aligned with the existing adapter pattern.
- Avoid adding abstractions that weaken the step-by-step artifact trail.
Maintainer mindset
If a new feature makes the loop harder to inspect from the filesystem or from git history, it is probably moving against the core product shape.