@@ -9,6 +9,18 @@ adapter.
99- ` https://registry.cellscript.dev ` serves immutable bundles and static release
1010 JSON independently from the write database.
1111
12+ The Pudge test environment is a separate, ephemeral service:
13+
14+ - ` https://api.testnet.registry.cellscript.dev ` is the sandbox API;
15+ - ` https://objects.testnet.registry.cellscript.dev ` is its object origin;
16+ - ` https://testnet.cellscript.dev/registry ` is its ` noindex ` UI.
17+
18+ It uses a different Postgres volume, object volume, signing origin, wallet
19+ storage key, RPC identity, and Compose project. Do not put a network selector in
20+ the production Registry. ` REGISTRY_ENVIRONMENT=testnet-sandbox ` requires the
21+ dedicated origins and accepts only a Pudge/Testnet RPC. Unknown environments
22+ fail closed.
23+
1224Postgres is authoritative for publisher capabilities, namespace ownership,
1325artifact releases, orthogonal release states, evidence, jobs, idempotency, and
1426audit events. R2 or the filesystem adapter stores immutable content and static
@@ -155,8 +167,29 @@ The browser wallet directory lists Neuron, JoyID, imToken, CKBull, SafePal,
155167Ledger, imKey, OneKey, UTXO Global, Rei Wallet, Gate, and QuantumPurse. Runtime
156168connectivity is determined by CCC discovery. Directory entries without a live
157169connector use the external signed-payload handoff and never bypass backend
158- signature verification. The service accepts no testnet authorisation or
159- deployment mode.
170+ signature verification. Production accepts only mainnet authorisation and
171+ deployment evidence. The isolated Pudge Sandbox accepts only testnet evidence;
172+ the two origins make wallet challenges and capability signatures non-replayable
173+ across environments.
174+
175+ ## Pudge Sandbox Retention
176+
177+ Every sandbox release stores ` registry_environment = testnet-sandbox ` ,
178+ ` network = testnet ` , ` expires_at = created_at + 72h ` , and
179+ ` purge_after = expires_at + 24h ` . Public SQL and in-memory reads filter by
180+ ` expires_at ` even if maintenance is delayed. At expiry, the version-addressed
181+ static JSON is deleted; after the grace period, a source object is deleted only
182+ when no non-expired release references its snapshot hash. Database identity and
183+ audit rows remain as tombstones so abuse and replay investigations are not
184+ erased. Reads never extend TTL.
185+
186+ The sandbox additionally limits a wallet principal to 20 accepted publish
187+ attempts per 24 hours and one package coordinate to five; the ordinary IP,
188+ capability, namespace-cooldown, request-size, and snapshot-size controls still
189+ apply.
190+
191+ This policy cannot delete Pudge chain history or consume a deployed code Cell.
192+ It only removes the Registry index and its off-chain object bytes.
160193
161194## Release Admission
162195
@@ -198,7 +231,7 @@ cellc publish --artifact-manifest Artifact.toml
198231` CELLSCRIPT_CAPABILITY_PRIVATE_KEY_PKCS8_B64 ` supplies the delegated key in CI.
199232` CELLSCRIPT_REGISTRY_IDEMPOTENCY_KEY ` pins the exact retry key.
200233
201- ## Mainnet Deployment Evidence
234+ ## Network-Bound Deployment Evidence
202235
203236Executable publication begins at ` deployment_status = undeployed ` . A publisher
204237records a deployment by signing canonical JSON for:
@@ -207,19 +240,21 @@ records a deployment by signing canonical JSON for:
207240cellscript-registry-deployment / record_deployment
208241```
209242
210- The request must identify ` network = mainnet ` , the published executable hash,
211- equal Cell data hash, code hash, hash type, dep type, and OutPoint. Prior
212- verified-build evidence is mandatory.
243+ The request must identify the network fixed by the Registry environment
244+ (` mainnet ` in production, ` testnet ` in the Pudge Sandbox), the published
245+ executable hash, equal Cell data hash, code hash, hash type, dep type, and
246+ OutPoint. Prior verified-build evidence is mandatory.
213247
214- The API calls CKB mainnet ` get_live_cell(out_point, true, false) ` and fails
248+ The API confirms the configured RPC chain identity, calls
249+ ` get_live_cell(out_point, true, false) ` , and fails
215250closed unless the Cell is live and its data hash equals the published
216251executable. For ` hash_type = type ` , it serializes the returned Type Script with
217252Molecule and verifies its CKB Script hash against ` code_hash ` . Data-hash modes
218253require ` code_hash ` to equal the data hash. Success appends hash-addressed
219254evidence and sets only ` deployment_status = chain_verified ` .
220255
221- ` CKB_MAINNET_RPC_URL ` may override the default official mainnet RPC endpoint.
222- No testnet network value is accepted .
256+ ` CKB_RPC_URL ` configures the environment RPC. ` CKB_MAINNET_RPC_URL ` remains a
257+ production compatibility alias .
223258
224259## Registry Chain Commitments
225260
0 commit comments