Skip to content

Fix browser-form result submission and verify publication before acknowledgement - #20

Merged
flemming-n-larsen merged 3 commits into
mainfrom
browser-form-verification
Oct 19, 2026
Merged

flemming-n-larsen merged 3 commits into
mainfrom
browser-form-verification

Conversation

@flemming-n-larsen

@flemming-n-larsen flemming-n-larsen commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Outside contributors can prepare a bounded plain text batch, open a short result-form link and paste the batch while signed in to GitHub. The client needs no submission token and retains results until a matching workflow receipt and identical canonical published fact have both been observed.

This includes the prepared browser-form implementation and fixes the four risks identified in the implementation review: ordinary comments cannot acknowledge results; rejected attempts cannot hide an open retry; discovery paginates the registered account's issues and verifies the complete JSON envelope; and a single oversized result fails without losing pending records. Prepared titles remain unique across restarts. Publication checks handle both raw facts and monthly rollups. JSON comparison preserves 64-bit selection seeds without floating-point rounding.

Validation

  • gradlew --no-configuration-cache -PtankRoyaleSource=C:/Code/rumble-client/tank-royale-source build installDist: passed, 66 tests including real-runner integration, using pinned Tank Royale commit 9c25770c02671d1f9d941aad312013562a441427.
  • HTTP adapter checks use a local HTTP server and cover anonymous reads, foreign/mismatched issues, discovery after page three, paginated comments, forged receipt text and rate-limit recovery. Journal checks cover rejected/open retries across restarts, delayed publication and interrupted publication verification. Canonical fact tests cover raw facts, rollups, wrong accounts and modified payloads.
  • The local verification image uses the published 0.2.0 runtime image by digest with the rebuilt pinned client distribution overlaid. Runtime preflight passed for Java 25, .NET 10, Python 3.14 and Node.js 24.
  • A real container battle completed: Crazy 1.0.0 versus Fire 1.0.0, 35 rounds, behavior version 1; battle ID 36561530-ee47-4b7e-9e31-db19c308fc1a. The batch uses registered client robocode-rumble-test-01; replay evidence and journal are retained locally. Repeated anonymous submit retained the same prepared batch.
  • Local validation using the canonical ingestion validator at data revision 895722a6363a07b727e6ff4b7a4788ac3a50cb7a with account robocode-rumble-test returned accepted. This is local schema/policy validation, not a published acceptance receipt.

Outside-account verification

The registered non-member robocode-rumble-test posted the genuine batch through rumble-data issue 25. Its event history shows the template label applied by that account and closure by GitHub Actions, without maintainer repair. The durable receipt accepts the expected battle ID. Canonical data commit 3f56dbe8bbe0e48903239eb2e774b6ef60a524bc contains the identical raw fact, and the corresponding Pages deployment succeeded.

The unchanged verification client recovered anonymously after two HTTP 500 responses: it found issue 25, verified the workflow receipt and canonical fact, and journalled one acknowledgement. A subsequent process observed no new receipts and prepared no batch; there is one result, one acknowledgement and zero pending records. No journal repair or repost was needed. The public ranking data now includes the battle, and the public client totals list one battle for robocode-rumble-test-01.

Focused canonical-validator checks rejected an unregistered account and invalid round count. Replaying the accepted envelope against an isolated checkout of the published facts returned accepted without changing tracked files. These are local server checks; no extra remote submissions were made. Full evidence and exact links are recorded in Tank Royale PR 284.

All current GitHub checks pass. Human review and integration remain outstanding. The current Tank Royale main uses behavior version 2; the client's pinned behavior-version-1 source passes all 66 tests. No clean-install onboarding journey is claimed.

Recommended route: simple (defect corrections under the accepted form-submission and publication-first contracts). README, architecture and design now describe the form handoff and receipt/publication checks. Existing missing index frontmatter in this repository prevents clue context from scanning its corpus; no methodology migration is included.

submit no longer creates issues through the GitHub API. It writes each batch to a plain text file under the state directory, split by serialized size as well as by the limit of sixty results, and prints the result form address with a unique title. A later run finds the posted issue by that title without a token, collects the receipts, and keeps unposted batches retryable without creating duplicates. Launchers, README, SECURITY and CHANGELOG no longer require RUMBLE_CLIENT_TOKEN.

Outside contributors cannot create a repository-scoped token, and the API drops the submission label for accounts without push access, so their issues were never processed. The form applies the label itself.

Cliewen-Route: direct
Cliewen-Recommendation: tracked
Cliewen-Override: user chose direct; the submission criteria change is recorded separately in tank-royale and this repository's own corpus is not updated here
Correlate form issues by registered account and full envelope, paginate public reads, and verify receipt claims against canonical raw facts or rollups. Keep open retries in flight across restarts and retain oversized records with an explicit error.

Cliewen-Route: simple
@flemming-n-larsen
flemming-n-larsen marked this pull request as ready for review October 19, 2026 18:02
@flemming-n-larsen
flemming-n-larsen merged commit 80af351 into main Oct 19, 2026
6 checks passed
@flemming-n-larsen
flemming-n-larsen deleted the browser-form-verification branch October 19, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant