{"ok":true,"promotionPlan":{"schema":"odei.daorg.promotion-plan.v1","version":"2026-05-15","self":"/api/daorg/runtime/promotion-plan","state":"staged","operationalComplete":false,"summary":"DAOrg is product-live as a public governance surface, but production promotion still depends on the explicit gates below.","authority":{"mode":"live","facadeMode":false,"source":"env"},"readiness":{"state":"live-ready","liveReady":true,"publicReadReady":true},"syncContract":{"schema":"odei.daorg.sync-contract.v1","status":"integration-in-progress","operationalComplete":false,"staged":["local-app-proof-producer","rewards-lane"],"blockers":[],"localAppHandoff":{"schema":"odei.daorg.local-app-handoff.v1","state":"staged","handoffHash":"sha256:502721b20e640e75ce807d6a0fdec44318e6b5db0c3ac891f179bb7c0f1462da"}},"blockers":[],"staged":["local-app-proof-producer","daorg-native-reward-receipt"],"gates":[{"id":"authority-and-wallet-writes","label":"Authority and wallet writes","state":"pass","owner":"DAOrg operator","summary":"Runtime readiness allows verified holder writes.","evidence":["/api/daorg/runtime/readiness","/api/daorg/runtime/status"],"nextAction":"Run a live motion with a verified holder."},{"id":"app-session-bridge","label":"app.odei.ai session bridge","state":"pass","owner":"app.odei.ai","summary":"app.odei.ai can hand a verified holder/operator session into DAOrg.","evidence":["https://app.odei.ai/auth/daorg/session-handoff","/api/daorg/auth/app-handoff"],"nextAction":"Keep app and DAOrg holder identity on the same boundary."},{"id":"local-app-proof-producer","label":"Local app proof producer","state":"staged","owner":"ODEI local app","summary":"The local ODEI app is still in development; DAOrg treats private execution proof production as staged until the app emits stable proof artifacts.","evidence":["/api/daorg/runtime/local-proof-contract","https://app.odei.ai/execution-proof.json","https://app.odei.ai/runtime-receipt.json","https://app.odei.ai/runtime-heartbeat.json"],"nextAction":"Emit execution proof, runtime receipt, and runtime heartbeat as public-safe artifacts."},{"id":"motion-to-receipt-cycle","label":"Motion to receipt cycle","state":"pass","owner":"DAOrg","summary":"A production cycle needs a motion, holder signal, verdict, and proof-indexed public receipt.","evidence":["/daorg/proposals","/api/daorg/proofs","/api/daorg/proposals/:tid/proof"],"nextAction":"Run the first end-to-end live motion, signal, verdict, and receipt cycle."},{"id":"daorg-native-reward-receipt","label":"DAOrg-native reward receipt","state":"staged","owner":"DAOrg rewards lane","summary":"Rewards are live operationally, but the DAOrg-native contribution proof to reward receipt loop is still being formalized.","evidence":["https://daorg.odei.ai/api/daorg/rewards/contract","https://daorg.odei.ai/api/daorg/rewards/paid","https://daorg.odei.ai/api/daorg/rewards/verifier","https://daorg.odei.ai/api/daorg/rewards/receipts"],"nextAction":"Close the first contribution proof to reward receipt cycle and pass the verifier before calling rewards fully native."},{"id":"rollback-validation","label":"Rollback validation","state":"pass","owner":"DAOrg operator","summary":"Deploy tooling can snapshot the live runtime, validate rollback targets, and restore NodeBB config before theme rollback.","evidence":["bash deploy/gcp/odei-daorg-remote.sh backup-check latest"],"nextAction":"Validate the latest production snapshot before every high-risk promotion."}],"firstLiveCycle":["Open the motion","Collect holder signal","Prepare agent verdict","Attach local proof","Close public receipt","Settle reward or execution"],"launchRunbook":{"schema":"odei.daorg.launch-runbook.v1","version":"2026-05-16","self":"/api/daorg/runtime/promotion-plan","state":"staged","readyToRun":false,"readySteps":3,"totalSteps":6,"blockers":[],"staged":["local-proof","public-receipt","settle-reward-or-execution"],"summary":"This runbook shows the exact first production loop and the evidence still needed before DAOrg can be called operationally complete.","completionRule":"The first production loop is complete only after motion, holder signal, agent verdict, local proof or reward proof, public receipt, and settlement or execution state are all indexed.","nextAction":"Attach local proof: Emit the local proof artifacts from the app release.","steps":[{"id":"open-motion","label":"Open the motion","owner":"DAOrg operator","state":"pass","artifact":"Motion Studio draft or governance topic","evidence":"Stable motion id, title, decision question, and execution path","href":"/daorg/studio","nextAction":"Publish the first production motion."},{"id":"holder-signal","label":"Collect holder signal","owner":"Holders and humans","state":"pass","artifact":"Weighted signal on the motion","evidence":"Wallet-bound votes with visible for, against, and abstain totals","href":"/daorg/live","nextAction":"Let holders confirm the motion outcome."},{"id":"agent-verdict","label":"Prepare agent verdict","owner":"Agent review lane","state":"pass","artifact":"Decision verdict packet","evidence":"Agent-readable summary, public proof link, and holder-readable decision state","href":"/api/daorg/proofs","nextAction":"Publish the verdict with proof attached."},{"id":"local-proof","label":"Attach local proof","owner":"ODEI local app","state":"staged","artifact":"Runtime proof, receipt, or heartbeat","evidence":"Public-safe execution artifact with stable hash and redacted summary","href":"/api/daorg/runtime/local-proof-contract","nextAction":"Emit the local proof artifacts from the app release."},{"id":"public-receipt","label":"Close public receipt","owner":"DAOrg","state":"staged","artifact":"Proof-indexed decision or reward receipt","evidence":"Receipt hash, public proof URL, final state, and linked motion id","href":"/api/daorg/rewards/receipts","nextAction":"Connect proof ledger with either execution proof or reward receipt."},{"id":"settle-reward-or-execution","label":"Settle reward or execution","owner":"ODEI and DAOrg","state":"staged","artifact":"Reward receipt or execution state","evidence":"Reward settlement, execution result, or explicit no-reward decision","href":"https://daorg.odei.ai/api/daorg/rewards/contract","nextAction":"Close the first contribution proof to reward receipt cycle."}],"runbookHash":"sha256:9b66b5acd7d4c6bb000e063ac103a807ed99999cd6cd16e478407eb1053b382e"},"promotionRule":"Only call DAOrg production-complete when every promotion gate is pass and the sync contract is operational-complete.","nextAction":"Finish staged gates, then run the first live motion-to-receipt cycle.","routes":{"promotionPlan":"/api/daorg/runtime/promotion-plan","claimPolicy":"/api/daorg/runtime/claim-policy","runtimeReadiness":"/api/daorg/runtime/readiness","runtimeSyncContract":"/api/daorg/runtime/sync-contract","contractRegistry":"/api/daorg/contracts","handoffMap":"/api/daorg/runtime/handoff-map","localProofContract":"/api/daorg/runtime/local-proof-contract","rewardsContract":"https://daorg.odei.ai/api/daorg/rewards/contract","rewardFinalityVerifier":"https://daorg.odei.ai/api/daorg/rewards/verifier","rewardReceiptIndex":"https://daorg.odei.ai/api/daorg/rewards/receipts","rewardReceiptFinalityTemplate":"https://daorg.odei.ai/api/daorg/rewards/receipts/{tid}/finality"},"planHash":"sha256:2c29e3b6e82e46ed5c9600479aed2b1a6f226d93b8cbf4e41e2c3b2fbac85677"}}