Skip to content

Commit f50f3c8

Browse files
committed
Plan epic 12 embedded runtime
1 parent b23194b commit f50f3c8

2 files changed

Lines changed: 81 additions & 0 deletions

File tree

AGENTS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,9 @@ For this app:
150150
- `DotPilot/DotPilot.csproj` keeps `GenerateDocumentationFile=true` with `CS1591` suppressed so `IDE0005` stays enforceable in CI across all target frameworks without inventing command-line-only build flags
151151
- architecture work must keep a vertical-slice shape: each feature owns its contracts, orchestration, and tests behind clear boundaries instead of growing a shared horizontal service layer
152152
- keep the Uno app project presentation-only; domain, runtime host, orchestration, integrations, and persistence code must live in separate class-library projects so UI composition does not mix with feature implementation
153+
- when the user asks to implement an epic, the delivery branch and PR must cover all of that epic's direct child issues that belong to the requested scope, not just one child issue with a partial close-out
154+
- epic implementation PRs must include automated tests for every direct child issue they claim to cover, plus the broader runtime and UI regressions required by the touched flows
155+
- the first embedded Orleans runtime cut must use `UseLocalhostClustering` together with in-memory Orleans grain storage and in-memory reminders; durable resume and replay can persist session data outside Orleans storage until a later issue explicitly upgrades the cluster topology
153156
- GitHub Actions workflows must use descriptive names and filenames that reflect their purpose; do not use a generic `ci.yml` catch-all because build validation and release automation are separate operator flows
154157
- GitHub Actions must be split into at least one validation workflow for normal builds/tests and one release workflow for CI-driven version resolution, release-note generation, desktop publishing, and GitHub Release publication
155158
- meaningful GitHub review comments must be evaluated and fixed when they still apply even if the original PR was closed; closed review threads are not a reason to ignore valid engineering feedback

epic-12-embedded-runtime.plan.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
## Goal
2+
3+
Implement epic `#12` on one delivery branch by covering its direct child issues `#24`, `#25`, `#26`, and `#27` in a single tested runtime slice, while keeping the Uno app presentation-only and keeping the first Orleans host cut on localhost clustering with in-memory Orleans storage/reminders.
4+
5+
## Scope
6+
7+
In scope:
8+
- issue `#24`: embedded Orleans silo inside the desktop host with the initial core grains
9+
- issue `#25`: Microsoft Agent Framework integration as the orchestration runtime on top of the embedded host
10+
- issue `#26`: explicit grain traffic policy and visibility using `ManagedCode.Orleans.Graph`
11+
- issue `#27`: session persistence, replay, checkpointing, and resume for local-first runtime flows
12+
- runtime-facing contracts, deterministic orchestration seams, docs, and tests needed to prove the full epic behavior
13+
14+
Out of scope:
15+
- related but non-child issues such as `#50`, `#69`, and `#77`
16+
- provider-specific live adapters beyond the existing deterministic or environment-gated paths
17+
- remote Orleans clustering or external durable storage providers
18+
- replacing the current Uno shell with a different UI model
19+
20+
## Constraints And Risks
21+
22+
- The app project must stay presentation-only; runtime hosting, orchestration, graph policy, and persistence logic belong in separate DLLs.
23+
- The first Orleans host cut must use `UseLocalhostClustering`, in-memory grain storage, and in-memory reminders.
24+
- Durable session replay and resume for `#27` must not force a remote or durable Orleans cluster; if needed, it must persist serialized session/checkpoint data outside Orleans storage.
25+
- All added behavior must be covered by automated tests and the full repo validation sequence must stay green.
26+
- Any new dependencies must be the minimum official set needed for the runtime slice and must remain compatible with the pinned SDK and current `LangVersion`.
27+
28+
## Testing Methodology
29+
30+
- Cover host lifecycle, grain registration, traffic policy, orchestration execution, session serialization, checkpoint persistence, replay, and resume through real runtime boundaries.
31+
- Keep deterministic in-repo orchestration available for CI so the epic remains testable without external provider CLIs or auth.
32+
- Add regression tests for both happy-path and negative-path flows:
33+
- invalid runtime requests
34+
- traffic-policy violations
35+
- missing or corrupt persisted session state
36+
- restart/resume behavior
37+
- Keep `DotPilot.UITests` in the final pass because browser and app composition must remain green even when runtime hosting expands.
38+
- Require every direct child issue in scope to map to at least one explicit automated test flow.
39+
40+
## Ordered Plan
41+
42+
- [ ] Confirm the exact direct-child issue set for epic `#12` and keep unrelated issues out of the PR scope.
43+
- [ ] Add or restore the embedded Orleans host slice from the cleanest available implementation path for issue `#24`.
44+
- [ ] Add the minimum runtime dependencies and contracts for Microsoft Agent Framework orchestration for issue `#25`.
45+
- [ ] Implement the first orchestration runtime path on top of the deterministic runtime flow and Orleans-backed runtime boundaries.
46+
- [ ] Add explicit grain traffic policy modeling and enforcement for issue `#26`, including runtime-visible policy information and denial behavior.
47+
- [ ] Add local-first session persistence, replay, checkpointing, and resume for issue `#27` without changing Orleans clustering/storage topology.
48+
- [ ] Update runtime docs, feature docs, ADR references, and architecture diagrams so the epic boundaries and flows are explicit.
49+
- [ ] Add or update automated tests for every covered issue:
50+
- host lifecycle and grain registration
51+
- orchestration execution and session serialization
52+
- traffic-policy allow and deny flows
53+
- checkpoint persistence, replay, and resume
54+
- [ ] Run the full repo validation sequence:
55+
- `dotnet build DotPilot.slnx -warnaserror -m:1 -p:BuildInParallel=false`
56+
- `dotnet test DotPilot.slnx`
57+
- `dotnet format DotPilot.slnx --verify-no-changes`
58+
- `dotnet test DotPilot.Tests/DotPilot.Tests.csproj --settings DotPilot.Tests/coverlet.runsettings --collect:"XPlat Code Coverage"`
59+
- [ ] Commit the epic branch implementation and open one PR that closes epic `#12` and its covered child issues correctly.
60+
61+
## Full-Test Baseline
62+
63+
- [x] `dotnet build DotPilot.slnx -warnaserror -m:1 -p:BuildInParallel=false`
64+
- Passed with `0` warnings and `0` errors.
65+
- [x] `dotnet test DotPilot.slnx`
66+
- Passed with `52` unit tests and `22` UI tests.
67+
68+
## Tracked Failing Tests
69+
70+
- [x] No baseline failures before epic implementation.
71+
72+
## Done Criteria
73+
74+
- The branch covers direct child issues `#24`, `#25`, `#26`, and `#27` with real implementation, not only planning artifacts.
75+
- The Uno app remains presentation-only and browser-safe.
76+
- Orleans stays on localhost clustering and in-memory storage/reminders.
77+
- Orchestration, traffic policy, and session persistence flows are automated and green.
78+
- The final PR references the epic and child issues with correct GitHub closing semantics.

0 commit comments

Comments
 (0)