Skip to content
Merged
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
10 changes: 5 additions & 5 deletions blueprints/features/hosted_tic_tac_toe.blueprint.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
---
feature_name: hosted_tic_tac_toe
status: approved
Expand All @@ -10,13 +10,13 @@

## Status

- Ownership amendment: the owner approved moving the complete game into the public examples repository on 30 October 2026. The amendment below changes source ownership and qualification only; gameplay, storage, endpoint, attribution and artwork contracts remain unchanged. The coordinator attests that [amendment `5866fa6`](https://github.com/MachineWisdomAI/saga-a2ui/blob/5866fa6fe715b1a578df16da4fd0b65624f9e202/blueprints/features/hosted_tic_tac_toe.blueprint.md) transcribes the owner's approved migration plan; this is not a claim of a separate human review of that commit. Earlier implementation receipts below describe the prior ownership arrangement. Blueprint `5866fa6fe715b1a578df16da4fd0b65624f9e202` implemented for the ownership amendment at `MachineWisdomAI/saga-a2ui-examples@6431e6a984c88eca6904b75b760a57d0e2edde16` ([PR #5](https://github.com/MachineWisdomAI/saga-a2ui-examples/pull/5), independently approved at `4a3ba4056edf5c7741e83f7df759cb13d13fc24f`) and `MachineWisdomAI/saga-a2ui@07d364285341caa8641294369d3fd44be36894a9` ([PR #361](https://github.com/MachineWisdomAI/saga-a2ui/pull/361), independently approved at `d36d68e98123f1982ea1312b6e588550e6e6b302`). Both PRs passed CI. Examples qualification covers registry installation, the shared local/Worker application, persistence, expiry, cleanup and branded cards in both themes. SDK qualification preserves the full tutorial, snippet and guided-patch comparisons, candidate-package builds and 27 Chromium checks against the digest-pinned examples revision. This source-ownership receipt does not close the separate host display, reload or connector-icon limitations below.
- Ownership amendment: the owner approved moving the complete game into the public examples repository on 30 October 2026. The amendment below changes source ownership and qualification only; gameplay, storage, endpoint, attribution and artwork contracts remain unchanged. The coordinator attests that [amendment `5866fa6`](https://github.com/MachineWisdomAI/saga-a2ui/blob/5866fa6fe715b1a578df16da4fd0b65624f9e202/blueprints/features/hosted_tic_tac_toe.blueprint.md) transcribes the owner's approved migration plan; this is not a claim of a separate human review of that commit. Earlier implementation receipts below describe the prior ownership arrangement. Blueprint `5866fa6fe715b1a578df16da4fd0b65624f9e202` implemented for the ownership amendment at `MachineWisdomAI/saga-a2ui-examples@6431e6a984c88eca6904b75b760a57d0e2edde16` ([PR #5](https://github.com/MachineWisdomAI/saga-a2ui-examples/pull/5), independently approved at `4a3ba4056edf5c7741e83f7df759cb13d13fc24f`) and `MachineWisdomAI/saga-a2ui@07d364285341caa8641294369d3fd44be36894a9` ([PR #361](https://github.com/MachineWisdomAI/saga-a2ui/pull/361), independently approved at `d36d68e98123f1982ea1312b6e588550e6e6b302`). Both PRs passed CI. Examples qualification covers registry installation, the shared local/Worker application, persistence, expiry, cleanup and branded cards in both themes. SDK qualification preserves the full tutorial, snippet and guided-patch comparisons, candidate-package builds and 27 Chromium checks against the digest-pinned examples revision.

- Design: approved by human review on 30 October 2026 at [revision `eb2f0c2cd3cf9216c5b3dbb17d09830283863c05`](https://github.com/MachineWisdomAI/saga-a2ui/blob/eb2f0c2cd3cf9216c5b3dbb17d09830283863c05/blueprints/features/hosted_tic_tac_toe.blueprint.md), including its referenced diagrams. Approval preserves the open upstream attribution/interface and canonical-artwork decisions below; it does not approve those designs or authorize deployment.
- Implementation: Partial. **Blueprint `eb2f0c2cd3cf9216c5b3dbb17d09830283863c05` implemented, for the canonical game source and its shared-credit adoption, at `MachineWisdomAI/saga-a2ui@cc67b817112c33540d51aab34040904323819cc8`** ([PR #354](https://github.com/MachineWisdomAI/saga-a2ui/pull/354), independently approved at its head `aceb33b`). It adopts the shared own-catalog credit that landed in [`9476d80`](https://github.com/MachineWisdomAI/saga-a2ui/commit/9476d8099c4aeff38ecfbe80b2fd6976cd5c1729) ([design](own_catalog_attribution.blueprint.md)), the catalog and layout identifier `https://saga-a2ui.dev/catalogs/tic-tac-toe/board/v1`, and an optional `icons` setting for the game server. **The tutorial game's host-context seam, which the hosted card uses to follow the host's theme, landed at `MachineWisdomAI/saga-a2ui@522d613c280565071497bfcbd221ce277a85b28b`** ([PR #356](https://github.com/MachineWisdomAI/saga-a2ui/pull/356), approved at its head `022f330`). **The hosted Worker application is implemented at `MachineWisdomAI/saga-a2ui-examples@0305d3445dfb5c814d99c4497fe0f37fe4cc2cc4`** ([PR #1](https://github.com/MachineWisdomAI/saga-a2ui-examples/pull/1), approved at its head `10ae573`), which pins SDK `522d613`: the Worker, one SQLite-backed Durable Object per game with its fixed 24-hour expiry, the dragon connector icons and the card page, with Workers-runtime and rendered-card tests. The existing local game and tutorial remain their own implemented scope. Landed prerequisites: the shared Fetch entry at [`f1fbac0`](https://github.com/MachineWisdomAI/saga-a2ui/commit/f1fbac0882302cbf024100b462e08abd06a5bdc1) and the selected SAGA dragon light/dark theme assets, bundled unchanged as the default ChatGPT plugin branding at [`1660855`](https://github.com/MachineWisdomAI/saga-a2ui/commit/1660855a2bd643a3161d86f49d090c6cb43682e5) ([provenance](../../assets/brand/plugin/README.md)). **The Claude marketplace entry, the Claude plugin, the setup for Claude and ChatGPT on the web, the data-handling document and the publication release input landed at `MachineWisdomAI/saga-a2ui-examples@f22c84592eb5f7a0f8eedfb591e63e122467de92`** ([PR #2](https://github.com/MachineWisdomAI/saga-a2ui-examples/pull/2), approved at its head `bf3f6af`), and **the hosted-game links in the SDK README and tutorial landed at `MachineWisdomAI/saga-a2ui@b991de04b7fcec81d6c7c37582d143b901737bca`** ([PR #358](https://github.com/MachineWisdomAI/saga-a2ui/pull/358), approved at its head `bcbdfe7`), with the npm and Vite tutorial steps unchanged. Not implemented: a named copyright holder for the examples licence files, and the SDK's registry publication.
- Publish preparation: at `f1fbac0`, the existing `saga publish check` and `prepare` commands, run on the fixture application through the test network seam with its ChatGPT `assets` removed, produced a `ready` ChatGPT package (`package.assets` pass; `plugin.json` references the four dragon files as `composerIcon`, `composerIconDark`, `logo` and `logoDark`, and their bytes are the valid PNG files of the recorded digests). With `claude.connector.icon` pointing at the dragon logo, the Claude connector dossier was also `ready` (`package.images` pass). Neither run needed a code change, so no reusable preparation gap is recorded. That run used a fixture endpoint. Preparation against the game's own deployed endpoint, with the examples repository's release input, then gave: ChatGPT `ready` (package ZIP SHA-256 `3811c42590c7f39e2cb12b3022d73ef034647c8e7ee988cf692e0d68c987ed9d`; the four dragon PNG files valid and unchanged from the recorded digests; the two staged and the two deployed view files agreeing by hash). The Claude directory dossier was `blocked` only on a review contact and carousel screenshots, which are directory-submission fields the repository does not hold and no external submission was made; the Claude plugin bundle and the endpoint checks passed, and `claude plugin validate` passed for the marketplace and the plugin. No reusable publish CLI gap was found. Preparation alone establishes no installation, web distribution or actual connector icon.
- Acceptance: the Worker is deployed at `https://examples.saga-ai.dev/tic-tac-toe/mcp` from `0305d34`, as an anonymous endpoint with four tools. Package consumption is still pending: the SDK packages at `0.11.0-rc.1` are not on the npm registry, so the examples repository builds from the pinned revision's packed packages. Actual-host observations so far: Claude on the web, with a custom connector, played a game to a draw and showed the final card with the dragon and credit in light and dark appearances, but its first card display needed the host's retry, one card failed after a turn, and the connector row showed a placeholder letter, not the dragon. ChatGPT on the web, with a custom plugin, showed the uploaded dragon in the card and in the plugin mention and tool row in both themes; a dark-theme card timed out once and one retry recovered it, then a click on the board sent the person's move automatically and the assistant's reply updated the card, but an older card did not load after a theme switch. Claude on the web, through the merged examples marketplace (Customize, Plugins, Add marketplace, Add from a repository, Sync, then adding the plugin), enabled the `saga-tic-tac-toe` `0.1.0` plugin; its Connectors tab showed SAGA Tic Tac Toe as connected and custom, reusing the existing connection for the same endpoint. Using the plugin's namespaced skill in a chat started a game with `new_game`; the first card failed and one Retry recovered an interactive board; a click on the centre square then Send put in X, Claude played O top-left, and the same card updated with the credit and the selected dragon. So web marketplace installation and a playable invocation through it are verified, with the retry limitation. ChatGPT completed a nine-move draw, and its `show_game` card for the finished game first failed and one Retry recovered it. First-load reliability and the Claude connector icon (the row still showed a placeholder letter) are not established. The checks were on the web only. The SDK packages remain unpublished to npm, so registry consumption is not claimed.
- Brand artwork: the operator selected a second edition of the dragon artwork, and the canonical files are replaced by it unchanged ([provenance](../../assets/brand/plugin/README.md)): head crops for the composer icons, which render at 32 px and below (the hosted card's 24 px mark follows the composer icon), and the full mark on a solid tile for the logos. The SHA-256 digests are `59b21877707e9f3ae59c47ea5a00bed4938a0c7a99903a555155f06b6ae61a2d` (`composer-icon-light.png`), `87f6878befdebe02ef954dbd2c92a47c0a84f803033ae0da279f031d93ea7013` (`composer-icon-dark.png`), `66f444d50e29b7317bbf0a0743fa08630239e7f2e17f022d25dc042e01c7e95c` (`logo-light.png`) and `3dab20a89fd8318abab9b83ab6490162ab5ccc4d0157a37d2af3afbd4e59c07c` (`logo-dark.png`). The first edition, bundled at `1660855` and used by the deployed Worker, the staged package and the host observations above, is superseded for branding. Nothing here claims that the new artwork is deployed, packaged for a host or shown by a host: that needs the examples repository to adopt it, a new package qualification and an actual-host check.
- Implementation: Partial. **Blueprint `eb2f0c2cd3cf9216c5b3dbb17d09830283863c05` implemented, for the canonical game source and its shared-credit adoption, at `MachineWisdomAI/saga-a2ui@cc67b817112c33540d51aab34040904323819cc8`** ([PR #354](https://github.com/MachineWisdomAI/saga-a2ui/pull/354), independently approved at its head `aceb33b`). It adopts the shared own-catalog credit that landed in [`9476d80`](https://github.com/MachineWisdomAI/saga-a2ui/commit/9476d8099c4aeff38ecfbe80b2fd6976cd5c1729) ([design](own_catalog_attribution.blueprint.md)), the catalog and layout identifier `https://saga-a2ui.dev/catalogs/tic-tac-toe/board/v1`, and an optional `icons` setting for the game server. **The tutorial game's host-context seam, which the hosted card uses to follow the host's theme, landed at `MachineWisdomAI/saga-a2ui@522d613c280565071497bfcbd221ce277a85b28b`** ([PR #356](https://github.com/MachineWisdomAI/saga-a2ui/pull/356), approved at its head `022f330`). **The hosted Worker application is implemented at `MachineWisdomAI/saga-a2ui-examples@0305d3445dfb5c814d99c4497fe0f37fe4cc2cc4`** ([PR #1](https://github.com/MachineWisdomAI/saga-a2ui-examples/pull/1), approved at its head `10ae573`), which pins SDK `522d613`: the Worker, one SQLite-backed Durable Object per game with its fixed 24-hour expiry, the dragon connector icons and the card page, with Workers-runtime and rendered-card tests. The existing local game and tutorial remain their own implemented scope. Landed prerequisites: the shared Fetch entry at [`f1fbac0`](https://github.com/MachineWisdomAI/saga-a2ui/commit/f1fbac0882302cbf024100b462e08abd06a5bdc1) and the selected SAGA dragon light/dark theme assets, bundled unchanged as the default ChatGPT plugin branding at [`1660855`](https://github.com/MachineWisdomAI/saga-a2ui/commit/1660855a2bd643a3161d86f49d090c6cb43682e5) ([provenance](../../assets/brand/plugin/README.md)). **The Claude marketplace entry, the Claude plugin, the setup for Claude and ChatGPT on the web, the data-handling document and the publication release input landed at `MachineWisdomAI/saga-a2ui-examples@f22c84592eb5f7a0f8eedfb591e63e122467de92`** ([PR #2](https://github.com/MachineWisdomAI/saga-a2ui-examples/pull/2), approved at its head `bf3f6af`), and **the hosted-game links in the SDK README and tutorial landed at `MachineWisdomAI/saga-a2ui@b991de04b7fcec81d6c7c37582d143b901737bca`** ([PR #358](https://github.com/MachineWisdomAI/saga-a2ui/pull/358), approved at its head `bcbdfe7`), with the npm and Vite tutorial steps unchanged.
- Publish preparation: at `f1fbac0`, the existing `saga publish check` and `prepare` commands, run on the fixture application through the test network seam with its ChatGPT `assets` removed, produced a `ready` ChatGPT package (`package.assets` pass; `plugin.json` references the four dragon files as `composerIcon`, `composerIconDark`, `logo` and `logoDark`, and their bytes are the valid PNG files of the recorded digests). With `claude.connector.icon` pointing at the dragon logo, the Claude connector dossier was also `ready` (`package.images` pass). Neither run needed a code change, so no reusable preparation gap is recorded. That run used a fixture endpoint. Preparation against the game's own deployed endpoint, with the examples repository's release input, then gave: ChatGPT `ready` (package ZIP SHA-256 `3811c42590c7f39e2cb12b3022d73ef034647c8e7ee988cf692e0d68c987ed9d`; the four dragon PNG files valid and unchanged from the recorded digests; the two staged and the two deployed view files agreeing by hash). The Claude directory dossier was `blocked` only on a review contact and carousel screenshots, which are directory-submission fields the repository does not hold and no external submission was made; the Claude plugin bundle and the endpoint checks passed, and `claude plugin validate` passed for the marketplace and the plugin. No reusable publish CLI gap was found.
- Acceptance: the Worker serves `https://examples.saga-ai.dev/tic-tac-toe/mcp` as an anonymous endpoint with four tools, and the examples repository installs `@saga-a2ui/react-mcp-stack` 1.0.1 from npm. Claude on the web plays complete games through a custom connector, with the dragon and credit on the card in light and dark appearances. Installed from the examples marketplace (Customize, Plugins, Add marketplace, Add from a repository, Sync, then the `saga-tic-tac-toe` plugin), its skill starts a game, a click on the board sends the move, and the assistant's reply updates the same card. ChatGPT on the web plays complete games through a custom plugin, with the dragon in the card, the plugin mention and the tool row in both themes.
- Brand artwork: the operator selected a second edition of the dragon artwork, and the canonical files are replaced by it unchanged ([provenance](../../assets/brand/plugin/README.md)): head crops for the composer icons, which render at 32 px and below (the hosted card's 24 px mark follows the composer icon), and the full mark on a solid tile for the logos. The SHA-256 digests are `59b21877707e9f3ae59c47ea5a00bed4938a0c7a99903a555155f06b6ae61a2d` (`composer-icon-light.png`), `87f6878befdebe02ef954dbd2c92a47c0a84f803033ae0da279f031d93ea7013` (`composer-icon-dark.png`), `66f444d50e29b7317bbf0a0743fa08630239e7f2e17f022d25dc042e01c7e95c` (`logo-light.png`) and `3dab20a89fd8318abab9b83ab6490162ab5ccc4d0157a37d2af3afbd4e59c07c` (`logo-dark.png`). The first edition, bundled at `1660855` and used by the deployed Worker, the staged package and the host observations above, is superseded for branding.

## Problem and current behavior

Expand Down
Loading