{
  "schema": "trinity.onchain.surface.v1",
  "rule": "Web2 holds the product. The smart contract only holds SOL that must not be operator-trust.",
  "live_program_id": "aqE4LHxnVrwTxkpzXsgHSFM16nFs6gPqkLamLBZUynq",
  "reuse": "Kernel aqE4 stays. Wars pots are a second upgradeable program.",
  "wars_program_id": "Gv574JYHt5MRiXFsAT9r5R1KRwKYh8pQ8SGVcJ5oagph",
  "wars_upgrade_authority": "AvJLQtsVfGdVdsWoiMiScVGaJ7bTFKVHQ7BPZAPZybf",
  "on_chain": {
    "only": [
      "Wars escrow: init, deposit, concede, claim, refund",
      "PDA pot rent paid by the two players, not by program deploy"
    ],
    "instructions": ["init", "deposit", "concede", "claim", "refund"],
    "elf_ceiling_bytes": 78696,
    "grow_allowed_bytes": 2552,
    "remaining_cash_sol": 0.5,
    "total_with_existing_programdata_sol": 1.0
  },
  "web2": [
    "TIP journey, check-in, backup, restore",
    "Plaza, fog, desks, Fleet board, DAS colors",
    "Onion review packet; apply stays on trade.trinitytrading.xyz",
    "Wars galaxy, stars, shared board (/api/wars-room), practice TTT",
    "Timers, HUD, 51% map, visual accelerator",
    "Captain notes, Compact paper registry, memory export",
    "Talk / T-34 compute, laptop TCP"
  ],
  "do_not_put_on_chain": [
    "Compact Activation Registry until founder freeze — keep web2",
    "Captain-commitment SHA-256 — local export is enough",
    "Memory NFT mint until the user signs a Core collection",
    "TTT mint, Layer Zero, First Sail, pocket, trading-account",
    "Mission/Crank as the public swap path",
    "trinity_game draft — source only, reserved testnet address, not this wars program",
    "trinity_dao and genesis_dao — source only, placeholder ids are not pubkeys, execution moves nothing",
    "trinity_core and trinity_players — source only, placeholder ids, do not point at the live TTT mint"
  ],
  "drafts_not_deployed": [
    {
      "name": "trinity_game",
      "path": "/trinity-program/trinity-game/src/lib.rs",
      "program_id": "5hnL69pihmwEGsrn1jcfRTVXHezD3tv9xCw3aVfwfdWe",
      "note": "Anchor draft for players, planets, rescue, and a matched TTT battle pot. Testnet address reserved. Not built, not deployed, not wired to the site. Not the wars escrow. The keypair is outside this repo."
    },
    {
      "name": "trinity_dao",
      "path": "/trinity-program/trinity-dao/src/lib.rs",
      "program_id": null,
      "note": "Foundational Draft v0.1. declare_id is the placeholder TrinityDao111… and is not a valid program id. Not built, not deployed, not the wars escrow, not the trinity_game testnet address. No keypair. Executor stubs return success and move nothing. Quorum compares cast votes with themselves. execute does not require the vote to pass."
    },
    {
      "name": "genesis_dao",
      "path": "/trinity-program/genesis-dao/src/lib.rs",
      "program_id": null,
      "note": "Genesis variant. Placeholder id is not a pubkey. Execute still requires a founder signer, then marks the proposal executed without a CPI. Not deployed."
    },
    {
      "name": "trinity_core",
      "path": "/trinity-program/trinity-core/src/lib.rs",
      "program_id": null,
      "note": "Root GameState and reward vault draft. declare_id Trinity111… is not a valid program id. Not built, not deployed, not the wars escrow, not the trinity_game testnet address. No keypair. Do not pass the live TTT mint. Authority can transfer vault tokens to any recipient. config_locked does not remove that authority."
    },
    {
      "name": "trinity_players",
      "path": "/trinity-program/trinity-players/src/lib.rs",
      "program_id": null,
      "note": "Player and ship draft. Placeholder id is not a pubkey. Not deployed. Achievement burn is a real SPL burn in source and must not target the live mint. GameState is a hand copy and Account owner checks will reject a core-owned game state. ship_capacity is not enforced."
    }
  ]
}
