From ce5555abc037f6838fe658b4b9746d35e133a564 Mon Sep 17 00:00:00 2001 From: AzuTear Date: Sat, 1 Aug 2026 01:26:34 +0200 Subject: [PATCH] fix(db): repair provisioning migration snapshot --- backend-tests/MigrationSnapshotTests.cs | 18 ++++++++++++++++++ .../Migrations/NexusDbContextModelSnapshot.cs | 10 +++++----- docs/MISSION_CONTROL_ROADMAP.md | 2 +- .../IMPLEMENTATION_AND_ACCEPTANCE.md | 9 ++++++++- 4 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 backend-tests/MigrationSnapshotTests.cs diff --git a/backend-tests/MigrationSnapshotTests.cs b/backend-tests/MigrationSnapshotTests.cs new file mode 100644 index 0000000..a1fc677 --- /dev/null +++ b/backend-tests/MigrationSnapshotTests.cs @@ -0,0 +1,18 @@ +using Nexus.Api.Migrations; +using Xunit; + +namespace Nexus.Api.Tests; + +public sealed class MigrationSnapshotTests +{ + [Fact] + public void Snapshot_builds_agent_provisioning_relationships() + { + var model = new NexusDbContextModelSnapshot().Model; + var proposal = model.FindEntityType("Nexus.Api.Data.AgentProposal"); + var request = model.FindEntityType("Nexus.Api.Data.AgentProvisionRequest"); + + Assert.NotNull(proposal?.FindNavigation("ProvisionRequests")); + Assert.NotNull(request?.FindNavigation("Proposal")); + } +} diff --git a/backend/Data/Migrations/NexusDbContextModelSnapshot.cs b/backend/Data/Migrations/NexusDbContextModelSnapshot.cs index 41ee9ed..d11b6c9 100644 --- a/backend/Data/Migrations/NexusDbContextModelSnapshot.cs +++ b/backend/Data/Migrations/NexusDbContextModelSnapshot.cs @@ -945,11 +945,6 @@ namespace Nexus.Api.Migrations b.Navigation("RefreshTokens"); }); - modelBuilder.Entity("Nexus.Api.Data.AgentProposal", b => - { - b.Navigation("ProvisionRequests"); - }); - modelBuilder.Entity("Nexus.Api.Data.AgentProvisionRequest", b => { b.HasOne("Nexus.Api.Data.AgentProposal", "Proposal") @@ -961,6 +956,11 @@ namespace Nexus.Api.Migrations b.Navigation("Proposal"); }); + modelBuilder.Entity("Nexus.Api.Data.AgentProposal", b => + { + b.Navigation("ProvisionRequests"); + }); + modelBuilder.Entity("Nexus.Api.Data.OpenClawRun", b => { b.Navigation("History"); diff --git a/docs/MISSION_CONTROL_ROADMAP.md b/docs/MISSION_CONTROL_ROADMAP.md index 237dd62..10f1e53 100644 --- a/docs/MISSION_CONTROL_ROADMAP.md +++ b/docs/MISSION_CONTROL_ROADMAP.md @@ -145,7 +145,7 @@ Stabilitätscheckpoint v0.2.60 (Release Candidate) vom 2026-07-31: - `global.json`, `VERSION`-Parität, OCI-Provenienz, Browsertelemetrie-Schalter, High/Critical-Abhängigkeitsgates, checksum-verifiziertes Gitleaks und ein verpflichtender PostgreSQL-/Toxiproxy-CI-Job bilden den neuen Releasevertrag. -- Lokal bestehen 383 nicht-containerisierte Backendtests, 42 Frontendtests, +- Lokal bestehen 384 nicht-containerisierte Backendtests, 42 Frontendtests, Typecheck, Produktionsbuild und 26 kontrollierte Playwright-Tests. Die fünf Containerfälle sind lokal mangels Docker übersprungen und müssen im Linux-CI mit null Skips bestehen. Credentialed Produktion, Task-Board-Last und echte diff --git a/docs/audits/2026-07-31/stability-v0.2.60/IMPLEMENTATION_AND_ACCEPTANCE.md b/docs/audits/2026-07-31/stability-v0.2.60/IMPLEMENTATION_AND_ACCEPTANCE.md index 87f709b..ed2ea6b 100644 --- a/docs/audits/2026-07-31/stability-v0.2.60/IMPLEMENTATION_AND_ACCEPTANCE.md +++ b/docs/audits/2026-07-31/stability-v0.2.60/IMPLEMENTATION_AND_ACCEPTANCE.md @@ -124,7 +124,7 @@ Primäransicht nicht länger wegen einer fehlerhaften Sekundärabfrage. | Geschützte Routen | alle 20 in kontrollierten Fixtures geprüft | | Viewports | 375, 768, 1024, 1440 und 1920 px ohne Seitenoverflow | | Browserverträge | Deep Links, Query-Deduplizierung, ein SSE-Resync, Task-Board-Refresh, Done-Pagination, Drag-and-drop und 503-Recovery grün | -| Backend | 383 bestanden; fünf Containerfälle mangels lokalem Docker explizit übersprungen | +| Backend | 384 bestanden; fünf Containerfälle mangels lokalem Docker explizit übersprungen | | PostgreSQL-Ausfall | echter Npgsql-Healthcheck gegen einen nicht erreichbaren Endpoint liefert im Readiness-Vertrag 503 | | Version | `VERSION` und Frontendpaket beide `0.2.60`; .NET-Pin wird als 10.0.101 aus dem erlaubten Feature-Band aufgelöst | | Abhängigkeiten | keine bekannten pnpm-Produktionslücken; keine High/Critical-NuGet-Funde | @@ -137,6 +137,13 @@ OpenClaw-/OpenAI-Ausführung. ## Offene Abnahmegates +Der erste verpflichtende Containerlauf (Gitea Run 363) erfüllte seinen Zweck +und blockierte das Deployment: Alle fünf Fälle fanden einen fehlerhaft +geordneten EF-Core-Modellsnapshot für +`AgentProposal.ProvisionRequests`. Die Snapshotbeziehung ist korrigiert und ein +nicht-Docker-Regressionstest baut beide Navigationen jetzt bereits im normalen +Backendjob auf. Ein neuer grüner Containerlauf bleibt vor Deployment zwingend. + ### Vor Deployment 1. Der neue Gitea-Linuxjob muss alle fünf vorhandenen PostgreSQL-/Toxiproxy-