Skip to content

coord release: make the cross-repo NuGet train a resumable typed state machine #2132

Closed

Description

@EHotwagner

Parent: #2130

Observed behavior

The release train has deterministic audit, workflow and verification scripts, but an agent still manually interprets their JSON, chooses and remembers the current phase, constructs the producer order, correlates PRs/tags/runs/commits, polls two feeds, detects partial publication, waits for consumer propagation and decides when registry truth may flip. A restart or context loss requires reconstructing the train from several evidence files and live systems.

The narrower Kit auto-publication policy is already owned by #2106. This item owns the reusable fleet-wide release coordinator and must consume, not duplicate, producer workflow logic.

Root cause

The scripts report facts but no durable transition model binds those facts into one release-run identity with legal next actions and terminal states.

Acceptance

  1. Add release inspect/plan/advance/verify (or equivalent) around a durable release-run id and versioned JSON state.
  2. Import the existing audit/workflow/verification outputs as typed evidence; do not weaken or replace their repository-specific checks.
  3. Discover rostered producers, evaluated packables, coherent sets, release baselines, dependency edges, tag patterns and expected package counts from live repositories and registry truth.
  4. Accept explicit agent decisions only where judgement remains: release-owed classification, ambiguous SemVer effect and a human-required blocker. Record each decision with its evidence and subject commit.
  5. Derive a topological producer/consumer train and refuse a consumer release whose required producer artifact/pin is not verified.
  6. Bind every release to merged-main commit, exact tag, workflow run and expected artifact set. Tags or green runs alone are not completion.
  7. Model dual-feed publication as none, org-only, public-only, both-equivalent or disagree. Partial/disagree states are terminal human escalations and are never blindly retried.
  8. Verify payload-entry equivalence, expected-versus-observed package counts, fresh-consumer and retrofit adoption where materialized content is involved, and downstream dispatch/Renovate evidence.
  9. Enforce publish-before-registry-flip; registry/projection completion cannot advance until packages are live, and final completion re-reads merged canonical registry truth.
  10. The run is idempotently resumable after process restart or context loss and returns one typed next action plus the exact missing receipt.
  11. Fixtures cover current/no-release, ordered multi-producer release, missing package, partial publication, tag/commit mismatch, stale registry, missing consumer embedding and a fully complete train.

Class: hardening

Paths: src/FS.GG.Coord.Cli src/FS.GG.Coord.Core src/FS.GG.Coord.GitHub scripts/release-train-audit.fsx scripts/release-train-workflows.fsx scripts/release-train-verify.fsx scripts/release-train-status.fsx scripts/release-train-lib.fsx tests/release-train-tooling tests/FS.GG.Coord.Cli.Tests tests/FS.GG.Coord.Core.Tests tests/FS.GG.Coord.GitHub.Tests .agents/skills/cut-nuget-release .claude/skills/cut-nuget-release .agents/skills/publishing-and-deployment .claude/skills/publishing-and-deployment work/2132-release-train-state-machine readiness/2132-release-train-state-machine scripts/release-train-state.fsx registry/driver-skill-manifest.json registry/coordination-kit-skill-manifest.json src/FS.GG.Drivers/FS.GG.Drivers.csproj .github/workflows/release-drivers.yml registry/skills.CHANGELOG.md registry/repos.lock

Activity

  1. moved this to Backlog in Coordinationon Aug 2, 2026
  2. moved this from Backlog to Ready in Coordinationon Aug 2, 2026
  3. EHotwagner commented on Aug 2, 2026

    @EHotwagner
    ContributorAuthor

    Mandatory delivery-route decision

    Decision maker: Codex filing agent
    Decision: sdd-required

    Rationale: The item coordinates multiple repositories, packages, feeds, tags, workflow runs, registry truth and partial-publication recovery, including externally visible and partly irreversible effects.

    Until #2137 provides the typed receipt, this comment is the durable manual decision. A worker must run the full SDD lifecycle inside the claim-to-done envelope and bind its work/spec evidence to this item; this is not an advisory. Material scope changes require a new route decision.

  4. moved this from Ready to In progress in Coordinationon Aug 3, 2026
  5. moved this from In progress to In review in Coordinationon Aug 3, 2026
  6. EHotwagner commented on Aug 3, 2026

    @EHotwagner
    ContributorAuthor

    Automatic repair-phase entry: ordinary PR #2177 exhausted all three confirmations; round-3 F4 remains unresolved and escalation is recorded at #2177 (comment). Closing the exhausted PR unmerged, restoring Ready, and dispatching a fresh best-route implementer + fresh critic. Remaining objective: bump/release FS.GG.Drivers coherently because the packaged driver manifest bytes changed.

  7. moved this from In review to Ready in Coordinationon Aug 3, 2026
  8. moved this from Ready to In progress in Coordinationon Aug 3, 2026
  9. EHotwagner commented on Aug 3, 2026

    @EHotwagner
    ContributorAuthor

    phase: automatic repair phase
    fresh-worker: snipe-f8e4
    fresh-branch: item/2132-release-train-repair-phase
    exhausted-pr: #2177
    escalation-marker: #2177 (comment)
    ordinary-counter: exhausted-and-not-reused
    repair-phase-round-ceiling: 10
    version-decision: FS.GG.Drivers 0.15.0 -> 0.16.0 (MINOR receiver-visible driver manifest/content contract change)
    version-project-path: src/FS.GG.Drivers/FS.GG.Drivers.csproj
    release-workflow-path: .github/workflows/release-drivers.yml
    release-tag-path: drivers/v0.16.0
    release-history-path: registry/skills.CHANGELOG.md
    manifest-path: registry/driver-skill-manifest.json
    lock-check-path: registry/repos.lock

    This fresh claim/worktree will independently rebase the validated #2177 implementation onto current main, preserve the prior receipt/topology/canonical repairs, bump the immutable package version, and verify the package/release train before a separately fresh critic review. It will not reopen, merge, or reuse PR #2177.

  10. moved this from In progress to In review in Coordinationon Aug 3, 2026
  11. EHotwagner commented on Aug 3, 2026

    @EHotwagner
    ContributorAuthor
    No description provided.
  12. moved this from In review to In progress in Coordinationon Aug 3, 2026
  13. moved this from In progress to Done in Coordinationon Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions