Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .agents/skills/publishing-and-deployment/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Registry release inventory: 18 package-bearing contracts across 9 producers; 16
| `game` | `game-scene-adapter` | `0.17.0` | `0.17.0` | `game:0.17.0` | FS.GG.Game.Render package — Adapter (sim-state -> FS.GG.UI.Scene drawables) |
| `audio` | `fs-gg-audio` | `0.6.0` | `0.6.0` | `audio:0.6.0` | FS.GG.Audio.Core/.Host/.Engine/.Elmish/.WebBrowser public .fsi surfaces — AudioEffect vocabulary + IAudioBackend/IMixingBackend seam + mixing Engine + Audio.Cmd Elmish bridge + browser Web Audio host |
| `net` | `fs-gg-net` | `0.6.0` | `0.6.0` | `net:0.6.0` | FS.GG.Net.Core/.WebSocket/.WebSocket.Server/.Protobuf/.Grpc/.Elmish public .fsi surfaces — ITransport/IMessageChannel seam + Sequential/Multiplexed correlation + serve/ServerEcho + WebSocket client/server transport + Google.Protobuf/protobuf-net codecs + gRPC lifecycle bridge + Elmish Cmd/Sub |
| `github` | `coord-engine` | `0.110.0` | `0.110.0` | `github:0.110.0` | the `fsgg-coord-engine` CLI verb surface (claim/take/batch/who/widen/set-paths/say/landable/done/release/flush/…) + its exit-code contract, emitted from src/FS.GG.Coord.Core/Protocol.fs; shipped as the FS.GG.Coord.Cli dotnet tool |
| `github` | `coord-engine` | `0.111.0` | `0.110.0` | `github:0.110.0` | the `fsgg-coord-engine` CLI verb surface (claim/take/batch/who/widen/set-paths/say/landable/done/release/flush/…) + its exit-code contract, emitted from src/FS.GG.Coord.Core/Protocol.fs; shipped as the FS.GG.Coord.Cli dotnet tool |
| `github` | `telemetry-host` | `0.7.0` | `0.7.0` | `github:0.7.0` | optional Linux x64 FS.GG.Telemetry.Host dotnet tool — authenticated workspace-scoped ingestion, private dashboard, protected native capture and bounded learning export; independently versioned from the github coordination coherent set |
| `github` | `new-sdd-workspace` | `0.21.0` | `0.21.0` | `github:0.21.0` | the `new-sdd-workspace` scaffolder CLI (package FS.GG.NewSddWorkspace) — one-command full-stack SDD workspace creation, wrapping the FS.GG.Templates `rendering` provider (ADR-0016); shipped as a dotnet tool |
| `templates` | `fs-gg-workspace-template` | `0.19.0` | `0.19.0` | `templates:0.19.0` | FS.GG.Workspace.Template package, eight template configurations and seven `dotnet new` selectors: workspace-provider identities — `fs-gg-console` (provider `console` — minimal F# executable, no npm lane, ADR-0072 §2); `fs-gg-web` (provider `web` — F# ASP.NET Core + plain TypeScript/Vite website, ADR-0071 §3); `fs-gg-fable-game` (provider `fable-game` — F# ASP.NET Core + Fable/Elmish game client, SignalR for connection-oriented real-time traffic + plain HTTP endpoints with explicit versioned DTOs for typed request/response per ADR-0073, consuming the published `fs-gg-game-core-fable-lockstep-v1` profile per ADR-0069); `fs-gg-fable-bindings` (provider `fable-bindings` — Fable interop library over an exactly pinned npm package/declaration closure, ADR-0072 §3, first proved by the unreleased EHotwagner/babylonjsBindings reference) — plus `fs-gg-governance`, the separately registered pre-existing governance overlay template folded into this package at the same rename; `fs-gg-project-knowledge` and `fs-gg-python` are also already packaged. The current and legacy fable-game configurations share one selector. |
Expand Down Expand Up @@ -119,6 +119,13 @@ A consumed journal or completed publication does not authorize another candidate
Historical `release-saga-start`, prepare, component publishers and promote workflows remain
sealed under GS2-08.9; their recipes do not authorize current publication.

Before pushing a coherent source cut, trace normal project-reference consumers and run their
maintained pure closure/source-axis controls alongside registry preparation. Preserve distinct
current-source, historical-source and published-dependency bindings; registry projection checks
do not qualify consumers. Run the existing changelog check and update the release-note operand
that the project actually uses. Static source checks do not establish CLR evaluation; require
separately admitted execution or current hosted CI.

1. Qualify and merge the selected successor source. Dispatch `release-successor-candidate.yml`
on current `main` once. Authenticate the successful first-attempt run and its original seven-file
Actions archive: three packages, manifest, predecessor channel and two standalone qualification files.
Expand Down
9 changes: 8 additions & 1 deletion .claude/skills/publishing-and-deployment/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Registry release inventory: 18 package-bearing contracts across 9 producers; 16
| `game` | `game-scene-adapter` | `0.17.0` | `0.17.0` | `game:0.17.0` | FS.GG.Game.Render package — Adapter (sim-state -> FS.GG.UI.Scene drawables) |
| `audio` | `fs-gg-audio` | `0.6.0` | `0.6.0` | `audio:0.6.0` | FS.GG.Audio.Core/.Host/.Engine/.Elmish/.WebBrowser public .fsi surfaces — AudioEffect vocabulary + IAudioBackend/IMixingBackend seam + mixing Engine + Audio.Cmd Elmish bridge + browser Web Audio host |
| `net` | `fs-gg-net` | `0.6.0` | `0.6.0` | `net:0.6.0` | FS.GG.Net.Core/.WebSocket/.WebSocket.Server/.Protobuf/.Grpc/.Elmish public .fsi surfaces — ITransport/IMessageChannel seam + Sequential/Multiplexed correlation + serve/ServerEcho + WebSocket client/server transport + Google.Protobuf/protobuf-net codecs + gRPC lifecycle bridge + Elmish Cmd/Sub |
| `github` | `coord-engine` | `0.110.0` | `0.110.0` | `github:0.110.0` | the `fsgg-coord-engine` CLI verb surface (claim/take/batch/who/widen/set-paths/say/landable/done/release/flush/…) + its exit-code contract, emitted from src/FS.GG.Coord.Core/Protocol.fs; shipped as the FS.GG.Coord.Cli dotnet tool |
| `github` | `coord-engine` | `0.111.0` | `0.110.0` | `github:0.110.0` | the `fsgg-coord-engine` CLI verb surface (claim/take/batch/who/widen/set-paths/say/landable/done/release/flush/…) + its exit-code contract, emitted from src/FS.GG.Coord.Core/Protocol.fs; shipped as the FS.GG.Coord.Cli dotnet tool |
| `github` | `telemetry-host` | `0.7.0` | `0.7.0` | `github:0.7.0` | optional Linux x64 FS.GG.Telemetry.Host dotnet tool — authenticated workspace-scoped ingestion, private dashboard, protected native capture and bounded learning export; independently versioned from the github coordination coherent set |
| `github` | `new-sdd-workspace` | `0.21.0` | `0.21.0` | `github:0.21.0` | the `new-sdd-workspace` scaffolder CLI (package FS.GG.NewSddWorkspace) — one-command full-stack SDD workspace creation, wrapping the FS.GG.Templates `rendering` provider (ADR-0016); shipped as a dotnet tool |
| `templates` | `fs-gg-workspace-template` | `0.19.0` | `0.19.0` | `templates:0.19.0` | FS.GG.Workspace.Template package, eight template configurations and seven `dotnet new` selectors: workspace-provider identities — `fs-gg-console` (provider `console` — minimal F# executable, no npm lane, ADR-0072 §2); `fs-gg-web` (provider `web` — F# ASP.NET Core + plain TypeScript/Vite website, ADR-0071 §3); `fs-gg-fable-game` (provider `fable-game` — F# ASP.NET Core + Fable/Elmish game client, SignalR for connection-oriented real-time traffic + plain HTTP endpoints with explicit versioned DTOs for typed request/response per ADR-0073, consuming the published `fs-gg-game-core-fable-lockstep-v1` profile per ADR-0069); `fs-gg-fable-bindings` (provider `fable-bindings` — Fable interop library over an exactly pinned npm package/declaration closure, ADR-0072 §3, first proved by the unreleased EHotwagner/babylonjsBindings reference) — plus `fs-gg-governance`, the separately registered pre-existing governance overlay template folded into this package at the same rename; `fs-gg-project-knowledge` and `fs-gg-python` are also already packaged. The current and legacy fable-game configurations share one selector. |
Expand Down Expand Up @@ -119,6 +119,13 @@ A consumed journal or completed publication does not authorize another candidate
Historical `release-saga-start`, prepare, component publishers and promote workflows remain
sealed under GS2-08.9; their recipes do not authorize current publication.

Before pushing a coherent source cut, trace normal project-reference consumers and run their
maintained pure closure/source-axis controls alongside registry preparation. Preserve distinct
current-source, historical-source and published-dependency bindings; registry projection checks
do not qualify consumers. Run the existing changelog check and update the release-note operand
that the project actually uses. Static source checks do not establish CLR evaluation; require
separately admitted execution or current hosted CI.

1. Qualify and merge the selected successor source. Dispatch `release-successor-candidate.yml`
on current `main` once. Authenticate the successful first-attempt run and its original seven-file
Actions archive: three packages, manifest, predecessor channel and two standalone qualification files.
Expand Down
22 changes: 11 additions & 11 deletions .github/workflows/release-successor-candidate.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: release-successor-candidate

# Source/byte qualification for coherent set 0.110.0 only. This route has no tag, release,
# Source/byte qualification for coherent set 0.111.0 only. This route has no tag, release,
# journal, package-feed, OIDC or promotion write. Its retained Actions artifact
# is an unpromoted candidate, not a published release or an admission receipt.
on:
Expand Down Expand Up @@ -43,7 +43,7 @@ jobs:
test "$(git rev-parse HEAD)" = "$SOURCE_SHA"
test "$(git ls-remote origin refs/heads/main | cut -f1)" = "$SOURCE_SHA"
version="$(dotnet msbuild src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj -getProperty:Version | tr -d '[:space:]')"
test "$version" = 0.110.0
test "$version" = 0.111.0
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Verify the stable predecessor and unused package version
env:
Expand All @@ -53,24 +53,24 @@ jobs:
run: |
set -euo pipefail
mkdir -p artifacts/predecessor artifacts/packages
gh release download coherent-set/v0.109.0 --repo "$GITHUB_REPOSITORY" \
gh release download coherent-set/v0.110.0 --repo "$GITHUB_REPOSITORY" \
--pattern stable-channel.json --dir artifacts/predecessor
python3 scripts/release-saga.py predecessor \
--channel artifacts/predecessor/stable-channel.json \
--release-tag coherent-set/v0.109.0 \
--tag-source 0d85830e7329a2718ee57ff0f1a16e6c751a469c \
--release-tag coherent-set/v0.110.0 \
--tag-source 42cd9e7c8505f7cd72d5a22ad424a27af6d51458 \
> artifacts/predecessor/identity.json
test "$(jq -r .version artifacts/predecessor/identity.json)" = 0.109.0
test "$(jq -r .version artifacts/predecessor/identity.json)" = 0.110.0
python3 scripts/check-release-candidate-uniqueness.py \
--version "$VERSION" --predecessor 0.109.0
--version "$VERSION" --predecessor 0.110.0
release_status="$(curl --silent --show-error --location -o /dev/null -w '%{http_code}' \
-H "Authorization: Bearer $GH_TOKEN" \
-H 'Accept: application/vnd.github+json' \
"https://api.github.com/repos/$GITHUB_REPOSITORY/releases/tags/coherent-set/v0.110.0")"
"https://api.github.com/repos/$GITHUB_REPOSITORY/releases/tags/coherent-set/v0.111.0")"
test "$release_status" = 404
test -z "$(git ls-remote --tags origin \
'refs/tags/coherent-set/v0.110.0' 'refs/tags/kit/v0.110.0' \
'refs/tags/drivers/v0.110.0' 'refs/tags/coord-engine/v0.110.0')"
'refs/tags/coherent-set/v0.111.0' 'refs/tags/kit/v0.111.0' \
'refs/tags/drivers/v0.111.0' 'refs/tags/coord-engine/v0.111.0')"
- name: Test the telemetry producer and prepare the browser fixture
run: |
set -euo pipefail
Expand Down Expand Up @@ -183,7 +183,7 @@ jobs:
set -euo pipefail
test "$(git ls-remote origin refs/heads/main | cut -f1)" = "$SOURCE_SHA"
python3 scripts/check-release-candidate-uniqueness.py \
--version "$VERSION" --predecessor 0.109.0
--version "$VERSION" --predecessor 0.110.0
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: release-successor-candidate-${{ github.sha }}-${{ github.run_id }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release-successor-feed-readiness.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: release-successor-feed-readiness

# Informational freshness observation for a prospective 0.110.0 coherent set.
# Informational freshness observation for a prospective 0.111.0 coherent set.
# This does not select a release, qualify source bytes, or authorize publication.
on:
workflow_dispatch:
Expand Down Expand Up @@ -35,10 +35,10 @@ jobs:
test "$(git rev-parse HEAD)" = "$SOURCE_SHA"
test "$(git ls-remote origin refs/heads/main | cut -f1)" = "$SOURCE_SHA"
python3 tests/release-successor-candidate/run.py
- name: Observe both feeds for 0.110.0 against published 0.109.0
- name: Observe both feeds for 0.111.0 against published 0.110.0
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
python3 scripts/check-release-candidate-uniqueness.py \
--version 0.110.0 --predecessor 0.109.0
--version 0.111.0 --predecessor 0.110.0
5 changes: 4 additions & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -625,8 +625,11 @@
<!-- 0.109.0 -> 0.110.0: mandatory root-owned Status reconciliation at lifecycle
boundaries changes receiver-visible Kit/Drivers behavior. Source preparation only;
published109, installed callers and original operation custody stay separately governed. -->
<!-- 0.110.0 -> 0.111.0 (#4743): operation-specific admission and bounded
source/ref/preflight guidance changes packaged work-board instructions.
Source readiness only; published110 and installed adoption remain separate. -->
<PropertyGroup>
<FsggCoherentSetVersion>0.110.0</FsggCoherentSetVersion>
<FsggCoherentSetVersion>0.111.0</FsggCoherentSetVersion>
</PropertyGroup>

</Project>
2 changes: 1 addition & 1 deletion docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -653,7 +653,7 @@ product's `FS.GG.UI.*` pin), which is a different axis from the template package
| `game-scene-adapter` | FS.GG.Game | `0.17.0` | `0.17.0` |
| `fs-gg-audio` | FS.GG.Audio | `0.6.0` | `0.6.0` |
| `fs-gg-net` | FS.GG.Net | `0.6.0` | `0.6.0` |
| `coord-engine` | FS-GG/.github | `0.110.0` | `0.110.0` |
| `coord-engine` | FS-GG/.github | `0.111.0` | `0.110.0` |
| `telemetry-host` | FS-GG/.github | `0.7.0` | `0.7.0` |
| `new-sdd-workspace` | FS-GG/.github | `0.21.0` | `0.21.0` |
| `fs-gg-workspace-template` | FS.GG.Templates | `0.19.0` | `0.19.0` |
Expand Down
2 changes: 1 addition & 1 deletion docs/registry/compatibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ authored `Version` cells of the Versioned contracts table (#748).*
| `fs-gg-audio` | FS.GG.Audio | `0.6.0` | `0.6.0` |
| `fs-gg-net` | FS.GG.Net | `0.6.0` | `0.6.0` |
| `keyboard-input` | FS.GG.Rendering | `0.5.0` | — |
| `coord-engine` | FS-GG/.github | `0.110.0` | `0.110.0` |
| `coord-engine` | FS-GG/.github | `0.111.0` | `0.110.0` |
| `telemetry-host` | FS-GG/.github | `0.7.0` | `0.7.0` |
| `new-sdd-workspace` | FS-GG/.github | `0.21.0` | `0.21.0` |
| `fs-gg-workspace-template` | FS.GG.Templates | `0.19.0` | `0.19.0` |
Expand Down
47 changes: 47 additions & 0 deletions docs/roadmaps/utel-release-successor.md
Original file line number Diff line number Diff line change
Expand Up @@ -2037,3 +2037,50 @@ reviewed021 candidate/publication binding. No future pin is invented, no020/108
Registry published versions and consumer pins advance only after their actual promotion/adoption
boundaries; no new scalar bump, current-public inventory claim or shared projection rewrite is
required by this prospective source preparation.


### Accepted coherent110 and prospective111 operating window — 2026-10-21

[Delivery4743](https://github.com/FS-GG/.github/issues/4743) retains its complete seven-clause
promise under [Outcome4730](https://github.com/FS-GG/.github/issues/4730). Its guidance source
was protected through4751; four packaged work-board leaves differ from accepted110 within the
same22-leaf population. The Kit parallel-work leaves are unchanged. The organization operator
uses the complete current work-board/work-board-coord checkout instructions; operator-scope
work-board-coord is not packaged. No new Creator or SDD release follows from this guidance demand.

Genuine110 was promoted from immutable source `42cd9e7c8505f7cd72d5a22ad424a27af6d51458`,
content `sha256:12c130cddf0a580334507cb821767ed1838884d897422f4515c3fbd6892224dc`.
Original candidate [39423302862](https://github.com/FS-GG/.github/actions/runs/39423302862),
artifact12263934322, and final same-journal publisher
[39438076230](https://github.com/FS-GG/.github/actions/runs/39438076230) are retained.
[Release418406702](https://github.com/FS-GG/.github/releases/tag/coherent-set/v0.110.0)
has seven original assets; release-manifest asset659550415 has SHA256
`bcae24d71571ab7f0dc26abbbf00beb0abf12718b22e7060838990384b86911f`.
Completed `coord110-observer-20261020-01` remains generation33/all16 verified. Original failed
publisher and partial checkpoints, archives, channel, both-feed acceptance and installed110
qualification remain distinct immutable evidence; never replay or repack110.

Root selects SOURCE version0.111.0 over predecessor0.110.0, prospective logical ref
`refs/heads/fsgg/v2/journal/release/coord111-resource-aware-20261021-01` and directory
`state/releases/coord111-resource-aware-20261021-01`. This is no namespace allocation or effect
admission. Bounded source-preparation reads found no coherent111 tag/release or public NuGet111;
existing-user-token GitHub package metadata reads refused403, so private-feed collision remains
Unknown. The actual candidate/preflight must freshly authenticate all ordinary feed/ref/protection,
competing-entry/source/resource and authority prerequisites. Source reads do not prove availability.

Keep the normal45-minute candidate graph, exact seven-member archive,60-minute publisher,
1500 Authority-entry ceiling,1800 quota floor,2700-second inner deadline and135 visibility probes.
Historical selectors, provider fences, coherent-tag-only publication, all16 durable effects and
both-feed verification remain unchanged. Exact source CI and normal protected delivery precede
separately admitted candidate, publish=false preflight and publish=true with the same original
source/archive. Reserve the full determining main/ref horizon through final retention/publication;
file-disjoint source work alone does not establish protected-ref independence.

Whole-instruction discovery/loading and decisions during necessary organization operations are
separate from catalog presence and package/source hashes. Root has used the current complete
checkout instructions for conservative combined admission and preserved native Status readback;
that bounded ordinary-use evidence does not prove two independently useful local runtime
operations overlapping, measured combined peak, economic improvement or full4743 acceptance.
Retain actual publication and selected physical caller/instruction adoption, ordinary useful-overlap
qualification and proportionate baseline/coverage evidence as unfinished work. No synthetic product,
new ledger, publisher retry, credential acquisition or Unknown-reservation release is introduced.
Loading
Loading