feat(core): schedule auth and content-auth enforcement on audius-mainnet-beta - #572
Open
rickyrombo wants to merge 2 commits into
Open
feat(core): schedule auth and content-auth enforcement on audius-mainnet-beta#572rickyrombo wants to merge 2 commits into
rickyrombo wants to merge 2 commits into
Conversation
…net-beta The new chain has no entry in the upgrade schedule, so #553's build would run it with no signer enforcement and no track-cid authorization, and mediorum would never attest. Schedule both at height 1: the genesis replay projects auth state and a cid claim for every migrated track, so nothing that exists is made unwritable, and no live block is ever produced under the relaxed rules. Mediorum's attest/require-userId decision moves from the environment name to the chain named in the embedded genesis. The prod build serves audius-mainnet-alpha-beta until the rollover and audius-mainnet-beta after, and attestations are refused before a chain's gate, so keying on "prod" would fail every audio upload on whichever chain lacked the gate. Keying on the genesis makes the switch flip with the genesis swap and nothing else. It also stops stage attesting on audius-testnet-alpha, which has no gate scheduled. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…thScheduled genesis.Read defaults unknown names to devnet, which turned content auth on for the mediorum test network (Env "test") and rejected its unattributed uploads. Unnamed environments get no gate, as before. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
Author
|
Verification against the 2026-08-25 artifact, run directly on the T7's sealed serve copy (
So enforcement at height 1 makes nothing that exists unwritable. The 560 tracks with no End-to-end coverage of the gated path is in the integration test PR that follows this one. |
rickyrombo
added a commit
that referenced
this pull request
Sep 9, 2026
… enforcement at step 10 Review fixes. The placeholder substitution had mangled OPENAUDIO_DELEGATE_PRIVATE_KEY in Appendix J; restored. Step 17 had bundled a pre-bootstrap prerequisite (#572) with a post-cutover cleanup (#232) under an "after 15" label; #572 now lives in step 3 with a rebase instruction, and step 17 is #232 alone. The enforcement checks move to the first migrated node in step 10 and name the real submission path and the real skew symptom (a commit timeout, not the pre-gate error text). Appendix C gains the claim-coverage check. Step 11 records, as unresolved, that the flusher stalls on the first post-snapshot track create under content auth. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
pkg/core/config/upgrades.gokeys activation heights by chain ID and has no entry foraudius-mainnet-beta. An unknown chain resolves to an empty schedule, so the rollover build in #553 would run the new chain with no signer enforcement (#450) and no track-cid authorization (#477), and mediorum would never attest a cid. The whole point of activating at the genesis rollover — the replay seedscore_auth_*and acore_auth_cidsclaim for every migrated track, so enforcement is safe from block 1 — was left unwired.Follow-on to the genesis migration; merge before the step 3 build in the runbook. Inert on
main: nothing changes untilprod.jsonnames the new chain.What
Schedule.
audius-mainnet-betagetsAuthEnforcementHeight: 1andContentAuthEnforcementHeight: 1. Both, because the content-auth check runs insidevalidateManageEntityAuth— scheduling content auth alone would silently enforce nothing. Height 1 rather than a later height so no live block is ever produced under the relaxed rules and there is no pre-enforcement window for unverified state to accumulate.audius-mainnet-alpha-betastays unscheduled, with a comment saying why it must.Mediorum follows the chain, not the environment.
IsContentAuthEnabled(env)was a per-environment list withprodoff. Flipping it on would have broken uploads: the same prod build serves the old chain until the rollover, attestations are refused at the mempool before a chain's gate (content attestations are not accepted before content auth is active), and transcode completion fails on attestation error. So the decision moves toconfig.ContentAuthScheduled(env), which reads the embedded genesis for the environment and asks the schedule for that chain ID. Onmainprod resolves toaudius-mainnet-alpha-beta→ off; on #553's branch it resolves toaudius-mainnet-beta→ on. No separate flag flip, and the two sides cannot disagree.Side effect worth knowing: stage was in the old list, but
audius-testnet-alphahas no gate scheduled, so stage mediorum has been attesting into a chain that refuses attestations. This turns stage off, matching core. If stage should have content auth, it gets a schedule entry, not a list entry.Verification
go test ./pkg/core/config/ ./pkg/common/green; newTestContentAuthScheduledFollowsEmbeddedGenesispins mediorum's answer to the schedule for every environment's genesis.TestUploadFile,TestUploadPlacement*,TestValidateTusUploadPassesWhenDiskHasRoomfail identically onmain(environment-dependent multi-node tests).🤖 Generated with Claude Code