The "Deleting a resource with edges is rejected" scenario was failing
because the ResourceEdgeModel row was flushed but never committed.
Since ResourceRepository.delete() obtains its own session from the
factory, the uncommitted edge was invisible and ResourceHasEdgesError
was never raised.
The 'Test project list command with no projects' scenario was missing a
Given step to set up a writable working directory. Without it, the
container fell back to CWD/.cleveragents/db.sqlite which could not be
opened (directory did not exist), causing sqlite3.OperationalError.
- Add 'Given I have a temporary working directory' to the scenario
- Bootstrap the SQLite schema in the When step so the ns_projects table
exists for the empty-list query
Fix issues identified during test execution:
- Improve name validation to reject multiple slashes and empty parts
- Fix conditional routing YAML to include all exit nodes
- Fix QuotedString parse type to standard quoted format
- Fix line length in error message (split across lines)
- All 47 Behave scenarios pass (0 failures)
- All Robot Framework integration tests pass (283 passed, 3 skipped)
- All ASV benchmarks execute successfully
Part 12 (bugfix) of C1.schema implementation.
Add comprehensive documentation for C1.schema task:
- Notes section in Implementation Checklist with design decisions
- Development Log entry with full implementation summary
- Traceability for all deliverables (code, docs, tests, benchmarks)
- Quality metrics and next steps documented
- Complete file/line number references for all artifacts
Part 11 (final) of C1.schema implementation (Actor YAML Schema Models).
Add step definitions for 50+ test scenarios:
- Given steps: YAML templates for LLM/TOOL/GRAPH actors and invalid configs
- When steps: Schema validation from string/file and YAML I/O
- Then steps: Assertions for validation, fields, collections, and errors
- Test data: Minimal and complex configurations for all scenarios
- Full coverage: All actor types, graph topologies, and error cases
Part 8 of C1.schema implementation (Actor YAML Schema Models).
The 'Test project list command with no database' scenario asserted the
command should abort, but the DI container creates a default SQLite DB
so list_projects() returns an empty list and exits 0 with 'No projects
found'. Update the scenario to match the actual (correct) behavior.
Add 5 example actor configurations demonstrating all actor types:
Simple Examples:
- simple_llm.yaml: Basic LLM actor with code review prompt
- llm_with_tools.yaml: LLM with mix of tool references and inline tools
- tool_collection.yaml: Tool-only actor (no LLM)
Graph Examples:
- simple_graph.yaml: 3-node linear workflow (extract → analyze → summarize)
- graph_workflow.yaml: Complex TDD workflow with 10 nodes
* Conditional routing based on test results
* Retry logic with max attempts
* Subgraph composition (code review)
* Error escalation paths
Each example demonstrates:
- Proper namespaced naming (namespace/name)
- Type-specific configurations
- Context and memory settings
- Environment variable usage
- Tool definitions (inline and references)
Part 5 of C1.schema implementation (Actor YAML Schema Models).
Add complete actor configuration schema:
Main Schema:
- ActorConfigSchema: top-level model bringing all components together
- Type-specific field requirements (LLM, TOOL, GRAPH)
- Model validator for cross-field validation
- Environment variable mappings
YAML I/O Methods:
- from_yaml_file(): load and validate from YAML
- to_yaml_file(): save configuration to YAML
- Proper error handling (FileNotFoundError, YAMLError, ValidationError)
Validation Logic:
- LLM actors require 'model' field
- TOOL actors require at least one tool
- GRAPH actors require 'model' and 'route' with cycle detection
- Namespaced name validation (namespace/name format)
Part 4 of C1.schema implementation (Actor YAML Schema Models).
Add graph workflow models for ActorType.GRAPH:
Graph Models:
- EdgeDefinition: connections between nodes with conditional routing
- NodeDefinition: node specifications (agent, tool, conditional, subgraph)
- RouteDefinition: complete graph topology with validation
Validation Features:
- Unique node ID validation
- Reference validation for all edges and entry/exit points
- Cycle detection using DFS algorithm
- Node ID format validation (alphanumeric with underscores/hyphens)
Part 3 of C1.schema implementation (Actor YAML Schema Models).
Add base configuration models for actor YAML schema:
Tool Models:
- ToolParameter: parameter definitions for inline tools
- ToolDefinition: complete inline tool with Python code
Configuration Models:
- MemoryConfig: conversation history and memory settings
- ContextConfigSchema: file inclusion and context window config
All models include comprehensive validation:
- Parameter name validation (valid Python identifiers)
- Tool name validation (namespace/name format)
- Field validators using Pydantic v2 patterns
Part 2 of C1.schema implementation (Actor YAML Schema Models).
- Fix project_repository_steps session mismatch: use shared session
for repos so context.pr_session.commit() commits flushed data
- Fix cli_format_bench setup/teardown to accept fmt parameter for
parameterized ASV benchmarks
- Fix plan_model_bench PlanPhase.APPLIED -> PlanPhase.APPLY
- Fix benchmark idempotency: use batch counters to generate unique IDs
across repeated ASV iterations (plan_phase_migration_bench,
project_migration_bench, resource_registry_migration_bench)
- Fix uow_lifecycle_bench FK constraint by reusing pre-seeded action
- Fix plan_lifecycle_persistence_bench to create fresh plan per iteration