From f2c27726d853d262e8fdd4d6f41d5ab1bfa91b47 Mon Sep 17 00:00:00 2001 From: Erik Shafer Date: Fri, 10 Jul 2026 13:18:59 -0500 Subject: [PATCH 1/2] =?UTF-8?q?tidy:=20packages=20=E2=80=94=20Critter=20St?= =?UTF-8?q?ack=20refresh=20(WolverineFx=206.8=20=E2=86=92=206.17)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bump the WolverineFx family 6.8.0 → 6.17.0 (all nine pinned entries). Only the WolverineFx.* packages are pinned in CPM; Marten, JasperFx, and Weasel flow transitively and resolve to the aligned 6.17 line (Marten 9.14.0, JasperFx 2.24.1, Weasel 9.16.2). Alba is already at latest (8.5.2), unchanged. Minor bump within the 6.x line (the 5→6 / Marten 8→9 migration is already behind us): clean drop-in — restore + `dotnet build CritterCab.slnx` green with zero code changes. Discharges the "full-suite 6.x refresh still owed" item tracked since the Grpc/Polecat island was closed to 6.8 (PR #35). Local test run blocked by a degraded Docker Desktop engine (Testcontainers container start hangs before any app code runs) — deferring the test gate to CI, which exercises the suite in a clean Linux Docker environment. --- Directory.Packages.props | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index ec1990f..44258f2 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -19,15 +19,15 @@ - - - - - - - - - + + + + + + + + + From 49d2e2b0d5be6951720ee74461db1e1d51fef272 Mon Sep 17 00:00:00 2001 From: Erik Shafer Date: Fri, 10 Jul 2026 13:42:00 -0500 Subject: [PATCH 2/2] Add retro for the Critter Stack package refresh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Records the WolverineFx 6.8 → 6.17 bump, the build + CI 11/11 verification, and the local-Docker caveat. Indexed in the retrospectives README. --- docs/retrospectives/README.md | 2 + .../critter-stack-package-refresh.md | 48 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 docs/retrospectives/critter-stack-package-refresh.md diff --git a/docs/retrospectives/README.md b/docs/retrospectives/README.md index e310dab..e27801e 100644 --- a/docs/retrospectives/README.md +++ b/docs/retrospectives/README.md @@ -89,6 +89,8 @@ Subsequent sections are session-specific. Existing retros in this directory serv - [`telemetry-narrative-layer-decision.md`](./telemetry-narrative-layer-decision.md) — **Narrative-layer decision session** (design-layer, no code). Resolved the single open pre-implementation question for the Telemetry chain: does a thin driver-device narrative apply, or is the narrative step skipped? Decision: **the narrative layer does not apply** — an empirical scan of W006 §6.2–§6.5 + the Ubiquitous Language found no driver-app-perceivable surface (server-side processing throughout; *driver session* defined as "a logical concept, decoupled from any physical stream"; no indicator / permission prompt / status screen named in W006 or ADR-018). Recorded in [`docs/narratives/README.md`](../narratives/README.md) via a new "When the narrative layer does not apply" section + "Skipped narratives (recorded)" table + v0.3 Document-history entry, rather than folded into the not-yet-written first implementation prompt. Mirrors W006's own EM-direct (Domain-Storytelling-skip) precedent one layer up. No prompt doc authored — a disposable planning note (`docs/planning/2026-07-10-telemetry-narrative-decision-handoff.md`) served as prompt-equivalent (W005/W006 precedent). Spec delta lands at the narratives-README convention layer (no narrative/workshop amended — that *is* the decision). Status: complete (2026-07-10). +- [`critter-stack-package-refresh.md`](./critter-stack-package-refresh.md) — **`tidy: packages` maintenance detour.** Bumped the WolverineFx family **6.8.0 → 6.17.0** (Marten 9.14.0, JasperFx 2.24.1, Weasel 9.16.2 flowing transitively; Alba already latest), discharging the "full-suite 6.x refresh still owed" item tracked since PR #35. Minor-line drop-in: restore + build green with **zero code changes**; **CI full suite 11/11 passing** (PR #41). Local test run was blocked by a wedged Docker Desktop engine (Testcontainers container `start` hangs before any app code runs); pushed to CI as the authoritative test gate rather than fighting local Docker — the same 11 tests passed in 13s in the clean CI environment. Null spec delta (dependency bump amends no canonical spec). No prompt doc — direct user request. Status: complete (2026-07-10). + Phase 1–3 retrospectives were not authored at the time those phases ran (the retrospective convention solidified during Phase 4). They may be reconstructed from the working transcripts and skill artifacts if needed; otherwise they remain a known gap in the project record. ### Per-skill retros (`skills/`) diff --git a/docs/retrospectives/critter-stack-package-refresh.md b/docs/retrospectives/critter-stack-package-refresh.md new file mode 100644 index 0000000..dd986a9 --- /dev/null +++ b/docs/retrospectives/critter-stack-package-refresh.md @@ -0,0 +1,48 @@ +# Retrospective — Critter Stack Package Refresh + +- **Trigger:** Direct user request (a "detour" ahead of the next layer-decision follow-up) to update the Critter Stack packages and run a full build + test. No prompt document — a small, well-scoped maintenance task. +- **Status:** Complete (2026-07-10). +- **Output artifacts:** [`Directory.Packages.props`](../../Directory.Packages.props) (WolverineFx family 6.8.0 → 6.17.0). This retro. +- **Outcome:** Clean minor-line refresh — build green with zero code changes; **CI full suite 11/11 passing** on the new versions. Discharges the "full-suite 6.x refresh still owed" item tracked since PR #35. + +## Framing + +Since the Grpc/Polecat version island was closed to 6.8 (PR #35), a full-suite refresh of the Critter Stack packages to the current 6.x line had been owed but not taken. This detour discharges it ahead of the first real transport build (the next Telemetry session), so that build starts from current packages rather than a stale floor. + +## Outcome summary + +| Package | Before | After | How pinned | +|---|---|---|---| +| WolverineFx.* (9 entries) | 6.8.0 | **6.17.0** | explicit in CPM | +| Marten | — | **9.14.0** | transitive via WolverineFx.Marten | +| JasperFx | — | 2.24.1 | transitive | +| Weasel | — | 9.16.2 | transitive | +| Alba | 8.5.2 | 8.5.2 | explicit — already latest | + +- **Restore:** green — resolved WolverineFx 6.17.0 + Marten 9.14.0 cleanly. +- **Build:** `dotnet build CritterCab.slnx` — 0 errors, **0 code changes**. +- **Tests:** CI (clean Linux Docker) — `Failed: 0, Passed: 11, Skipped: 0, Total: 11`. PR #41 run `29114354509`. + +## What worked + +- **CPM keeps the bump to one line-item family.** Only the WolverineFx.* packages are pinned; Marten/JasperFx/Weasel flow transitively, so bumping WolverineFx pulled their aligned versions automatically. No risk of pinning a Marten version out of step with the Wolverine release intends. +- **CI as the authoritative test gate when local Docker is flaky.** Rather than fight a wedged Docker Desktop, pushing the branch let the full Testcontainers-backed suite run in a clean environment — and the same 11 tests that hung locally passed in 13s there. This is the more authoritative verification regardless. +- **Diagnosing the failure locus before blaming the bump.** Every local failure was at `DispatchTestFixture.InitializeAsync()` `.StartAsync()` — before any Wolverine/Marten code runs — which correctly located the fault as Docker infra, not the version change. Confirmed three ways (warm images, Ryuk disabled, both). + +## What was harder than expected + +- **Local Docker Desktop was in a degraded state.** The `docker` CLI half-worked, but the .NET managed named-pipe client (`Docker.DotNet`, used by Testcontainers) hung on container `start`; even `docker rm -f` blocked. "Create works, start hangs" is the signature of a wedged engine — a restart is the fix, but that's the user's environment call. The lesson: when Testcontainers fails at container start (not app code), suspect the Docker engine and fall back to CI rather than chasing package or test-code causes. + +## Methodology refinements that emerged + +- **When local Testcontainers is blocked, push to CI for the test gate** instead of stalling. The clean CI Docker environment is both a workaround and the more authoritative signal. Applies to any package/infra change on this repo. + +## Outstanding items / next-session inputs + +- **Restart Docker Desktop before the next session that needs Testcontainers locally** (the Telemetry transport build) — the engine is currently wedged. Environmental, not code. +- **Housekeeping (not blocking):** CI annotates a **Node.js 20 deprecation** on the pinned GitHub Actions (`actions/cache@v4`, `checkout@v4`, `setup-dotnet@v4`, `upload-artifact@v4`) — a future `tidy: ci` could bump those. The pre-existing **NU1903** warning (`Microsoft.OpenApi` 2.0.0 high-severity vuln) also remains and is unrelated to this bump. +- **Forward note for the Telemetry build:** this bump moved WolverineFx to 6.17 — worth re-verifying against 6.17 whether the client-streaming auto-codegen gap recorded at 5.x/pre-6.0 (the `ReportLocations` / `IMessageBus` forward-constraint) still holds before hand-wiring. + +## Spec delta — landed? + +**Null (maintenance).** No narrative or workshop is amended — a dependency version bump touches no canonical spec. The verification (build + CI 11/11) is the deliverable; this retro is the record.