From bf00025da98659d76c1105be24514b9dbbbe693f Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Sun, 30 Aug 2026 22:35:47 +0200 Subject: [PATCH 01/12] docs(CH-032): propose live Rumble proof --- .clue/id-ledger.yaml | 13 ++++++- .../open-questions.md | 11 ++++++ changes/CH-032-rumble-live-proof/proposal.md | 39 +++++++++++++++++++ changes/CH-032-rumble-live-proof/tasks.md | 22 +++++++++++ 4 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 changes/CH-032-rumble-live-proof/open-questions.md create mode 100644 changes/CH-032-rumble-live-proof/proposal.md create mode 100644 changes/CH-032-rumble-live-proof/tasks.md diff --git a/.clue/id-ledger.yaml b/.clue/id-ledger.yaml index a9307ff2e..723b8fde7 100644 --- a/.clue/id-ledger.yaml +++ b/.clue/id-ledger.yaml @@ -4,7 +4,7 @@ counters: ARCH: "26" C: "4" CAP: "17" - CH: "31" + CH: "32" G: "1" GTD: "1" IDR: "4" @@ -658,6 +658,17 @@ entries: - id: CH-031-tasks kind: opaque state: live + - id: CH-032 + kind: numeric + state: live + prefix: CH + component: "32" + - id: CH-032-open-questions + kind: opaque + state: live + - id: CH-032-tasks + kind: opaque + state: live - id: G-001 kind: numeric state: live diff --git a/changes/CH-032-rumble-live-proof/open-questions.md b/changes/CH-032-rumble-live-proof/open-questions.md new file mode 100644 index 000000000..18e03030d --- /dev/null +++ b/changes/CH-032-rumble-live-proof/open-questions.md @@ -0,0 +1,11 @@ +--- +id: CH-032-open-questions +type: open-questions +status: open +links: [CH-032] +title: Open questions for CH-032 +--- + +# CH-032 — Open questions + +No contract question is open. The live submission cannot begin until a human has merged both external pull requests and a separate fine-grained GitHub token is supplied through the environment with access limited to `robocode-dev/rumble-data` Issues read/write. Those are operational prerequisites, not permission to weaken ADR-043’s trust boundary. diff --git a/changes/CH-032-rumble-live-proof/proposal.md b/changes/CH-032-rumble-live-proof/proposal.md new file mode 100644 index 000000000..80cd7e6d1 --- /dev/null +++ b/changes/CH-032-rumble-live-proof/proposal.md @@ -0,0 +1,39 @@ +--- +id: CH-032 +type: change +status: open +links: [P-003, M-008, CAP-014, CAP-015, CAP-016] +title: Prove live Rumble result ingestion +--- + +# CH-032 — Prove live Rumble result ingestion + +## What + +Populate the public Rumble catalog with a second reviewed 1v1 bot, register the `flemming-rumble-01` contributor identity, and prove one real ranked result reaches `rumble-data` through the client’s Issues-only transport. + +## Why + +P-003/M-008 remains open solely for the live proof that CH-031 deliberately deferred. The official Tank Royale 1.1.0 release satisfies the release gate, while the locally built Runner continues to provide BR-049 for this proof. No Tank Royale release is needed. + +## Route + +Recommended route: full. P-003 requires every milestone to use its own proposal, and this change binds public cross-repository evidence before marking M-008 complete. Discovery would change the route only if a prior accepted result already proves the exact M-008 exit criterion for the registered identity and public catalog. + +## Plan + +Serves [P-003/M-008](../../docs/plans/P-003-rumble.md) without changing the accepted RBC, RDA, or RCL criterion meanings. + +## Scope + +- Add one source-only Python bot named `Vector 1.0.0` to `robocode-dev/rumble-bots`, reviewed and merged through its normal pull-request flow. +- Register `flemming-n-larsen` and the stable public client ID `flemming-rumble-01` in `robocode-dev/rumble-data`, reviewed and merged through its normal pull-request flow. +- Synchronize the reviewed catalog, run one real ranked 1v1 battle through the local Runner build, and submit it with a repository-scoped Issues read/write token. +- Verify the closed result issue, durable receipt, immutable raw fact, regenerated projections, and local replay and journal acknowledgement before digesting the evidence. + +## Non-goals + +- Publishing Tank Royale, Battle Runner, or a Rumble client distribution. +- Populating TwinDuel or melee, changing the engine pin, or changing any Rumble contract. +- Giving the client repository-content, branch, release, package, Pages, fact, or projection write access. +- Persisting a credential, replay, journal, local configuration, or generated cache in any repository. diff --git a/changes/CH-032-rumble-live-proof/tasks.md b/changes/CH-032-rumble-live-proof/tasks.md new file mode 100644 index 000000000..b961168f2 --- /dev/null +++ b/changes/CH-032-rumble-live-proof/tasks.md @@ -0,0 +1,22 @@ +--- +id: CH-032-tasks +type: tasks +status: open +links: [CH-032] +title: Task breakdown for CH-032 +--- + +# CH-032 — Tasks + +- [x] Reserve CH-032 and branch from the accepted tip of `main` +- [x] Confirm the M-008 release gate, client implementation, catalog state, and contributor-registration contract +- [x] Capture the full-route proposal and selected live-proof scope +- [ ] Commit and push the proposal, then open the required draft PR before implementation +- [ ] Add and validate the reviewed `Vector 1.0.0` catalog entry in `rumble-bots` (RBC-001) +- [ ] Obtain human merge of the bot-catalog pull request, then verify the generated public entry +- [ ] Register `flemming-rumble-01` through a reviewed `rumble-data` pull request (RDA-001) +- [ ] Obtain human merge of the contributor-registration pull request +- [ ] Synchronize the public catalog and verify 1v1 matchmaking advice (RCL-002, RCL-010) +- [ ] Build the client against the local Tank Royale source and run one real ranked 1v1 battle with local replay evidence (RCL-005) +- [ ] Submit the journal using a dedicated repository-scoped Issues-only token and verify durable ingestion acknowledgement (RCL-006, RCL-007, RCL-009) +- [ ] Reconcile public evidence and P-003/M-008 bookkeeping in the permanent corpus From 7bb190923aafff0359312d0e40b43f4cb185b1a2 Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Sun, 30 Aug 2026 22:37:01 +0200 Subject: [PATCH 02/12] docs(CH-032): record catalog test hardening --- changes/CH-032-rumble-live-proof/tasks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changes/CH-032-rumble-live-proof/tasks.md b/changes/CH-032-rumble-live-proof/tasks.md index b961168f2..ec1715852 100644 --- a/changes/CH-032-rumble-live-proof/tasks.md +++ b/changes/CH-032-rumble-live-proof/tasks.md @@ -13,6 +13,7 @@ title: Task breakdown for CH-032 - [x] Capture the full-route proposal and selected live-proof scope - [ ] Commit and push the proposal, then open the required draft PR before implementation - [ ] Add and validate the reviewed `Vector 1.0.0` catalog entry in `rumble-bots` (RBC-001) +- [ ] Make the existing version-history test independent of unrelated active catalog entries - [ ] Obtain human merge of the bot-catalog pull request, then verify the generated public entry - [ ] Register `flemming-rumble-01` through a reviewed `rumble-data` pull request (RDA-001) - [ ] Obtain human merge of the contributor-registration pull request From 7759ce1e99c7748c5686f3e3f42941c171697fb0 Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Sun, 30 Aug 2026 22:38:27 +0200 Subject: [PATCH 03/12] docs(CH-032): record external proof gates --- changes/CH-032-rumble-live-proof/tasks.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/changes/CH-032-rumble-live-proof/tasks.md b/changes/CH-032-rumble-live-proof/tasks.md index ec1715852..c243ed2ff 100644 --- a/changes/CH-032-rumble-live-proof/tasks.md +++ b/changes/CH-032-rumble-live-proof/tasks.md @@ -11,11 +11,11 @@ title: Task breakdown for CH-032 - [x] Reserve CH-032 and branch from the accepted tip of `main` - [x] Confirm the M-008 release gate, client implementation, catalog state, and contributor-registration contract - [x] Capture the full-route proposal and selected live-proof scope -- [ ] Commit and push the proposal, then open the required draft PR before implementation -- [ ] Add and validate the reviewed `Vector 1.0.0` catalog entry in `rumble-bots` (RBC-001) -- [ ] Make the existing version-history test independent of unrelated active catalog entries +- [x] Commit and push the proposal, then open the required draft PR before implementation +- [x] Add and validate `Vector 1.0.0` in [rumble-bots#4](https://github.com/robocode-dev/rumble-bots/pull/4) (RBC-001) +- [x] Make the existing version-history test independent of unrelated active catalog entries - [ ] Obtain human merge of the bot-catalog pull request, then verify the generated public entry -- [ ] Register `flemming-rumble-01` through a reviewed `rumble-data` pull request (RDA-001) +- [x] Register `flemming-rumble-01` through [rumble-data#8](https://github.com/robocode-dev/rumble-data/pull/8) (RDA-001) - [ ] Obtain human merge of the contributor-registration pull request - [ ] Synchronize the public catalog and verify 1v1 matchmaking advice (RCL-002, RCL-010) - [ ] Build the client against the local Tank Royale source and run one real ranked 1v1 battle with local replay evidence (RCL-005) From 5148e31ca9748d46ab4c9154ce962efc11d03d12 Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Sun, 30 Aug 2026 22:50:19 +0200 Subject: [PATCH 04/12] docs(CH-032): use plain apostrophes in the proposal documents Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01Di4MfjnBCVf8N4v8WXq5nk --- changes/CH-032-rumble-live-proof/open-questions.md | 2 +- changes/CH-032-rumble-live-proof/proposal.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/changes/CH-032-rumble-live-proof/open-questions.md b/changes/CH-032-rumble-live-proof/open-questions.md index 18e03030d..17927a690 100644 --- a/changes/CH-032-rumble-live-proof/open-questions.md +++ b/changes/CH-032-rumble-live-proof/open-questions.md @@ -8,4 +8,4 @@ title: Open questions for CH-032 # CH-032 — Open questions -No contract question is open. The live submission cannot begin until a human has merged both external pull requests and a separate fine-grained GitHub token is supplied through the environment with access limited to `robocode-dev/rumble-data` Issues read/write. Those are operational prerequisites, not permission to weaken ADR-043’s trust boundary. +No contract question is open. The live submission cannot begin until a human has merged both external pull requests and a separate fine-grained GitHub token is supplied through the environment with access limited to `robocode-dev/rumble-data` Issues read/write. Those are operational prerequisites, not permission to weaken ADR-043's trust boundary. diff --git a/changes/CH-032-rumble-live-proof/proposal.md b/changes/CH-032-rumble-live-proof/proposal.md index 80cd7e6d1..a8f805d3e 100644 --- a/changes/CH-032-rumble-live-proof/proposal.md +++ b/changes/CH-032-rumble-live-proof/proposal.md @@ -10,7 +10,7 @@ title: Prove live Rumble result ingestion ## What -Populate the public Rumble catalog with a second reviewed 1v1 bot, register the `flemming-rumble-01` contributor identity, and prove one real ranked result reaches `rumble-data` through the client’s Issues-only transport. +Populate the public Rumble catalog with a second reviewed 1v1 bot, register the `flemming-rumble-01` contributor identity, and prove one real ranked result reaches `rumble-data` through the client's Issues-only transport. ## Why From 2b124d10067dbb0af526fdf0d9a004b7a4eb793d Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Sun, 30 Aug 2026 22:57:48 +0200 Subject: [PATCH 05/12] docs(CH-032): exercise live score components --- changes/CH-032-rumble-live-proof/tasks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changes/CH-032-rumble-live-proof/tasks.md b/changes/CH-032-rumble-live-proof/tasks.md index c243ed2ff..5525567b5 100644 --- a/changes/CH-032-rumble-live-proof/tasks.md +++ b/changes/CH-032-rumble-live-proof/tasks.md @@ -14,6 +14,7 @@ title: Task breakdown for CH-032 - [x] Commit and push the proposal, then open the required draft PR before implementation - [x] Add and validate `Vector 1.0.0` in [rumble-bots#4](https://github.com/robocode-dev/rumble-bots/pull/4) (RBC-001) - [x] Make the existing version-history test independent of unrelated active catalog entries +- [x] Make Vector fire after an aimed scan so the live proof exercises non-zero score components - [ ] Obtain human merge of the bot-catalog pull request, then verify the generated public entry - [x] Register `flemming-rumble-01` through [rumble-data#8](https://github.com/robocode-dev/rumble-data/pull/8) (RDA-001) - [ ] Obtain human merge of the contributor-registration pull request From 546fa3f669e995a4338ae24119040ed50296cb3a Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Sun, 30 Aug 2026 23:23:35 +0200 Subject: [PATCH 06/12] docs(CH-032): record live-proof prerequisites --- changes/CH-032-rumble-live-proof/open-questions.md | 2 +- changes/CH-032-rumble-live-proof/tasks.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/changes/CH-032-rumble-live-proof/open-questions.md b/changes/CH-032-rumble-live-proof/open-questions.md index 17927a690..7b62ff659 100644 --- a/changes/CH-032-rumble-live-proof/open-questions.md +++ b/changes/CH-032-rumble-live-proof/open-questions.md @@ -8,4 +8,4 @@ title: Open questions for CH-032 # CH-032 — Open questions -No contract question is open. The live submission cannot begin until a human has merged both external pull requests and a separate fine-grained GitHub token is supplied through the environment with access limited to `robocode-dev/rumble-data` Issues read/write. Those are operational prerequisites, not permission to weaken ADR-043's trust boundary. +No contract question is open. The bot-catalog and contributor-registration pull requests are merged, and the public catalog, 1v1 advice, local replay evidence, and ranked journal are ready. The live submission cannot begin until a separate fine-grained GitHub token is supplied through the `RUMBLE_CLIENT_TOKEN` environment variable with access limited to `robocode-dev/rumble-data` Issues read/write. This prerequisite is not permission to weaken ADR-043's trust boundary. diff --git a/changes/CH-032-rumble-live-proof/tasks.md b/changes/CH-032-rumble-live-proof/tasks.md index 5525567b5..1b15d5856 100644 --- a/changes/CH-032-rumble-live-proof/tasks.md +++ b/changes/CH-032-rumble-live-proof/tasks.md @@ -15,10 +15,10 @@ title: Task breakdown for CH-032 - [x] Add and validate `Vector 1.0.0` in [rumble-bots#4](https://github.com/robocode-dev/rumble-bots/pull/4) (RBC-001) - [x] Make the existing version-history test independent of unrelated active catalog entries - [x] Make Vector fire after an aimed scan so the live proof exercises non-zero score components -- [ ] Obtain human merge of the bot-catalog pull request, then verify the generated public entry +- [x] Obtain human merge of the bot-catalog pull request, then verify the generated public entry - [x] Register `flemming-rumble-01` through [rumble-data#8](https://github.com/robocode-dev/rumble-data/pull/8) (RDA-001) -- [ ] Obtain human merge of the contributor-registration pull request -- [ ] Synchronize the public catalog and verify 1v1 matchmaking advice (RCL-002, RCL-010) -- [ ] Build the client against the local Tank Royale source and run one real ranked 1v1 battle with local replay evidence (RCL-005) +- [x] Obtain human merge of the contributor-registration pull request +- [x] Synchronize the public catalog and verify 1v1 matchmaking advice (RCL-002, RCL-010) +- [x] Build the client against the local Tank Royale source and run one real ranked 1v1 battle with local replay evidence (RCL-005) - [ ] Submit the journal using a dedicated repository-scoped Issues-only token and verify durable ingestion acknowledgement (RCL-006, RCL-007, RCL-009) - [ ] Reconcile public evidence and P-003/M-008 bookkeeping in the permanent corpus From 494cd02557d77e33d132d1ba33e3db198b69b7ef Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Mon, 31 Aug 2026 17:31:36 +0200 Subject: [PATCH 07/12] docs(CH-032): record token-runbook goal --- .clue/id-ledger.yaml | 7 ++++++- docs/goals/G-002-rumble-issues-token-runbook.md | 16 ++++++++++++++++ docs/goals/README.md | 1 + 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 docs/goals/G-002-rumble-issues-token-runbook.md diff --git a/.clue/id-ledger.yaml b/.clue/id-ledger.yaml index 723b8fde7..1a984f768 100644 --- a/.clue/id-ledger.yaml +++ b/.clue/id-ledger.yaml @@ -5,7 +5,7 @@ counters: C: "4" CAP: "17" CH: "32" - G: "1" + G: "2" GTD: "1" IDR: "4" LOG: "1" @@ -674,6 +674,11 @@ entries: state: live prefix: G component: "1" + - id: G-002 + kind: numeric + state: live + prefix: G + component: "2" - id: GTD-001 kind: numeric state: live diff --git a/docs/goals/G-002-rumble-issues-token-runbook.md b/docs/goals/G-002-rumble-issues-token-runbook.md new file mode 100644 index 000000000..90efdd528 --- /dev/null +++ b/docs/goals/G-002-rumble-issues-token-runbook.md @@ -0,0 +1,16 @@ +--- +id: G-002 +type: goal +status: proposed +links: [G-001] +title: Internal Rumble Issues token runbook +provenance: verified +--- + +# G-002 — Internal Rumble Issues token runbook + +**Who:** Rumble maintainers and trusted contributors who operate a ranked-result client. + +**What:** An internal `rumble-data/docs/` runbook for creating, approving, supplying, rotating, and revoking the dedicated fine-grained GitHub token used by the Rumble client's Issues-only result transport. + +**Why:** Preserve the Rumble trust boundary during live submissions and operational recovery by making the minimum repository scope and permission set repeatable without recording a token value or publishing the procedure as participant-facing documentation. diff --git a/docs/goals/README.md b/docs/goals/README.md index 8cd0b83ec..8e16309db 100644 --- a/docs/goals/README.md +++ b/docs/goals/README.md @@ -6,4 +6,5 @@ A goal artifact answers three questions: who wants it, what they want, and why i - [G-001 — A programming game for learning and competition](G-001-programming-game-for-learning-and-competition.md) · `accepted` +- [G-002 — Internal Rumble Issues token runbook](G-002-rumble-issues-token-runbook.md) · `proposed` From d8193f2ae2e5e6f8e5fbac5153936408216e0b20 Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Mon, 31 Aug 2026 17:37:39 +0200 Subject: [PATCH 08/12] docs(CH-032): record token permission blocker --- changes/CH-032-rumble-live-proof/open-questions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changes/CH-032-rumble-live-proof/open-questions.md b/changes/CH-032-rumble-live-proof/open-questions.md index 7b62ff659..f175cc9ad 100644 --- a/changes/CH-032-rumble-live-proof/open-questions.md +++ b/changes/CH-032-rumble-live-proof/open-questions.md @@ -8,4 +8,4 @@ title: Open questions for CH-032 # CH-032 — Open questions -No contract question is open. The bot-catalog and contributor-registration pull requests are merged, and the public catalog, 1v1 advice, local replay evidence, and ranked journal are ready. The live submission cannot begin until a separate fine-grained GitHub token is supplied through the `RUMBLE_CLIENT_TOKEN` environment variable with access limited to `robocode-dev/rumble-data` Issues read/write. This prerequisite is not permission to weaken ADR-043's trust boundary. +No contract question is open. The bot-catalog and contributor-registration pull requests are merged, and the public catalog, 1v1 advice, local replay evidence, and ranked journal are ready. The supplied token authenticates as `flemming-n-larsen` and can read Issues, but GitHub rejects issue creation with HTTP 403, so no submission issue or receipt exists and the journal remains intact. Replace or reconfigure the token with resource owner `robocode-dev`, access limited to `rumble-data`, and effective Issues read/write permission; complete organization approval if required. Supply it through the `RUMBLE_CLIENT_TOKEN` environment variable. This prerequisite is not permission to weaken ADR-043's trust boundary. From c93a7cd9f1c55a0a2e3f386e75936bb95ccf4e53 Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Mon, 31 Aug 2026 19:39:17 +0200 Subject: [PATCH 09/12] docs(CH-032): record ingestion account defect --- changes/CH-032-rumble-live-proof/open-questions.md | 2 +- changes/CH-032-rumble-live-proof/tasks.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/changes/CH-032-rumble-live-proof/open-questions.md b/changes/CH-032-rumble-live-proof/open-questions.md index f175cc9ad..797c0ba9c 100644 --- a/changes/CH-032-rumble-live-proof/open-questions.md +++ b/changes/CH-032-rumble-live-proof/open-questions.md @@ -8,4 +8,4 @@ title: Open questions for CH-032 # CH-032 — Open questions -No contract question is open. The bot-catalog and contributor-registration pull requests are merged, and the public catalog, 1v1 advice, local replay evidence, and ranked journal are ready. The supplied token authenticates as `flemming-n-larsen` and can read Issues, but GitHub rejects issue creation with HTTP 403, so no submission issue or receipt exists and the journal remains intact. Replace or reconfigure the token with resource owner `robocode-dev`, access limited to `rumble-data`, and effective Issues read/write permission; complete organization approval if required. Supply it through the `RUMBLE_CLIENT_TOKEN` environment variable. This prerequisite is not permission to weaken ADR-043's trust boundary. +No contract question is open. The bot-catalog and contributor-registration pull requests are merged, and the public catalog, 1v1 advice, local replay evidence, and ranked journal are ready. The corrected token created and labeled issue [rumble-data#9](https://github.com/robocode-dev/rumble-data/issues/9), but the data-repository workflow read the GitHub issue author from `author.login`; the Issues API provides it as `user.login`, so the batch was rejected with account `null`. Repair that implementation defect with focused evidence before resubmitting the retained journal. This prerequisite is not permission to weaken ADR-043's trust boundary. diff --git a/changes/CH-032-rumble-live-proof/tasks.md b/changes/CH-032-rumble-live-proof/tasks.md index 1b15d5856..18faacbf1 100644 --- a/changes/CH-032-rumble-live-proof/tasks.md +++ b/changes/CH-032-rumble-live-proof/tasks.md @@ -20,5 +20,6 @@ title: Task breakdown for CH-032 - [x] Obtain human merge of the contributor-registration pull request - [x] Synchronize the public catalog and verify 1v1 matchmaking advice (RCL-002, RCL-010) - [x] Build the client against the local Tank Royale source and run one real ranked 1v1 battle with local replay evidence (RCL-005) +- [ ] Correct the Rumble data issue-inbox account extraction and add focused regression evidence before resubmitting the retained journal (RDA-001, RCL-007, RCL-009) - [ ] Submit the journal using a dedicated repository-scoped Issues-only token and verify durable ingestion acknowledgement (RCL-006, RCL-007, RCL-009) - [ ] Reconcile public evidence and P-003/M-008 bookkeeping in the permanent corpus From 6f6f2a017b51e066182c8c359380cd0597ba60b4 Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Mon, 31 Aug 2026 20:11:42 +0200 Subject: [PATCH 10/12] docs(CH-032): record journal retry defect --- changes/CH-032-rumble-live-proof/open-questions.md | 2 +- changes/CH-032-rumble-live-proof/tasks.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/changes/CH-032-rumble-live-proof/open-questions.md b/changes/CH-032-rumble-live-proof/open-questions.md index 797c0ba9c..651b05a3f 100644 --- a/changes/CH-032-rumble-live-proof/open-questions.md +++ b/changes/CH-032-rumble-live-proof/open-questions.md @@ -8,4 +8,4 @@ title: Open questions for CH-032 # CH-032 — Open questions -No contract question is open. The bot-catalog and contributor-registration pull requests are merged, and the public catalog, 1v1 advice, local replay evidence, and ranked journal are ready. The corrected token created and labeled issue [rumble-data#9](https://github.com/robocode-dev/rumble-data/issues/9), but the data-repository workflow read the GitHub issue author from `author.login`; the Issues API provides it as `user.login`, so the batch was rejected with account `null`. Repair that implementation defect with focused evidence before resubmitting the retained journal. This prerequisite is not permission to weaken ADR-043's trust boundary. +No contract question is open. The bot-catalog and contributor-registration pull requests are merged, and the public catalog, 1v1 advice, local replay evidence, and ranked journal are ready. The corrected token created and labeled issue [rumble-data#9](https://github.com/robocode-dev/rumble-data/issues/9), whose workflow was repaired in [rumble-data#10](https://github.com/robocode-dev/rumble-data/pull/10). The client correctly avoids duplicate posts while that issue is unacknowledged, but after the terminal rejection it never releases the retained records for retry. Repair that client implementation defect with focused evidence before resubmitting the journal. This prerequisite is not permission to weaken ADR-043's trust boundary. diff --git a/changes/CH-032-rumble-live-proof/tasks.md b/changes/CH-032-rumble-live-proof/tasks.md index 18faacbf1..d038ba4f0 100644 --- a/changes/CH-032-rumble-live-proof/tasks.md +++ b/changes/CH-032-rumble-live-proof/tasks.md @@ -21,5 +21,6 @@ title: Task breakdown for CH-032 - [x] Synchronize the public catalog and verify 1v1 matchmaking advice (RCL-002, RCL-010) - [x] Build the client against the local Tank Royale source and run one real ranked 1v1 battle with local replay evidence (RCL-005) - [ ] Correct the Rumble data issue-inbox account extraction and add focused regression evidence before resubmitting the retained journal (RDA-001, RCL-007, RCL-009) +- [ ] Correct the Rumble client journal so a terminally rejected Issues-only batch is retryable, then resubmit the retained journal (RCL-006, RCL-007, RCL-009) - [ ] Submit the journal using a dedicated repository-scoped Issues-only token and verify durable ingestion acknowledgement (RCL-006, RCL-007, RCL-009) - [ ] Reconcile public evidence and P-003/M-008 bookkeeping in the permanent corpus From 2d0d311997c3819ab7f9e9bba489c61386fffb8a Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Mon, 31 Aug 2026 20:27:48 +0200 Subject: [PATCH 11/12] docs(CH-032): complete Rumble live proof --- changes/CH-032-rumble-live-proof/tasks.md | 8 ++++---- docs/capabilities/CAP-015-rumble-result-data/design.md | 2 +- docs/capabilities/CAP-016-rumble-client/design.md | 2 +- docs/plans/P-003-rumble.md | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/changes/CH-032-rumble-live-proof/tasks.md b/changes/CH-032-rumble-live-proof/tasks.md index d038ba4f0..c0f9ad8df 100644 --- a/changes/CH-032-rumble-live-proof/tasks.md +++ b/changes/CH-032-rumble-live-proof/tasks.md @@ -20,7 +20,7 @@ title: Task breakdown for CH-032 - [x] Obtain human merge of the contributor-registration pull request - [x] Synchronize the public catalog and verify 1v1 matchmaking advice (RCL-002, RCL-010) - [x] Build the client against the local Tank Royale source and run one real ranked 1v1 battle with local replay evidence (RCL-005) -- [ ] Correct the Rumble data issue-inbox account extraction and add focused regression evidence before resubmitting the retained journal (RDA-001, RCL-007, RCL-009) -- [ ] Correct the Rumble client journal so a terminally rejected Issues-only batch is retryable, then resubmit the retained journal (RCL-006, RCL-007, RCL-009) -- [ ] Submit the journal using a dedicated repository-scoped Issues-only token and verify durable ingestion acknowledgement (RCL-006, RCL-007, RCL-009) -- [ ] Reconcile public evidence and P-003/M-008 bookkeeping in the permanent corpus +- [x] Correct the Rumble data issue-inbox account extraction and add focused regression evidence before resubmitting the retained journal (RDA-001, RCL-007, RCL-009) +- [x] Correct the Rumble client journal so a terminally rejected Issues-only batch is retryable, then resubmit the retained journal (RCL-006, RCL-007, RCL-009) +- [x] Submit the journal using a dedicated repository-scoped Issues-only token and verify durable ingestion acknowledgement (RCL-006, RCL-007, RCL-009) +- [x] Reconcile public evidence and P-003/M-008 bookkeeping in the permanent corpus diff --git a/docs/capabilities/CAP-015-rumble-result-data/design.md b/docs/capabilities/CAP-015-rumble-result-data/design.md index 2d6b12f74..42cf944eb 100644 --- a/docs/capabilities/CAP-015-rumble-result-data/design.md +++ b/docs/capabilities/CAP-015-rumble-result-data/design.md @@ -28,4 +28,4 @@ CI serializes ingestion and is the sole writer of facts and projections on `main ## External evidence -The external `robocode-dev/rumble-data` repository holds the implementation and focused suite for RDA-001 through RDA-004. [rumble-data#4](https://github.com/robocode-dev/rumble-data/pull/4) added every-ranked-type matchmaking advice and catalog-synchronization coverage and was accepted at merge commit `18e916e4a381c8108568d7ca77e3e14d88dd4583`; M-007 is complete. [rumble-data#7](https://github.com/robocode-dev/rumble-data/pull/7) at `83e71d4` adds RDA-005 positive and negative validation and advice-generation evidence, including TwinDuel member disjointness while preserving repeated member slots within a team. Run `python -m unittest discover -s tests -v` in that repository to reproduce the evidence. During P-001/M-002, the external-evidence reconciliation set must include RDA-001 through RDA-005 before this criteria artifact can become active without changing the criterion meanings. +The external `robocode-dev/rumble-data` repository holds the implementation and focused suite for RDA-001 through RDA-004. [rumble-data#4](https://github.com/robocode-dev/rumble-data/pull/4) added every-ranked-type matchmaking advice and catalog-synchronization coverage and was accepted at merge commit `18e916e4a381c8108568d7ca77e3e14d88dd4583`; M-007 is complete. [rumble-data#7](https://github.com/robocode-dev/rumble-data/pull/7) at `83e71d4` adds RDA-005 positive and negative validation and advice-generation evidence, including TwinDuel member disjointness while preserving repeated member slots within a team. [rumble-data#10](https://github.com/robocode-dev/rumble-data/pull/10) corrects the GitHub issue-submitter extraction with focused RDA-001 evidence. CH-032 then proved the live path: [rumble-data#11](https://github.com/robocode-dev/rumble-data/issues/11) accepted the client batch, and `f25c02f20e2938545563a0d2a017e53e9a208a7e` published the resulting facts and projections. Run `python -m unittest discover -s tests -v` in that repository to reproduce the evidence. During P-001/M-002, the external-evidence reconciliation set must include RDA-001 through RDA-005 before this criteria artifact can become active without changing the criterion meanings. diff --git a/docs/capabilities/CAP-016-rumble-client/design.md b/docs/capabilities/CAP-016-rumble-client/design.md index 68ff68bc2..6b0a132ec 100644 --- a/docs/capabilities/CAP-016-rumble-client/design.md +++ b/docs/capabilities/CAP-016-rumble-client/design.md @@ -44,4 +44,4 @@ The primary distribution is a rebuildable container containing the pinned Tank R ## External evidence -[rumble-client#7](https://github.com/robocode-dev/rumble-client/pull/7) at `cec7c8b` holds focused RCL-001, RCL-002, and RCL-004 through RCL-011 evidence; retired RCL-003 has no active evidence obligation. Its tagged integration and unit tests cover configuration before repository access, one validated ranked snapshot, team-aware seeded selection, ranked/practice state separation, Battle Runner execution and replay evidence, durable journaling, and bounded Issues-only submission. Run `./gradlew --no-configuration-cache -PtankRoyaleSource=../tank-royale clean build` in that repository to reproduce the hermetic client and real Runner evidence. RCL-008 and RCL-009 remain deferred by the approved CH-031 split, so P-003/M-008 remains incomplete. During P-001/M-002, the external-evidence reconciliation set must include RCL-010 and RCL-011 before this criteria artifact can become active without changing the criterion meanings. +[rumble-client#7](https://github.com/robocode-dev/rumble-client/pull/7) at `cec7c8b` holds focused RCL-001, RCL-002, and RCL-004 through RCL-011 evidence; retired RCL-003 has no active evidence obligation. Its tagged integration and unit tests cover configuration before repository access, one validated ranked snapshot, team-aware seeded selection, ranked/practice state separation, Battle Runner execution and replay evidence, durable journaling, and bounded Issues-only submission. [rumble-client#8](https://github.com/robocode-dev/rumble-client/pull/8) adds the RCL-006 regression proof that a terminally rejected issue leaves its records retryable. CH-032 completed RCL-009 through [rumble-data#11](https://github.com/robocode-dev/rumble-data/issues/11): the client submitted its retained journal, received durable receipts, and removed only receipt-covered records. Run `./gradlew --no-configuration-cache -PtankRoyaleSource=../tank-royale clean build` in that repository to reproduce the hermetic client and real Runner evidence. RCL-008 remains deferred by the approved CH-031 split because the public catalog does not yet cover every supported runtime. During P-001/M-002, the external-evidence reconciliation set must include RCL-010 and RCL-011 before this criteria artifact can become active without changing the criterion meanings. diff --git a/docs/plans/P-003-rumble.md b/docs/plans/P-003-rumble.md index 6515b91da..d3c4b8c82 100644 --- a/docs/plans/P-003-rumble.md +++ b/docs/plans/P-003-rumble.md @@ -19,7 +19,7 @@ The milestones mirror the design's Change Proposal Roadmap in order. Each milest | M-005 | Tank Royale prepared for rumble | `behaviorVersion` exists server-side and in the schema; SPDX `license` field in the booter bot config; Battle Runner exposes battle results for the client; rumble game presets defined; deterministic replay-regression hook in place | done | CH-009; server/runner/booter contracts and focused acceptance evidence | | M-006 | `rumble-bots` repository live | Repository scaffolded under the community organization with validation CI, templates, and governance; a sample bot PR passes validation end to end | done | CH-010; `robocode-dev/rumble-bots#1` merged as `c735e6ff4`; 4 external focused tests and the validator smoke check pass | | M-007 | `rumble-data` repository live | Result inbox drained by CI into immutable raw facts; aggregation produces leaderboard, pairings, and matches-needed projections; dashboard published on Pages | done | CH-011; [robocode-dev/rumble-data#4](https://github.com/robocode-dev/rumble-data/pull/4) merged on 2026-08-03, providing catalog synchronization and ranked advice for every V1 game type | -| M-008 | Rumble client runs ranked battles | After the official Tank Royale 1.1.0 release, the client pulls the bot catalog and matchmaking advice, runs a ranked battle, and its submitted result lands in `rumble-data` via issue-ops with no human in the loop | todo | | +| M-008 | Rumble client runs ranked battles | After the official Tank Royale 1.1.0 release, the client pulls the bot catalog and matchmaking advice, runs a ranked battle, and its submitted result lands in `rumble-data` via issue-ops with no human in the loop | done | CH-032; [rumble-data#11](https://github.com/robocode-dev/rumble-data/issues/11) accepted the client journal and `f25c02f20e2938545563a0d2a017e53e9a208a7e` published its immutable facts and projections | | M-010 | GUI supports TwinDuel | The GUI game-type dialog can select and start the `TwinDuel` preset using the common game-type contract; it is shipped in Tank Royale 1.1.0 | done | CH-013; CAP-017/GTD-001 and GUI acceptance evidence | | M-009 | Rumble documentation published | User guides live under `/web/docs/rumble/` with one quickstart per audience: bot author, battle contributor, moderator | todo | | From fd574df91e96eb13cddc6955ae3ffc293712c7e0 Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Mon, 31 Aug 2026 20:29:06 +0200 Subject: [PATCH 12/12] docs(CH-032): digest live proof --- .../open-questions.md | 11 ------ changes/CH-032-rumble-live-proof/proposal.md | 39 ------------------- changes/CH-032-rumble-live-proof/tasks.md | 26 ------------- 3 files changed, 76 deletions(-) delete mode 100644 changes/CH-032-rumble-live-proof/open-questions.md delete mode 100644 changes/CH-032-rumble-live-proof/proposal.md delete mode 100644 changes/CH-032-rumble-live-proof/tasks.md diff --git a/changes/CH-032-rumble-live-proof/open-questions.md b/changes/CH-032-rumble-live-proof/open-questions.md deleted file mode 100644 index 651b05a3f..000000000 --- a/changes/CH-032-rumble-live-proof/open-questions.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -id: CH-032-open-questions -type: open-questions -status: open -links: [CH-032] -title: Open questions for CH-032 ---- - -# CH-032 — Open questions - -No contract question is open. The bot-catalog and contributor-registration pull requests are merged, and the public catalog, 1v1 advice, local replay evidence, and ranked journal are ready. The corrected token created and labeled issue [rumble-data#9](https://github.com/robocode-dev/rumble-data/issues/9), whose workflow was repaired in [rumble-data#10](https://github.com/robocode-dev/rumble-data/pull/10). The client correctly avoids duplicate posts while that issue is unacknowledged, but after the terminal rejection it never releases the retained records for retry. Repair that client implementation defect with focused evidence before resubmitting the journal. This prerequisite is not permission to weaken ADR-043's trust boundary. diff --git a/changes/CH-032-rumble-live-proof/proposal.md b/changes/CH-032-rumble-live-proof/proposal.md deleted file mode 100644 index a8f805d3e..000000000 --- a/changes/CH-032-rumble-live-proof/proposal.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -id: CH-032 -type: change -status: open -links: [P-003, M-008, CAP-014, CAP-015, CAP-016] -title: Prove live Rumble result ingestion ---- - -# CH-032 — Prove live Rumble result ingestion - -## What - -Populate the public Rumble catalog with a second reviewed 1v1 bot, register the `flemming-rumble-01` contributor identity, and prove one real ranked result reaches `rumble-data` through the client's Issues-only transport. - -## Why - -P-003/M-008 remains open solely for the live proof that CH-031 deliberately deferred. The official Tank Royale 1.1.0 release satisfies the release gate, while the locally built Runner continues to provide BR-049 for this proof. No Tank Royale release is needed. - -## Route - -Recommended route: full. P-003 requires every milestone to use its own proposal, and this change binds public cross-repository evidence before marking M-008 complete. Discovery would change the route only if a prior accepted result already proves the exact M-008 exit criterion for the registered identity and public catalog. - -## Plan - -Serves [P-003/M-008](../../docs/plans/P-003-rumble.md) without changing the accepted RBC, RDA, or RCL criterion meanings. - -## Scope - -- Add one source-only Python bot named `Vector 1.0.0` to `robocode-dev/rumble-bots`, reviewed and merged through its normal pull-request flow. -- Register `flemming-n-larsen` and the stable public client ID `flemming-rumble-01` in `robocode-dev/rumble-data`, reviewed and merged through its normal pull-request flow. -- Synchronize the reviewed catalog, run one real ranked 1v1 battle through the local Runner build, and submit it with a repository-scoped Issues read/write token. -- Verify the closed result issue, durable receipt, immutable raw fact, regenerated projections, and local replay and journal acknowledgement before digesting the evidence. - -## Non-goals - -- Publishing Tank Royale, Battle Runner, or a Rumble client distribution. -- Populating TwinDuel or melee, changing the engine pin, or changing any Rumble contract. -- Giving the client repository-content, branch, release, package, Pages, fact, or projection write access. -- Persisting a credential, replay, journal, local configuration, or generated cache in any repository. diff --git a/changes/CH-032-rumble-live-proof/tasks.md b/changes/CH-032-rumble-live-proof/tasks.md deleted file mode 100644 index c0f9ad8df..000000000 --- a/changes/CH-032-rumble-live-proof/tasks.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -id: CH-032-tasks -type: tasks -status: open -links: [CH-032] -title: Task breakdown for CH-032 ---- - -# CH-032 — Tasks - -- [x] Reserve CH-032 and branch from the accepted tip of `main` -- [x] Confirm the M-008 release gate, client implementation, catalog state, and contributor-registration contract -- [x] Capture the full-route proposal and selected live-proof scope -- [x] Commit and push the proposal, then open the required draft PR before implementation -- [x] Add and validate `Vector 1.0.0` in [rumble-bots#4](https://github.com/robocode-dev/rumble-bots/pull/4) (RBC-001) -- [x] Make the existing version-history test independent of unrelated active catalog entries -- [x] Make Vector fire after an aimed scan so the live proof exercises non-zero score components -- [x] Obtain human merge of the bot-catalog pull request, then verify the generated public entry -- [x] Register `flemming-rumble-01` through [rumble-data#8](https://github.com/robocode-dev/rumble-data/pull/8) (RDA-001) -- [x] Obtain human merge of the contributor-registration pull request -- [x] Synchronize the public catalog and verify 1v1 matchmaking advice (RCL-002, RCL-010) -- [x] Build the client against the local Tank Royale source and run one real ranked 1v1 battle with local replay evidence (RCL-005) -- [x] Correct the Rumble data issue-inbox account extraction and add focused regression evidence before resubmitting the retained journal (RDA-001, RCL-007, RCL-009) -- [x] Correct the Rumble client journal so a terminally rejected Issues-only batch is retryable, then resubmit the retained journal (RCL-006, RCL-007, RCL-009) -- [x] Submit the journal using a dedicated repository-scoped Issues-only token and verify durable ingestion acknowledgement (RCL-006, RCL-007, RCL-009) -- [x] Reconcile public evidence and P-003/M-008 bookkeeping in the permanent corpus