Skip to content

ci: automate release acceptance and clarify installation - #332

Merged
DavidHLP merged 17 commits into
mainfrom
chore/release-acceptance-automation
Oct 27, 2026
Merged

DavidHLP merged 17 commits into
mainfrom
chore/release-acceptance-automation

Conversation

@DavidHLP

@DavidHLP DavidHLP commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Problem and changes

The installation entry points created configuration before the clean-install guide required it to be absent, and release guidance still described the published baseline as unreleased. Route readers to released images, a separate empty-volume install, or the existing upgrade path before configuration; pin ordinary installation to v1.0.4 and connect durable downloads/checksums/signatures to existing TLS/Judge/readiness/rollback gates.

Require real migration and business acceptance in ci-ok for selected runtime/frontend/install/full-release changes. A real MySQL fresh/upgrade/FK/backfill/backup/isolation drill precedes one isolated stack running actual Auth, Management, Console and Judge services. Generated identities use expiring manager permissions and an ordinary USER participant; artifacts contain only sanitized JSON reports.

Fix authenticated mutation replay by attaching the rotated CSRF token after refresh while retaining the payload, account binding and single retry. Preserve server errors on internal App ERROR dispatches instead of masking RPC failures as 401; ordinary requests, including direct /error, remain protected. Admin readiness checks the problem-read/test-case-write consumers. Submission waits for both projection consumers before its launcher readiness marker, with a bounded discovery deadline and current-start log offsets. Discovery checks never invoke RPC methods or retry writes.

Prepare owner versions 1.0.5 consistently in the seven owner/reactor declarations and strict supply-chain contract for the next complete source-matched image set. The seven prospective tags were checked absent; existing v1.0.4 tags/assets are unchanged.

Add read-only eight-asset packaging from exact clean source and complete signed nine-image evidence. Bind evidence to the exact successful canonical ci.yml main run, verify hashes/signatures/provenance/scan and every promoted tag digest, reject incomplete/tampered/conflicting inputs, and preserve identical outputs. The tool does not build, tag or publish.

Validation

CI 40521143534 completed successfully at exact head effb087980b3659c4e6e03c27972483a94911afe: 29 successful jobs including ci-ok; publish skipped.

  • Fresh/upgrade migration safety passed against real MySQL.
  • Fresh empty-volume installation and all 14 real browser/Judge checks passed: login/editor, submission HTTP 200 and AC, terminal WA, admin create/edit/nonempty tags/clearing/readback/transaction rollback/Console visibility, rejudge Pending→Accepted, contest registration/start/submission and final rank 1/solved 1/score 110 with FINISHED status.
  • Sanitized acceptance artifact and business job.
  • Backend feature matrices, nine Docker builds/scans, secret scan, frontend/shared-package checks, contract compatibility, governance and corpus validation passed.
  • Focused discovery/security regressions passed. The ERROR-dispatch test first reproduced 401 instead of 500, then passed with ordinary-route authentication preserved.
  • Read-only packaging against released v1.0.4 produced all eight assets with matching payload checksums/source archive. Offline completeness, tamper, workflow identity, tag existence/digest, idempotency and no-overwrite contracts passed. A subsequent live external crypto recheck failed closed without changing prepared or published output.

Formal GitHub Release creation and production deployment are outside this change. Main-only protection was applied after acceptance succeeded and independently read back: require PR, ci-ok from Actions app 15368 with strict up-to-date checks, zero additional approving reviews, admin enforcement, no force pushes or deletion. Code-owner and last-push approvals are not required. The local retained-fixture recheck also passed all 14 checks using the supported system-Chromium override; hosted acceptance used the locked browser. Cleanup is verified: no owned containers or PM2 apps remain, the empty private daemon is stopped, and all five disposable volumes are preserved.

External check note: GitGuardian reports a Password finding at historical commit f62cba8, scripts/ci/business-acceptance.sh line 60. That line creates the disposable participant password at runtime using secrets.token_hex(20); the committed prefix/generator expression is not a usable credential. The external result remains failed and was not disabled, dismissed or represented as passed. Required ci-ok and all 29 CI jobs passed.

Traceability: DAV-72.

@gitguardian

gitguardian Bot commented Oct 27, 2026

Copy link
Copy Markdown

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
39147314 Triggered Username Password f62cba8 scripts/ci/business-acceptance.sh View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

@DavidHLP
DavidHLP marked this pull request as ready for review October 27, 2026 15:36
@DavidHLP
DavidHLP merged commit 4a2ce8e into main Oct 27, 2026
30 of 31 checks passed
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-27T15:37:58.474460Z effb087 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

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