docs(testnet): current-gen staging plan + prepared §6a re-run (Flashstack-ajv.6.3) - #64
Merged
Merged
Conversation
…-run Flashstack-ajv.6.3, the two halves that need no key. deployments/testnet-current-gen-plan.yaml — the plan scripts/deploy-testnet.mjs executes, written down: contract set, order, fees, nonce discipline, arguments. Every value is read off that script with a per-field line reference (§7 says to derive them there, not invent them in prose), so a reviewer can diff the file against the script instead of trusting it. evidence: slots are empty on purpose. It is deliberately NOT a Clarinet plan and says so loudly. Clarinet publishes source verbatim; on testnet that broadcasts contracts still carrying mainnet principals and aborts at publish time (§5.1). Different shape from the default.*-plan.yaml files beside it so the two cannot be confused. .gitignore — deployments/testnet-*.yaml matched the exact filename the bead asks for, so the file would have been silently untracked. Negated the same way testnet-plan.yaml already is. docs/TESTNET_STAGING.md §6c — the §6a replacement, pre-written so new txids drop straight in, keeping the Proven / NOT proven split. Fenced so its placeholder checkboxes cannot be misread as evidence; it asserts nothing. Two things found while writing it, both for the owner: 1. The re-run is not executable today by either route. Steps 1-3 publish names that already exist at ST3XQ5DM..., and a name is consumed permanently there (CONTRACT_INVENTORY §3). Route A (admin steps only, 300k uSTX) needs a step flag or a purpose-built script, because deploy-testnet.mjs is linear — and it does not literally satisfy "a run of the current deploy-testnet.mjs". Route B (fresh -v3 line, 53.31 STX) is not a rename in the script: stx-test-receiver-v2.clar:16 calls .flashstack-stx-core-v2 statically, so a -v3 core needs a -v3 receiver source too. 2. §6a's two remaining checklist items are not equal. "Unapproved receiver is rejected" needs no new contract. "Non-repaying receiver reverts" has no contract to run against at all — none exists for this core. Live state read before writing (sender ST3XQ5DM...): get-admin = deployer, get-pending-admin = none, get-reserve-balance = u50005000, is-approved-receiver = true, nonce 12, balance 946490000 uSTX. §6b's restore held. §7 and §8 updated: the plan file now exists, and next-action 4 (TESTNET_EQUIVALENT) landed in #55 — verified against the commit, 7521791, not assumed. Docs and one gitignore line only; no contract, no test, no Clarinet.toml touched. Suite 221/221 across 20 files (discovery unchanged). clarinet check 3.23.2: 211 contracts, 0 errors — identical to the clean tree at 737c659 measured in the same session, which gave 211/0 with a different warning count. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
mattglory
approved these changes
Sep 21, 2026
mattglory
left a comment
Owner
There was a problem hiding this comment.
Approving. Live state, the fee arithmetic (0.3 STX for A, 53.31 STX for B), the .gitignore reason, and the static-reference line all reproduce.
…ts it Owner picked route A. §6b already proves the property on this deployment, so the gap is assertion strength on the positive path, not a deployment — and B would rewrite contracts to fix a documentation problem. B is parked: staging flashstack-stx-pool-v3 is worth more than a -v3 rename. §6c's route table and the plan file's execution-decision block updated to say so, and to name deploy-testnet.mjs --steps=admin (PR #66) as what makes A executable. Recorded honestly rather than quietly: --steps=admin runs deploy-testnet.mjs's own Step 8 path — extracted into proveBC1(), not copied — but not the whole script, so it does not literally satisfy ajv.6.3's original "a run of the CURRENT deploy-testnet.mjs". That criterion was amended in Beads to say so openly. Consequence for the plan file, now stated in it: steps 1-7 stay unexecuted for this line, since they are already on chain from the §6a run. Only the 8a/8b/8c evidence: slots get filled. Steps 1-7 remain the written record of how that deployment was produced, and the plan a new line would follow. Docs only; the YAML still parses. Co-Authored-By: Claude Opus 5 (1M context) <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.
The two halves of
Flashstack-ajv.6.3that need no key. Docs and one.gitignoreline — no contract, no test, noClarinet.toml.What's here
deployments/testnet-current-gen-plan.yaml— the planscripts/deploy-testnet.mjsexecutes, written down: contract set, order, fees, nonce discipline, arguments. Every value is read off that script with a per-field line reference, because §7 says to derive them there rather than invent them in prose — so you can diff the file against the script instead of trusting it. Theevidence:slots are empty on purpose.It is deliberately not a Clarinet plan and says so at the top. Clarinet publishes source verbatim; on testnet that broadcasts contracts still carrying mainnet principals and aborts at publish time (§5.1). It has a different shape from the
default.*-plan.yamlfiles beside it so the two can't be confused.docs/TESTNET_STAGING.md§6c — the §6a replacement, pre-written so new txids drop straight in, keeping the Proven / NOT proven split that makes §6a good. It's inside a fenced block so its placeholder checkboxes can't be misread as evidence. It asserts nothing..gitignore—deployments/testnet-*.yamlmatched the exact filename the bead asks for, so the file would have been committed-looking and silently untracked. Negated the same waytestnet-plan.yamlalready is.Two things found while writing it — both are yours to decide
1. The re-run isn't executable today by either route. Steps 1–3 publish names that already exist at
ST3XQ5DM…, and a name is consumed permanently at a principal whether or not the publish took effect (CONTRACT_INVENTORY§3).deploy-testnet.mjsis linear with no step selection — needs a step flag or a purpose-built script (precedent:deploy-testnet-bc1-negative.mjs). Doesn't literally satisfy "a run of the currentdeploy-testnet.mjs".-v3line, full 10-step runstx-test-receiver-v2.clar:16calls.flashstack-stx-core-v2statically, so a-v3core needs a-v3receiver source too.I'd take A with a
--stepsflag: the gap is BC1 assertion strength, and B rewrites contracts to fix a documentation problem. But it's your call, and it changes what ajv.6.3 can claim.2. §6a's two remaining checklist items aren't equal. "Unapproved receiver is rejected" needs no new contract. "Non-repaying receiver reverts" has nothing to run against — no non-repaying receiver exists for this core; one has to be written and published.
Live state, read before writing
Sender
ST3XQ5DM…, 2026-09-21:get-admin= deployer,get-pending-admin=none,get-reserve-balance=u50005000,get-fee-basis-points=u5,is-approved-receiver=true, nonce 12, balance946490000µSTX. §6b's restore held and the §6a deployment is intact.Also verified rather than assumed: next-action 4 (
TESTNET_EQUIVALENT) landed in #55 — commit7521791.Checks
clarinet check3.23.2: 211 contracts, 0 errors. The clean tree at737c659, measured in the same session, gives the same 211/0 (warning count differed, 214 vs 202 — the known nondeterminism).Clarinet.tomluntouched.clarinet checkparsesdeployments/without choking on the new file — that was the one real risk in adding it.🤖 Generated with Claude Code