Skip to content

Commit 52745b0

Browse files
committed
Merge main into PR 80 and sync review fixes
2 parents 4ae5af3 + dd4b891 commit 52745b0

File tree

10 files changed

+107
-18
lines changed

10 files changed

+107
-18
lines changed

DotPilot.Core/Features/ToolchainCenter/ToolchainCenterContracts.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace DotPilot.Core.Features.ToolchainCenter;
44

55
public sealed record ToolchainCenterWorkstreamDescriptor(
66
int IssueNumber,
7-
string IssueLabel,
7+
string SectionLabel,
88
string Name,
99
string Summary);
1010

@@ -37,7 +37,7 @@ public sealed record ToolchainPollingDescriptor(
3737

3838
public sealed record ToolchainProviderSnapshot(
3939
int IssueNumber,
40-
string IssueLabel,
40+
string SectionLabel,
4141
ProviderDescriptor Provider,
4242
string ExecutablePath,
4343
string InstalledVersion,

DotPilot.Runtime/Features/RuntimeFoundation/DeterministicAgentRuntimeClient.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System.Diagnostics;
21
using DotPilot.Core.Features.ControlPlaneDomain;
32
using DotPilot.Core.Features.RuntimeCommunication;
43
using DotPilot.Core.Features.RuntimeFoundation;
@@ -64,7 +63,7 @@ AgentExecutionMode.Execute when RequiresApproval(request.Prompt) => Result<Agent
6463
SessionPhase.Review,
6564
ApprovalState.Approved,
6665
[CreateArtifact(request.SessionId, ReviewArtifact, ArtifactKind.Report)])),
67-
_ => throw new UnreachableException(),
66+
_ => Result<AgentTurnResult>.Fail(RuntimeCommunicationProblems.OrchestrationUnavailable()),
6867
});
6968
}
7069

DotPilot.Runtime/Features/RuntimeFoundation/RuntimeFoundationCatalog.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public sealed class RuntimeFoundationCatalog : IRuntimeFoundationCatalog
2828
"Agent Framework integration is prepared as a separate slice that can plug into the embedded host without reshaping the UI layer.";
2929
private readonly IReadOnlyList<ProviderDescriptor> _providers;
3030

31-
public RuntimeFoundationCatalog() => _providers = CreateProviders();
31+
public RuntimeFoundationCatalog() => _providers = Array.AsReadOnly(CreateProviders());
3232

3333
public RuntimeFoundationSnapshot GetSnapshot()
3434
{
@@ -72,7 +72,7 @@ private static IReadOnlyList<RuntimeSliceDescriptor> CreateSlices()
7272
];
7373
}
7474

75-
private static IReadOnlyList<ProviderDescriptor> CreateProviders()
75+
private static ProviderDescriptor[] CreateProviders()
7676
{
7777
return
7878
[

DotPilot.Runtime/Features/ToolchainCenter/ToolchainCenterCatalog.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace DotPilot.Runtime.Features.ToolchainCenter;
44

55
public sealed class ToolchainCenterCatalog : IToolchainCenterCatalog, IDisposable
66
{
7-
private const string EpicLabelValue = "PRESESSION READINESS";
7+
private const string EpicLabelValue = "PRE-SESSION READINESS";
88
private const string EpicSummary =
99
"Provider installation, launch checks, authentication, configuration, and refresh state stay visible before the first live session.";
1010
private const string UiWorkstreamLabel = "SURFACE";

DotPilot.Tests/Features/RuntimeFoundation/RuntimeFoundationCatalogTests.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,9 +174,11 @@ public void DeterministicClientRejectsUnexpectedExecutionModes()
174174
var client = new DeterministicAgentRuntimeClient();
175175
var invalidRequest = CreateRequest("Plan the runtime foundation rollout.", (AgentExecutionMode)int.MaxValue);
176176

177-
var action = () => client.ExecuteAsync(invalidRequest, CancellationToken.None);
177+
var result = client.ExecuteAsync(invalidRequest, CancellationToken.None).AsTask().GetAwaiter().GetResult();
178178

179-
action.Should().Throw<System.Diagnostics.UnreachableException>();
179+
result.IsFailed.Should().BeTrue();
180+
result.HasProblem.Should().BeTrue();
181+
result.Problem!.HasErrorCode(RuntimeCommunicationProblemCode.OrchestrationUnavailable).Should().BeTrue();
180182
}
181183

182184
[Test]
@@ -221,6 +223,7 @@ public void CatalogCachesProviderListAcrossSnapshotReads()
221223
var secondSnapshot = catalog.GetSnapshot();
222224

223225
ReferenceEquals(firstSnapshot.Providers, secondSnapshot.Providers).Should().BeTrue();
226+
firstSnapshot.Providers.Should().NotBeAssignableTo<ProviderDescriptor[]>();
224227
}
225228

226229
private static RuntimeFoundationCatalog CreateCatalog()

DotPilot.Tests/Features/ToolchainCenter/ToolchainCenterCatalogTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ namespace DotPilot.Tests.Features.ToolchainCenter;
22

33
public class ToolchainCenterCatalogTests
44
{
5-
private const string ToolchainEpicLabel = "PRESESSION READINESS";
5+
private const string ToolchainEpicLabel = "PRE-SESSION READINESS";
66

77
[Test]
88
public void CatalogIncludesEpicIssueCoverageAndAllExternalProviders()
@@ -18,7 +18,7 @@ public void CatalogIncludesEpicIssueCoverageAndAllExternalProviders()
1818

1919
snapshot.EpicLabel.Should().Be(ToolchainEpicLabel);
2020
snapshot.Summary.Should().NotContain("Issue #");
21-
snapshot.Workstreams.Select(workstream => workstream.IssueLabel).Should().Equal("SURFACE", "DIAGNOSTICS", "CONFIGURATION", "POLLING");
21+
snapshot.Workstreams.Select(workstream => workstream.SectionLabel).Should().Equal("SURFACE", "DIAGNOSTICS", "CONFIGURATION", "POLLING");
2222
coveredIssues.Should().Equal(
2323
ToolchainCenterIssues.ToolchainCenterUi,
2424
ToolchainCenterIssues.CodexReadiness,

DotPilot/Presentation/Controls/ToolchainCenterPanel.xaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
FontSize="11"
2020
FontWeight="Medium"
2121
Foreground="{StaticResource AppMutedTextBrush}"
22-
Text="{x:Bind Workstream.IssueLabel}" />
22+
Text="{x:Bind Workstream.SectionLabel}" />
2323
<TextBlock FontSize="13"
2424
FontWeight="SemiBold"
2525
Text="{x:Bind Workstream.Name}" />
@@ -44,7 +44,7 @@
4444
FontSize="11"
4545
FontWeight="Medium"
4646
Foreground="{StaticResource AppMutedTextBrush}"
47-
Text="{x:Bind IssueLabel}" />
47+
Text="{x:Bind SectionLabel}" />
4848
<TextBlock FontSize="13"
4949
FontWeight="SemiBold"
5050
AutomationProperties.AutomationId="{x:Bind AutomationId}"
@@ -256,7 +256,7 @@
256256
FontSize="11"
257257
FontWeight="Medium"
258258
Foreground="{StaticResource AppMutedTextBrush}"
259-
Text="{Binding SelectedToolchainProviderSnapshot.IssueLabel}" />
259+
Text="{Binding SelectedToolchainProviderSnapshot.SectionLabel}" />
260260
<TextBlock AutomationProperties.AutomationId="SelectedToolchainProviderTitle"
261261
FontSize="20"
262262
FontWeight="SemiBold"

DotPilot/Presentation/WorkbenchPresentationModels.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public sealed record ToolchainProviderItem(
2626
{
2727
public string DisplayName => Snapshot.Provider.DisplayName;
2828

29-
public string IssueLabel => Snapshot.IssueLabel;
29+
public string SectionLabel => Snapshot.SectionLabel;
3030

3131
public string ReadinessLabel => Snapshot.ReadinessState.ToString();
3232

docs/Architecture.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ flowchart LR
3535
Adr3["ADR-0003 vertical slices + UI-only app"]
3636
Feature["agent-control-plane-experience.md"]
3737
Toolchains["toolchain-center.md"]
38-
Plan["vertical-slice-runtime-foundation.plan.md"]
3938
Ui["DotPilot Uno UI host"]
4039
Core["DotPilot.Core contracts"]
4140
Runtime["DotPilot.Runtime services"]
@@ -49,7 +48,6 @@ flowchart LR
4948
Root --> Adr3
5049
Root --> Feature
5150
Root --> Toolchains
52-
Root --> Plan
5351
Root --> Ui
5452
Root --> Core
5553
Root --> Runtime
@@ -195,7 +193,6 @@ flowchart LR
195193
### Planning and decision docs
196194

197195
- `Solution governance`[../AGENTS.md](../AGENTS.md)
198-
- `Task plan`[../issue-24-embedded-orleans-host.plan.md](../issue-24-embedded-orleans-host.plan.md)
199196
- `Primary architecture decision`[ADR-0001](./ADR/ADR-0001-agent-control-plane-architecture.md)
200197
- `Vertical-slice solution decision`[ADR-0003](./ADR/ADR-0003-vertical-slices-and-ui-only-uno-app.md)
201198
- `Feature spec`[Agent Control Plane Experience](./Features/agent-control-plane-experience.md)

pr-review-comment-sweep.plan.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
## Goal
2+
3+
Address the meaningful review comments across all currently open PRs created by this branch owner, starting from the oldest open PR and moving forward, then validate the affected slices and keep the repository push-ready.
4+
5+
## Scope
6+
7+
In scope:
8+
- open PRs created by this account, processed oldest to newest
9+
- code-review comments, review threads, and actionable issue comments that still make engineering sense
10+
- code, tests, docs, and PR metadata changes needed to satisfy those comments
11+
- verification for each touched slice plus the final required repo validation
12+
13+
Out of scope:
14+
- comments on already merged or closed PRs unless they reappear on an open PR
15+
- comments that are stale, incorrect, or conflict with newer accepted decisions
16+
- rebasing or rewriting unrelated branch history
17+
18+
## Current PR Order
19+
20+
1. PR `#79``codex/consolidated-13-15-76`
21+
2. PR `#80``codex/issue-24-embedded-orleans-host`
22+
3. PR `#81``codex/epic-12-embedded-runtime`
23+
4. PR `#82``codex/epic-11-foundation-contracts`
24+
25+
## Constraints And Risks
26+
27+
- Start with the oldest open PR and move forward.
28+
- Only fix comments that still make sense against the current repository state.
29+
- Keep serial `dotnet` execution; do not run concurrent build/test commands in one checkout.
30+
- Each production change needs corresponding automated coverage if behavior changes.
31+
- The branch may need updates that touch multiple slices; keep validation layered and honest.
32+
33+
## Testing Methodology
34+
35+
- Gather all open review comments and unresolved threads for PRs `#79-#82`.
36+
- For each PR, apply only the comments that remain valid.
37+
- Run focused tests around the touched slice before moving to the next PR.
38+
- After the sweep, run:
39+
- `dotnet build DotPilot.slnx -warnaserror -m:1 -p:BuildInParallel=false`
40+
- `dotnet test DotPilot.slnx`
41+
- `dotnet format DotPilot.slnx --verify-no-changes`
42+
- `dotnet test DotPilot.Tests/DotPilot.Tests.csproj --settings DotPilot.Tests/coverlet.runsettings --collect:"XPlat Code Coverage"`
43+
44+
## Ordered Plan
45+
46+
- [x] Confirm the open PR list and processing order.
47+
- [x] Collect actionable review comments and threads for PRs `#79`, `#80`, `#81`, and `#82`.
48+
- [x] Audit each comment for current validity and group them by PR and affected slice.
49+
- [x] Apply the valid fixes for PR `#79` and run focused verification.
50+
- [x] Apply the valid fixes for PR `#80` and run focused verification.
51+
- [x] Apply the valid fixes for PR `#81` and run focused verification.
52+
- [x] Apply the valid fixes for PR `#82` and run focused verification.
53+
- [x] Run the full repo validation sequence.
54+
- [x] Commit the sweep and push the branch updates needed for the affected PR heads.
55+
56+
## Full-Test Baseline
57+
58+
- [x] Sweep baseline captured from open PR review threads and current branch verification.
59+
- [x] PR `#79` focused verification passed:
60+
- `dotnet build DotPilot.slnx -warnaserror -m:1 -p:BuildInParallel=false`
61+
- `dotnet test DotPilot.Tests/DotPilot.Tests.csproj --filter "FullyQualifiedName~ToolchainCenter|FullyQualifiedName~RuntimeFoundation"`
62+
- `dotnet test DotPilot.UITests/DotPilot.UITests.csproj --filter "FullyQualifiedName~WhenNavigatingToSettingsThenCategoriesAndEntriesAreVisible|FullyQualifiedName~WhenNavigatingToSettingsThenToolchainCenterProviderDetailsAreVisible|FullyQualifiedName~WhenSwitchingToolchainProvidersThenProviderSpecificDetailsAreVisible"`
63+
- `dotnet format DotPilot.slnx --verify-no-changes`
64+
- [x] PR `#80` focused verification passed:
65+
- `dotnet build DotPilot.slnx -warnaserror -m:1 -p:BuildInParallel=false`
66+
- `dotnet test DotPilot.Tests/DotPilot.Tests.csproj --filter "FullyQualifiedName~EmbeddedRuntimeHost|FullyQualifiedName~ToolchainCommandProbe"`
67+
- `dotnet format DotPilot.slnx --verify-no-changes`
68+
- [x] PR `#81` focused verification passed:
69+
- `dotnet build DotPilot.slnx -warnaserror -m:1 -p:BuildInParallel=false`
70+
- `dotnet test DotPilot.Tests/DotPilot.Tests.csproj --filter "FullyQualifiedName~AgentFrameworkRuntimeClient|FullyQualifiedName~EmbeddedRuntimeTrafficPolicy|FullyQualifiedName~RuntimeFoundationCatalog"`
71+
- `dotnet format DotPilot.slnx --verify-no-changes`
72+
- [x] PR `#82` focused verification passed:
73+
- `dotnet build DotPilot.slnx -warnaserror -m:1 -p:BuildInParallel=false`
74+
- `dotnet test DotPilot.Tests/DotPilot.Tests.csproj --filter "FullyQualifiedName~ControlPlaneDomain"`
75+
- `dotnet format DotPilot.slnx --verify-no-changes`
76+
- [x] Full repo validation passed on every updated PR head:
77+
- PR `#79` (`codex/consolidated-13-15-76`): `60` unit tests, `22` UI tests, coverage collector green.
78+
- PR `#80` (`codex/issue-24-embedded-orleans-host`): `68` unit tests, `22` UI tests, coverage collector green.
79+
- PR `#81` (`codex/epic-12-embedded-runtime`): `75` unit tests, `22` UI tests, coverage collector green.
80+
- PR `#82` (`codex/epic-11-foundation-contracts`): `61` unit tests, `22` UI tests, coverage collector green.
81+
82+
## Tracked Failing Tests
83+
84+
- [x] No failing tests remained after the PR sweep.
85+
86+
## Done Criteria
87+
88+
- Every meaningful open review comment across PRs `#79-#82` has been either fixed or explicitly rejected as stale/invalid.
89+
- Relevant focused tests are green after each PR-specific fix set.
90+
- The full repo validation sequence is green after the full sweep.

0 commit comments

Comments
 (0)