Implement epic #11 on a dedicated branch by fully covering its direct child issues #22 and #23 with code, docs, and automated tests, then open one PR that closes the epic and both child issues automatically.
In scope:
- issue
#22: finalize the control-plane domain model for agents, sessions, fleets, tools, artifacts, telemetry, and evaluations - issue
#23: finalizeManagedCode.Communicationusage for public runtime result and problem contracts - fix any remaining gaps on
mainthat keep the epic from being honestly closeable, including stale docs, issue references, and missing automated verification coverage - keep the work inside
DotPilot.Core,DotPilot.Runtime,DotPilot.Tests, and docs that describe these slices
Out of scope:
- runtime host or orchestration implementation changes beyond what is strictly needed to prove the issue
#23contract surface - UI redesign or workbench behavior
- provider-specific adapter work from later epics
- The app remains presentation-only; this epic is contract and foundation work, not UI-first behavior.
- Do not claim the epic is complete unless both direct child issues are covered by real implementation and automated tests.
- Tests must stay realistic and exercise caller-visible flows through public contracts.
- Existing open issue state on GitHub may reflect missing PR closing refs rather than missing code; the branch must still produce real repository improvements before opening a new PR.
- Avoid user-specific local paths or branch names in durable test data and docs.
- Validate issue
#22through serialization-safe contract round-trips, identifier behavior, and cross-record relationship assertions. - Validate issue
#23through deterministic runtime client success and failure flows that surfaceManagedCode.Communicationresults and problems at the public runtime boundary. - Keep verification layered:
- focused issue
#22/#23tests - full
DotPilot.Tests - full solution tests including
DotPilot.UITests - coverage for
DotPilot.Tests
- focused issue
- Require changed production files to stay at or above the repo coverage bar.
- Confirm epic
#11scope and direct child issues from GitHub. - Create a dedicated branch from clean
main. - Audit
mainfor remaining gaps in issue#22/#23implementation, docs, and tests. - Correct stale architecture and feature docs so epic
#11, issue#22, and issue#23are referenced accurately. - Add or tighten automated tests for issue
#22and issue#23in slice-aligned locations, including deterministic runtime result/problem coverage. - Run focused verification for the changed slice tests.
- Run the full repo validation sequence:
dotnet build DotPilot.slnx -warnaserror -m:1 -p:BuildInParallel=falsedotnet test DotPilot.slnxdotnet format DotPilot.slnx --verify-no-changesdotnet test DotPilot.Tests/DotPilot.Tests.csproj --settings DotPilot.Tests/coverlet.runsettings --collect:"XPlat Code Coverage"
- Commit the epic
#11work and open one PR with correct GitHub closing refs.
-
dotnet build DotPilot.slnx -warnaserror -m:1 -p:BuildInParallel=false- Passed with
0warnings and0errors.
- Passed with
-
dotnet test DotPilot.slnx- Passed with
61unit tests and22UI tests.
- Passed with
- No baseline failures in the repository state under serial execution.
- Baseline note: a parallel local
build+testattempt caused a self-inflicted file-lock onDotPilot.Core/obj; this was not a repository failure and was resolved by rerunning the required commands serially per rootAGENTS.md.
- Epic
#11has a real implementation close-out branch, not only issue closure metadata. - Issue
#22contracts are documented, serialization-safe, and covered by automated tests. - Issue
#23result/problem contracts are documented, exercised through public runtime flows, and covered by automated tests. - Architecture and feature docs no longer misattribute issue
#22/#23to epic#12. - The final PR closes
#11,#22, and#23automatically after merge.
mainalready contained the bulk of the issue#22/#23implementation, but the close-out was incomplete:docs/Features/control-plane-domain-model.mdincorrectly listed epic#12as the parent instead of epic#11docs/Architecture.mdandADR-0003treated issues#22and#23as if they belonged to epic#12- domain-contract tests still embedded a user-specific local filesystem path and stale branch name
- issue
#23lacked focused automated coverage that exercisedManagedCode.Communicationthrough the public deterministic runtime client boundary
dotnet test DotPilot.Tests/DotPilot.Tests.csproj --filter "FullyQualifiedName~ControlPlaneDomain|FullyQualifiedName~RuntimeCommunication"- Passed with
23tests.
- Passed with
dotnet build DotPilot.slnx -warnaserror -m:1 -p:BuildInParallel=false- Passed with
0warnings and0errors.
- Passed with
dotnet test DotPilot.slnx- Passed with
61unit tests and22UI tests.
- Passed with
dotnet format DotPilot.slnx --verify-no-changes- Passed with no formatting drift.
dotnet test DotPilot.Tests/DotPilot.Tests.csproj --settings DotPilot.Tests/coverlet.runsettings --collect:"XPlat Code Coverage"- Passed with overall coverage
91.66%line and61.66%branch. - Changed production files met the repo bar:
RuntimeFoundationCatalog:100.00%line /100.00%branch
- Passed with overall coverage
- Pull request
- Opened PR #82 from
codex/epic-11-foundation-contractstomainwithCloses #11,Closes #22, andCloses #23.
- Opened PR #82 from