All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
errors.pywith typed exceptions:AgenticLabError,ConfigError,CompileError,SafetyViolation,ResourceUnavailable,CapabilityMismatch,DependencyCycle.PlanStatusenum (DRAFT/APPROVED/REJECTED) andSafetyHookdeclarative constraint model.ExecutionPlannow carrieserrors(blocking) separately fromwarnings(advisory), plusstatusandspec_hashfor auditability.ExperimentStep.depends_onandExperimentStep.required_capabilities.PlannedCommand.requires_approval(derived fromLabConfig.human_approval_required_forplus matching safety hooks).- DAG validation in the compiler: detects missing dependencies and cycles (cycle path included in the error message).
- Capability check: a step's
required_capabilitiesmust be a subset of the assigned resource'scapabilities. - Declarative
SafetyHooks in lab YAML — match onactionandparameters, verdictdeny(compile error) orrequire_approval(sets the approval flag). - Tolerant
load_lab_configthat rejects unknown keys withConfigErrorinstead of crashing. - Real placeholder step emitted by
hypothesis_to_experiment_specso the reasoning plane now connects to the EaC plane. - Tanda-2 scaffolding ports:
ProximityAgent,TournamentRanker,MetaReviewer,StopCriteria(declared, not yet wired into the supervisor). adapters/null/package with no-op / heuristic implementations:NullLiteratureProvider,EchoGenerator,HeuristicReviewer,ScoreSortRanker,IdentityEvolver,NoopProximityAgent,TemplateMetaReviewer.- CLI subcommands
validate-lab,validate-spec,dry-run(non-zero exit code on compile errors). - Apache-2.0
LICENSE+NOTICE. CONTRIBUTING.md,SECURITY.md,CHANGELOG.md..gitignore;pyproject.tomlnow declares[project.optional-dependencies].dev(pytest, ruff, mypy, types-PyYAML) and[tool.ruff]/[tool.mypy].
__init__.pyexports the complete public surface (models, ports, errors, helpers). Downstream consumers no longer need to import from internal modules.protein_lab.yamlexample now usessafety_hooks(declarative) instead of string-onlysafety_rulesfor blocking checks._step_requires_approvaluses exact action membership instead of substring matching to avoid false positives.- Docs: README adds a
Referencessection;ARCHITECTURE.mdadds a "concept → module" map;IMPLEMENTATION_PLAN.mdupdated with v0.1.x ✓ / v0.2 / v0.3 / v0.4 roadmap.
- Existing smoke test asserted
warnings == [], which broke when the new declarativerequire_approvalhook started emitting an advisory warning. Tightened the assertion toerrors == []so warnings remain informational.
- Core dataclasses:
Hypothesis,Review,ReviewBatch,ExperimentSpec,ExperimentStep,ExecutionPlan,PlannedCommand,LabConfig,LabState,ResourceState,EvidenceRef. - Clean ports (Protocols):
LiteratureProvider,HypothesisGenerator,HypothesisReviewer,HypothesisRanker,HypothesisEvolver,ExperimentPlanner,ExperimentCompilerPort,Scheduler,Executor. CoScientistSupervisorone-shot loop (literature → generate → review → rank → evolve).ExperimentCompilerwith basic static checks (resource presence, step-by-step lowering, runtime checks attached).- CLI commands
show-labandcompile. - Example
protein_lab.yamlandproteinlab_hit_to_hypothesis.yaml. - Architecture / reference / implementation-plan docs.
- Smoke tests (2 passing).