{
  "openapi": "3.1.0",
  "info": {
    "title": "Programmable Custom Launch API V3 general hook profile",
    "version": "3.3.9",
    "summary": "General project-owned Uniswap v4 hook graph request contract.",
    "description": "Public CLI 3.3.9 and API contract for live/default profile 3.3.0. Explicit profile 3.4.0 material remains preparatory and the live backend rejects it until independent activation. Pending 3.4.0 preserves arbitrary project-owned token, hook and multi-contract targets while requiring four to sixteen targets inclusive of the frozen programmable:settlement-fee-vault:v1 module and its reciprocal route binding. Exact 3.3.0 and earlier resources retain their immutable compatibility semantics. CLI, client and model checks only prepare and bind a request; the server remains the behavior, fee-path and authorization authority. No result is an audit, honeypot guarantee, universal safety guarantee, liquidity claim or universal compatibility claim.",
    "license": {
      "name": "MIT",
      "identifier": "MIT"
    }
  },
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "servers": [
    {
      "url": "https://api.programmable.market",
      "description": "Production API origin for live profile 3.3.0. Pending profile 3.4.0 remains disabled."
    }
  ],
  "externalDocs": {
    "description": "Custom Launch API existing-project integration guide",
    "url": "https://programmable.market/docs/developers/custom-launch#existing-project-integration"
  },
  "security": [
    {
      "CustomLaunchApiKey": []
    }
  ],
  "x-programmable-availability": {
    "status": "live",
    "publicAuthorized": true,
    "liveContract": {
      "cliReleaseVersion": "3.3.9",
      "profileVersion": "3.3.0",
      "discoveryAuthority": "https://programmable.market/.well-known/programmable.json"
    },
    "publicCreate": {
      "status": "live",
      "path": "/v3/custom-launches",
      "httpStatus": 202,
      "replayHttpStatus": 200,
      "retryableErrors": [
        429,
        503
      ]
    },
    "publicCapabilities": {
      "status": "live",
      "path": "/v3/capabilities",
      "authentication": "none"
    },
    "publicFinalizedMetadata": {
      "status": "live",
      "path": "/v3/finalized-custom-launches",
      "authentication": "none",
      "finalizedOnly": true
    },
    "publicPreflight": {
      "status": "live",
      "path": "/v3/custom-launches/preflight",
      "httpStatus": 200,
      "authentication": "bearer-api-key",
      "requiredScope": "custom-launch:create",
      "quotaConsumed": false,
      "quotaConsumedMeaning": "no-launch-creation-quota-or-durable-reservation",
      "authenticatedRequestRateBudgetConsumed": true,
      "nonceAllocated": false,
      "persisted": false
    },
    "stableProductionVersion": "3",
    "stableOpenApiUrl": "https://programmable.market/openapi/custom-launch-v3.json",
    "freshWritesOnlyProfileVersion": "3.3.0",
    "pendingProfileVersion": "3.4.0",
    "preparatoryProfileCliReleaseVersion": "3.3.9",
    "walletHandoffEvidenceGate": {
      "decisionAuthority": "api-server",
      "clientChecks": "preparation-only",
      "requiredForProfileVersion": "3.4.0",
      "walletHandoffRequiresVerifiedEvidence": false,
      "configurationIsExecutionEvidence": false,
      "requiredPlatformFeeConformanceStatus": "verified",
      "nonFeeVectorsMayRemainUnverified": true,
      "evidenceAuthority": "platform-runtime-executor",
      "signedExecutionReceiptRequired": true,
      "notConfiguredDisposition": "claims_remain_unverified",
      "unavailableDisposition": "claims_remain_unverified",
      "executedFeeFailureDisposition": "blocks_wallet_handoff",
      "executedHardInvariantFailureDisposition": "blocks_wallet_handoff",
      "feeBehaviorClaim": false,
      "tenBpsClaimRequiresExactPerLaunchVerifiedFeePathEvidence": true,
      "claimScope": "exact-launch-and-stamped-poolkey-only",
      "mandatoryServerGates": [
        "static-hard-block-policy",
        "exact-router-simulation"
      ],
      "localOrModelApprovalAccepted": false
    },
    "activationBlockers": [
      "backend-profile-3.4-activation",
      "well-known-profile-default-flip",
      "independent-profile-3.4-capability-and-route-probes"
    ]
  },
  "x-programmable-agent-integration": {
    "schemaVersion": "programmable.custom-launch-agent-remediation-catalog.v1",
    "startUrl": "https://programmable.market/.well-known/programmable.json",
    "remediationCatalogUrl": "https://programmable.market/policies/custom-launch-agent-remediation-v1.json",
    "packConfigSchemaUrl": "https://programmable.market/schemas/custom-launch/v3/pack-config.json",
    "guideUrl": "https://programmable.market/docs/developers/custom-launch#existing-project-integration",
    "capabilitiesUrl": "https://api.programmable.market/v3/capabilities",
    "finalizedMetadataUrl": "https://api.programmable.market/v3/finalized-custom-launches",
    "preflightUrl": "https://api.programmable.market/v3/custom-launches/preflight",
    "requiredCommandOrder": [
      "pack",
      "validate --remote",
      "submit",
      "status --watch --until authorized",
      "status --watch --until finalized"
    ],
    "quickstart": [
      "pack",
      "validate --remote",
      "submit",
      "status --watch --until authorized",
      "wallet",
      "status --watch --until finalized"
    ],
    "apiKeyEnvironmentVariable": "PROGRAMMABLE_API_KEY",
    "apiKeyPlaceholder": "$PROGRAMMABLE_API_KEY",
    "apiKeyContainsPolicy": false,
    "authenticatedApiOrigin": "https://api.programmable.market",
    "apiOriginOverride": false,
    "preflightAndSubmitCapabilitiesFailClosedBeforeApiKey": true,
    "manualProjectAllowlist": false,
    "automaticAdmission": true,
    "automaticRouterSimulation": true,
    "clientChecks": "preparation-only",
    "decisionAuthority": "api-server",
    "walletAuthorizationGate": {
      "requiredForProfileVersion": "3.4.0",
      "walletHandoffRequiresVerifiedEvidence": false,
      "configurationIsExecutionEvidence": false,
      "requiredPlatformFeeConformanceStatus": "verified",
      "nonFeeVectorsMayRemainUnverified": true,
      "evidenceAuthority": "platform-runtime-executor",
      "signedExecutionReceiptRequired": true,
      "notConfiguredDisposition": "claims_remain_unverified",
      "unavailableDisposition": "claims_remain_unverified",
      "executedFeeFailureDisposition": "blocks_wallet_handoff",
      "executedHardInvariantFailureDisposition": "blocks_wallet_handoff",
      "mandatoryServerGates": [
        "static-hard-block-policy",
        "exact-router-simulation"
      ],
      "tenBpsClaimRequiresExactPerLaunchVerifiedFeePathEvidence": true,
      "feeBehaviorClaim": false,
      "claimScope": "exact-launch-and-stamped-poolkey-only",
      "localOrModelApprovalAccepted": false
    },
    "remotePreflight": {
      "quotaConsumed": false,
      "quotaConsumedMeaning": "no-launch-creation-quota-or-durable-reservation",
      "authenticatedRequestRateBudgetConsumed": true,
      "nonceAllocated": false,
      "persisted": false,
      "walletSignatureRequiredLater": true,
      "walletBroadcastByService": false
    },
    "walletSigning": "separate-controller-action",
    "pendingProfile3_4SubmissionEnabled": false
  },
  "x-programmable-profile": {
    "profileId": "programmable.direct-native-hook-graph.v1",
    "profileRevision": 3,
    "profileVersion": "3.3.0",
    "compatibleProfileVersions": [
      "3.2.0",
      "3.1.0",
      "3.0.0",
      "2.0.0"
    ],
    "productionLaunchAuthorized": true,
    "minimumTargets": 3,
    "maximumTargets": 16,
    "minimumHookPermissionMask": 0,
    "maximumHookPermissionMask": 16383,
    "projectOwnedToken": true,
    "projectOwnedHook": true,
    "platformAdmissionReceiptRequired": true,
    "routerSimulationRequiredBeforeAuthorization": true,
    "serverVerifiedEvidenceRequiredForPositiveClaims": true,
    "safetyClaim": false,
    "feeBehaviorClaim": false
  },
  "x-programmable-pending-profile": {
    "profileId": "programmable.direct-native-hook-graph.v1",
    "profileRevision": 3,
    "profileVersion": "3.4.0",
    "compatibleProfileVersions": [
      "3.3.0",
      "3.2.0",
      "3.1.0",
      "3.0.0",
      "2.0.0"
    ],
    "activationStatus": "preparatory-not-live",
    "liveProfileVersion": "3.3.0",
    "availableForFreshWrites": false,
    "productionLaunchAuthorized": false,
    "minimumTargets": 4,
    "maximumTargets": 16,
    "minimumHookPermissionMask": 0,
    "maximumHookPermissionMask": 16383,
    "projectOwnedToken": true,
    "projectOwnedHook": true,
    "platformAdmissionReceiptRequired": true,
    "routerSimulationRequiredBeforeAuthorization": true,
    "serverVerifiedEvidenceRequiredForPositiveClaims": true,
    "safetyClaim": false,
    "feeBehaviorClaim": false,
    "canonicalSettlementFeeModule": {
      "moduleId": "programmable:settlement-fee-vault:v1",
      "releaseBindingSha256": "sha256:39ccdfdf8cd61620bf5c62bf07fb8428adbd66d2608b1cf3ad583343116d7ed9",
      "sourceSha256": "sha256:0a01ee8c22d103343d14b1d3890902e3edeecef25ea84a0f03f23a3fe8f1042b",
      "creationBytecodeSha256": "sha256:7b0d51612be90023839f36cf28ae56963d8146d28ff441dd2a20195d56238b81",
      "creationBytecodeKeccak256": "0xdbc32e835739b50f33a101a8927008fc46af4c11604f7a5da006e5c56288b21e",
      "runtimeBytecodeSha256": "sha256:980c0eec1017a7dbbd9010935107440125070a0b1fa4688bca92754e2bf1e649",
      "runtimeBytecodeKeccak256": "0x92620fe3f83839334c9a264bea5bfcc819868ca5607cbd2260e5a9664dbd7554",
      "compiler": {
        "version": "0.8.26+commit.8a97fa7a",
        "evmVersion": "paris",
        "optimizer": {
          "enabled": true,
          "runs": 1000
        },
        "viaIR": false,
        "metadata": {
          "bytecodeHash": "none",
          "appendCBOR": false
        }
      },
      "constructor": "graphFactory",
      "initializer": "bindRoute(address) with exact route-target locator",
      "reciprocalRoute": "exactly one route constructor or initializer locator back to the vault; settlementFeeVault() behavior is verified server-side"
    }
  },
  "x-programmable-partner-credentials": {
    "schemaVersion": "programmable.partner-public-contract.v1",
    "environmentVariable": "PROGRAMMABLE_API_KEY",
    "credentialFormats": [
      "pm_live_<key>",
      "pm_partner_root_<22-char-key-id>_<43-char-secret>",
      "pm_partner_<22-char-key-id>_<43-char-secret>"
    ],
    "canonicalLaunchRoutes": [
      "GET /v3/capabilities",
      "POST /v3/custom-launches/preflight",
      "POST /v3/custom-launches",
      "GET /v3/custom-launches",
      "GET /v3/custom-launches/{launchId}"
    ],
    "launchScopes": [
      "custom-launch:create",
      "custom-launch:read"
    ],
    "rootOnlyScope": "partner-subkeys:manage",
    "rootSubkeyRoutes": [
      "GET /v1/partner/subkeys",
      "POST /v1/partner/subkeys",
      "POST /v1/partner/subkeys/{subkeyId}/rotate",
      "DELETE /v1/partner/subkeys/{subkeyId}"
    ],
    "permitReissueDispositionCredentialKind": "wallet-only",
    "metadataPolicySameAsWalletKeys": true,
    "controllerWallet": {
      "walletKey": "must-equal-key-wallet-binding",
      "partnerCredential": "selected-by-exact-request",
      "mustReviewSignAndBroadcast": true
    },
    "launchHistoryVisibility": {
      "root": "all-partner-attributed-root-and-subkey-launches",
      "subkey": "stable-subkey-lineage-only",
      "rootAggregatesSubkeys": true,
      "rotationPreservesLineageHistory": true,
      "newDistinctSubkeyStartsIsolatedLineage": true,
      "revokedCredentialCanAuthenticate": false
    },
    "secretDelivery": "issue-and-rotation-response-only",
    "walletSigningAuthority": false,
    "walletBroadcastAuthority": false,
    "gateBypassAuthority": false,
    "adminProvisioning": {
      "authentication": "website-bff-assertion-v2",
      "authorization": "server-configured-privy-user-wallet-pair-allowlist",
      "clientMaySelfAuthorize": false
    },
    "attributionResponseField": "partnerAttribution",
    "attributionSchemaVersion": "programmable.launch-partner-attribution.v1",
    "callerSuppliedAttributionAccepted": false,
    "attributionIsVerificationOrSafetyClaim": false
  },
  "x-programmable-admission-policy": {
    "currentProfileVersion": "3.3.0",
    "pendingProfileVersion": "3.4.0",
    "legacyExactProfileVersions": [
      "3.2.0",
      "3.1.0",
      "3.0.0",
      "2.0.0"
    ],
    "legacySemantics": "readable-and-byte-identical-retryable-only",
    "manualProjectAllowlist": false,
    "hardBlockFindingRules": [
      {
        "code": "RUNTIME_CALLCODE",
        "targetRoles": [
          "any"
        ]
      },
      {
        "code": "RUNTIME_SELFDESTRUCT",
        "targetRoles": [
          "any"
        ]
      },
      {
        "code": "SOURCE_SELFDESTRUCT_SURFACE",
        "targetRoles": [
          "any"
        ]
      },
      {
        "code": "V4_CALLBACK_AUTHENTICATION_MISSING",
        "targetRoles": [
          "hook"
        ]
      },
      {
        "code": "V4_CALLBACK_AUTHENTICATION_INVALID",
        "targetRoles": [
          "hook"
        ]
      },
      {
        "code": "V4_CALLBACK_POOL_MANAGER_MISMATCH",
        "targetRoles": [
          "hook"
        ]
      },
      {
        "code": "V4_ENABLED_CALLBACK_IMPLEMENTATION_MISSING",
        "targetRoles": [
          "hook"
        ]
      }
    ],
    "needsEvidenceFindingCodes": [
      "RUNTIME_CREATE",
      "RUNTIME_CREATE2",
      "SOURCE_TARGET_ANALYSIS_INCOMPLETE",
      "V4_CALLBACK_AUTHENTICATION_REVIEW_REQUIRED",
      "RUNTIME_DELEGATECALL",
      "SOURCE_PROXY_OR_UPGRADE_SURFACE",
      "SOURCE_MUTABLE_PAUSE_SURFACE",
      "SOURCE_MUTABLE_BLOCKLIST_SURFACE",
      "SOURCE_MUTABLE_TAX_OR_FEE_SURFACE",
      "SOURCE_MUTABLE_TRANSFER_RESTRICTION",
      "SOURCE_MUTABLE_ADMIN_SURFACE",
      "SOURCE_PUBLIC_MINT_SURFACE",
      "SOURCE_EXTERNAL_DEPENDENCY_SURFACE",
      "SOURCE_TRANSFER_FEE_SURFACE",
      "SOURCE_LIQUIDITY_LOCK_OR_CUSTODY_SURFACE"
    ],
    "advancedSurfacesAreEvidenceDuties": [
      "proxy-or-delegatecall",
      "mint-tax-pause-or-transfer-controls",
      "liquidity-custody-or-locking",
      "return-delta-custom-accounting"
    ]
  },
  "x-programmable-funding-boundary": {
    "modes": [
      "none",
      "wallet-transaction-value",
      "eip-3009-receive-with-authorization"
    ],
    "descriptorSchemaVersion": "programmable.funding-authorization-descriptor.v1",
    "authorizationPatchSchemaVersion": "programmable.eip3009-authorization-patch.v2",
    "authorizationPatchEncoding": "eip3009-nonce-r-s-v-abi-leaves",
    "legacySignaturePatchSchemaVersion": "programmable.eip3009-signature-patch.v1",
    "signatureIncludedInCreateRequest": false,
    "fundingIntentHashStage": "pre-signature",
    "excludedFromFundingIntentHash": [
      "signature",
      "initializerCalldataHash",
      "graphCommitment",
      "permitDigest"
    ],
    "automaticSigning": false,
    "automaticBroadcast": false
  },
  "x-programmable-fee-accounting": {
    "accountingModes": [
      "additive-platform-share",
      "inclusive-selected-total"
    ],
    "rateDenominator": "1000000",
    "programmableFeeHundredthsOfBip": "1000",
    "applicantSelectedMaximumHundredthsOfBip": "100000",
    "maximumAdditiveEffectiveTotalHundredthsOfBip": "101000",
    "lpPoolFeeMaximumUnchanged": true,
    "invariants": {
      "additive-platform-share": "effectiveTotal=selected+1000; projectShare=selected",
      "inclusive-selected-total": "effectiveTotal=max(selected,1000); projectShare=effectiveTotal-1000"
    },
    "derivedResultsAreRecomputedByServer": true,
    "tenBpsClaimRequiresExactPerLaunchVerifiedFeePathEvidence": true,
    "feeBehaviorClaim": false,
    "claimScope": "exact-launch-and-stamped-poolkey-only"
  },
  "tags": [
    {
      "name": "V3 general hooks",
      "description": "Production project-owned token, hook and multi-contract graph launch capability."
    },
    {
      "name": "Partner subkeys",
      "description": "Root-partner management of bounded child API credentials. These public routes never expose partner administration or wallet-signing authority."
    }
  ],
  "paths": {
    "/v3/capabilities": {
      "get": {
        "operationId": "getCustomLaunchCapabilitiesV3",
        "summary": "Discover the public V3 capability boundary",
        "description": "Unauthenticated, non-authorizing discovery for the current V3 profile, exact routes, structural graph support, funding and liquidity modes, evidence tiers and negative guarantees. Capability discovery does not prove that a submitted project is deployable, routable, indexed, source verified or featured.",
        "tags": [
          "V3 general hooks"
        ],
        "x-programmable-public-availability": "live",
        "security": [],
        "responses": {
          "200": {
            "description": "Current additive V3 capability document.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomLaunchCapabilitiesV1"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v3/finalized-custom-launches": {
      "get": {
        "operationId": "listFinalizedCustomLaunchMetadataV3",
        "summary": "List finalized public Custom launch metadata",
        "description": "Unauthenticated bounded newest-first feed of finalized Router identities and their launch-id-bound project metadata. It contains no API key, controller-private request bytes, pending request or wallet action. Consumers must key identity by routerLaunchId, never resourceId. A 503 has no embedded last-known-good payload; downstream indexers may maintain their own bounded LKG with explicit freshness.",
        "tags": [
          "V3 general hooks"
        ],
        "x-programmable-public-availability": "live",
        "security": [],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 25,
              "default": 10
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque continuation cursor returned by nextCursor.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 512
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Finalized-only public metadata page.",
            "headers": {
              "Cache-Control": {
                "description": "Short public cache with bounded stale revalidation.",
                "schema": {
                  "const": "public, max-age=15, stale-while-revalidate=300"
                }
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FinalizedCustomLaunchMetadataListV1"
                }
              }
            }
          },
          "400": {
            "description": "Unknown, duplicate or invalid pagination parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
                },
                "example": {
                  "schemaVersion": "programmable.api-error.v1",
                  "error": {
                    "code": "INVALID_PAGINATION",
                    "message": "Pagination parameters are invalid",
                    "requestId": "018f1f8e-7d93-7c2f-8d7f-e114942e7f25"
                  }
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/V3Unavailable"
          }
        }
      }
    },
    "/v3/custom-launches/preflight": {
      "post": {
        "operationId": "preflightDirectNativeCustomLaunchV3",
        "summary": "Evaluate the exact V3 request without creating a launch",
        "description": "Run the production profile parser, exact source/build binding and deterministic static baseline against the same byte-identical V3 body later used by create. quotaConsumed=false means no launch-creation quota or durable launch reservation is consumed; the authenticated call still consumes its ordinary route rate budget, including a partner credential's prepareRequestsPerHour budget. Preflight allocates no nonce, persists no launch and never signs or broadcasts. Its deployable, routable and featured booleans are distinct eligibility axes at the reported evidence tier; they are not deployment, trading, source-verification, indexing or feature-placement proof and are never a safety guarantee.",
        "tags": [
          "V3 general hooks"
        ],
        "x-programmable-public-availability": "live",
        "x-programmable-side-effects": {
          "quotaConsumed": false,
          "quotaConsumedMeaning": "no-launch-creation-quota-or-durable-reservation",
          "authenticatedRequestRateBudgetConsumed": true,
          "nonceAllocated": false,
          "persisted": false,
          "walletSignatureRequiredLater": true,
          "walletBroadcastByService": false
        },
        "security": [
          {
            "CustomLaunchApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "description": "The exact locally validated programmable.custom-launch-create-request.v3 bytes. There is no wrapper and preflight never reserves the request nonce.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomLaunchCreateRequestV3"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Side-effect-free V3 preflight classification for the exact request hash.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomLaunchPreflightV1"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/RequestTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "422": {
            "$ref": "#/components/responses/Unprocessable"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/V3Unavailable"
          }
        }
      }
    },
    "/v3/custom-launches": {
      "post": {
        "operationId": "createDirectNativeCustomLaunchV3",
        "summary": "Submit an exact V3 general-hook request",
        "description": "Submit the byte-identical CLI-derived request. A wallet key requires launchWallet to equal its wallet binding. A partner root or subkey selects the exact controller in launchWallet but gains no signing authority; that controller remains the wallet that must review, sign and broadcast. Partner credentials use the same current-profile metadata policy as wallet keys. Every target remains per-launch bound to exact source, compiler, build, creation/runtime bytes, final calldata and simulation evidence. Role-aware blocking indicators stop before wallet authorization; bound warnings remain visible and continue to exact Router simulation. Admission is not an audit or a safety, liquidity, tradeability, honeypot, or fee-behavior guarantee.",
        "tags": [
          "V3 general hooks"
        ],
        "x-programmable-public-availability": "live",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Exact-request idempotency binding. It must not contain an API key or wallet signature.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomLaunchCreateRequestV3"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "An exact Idempotency-Key replay returns the existing V3 resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomLaunchResourceV3"
                }
              }
            }
          },
          "202": {
            "description": "A new request is durably accepted for exact validation and conformance processing.",
            "headers": {
              "Location": {
                "description": "Version-matched single-resource polling path.",
                "schema": {
                  "type": "string",
                  "pattern": "^/v3/custom-launches/[A-Za-z0-9_-]{16,128}$"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomLaunchResourceV3"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/RequestTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "422": {
            "$ref": "#/components/responses/Unprocessable"
          },
          "429": {
            "$ref": "#/components/responses/LaunchQuotaExceeded"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "description": "A transient dependency is unavailable. Honor Retry-After and retry only the byte-identical request; never fall back to another create version.",
            "headers": {
              "Retry-After": {
                "description": "Delay before an exact retry.",
                "schema": {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
                },
                "example": {
                  "schemaVersion": "programmable.api-error.v1",
                  "error": {
                    "code": "CUSTOM_LAUNCH_V3_UNAVAILABLE",
                    "message": "A required production dependency is temporarily unavailable",
                    "requestId": "018f1f8e-7d93-7c2f-8d7f-e114942e7f25"
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "operationId": "listDirectNativeCustomLaunchesV3",
        "summary": "List V3 resources visible to the authenticated credential",
        "description": "Version-matched newest-first list for the authenticated lineage. A wallet key sees its wallet principal. A partner root sees every launch attributed to its partner, including current and rotated child launches. A subkey reads only its stable lineage and cannot read root or sibling launches. Rotation preserves that lineage history; a separately issued subkey starts an isolated lineage. Pending rows may receive bounded best-effort reconciliation; use single-resource GET for precise polling.",
        "tags": [
          "V3 general hooks"
        ],
        "x-programmable-public-availability": "live",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 25,
              "default": 10
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 512,
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Credential-principal-scoped V3 resource page.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomLaunchListPageV3"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/V3Unavailable"
          }
        }
      }
    },
    "/v3/custom-launches/{launchId}": {
      "get": {
        "operationId": "getDirectNativeCustomLaunchV3",
        "summary": "Read one V3 resource visible to the authenticated credential",
        "description": "The single-resource contract is the precise polling source for conformance state, any exact funding challenge and, after validation and simulation, the exact Router transaction. A wallet key reads its wallet principal. A partner root reads every launch attributed to its partner, including launches created by current or rotated subkeys. A subkey reads only its stable lineage and cannot read root or sibling launches. Rotation preserves that lineage for the replacement. The revoked predecessor cannot authenticate. The API never signs or broadcasts either wallet action.",
        "tags": [
          "V3 general hooks"
        ],
        "x-programmable-public-availability": "live",
        "parameters": [
          {
            "name": "launchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current durable V3 resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomLaunchResourceV3"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Launch not found for this wallet principal, partner root aggregate or permitted stable subkey lineage.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/V3Unavailable"
          }
        }
      }
    },
    "/v3/wallet-admin/custom-launches/{launchId}/funding-authorization": {
      "post": {
        "operationId": "submitDirectNativeFundingAuthorizationV3",
        "summary": "Submit one explicitly wallet-signed EIP-3009 authorization",
        "description": "Website-BFF to backend handoff only; this is not an API-key CLI operation. The website must first authenticate the wallet principal, show and validate the exact challenge, request eth_signTypedData_v4 only after an explicit user action, verify the canonical signature client-side, and then submit it once with a durable Idempotency-Key. Acceptance does not send the separate Router transaction.",
        "tags": [
          "V3 general hooks"
        ],
        "x-programmable-public-availability": "live",
        "security": [
          {
            "CustomLaunchWebsiteToken": []
          }
        ],
        "parameters": [
          {
            "name": "launchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Durably binds this exact signature body. An identical replay returns 200; body substitution under the same key returns 409.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          },
          {
            "name": "X-Programmable-Privy-User-Id",
            "in": "header",
            "required": true,
            "description": "Server-verified Privy principal. Browsers must not manufacture this header directly.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            }
          },
          {
            "name": "X-Programmable-Wallet-Address",
            "in": "header",
            "required": true,
            "description": "Checksum wallet address already proven linked to the authenticated principal by the website BFF.",
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FundingAuthorizationSubmissionV1"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact Idempotency-Key and body replay; returns the existing full V3 resource without applying the signature twice.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomLaunchResourceV3"
                }
              }
            }
          },
          "202": {
            "description": "First acceptance of the exact canonical signature. The resource advances through funding_authorization_verified and may return pending_review, action_required, prepared, simulating, or authorized; the Router transaction still requires a later explicit wallet send.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomLaunchResourceV3"
                }
              }
            }
          },
          "400": {
            "description": "Malformed schema, signature, digest, launch binding, or Idempotency-Key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
                }
              }
            }
          },
          "401": {
            "description": "Website service authentication failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
                }
              }
            }
          },
          "403": {
            "description": "The verified principal does not control the launch wallet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
                }
              }
            }
          },
          "404": {
            "description": "Launch not found for this wallet principal.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
                }
              }
            }
          },
          "409": {
            "description": "Idempotency substitution, stale funding intent/digest, or a launch that already advanced under different authorization bytes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
                }
              }
            }
          },
          "413": {
            "$ref": "#/components/responses/RequestTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "422": {
            "$ref": "#/components/responses/Unprocessable"
          },
          "429": {
            "$ref": "#/components/responses/LaunchQuotaExceeded"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          },
          "503": {
            "$ref": "#/components/responses/V3Unavailable"
          }
        }
      }
    },
    "/v3/custom-launches/{launchId}/permit-reissues": {
      "post": {
        "operationId": "requestPermitReissueDispositionV3",
        "summary": "Inspect the Router V1 permit-reissue disposition",
        "description": "Wallet-key-only inspection for the current deployed-contract boundary. Partner roots and subkeys are not authenticated on this route and recover directly by repacking and submitting a new launch request. This release has no successful permit-reissue operation and therefore defines no 2xx response. Router V1 uses the signed permit nonce as the CREATE2 route nonce, so changing it would change the predicted route. A conforming wallet-key call returns a typed 409 explaining why reissue is unsupported, not applicable, or bound to different request bytes. The current recovery is to repack and submit a new launch request with a fresh nonce and new Idempotency-Key; full fee and security gates run again and predicted addresses may change. This endpoint never reserves a replacement nonce, issues a replacement permit, signs, or broadcasts.",
        "tags": [
          "V3 general hooks"
        ],
        "x-programmable-public-availability": "live-unsupported-disposition-only",
        "x-programmable-required-scope": "custom-launch:create",
        "security": [
          {
            "WalletCustomLaunchApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "launchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Binds this exact disposition request. It does not reserve a nonce or create a launch.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PermitReissueRequestV1"
              }
            }
          }
        },
        "responses": {
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "Launch not found for this authenticated wallet principal.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
                }
              }
            }
          },
          "409": {
            "description": "Typed disposition: PERMIT_REISSUE_UNSUPPORTED, PERMIT_REISSUE_NOT_APPLICABLE, or PERMIT_REISSUE_RESOURCE_BINDING_MISMATCH. There is no successful reissue response in this release.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "error": {
                          "type": "object",
                          "properties": {
                            "code": {
                              "enum": [
                                "PERMIT_REISSUE_UNSUPPORTED",
                                "PERMIT_REISSUE_NOT_APPLICABLE",
                                "PERMIT_REISSUE_RESOURCE_BINDING_MISMATCH"
                              ]
                            },
                            "details": {
                              "$ref": "#/components/schemas/PermitReissueDispositionV1"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/LaunchQuotaExceeded"
          },
          "503": {
            "$ref": "#/components/responses/V3Unavailable"
          }
        }
      }
    },
    "/v1/partner/subkeys": {
      "get": {
        "operationId": "listPartnerSubkeysV1",
        "summary": "List subkeys owned by the authenticated partner root",
        "description": "Returns at most 500 newest-first child credentials for the exact authenticated root, including revoked and rotated metadata. It does not return child launch history. No query parameters are accepted. Secrets are never returned by list. A root credential with partner-subkeys:manage is required; wallet keys and partner subkeys cannot call this route. The call consumes the root's partner-subkey-admin request budget.",
        "tags": [
          "Partner subkeys"
        ],
        "x-programmable-public-availability": "live",
        "x-programmable-required-scope": "partner-subkeys:manage",
        "x-programmable-budget-class": "partner-subkey-admin",
        "security": [
          {
            "PartnerRootApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "Bounded subkey metadata for this root only.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/NoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerSubkeyListV1"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PartnerBadRequest"
          },
          "401": {
            "$ref": "#/components/responses/PartnerUnauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PartnerForbidden"
          },
          "429": {
            "$ref": "#/components/responses/PartnerRateLimited"
          },
          "500": {
            "$ref": "#/components/responses/PartnerInternalError"
          }
        }
      },
      "post": {
        "operationId": "createPartnerSubkeyV1",
        "summary": "Issue one bounded partner subkey",
        "description": "Issues a child credential with its own isolated launch principal. Its scopes and budgets cannot exceed the authenticated root and its expiry cannot exceed the root expiry. The Idempotency-Key binds the canonical request. The first committed response is 201 and delivers apiKey exactly once; an exact replay is 200 with apiKey null. Preserve the original body and Idempotency-Key across ambiguous transport failure. No query parameters are accepted. The call consumes the root's partner-subkey-admin request budget.",
        "tags": [
          "Partner subkeys"
        ],
        "x-programmable-public-availability": "live",
        "x-programmable-required-scope": "partner-subkeys:manage",
        "x-programmable-budget-class": "partner-subkey-admin",
        "security": [
          {
            "PartnerRootApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Stable key for these exact canonical request bytes. Reuse with different bytes returns 409.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Content-Type must be exactly application/json. Unknown fields are rejected.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartnerSubkeyRequestV1"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact idempotent replay. The one-time secret was already delivered and apiKey is null.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/NoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerSubkeyReplayResultV1"
                }
              }
            }
          },
          "201": {
            "description": "Subkey created. apiKey is delivered in this response only and must be moved directly into an encrypted secret store.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/NoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerSubkeyCreatedResultV1"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PartnerBadRequest"
          },
          "401": {
            "$ref": "#/components/responses/PartnerUnauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PartnerForbidden"
          },
          "409": {
            "$ref": "#/components/responses/PartnerConflict"
          },
          "413": {
            "$ref": "#/components/responses/PartnerRequestTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/PartnerUnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/PartnerRateLimited"
          },
          "500": {
            "$ref": "#/components/responses/PartnerInternalError"
          }
        }
      }
    },
    "/v1/partner/subkeys/{subkeyId}/rotate": {
      "post": {
        "operationId": "rotatePartnerSubkeyV1",
        "summary": "Rotate one subkey owned by the authenticated root",
        "description": "Revokes the selected child credential and creates its replacement atomically for this root. The replacement retains the same immutable subkey lineage and can read that lineage's authenticated launch history; it cannot read root or sibling launches. The partner root continues to see every launch attributed to its partner. The replacement remains bounded by the authenticated root. The first committed response is 201 with the replacement apiKey exactly once; an exact idempotent replay is 200 with apiKey null. No query parameters are accepted. The call consumes the root's partner-subkey-admin request budget.",
        "tags": [
          "Partner subkeys"
        ],
        "x-programmable-public-availability": "live",
        "x-programmable-required-scope": "partner-subkeys:manage",
        "x-programmable-budget-class": "partner-subkey-admin",
        "security": [
          {
            "PartnerRootApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "subkeyId",
            "in": "path",
            "required": true,
            "description": "UUID of a child credential owned by the authenticated root.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Stable key for this exact rotation target and canonical request body. Reuse with different bytes returns 409.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Content-Type must be exactly application/json. Unknown fields are rejected.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartnerSubkeyRequestV1"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact idempotent replay. The replacement secret was already delivered and apiKey is null.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/NoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerSubkeyReplayResultV1"
                }
              }
            }
          },
          "201": {
            "description": "Replacement created. apiKey is delivered in this response only.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/NoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerSubkeyCreatedResultV1"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PartnerBadRequest"
          },
          "401": {
            "$ref": "#/components/responses/PartnerUnauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PartnerForbidden"
          },
          "404": {
            "$ref": "#/components/responses/PartnerNotFound"
          },
          "409": {
            "$ref": "#/components/responses/PartnerConflict"
          },
          "413": {
            "$ref": "#/components/responses/PartnerRequestTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/PartnerUnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/PartnerRateLimited"
          },
          "500": {
            "$ref": "#/components/responses/PartnerInternalError"
          }
        }
      }
    },
    "/v1/partner/subkeys/{subkeyId}": {
      "delete": {
        "operationId": "revokePartnerSubkeyV1",
        "summary": "Revoke one subkey owned by the authenticated root",
        "description": "Permanently revokes a child credential and its active launch bridges. The revoked credential can no longer authenticate. The partner root retains visibility of all partner-attributed launch history. Repeating deletion of the same owned credential returns 200 with disposition already_revoked. No request body, Idempotency-Key, query parameter, or secret is accepted or returned. The call consumes the root's partner-subkey-admin request budget.",
        "tags": [
          "Partner subkeys"
        ],
        "x-programmable-public-availability": "live",
        "x-programmable-required-scope": "partner-subkeys:manage",
        "x-programmable-budget-class": "partner-subkey-admin",
        "security": [
          {
            "PartnerRootApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "subkeyId",
            "in": "path",
            "required": true,
            "description": "UUID of a child credential owned by the authenticated root.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Credential revoked now or already revoked earlier.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/NoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerSubkeyRevocationV1"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PartnerBadRequest"
          },
          "401": {
            "$ref": "#/components/responses/PartnerUnauthorized"
          },
          "403": {
            "$ref": "#/components/responses/PartnerForbidden"
          },
          "404": {
            "$ref": "#/components/responses/PartnerNotFound"
          },
          "429": {
            "$ref": "#/components/responses/PartnerRateLimited"
          },
          "500": {
            "$ref": "#/components/responses/PartnerInternalError"
          }
        }
      }
    }
  },
  "components": {
    "headers": {
      "RequestId": {
        "description": "HTTP correlation identifier. Preserve it with the HTTP status and UTC time for support; it is not the durable launch resource requestId.",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "RetryAfter": {
        "description": "Whole-second delay before the next safe retry.",
        "schema": {
          "type": "string",
          "pattern": "^[1-9][0-9]*$"
        }
      },
      "NoStore": {
        "description": "Partner credential responses are never cacheable.",
        "schema": {
          "const": "no-store"
        }
      }
    },
    "securitySchemes": {
      "CustomLaunchApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "pm_live_* | pm_partner_root_<22>_<43> | pm_partner_<22>_<43>",
        "description": "Wallet, partner-root, or bounded partner-subkey credential loaded from the same PROGRAMMABLE_API_KEY or supported operating-system secret store. It is never accepted as an argument or prompt. Partner credentials use the canonical V3 create, preflight, list and status flow and may add server-owned attribution, but no credential grants wallet signing, broadcast, or gate-bypass authority. The Router V1 permit-reissue disposition route is the explicit wallet-key-only exception."
      },
      "WalletCustomLaunchApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "pm_live_*",
        "description": "Wallet-bound API key loaded from PROGRAMMABLE_API_KEY or a supported operating-system secret store. The Router V1 permit-reissue disposition route does not authenticate partner roots or subkeys."
      },
      "CustomLaunchWebsiteToken": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "server-held website service token",
        "description": "Server-to-server credential held only by the Programmable website BFF. A browser authenticates its own wallet session to the BFF and never receives this token."
      },
      "PartnerRootApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "pm_partner_root_<22-char-key-id>_<43-char-secret>",
        "description": "Partner root credential read from PROGRAMMABLE_API_KEY or an encrypted secret store. The authenticated root must hold partner-subkeys:manage. Wallet keys and child partner subkeys cannot manage subkeys. This credential never grants wallet signing or broadcast authority."
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Malformed JSON, query values, Idempotency-Key, hash binding or closed V3 request shape.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "The required API key or website service credential is missing, malformed, expired, revoked or unknown.",
        "headers": {
          "WWW-Authenticate": {
            "description": "Bearer challenge.",
            "schema": {
              "const": "Bearer"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "Forbidden": {
        "description": "The required scope, wallet binding or verified website principal is missing.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "Conflict": {
        "description": "The idempotency key, nonce, funding intent or durable launch state conflicts with the submitted bytes. Do not mutate a retry merely to bypass the conflict.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "RequestTooLarge": {
        "description": "The streaming request body exceeded 8,388,608 bytes.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "UnsupportedMediaType": {
        "description": "Content-Type must be application/json, optionally with charset=utf-8.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "Unprocessable": {
        "description": "The request parsed but failed source, graph, hook-permission, admission, funding, profile or exact-simulation validation.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "LaunchQuotaExceeded": {
        "description": "The launch admission quota or wallet-admin rate limit was reached. Honor Retry-After before retrying identical bytes.",
        "headers": {
          "Retry-After": {
            "description": "Delay before the next exact retry.",
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "InternalError": {
        "description": "Unexpected server failure. The response includes a correlation requestId and no secret.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "V3Unavailable": {
        "description": "A required V3 production dependency is temporarily unavailable.",
        "headers": {
          "Retry-After": {
            "description": "Delay before an exact retry.",
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            },
            "example": {
              "schemaVersion": "programmable.api-error.v1",
              "error": {
                "code": "CUSTOM_LAUNCH_V3_UNAVAILABLE",
                "message": "A required production dependency is temporarily unavailable",
                "requestId": "018f1f8e-7d93-7c2f-8d7f-e114942e7f25"
              }
            }
          }
        }
      },
      "PartnerBadRequest": {
        "description": "The path/query boundary, JSON body, Idempotency-Key, requested scopes, budgets, expiry, or closed request shape is invalid.",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/NoStore"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "PartnerUnauthorized": {
        "description": "The partner-root Bearer credential is missing, malformed, expired, revoked, suspended, or unknown.",
        "headers": {
          "WWW-Authenticate": {
            "description": "Bearer challenge.",
            "schema": {
              "const": "Bearer"
            }
          },
          "X-Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/NoStore"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "PartnerForbidden": {
        "description": "The authenticated credential is not a partner root or does not hold partner-subkeys:manage.",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/NoStore"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "PartnerNotFound": {
        "description": "The path identifier is invalid. DELETE also returns this response when the selected subkey is not owned by this authenticated root.",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/NoStore"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "PartnerConflict": {
        "description": "The same Idempotency-Key was already committed for a different partner operation target or canonical body.",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/NoStore"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "PartnerRequestTooLarge": {
        "description": "The streaming partner request body exceeded 32,768 bytes.",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/NoStore"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "PartnerUnsupportedMediaType": {
        "description": "Content-Type must be exactly application/json.",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/NoStore"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "PartnerRateLimited": {
        "description": "The authenticated root's partner-subkey-admin hourly budget was reached. Retry the identical operation only after Retry-After.",
        "headers": {
          "Retry-After": {
            "$ref": "#/components/headers/RetryAfter"
          },
          "X-Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/NoStore"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            }
          }
        }
      },
      "PartnerInternalError": {
        "description": "Unexpected internal failure. The bounded response contains a correlation requestId and never includes a credential, secret, request body, or internal error detail.",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/RequestId"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/NoStore"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchApiErrorV2"
            },
            "example": {
              "schemaVersion": "programmable.api-error.v1",
              "error": {
                "code": "INTERNAL_ERROR",
                "message": "The partner administration service is temporarily unavailable.",
                "requestId": "018f1f8e-7d93-7c2f-8d7f-e114942e7f25"
              }
            }
          }
        }
      }
    },
    "schemas": {
      "PartnerSubkeyBudgetLimitsV1": {
        "type": "object",
        "required": [
          "prepareRequestsPerHour",
          "readRequestsPerMinute"
        ],
        "properties": {
          "prepareRequestsPerHour": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000,
            "description": "Child create/preflight ceiling. It cannot exceed the authenticated root's prepareRequestsPerHour budget."
          },
          "readRequestsPerMinute": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000,
            "description": "Child lifecycle-read ceiling. It cannot exceed the authenticated root's readRequestsPerMinute budget."
          }
        },
        "additionalProperties": false
      },
      "PartnerSubkeyScopeV1": {
        "type": "string",
        "enum": [
          "custom-launch:create",
          "custom-launch:read"
        ],
        "description": "A child may receive only scopes already held by its authenticated root. partner-subkeys:manage is never grantable to a child."
      },
      "PartnerSubkeyRequestV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "displayName",
          "scopes",
          "budgets",
          "expiresAt"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.partner-subkey-request.v1"
          },
          "displayName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 96,
            "description": "Trimmed public label. Control, bidi-control, zero-width, and byte-order-mark characters are rejected."
          },
          "scopes": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PartnerSubkeyScopeV1"
            }
          },
          "budgets": {
            "$ref": "#/components/schemas/PartnerSubkeyBudgetLimitsV1"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$",
            "description": "Canonical millisecond UTC timestamp after server time and no later than the authenticated root expiry."
          }
        },
        "additionalProperties": false
      },
      "PartnerSubkeyMetadataV1": {
        "type": "object",
        "required": [
          "subkeyId",
          "rootKeyId",
          "partnerId",
          "keyId",
          "displayName",
          "scopes",
          "budgets",
          "createdAt",
          "expiresAt",
          "lastUsedAt",
          "revokedAt",
          "rotatedFromSubkeyId"
        ],
        "properties": {
          "subkeyId": {
            "type": "string",
            "format": "uuid"
          },
          "rootKeyId": {
            "type": "string",
            "format": "uuid"
          },
          "partnerId": {
            "type": "string",
            "format": "uuid"
          },
          "keyId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{22}$",
            "description": "Public credential identifier only, never the secret."
          },
          "displayName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 96
          },
          "scopes": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PartnerSubkeyScopeV1"
            }
          },
          "budgets": {
            "$ref": "#/components/schemas/PartnerSubkeyBudgetLimitsV1"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "lastUsedAt": {
            "oneOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "revokedAt": {
            "oneOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "rotatedFromSubkeyId": {
            "oneOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "description": "The revoked predecessor for a rotation, or null for an original issue. The replacement retains the predecessor's stable subkey lineage and its authenticated launch history."
          }
        },
        "additionalProperties": false
      },
      "PartnerSubkeyListV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "credentials"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.partner-subkey-list.v1"
          },
          "credentials": {
            "type": "array",
            "maxItems": 500,
            "items": {
              "$ref": "#/components/schemas/PartnerSubkeyMetadataV1"
            }
          }
        },
        "additionalProperties": false
      },
      "PartnerSubkeyCreatedResultV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "disposition",
          "credential",
          "apiKey",
          "secretState"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.partner-subkey-result.v1"
          },
          "disposition": {
            "const": "created"
          },
          "credential": {
            "$ref": "#/components/schemas/PartnerSubkeyMetadataV1"
          },
          "apiKey": {
            "type": "string",
            "pattern": "^pm_partner_[A-Za-z0-9_-]{22}_[A-Za-z0-9_-]{43}$",
            "description": "One-time secret. The service never persists or returns it again."
          },
          "secretState": {
            "const": "delivered-once"
          }
        },
        "additionalProperties": false
      },
      "PartnerSubkeyReplayResultV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "disposition",
          "credential",
          "apiKey",
          "secretState"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.partner-subkey-result.v1"
          },
          "disposition": {
            "const": "replayed"
          },
          "credential": {
            "$ref": "#/components/schemas/PartnerSubkeyMetadataV1"
          },
          "apiKey": {
            "type": "null"
          },
          "secretState": {
            "const": "already-delivered"
          }
        },
        "additionalProperties": false
      },
      "PartnerSubkeyRevocationV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "subkeyId",
          "disposition"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.partner-subkey-revocation.v1"
          },
          "subkeyId": {
            "type": "string",
            "format": "uuid"
          },
          "disposition": {
            "enum": [
              "revoked",
              "already_revoked"
            ]
          }
        },
        "additionalProperties": false
      },
      "CustomLaunchCapabilitiesV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "apiVersion",
          "serverTime",
          "readinessUrl",
          "chain",
          "profile",
          "routes",
          "authentication",
          "preflight",
          "graph",
          "compiler",
          "projectMetadata",
          "permitReissue",
          "hookPermissions",
          "fundingModes",
          "liquidityModels",
          "evidenceTiers",
          "productTruthAxes",
          "behaviorEvidence",
          "hardSafetyInvariants",
          "advancedFeaturesRequireEvidence",
          "feePolicy",
          "walletHandoffBaseUrl",
          "supportUrl",
          "safetyClaim",
          "auditClaim",
          "universalCompatibilityClaim"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-capabilities.v1"
          },
          "apiVersion": {
            "const": "v3"
          },
          "serverTime": {
            "type": "string",
            "format": "date-time"
          },
          "readinessUrl": {
            "const": "https://api.programmable.market/readyz"
          },
          "chain": {
            "type": "object",
            "required": [
              "id",
              "name"
            ],
            "properties": {
              "id": {
                "const": "1"
              },
              "name": {
                "const": "Ethereum Mainnet"
              }
            },
            "additionalProperties": false
          },
          "profile": {
            "type": "object",
            "required": [
              "profileId",
              "profileRevision",
              "profileVersion",
              "productionLaunchAuthorized"
            ],
            "properties": {
              "profileId": {
                "const": "programmable.direct-native-hook-graph.v1"
              },
              "profileRevision": {
                "const": 3
              },
              "profileVersion": {
                "const": "3.3.0"
              },
              "productionLaunchAuthorized": {
                "const": true
              }
            },
            "additionalProperties": false
          },
          "routes": {
            "type": "object",
            "required": [
              "create",
              "preflight",
              "status",
              "list",
              "capabilities",
              "finalizedMetadata",
              "permitReissue"
            ],
            "properties": {
              "create": {
                "const": "/v3/custom-launches"
              },
              "preflight": {
                "const": "/v3/custom-launches/preflight"
              },
              "status": {
                "const": "/v3/custom-launches/{launchId}"
              },
              "list": {
                "const": "/v3/custom-launches"
              },
              "capabilities": {
                "const": "/v3/capabilities"
              },
              "finalizedMetadata": {
                "const": "/v3/finalized-custom-launches"
              },
              "permitReissue": {
                "const": "/v3/custom-launches/{launchId}/permit-reissues"
              }
            },
            "additionalProperties": false
          },
          "authentication": {
            "type": "object",
            "required": [
              "create",
              "preflight",
              "status",
              "capabilities",
              "finalizedMetadata",
              "permitReissue",
              "requiredScopes",
              "apiKeyIsWallet"
            ],
            "properties": {
              "create": {
                "const": "bearer-api-key"
              },
              "preflight": {
                "const": "bearer-api-key"
              },
              "status": {
                "const": "bearer-api-key"
              },
              "capabilities": {
                "const": "none"
              },
              "finalizedMetadata": {
                "const": "none"
              },
              "permitReissue": {
                "const": "bearer-api-key"
              },
              "requiredScopes": {
                "const": [
                  "custom-launch:create",
                  "custom-launch:read"
                ]
              },
              "apiKeyIsWallet": {
                "const": false
              }
            },
            "additionalProperties": false
          },
          "preflight": {
            "type": "object",
            "required": [
              "quotaConsumed",
              "nonceAllocated",
              "persisted",
              "walletSignatureProduced",
              "transactionBroadcast",
              "exactProductionAdmissionEngine"
            ],
            "properties": {
              "quotaConsumed": {
                "const": false,
                "description": "No launch-creation quota or durable launch reservation is consumed. The authenticated preflight request still consumes its ordinary route rate budget."
              },
              "nonceAllocated": {
                "const": false
              },
              "persisted": {
                "const": false
              },
              "walletSignatureProduced": {
                "const": false
              },
              "transactionBroadcast": {
                "const": false
              },
              "exactProductionAdmissionEngine": {
                "const": true
              }
            },
            "additionalProperties": false
          },
          "graph": {
            "type": "object",
            "required": [
              "minimumTargets",
              "maximumTargets",
              "directCreate2Targets",
              "onePrimaryToken",
              "onePrimaryHook",
              "onePrimaryPool",
              "constructorAddressLocators",
              "initializerAddressLocators",
              "initializerCyclesSupported",
              "constructorCyclesSupported"
            ],
            "properties": {
              "minimumTargets": {
                "const": 3
              },
              "maximumTargets": {
                "const": 16
              },
              "directCreate2Targets": {
                "const": true
              },
              "onePrimaryToken": {
                "const": true
              },
              "onePrimaryHook": {
                "const": true
              },
              "onePrimaryPool": {
                "const": true
              },
              "constructorAddressLocators": {
                "const": true
              },
              "initializerAddressLocators": {
                "const": true
              },
              "initializerCyclesSupported": {
                "const": true
              },
              "constructorCyclesSupported": {
                "const": false
              }
            },
            "description": "Live profile 3.3.0 requires three through sixteen exact direct targets. Pending profile 3.4.0 raises the fresh-graph minimum to four inclusive of the canonical settlement-fee vault, but is not advertised by this live capabilities response before activation.",
            "additionalProperties": false
          },
          "compiler": {
            "type": "object",
            "required": [
              "language",
              "version",
              "exactStandardJsonRequired",
              "exactSourceBytesRequired",
              "exactCreationAndRuntimeBindingRequired"
            ],
            "properties": {
              "language": {
                "const": "Solidity"
              },
              "version": {
                "const": "0.8.26"
              },
              "exactStandardJsonRequired": {
                "const": true
              },
              "exactSourceBytesRequired": {
                "const": true
              },
              "exactCreationAndRuntimeBindingRequired": {
                "const": true
              }
            },
            "additionalProperties": false
          },
          "projectMetadata": {
            "$ref": "#/components/schemas/ProjectMetadataCapabilitiesV1"
          },
          "permitReissue": {
            "$ref": "#/components/schemas/PermitReissueCapabilityV1"
          },
          "hookPermissions": {
            "type": "object",
            "required": [
              "allFourteenStructurallySupported",
              "minimumMask",
              "maximumMask",
              "addressMaskMustMatch",
              "returnDeltaRequiresBaseCallback"
            ],
            "properties": {
              "allFourteenStructurallySupported": {
                "const": true
              },
              "minimumMask": {
                "const": 0
              },
              "maximumMask": {
                "const": 16383
              },
              "addressMaskMustMatch": {
                "const": true
              },
              "returnDeltaRequiresBaseCallback": {
                "const": true
              }
            },
            "description": "All fourteen Uniswap v4 hook permission bits are structurally accepted when address bits, dependencies and concrete reachable callback implementations match. This is not universal behavioral compatibility.",
            "additionalProperties": false
          },
          "fundingModes": {
            "const": [
              "none",
              "wallet-transaction-value",
              "eip-3009-receive-with-authorization"
            ]
          },
          "liquidityModels": {
            "const": [
              "external-concentrated-liquidity",
              "launch-seeded-concentrated-liquidity",
              "hook-inventory-custom-accounting"
            ]
          },
          "evidenceTiers": {
            "const": [
              "launch_mechanics_verified",
              "standard_swap_compatible",
              "advanced_custom_accounting",
              "governed_external_trust"
            ],
            "description": "Classification labels only. A label is not proof that behavior execution, routing, liquidity, platform-fee conformance or safety has been verified."
          },
          "productTruthAxes": {
            "const": [
              "deployment",
              "trading",
              "platform_fee_evidence",
              "source_verification",
              "indexing",
              "featured"
            ],
            "description": "Independent product claims. Evidence for one axis never proves another."
          },
          "behaviorEvidence": {
            "type": "object",
            "required": [
              "runnerConfigured",
              "executionMode",
              "vectorSetVersion",
              "maximumConfiguredRunnerAttempts",
              "requiredForProfileVersion",
              "configurationIsExecutionEvidence",
              "walletHandoffRequiresVerifiedEvidence",
              "requiredPlatformFeeConformanceStatus",
              "nonFeeVectorsMayRemainUnverified",
              "evidenceAuthority",
              "signedExecutionReceiptRequired",
              "notConfiguredDisposition",
              "unavailableDisposition",
              "executedFeeFailureDisposition",
              "executedHardInvariantFailureDisposition"
            ],
            "properties": {
              "runnerConfigured": {
                "type": "boolean",
                "description": "Runtime configuration only. It is never per-launch execution evidence."
              },
              "executionMode": {
                "enum": [
                  "remote-ephemeral-mainnet-fork",
                  "not_configured"
                ]
              },
              "vectorSetVersion": {
                "const": "1.1.0"
              },
              "maximumConfiguredRunnerAttempts": {
                "const": 3
              },
              "requiredForProfileVersion": {
                "const": "3.4.0"
              },
              "configurationIsExecutionEvidence": {
                "const": false
              },
              "walletHandoffRequiresVerifiedEvidence": {
                "const": false
              },
              "requiredPlatformFeeConformanceStatus": {
                "const": "verified"
              },
              "nonFeeVectorsMayRemainUnverified": {
                "const": true
              },
              "evidenceAuthority": {
                "const": "platform-runtime-executor"
              },
              "signedExecutionReceiptRequired": {
                "const": true
              },
              "notConfiguredDisposition": {
                "const": "claims_remain_unverified"
              },
              "unavailableDisposition": {
                "const": "claims_remain_unverified"
              },
              "executedFeeFailureDisposition": {
                "const": "blocks_wallet_handoff"
              },
              "executedHardInvariantFailureDisposition": {
                "const": "blocks_wallet_handoff"
              }
            },
            "description": "Live profile 3.3.0 capability boundary. Runner configuration is not evidence. Missing, not-configured or unavailable execution keeps non-fee claims unverified and does not block active 3.3 wallet handoff; requiredForProfileVersion 3.4.0 documents the future verified-evidence handoff gate. Authenticated executed fee-path or hard-invariant failure blocks wallet handoff.",
            "additionalProperties": false
          },
          "hardSafetyInvariants": {
            "const": [
              "exact-source-runtime-request-binding",
              "hook-address-permission-mask-match",
              "valid-return-delta-permission-dependencies",
              "mainnet-pool-manager-graph-binding-and-bounded-callback-authentication",
              "authenticated-enabled-callbacks",
              "complete-enabled-callback-implementation",
              "no-direct-callcode-or-selfdestruct-in-submitted-graph-target-runtimes",
              "balanced-pool-manager-deltas-when-executed",
              "exact-router-launch-simulation",
              "no-wallet-signing-or-broadcast-by-api"
            ],
            "description": "Mandatory server-side checks and wallet-authority boundaries. This list is not a universal safety claim. The opcode check is limited to direct opcodes in the submitted graph-target runtimes; code reached through delegation or runtime creation is not transitively proven and keeps behavior-derived claims unverified."
          },
          "advancedFeaturesRequireEvidence": {
            "const": [
              "child-contract-factories",
              "return-delta-custom-accounting",
              "custom-curves-and-async-swaps",
              "liquidity-removal-gating-or-return-deltas",
              "external-oracle-or-protocol-calls",
              "pause-mint-transfer-or-compliance-controls",
              "governed-upgrades-or-delegation",
              "nonstandard-token-accounting"
            ]
          },
          "feePolicy": {
            "type": "object",
            "required": [
              "programmableHundredthsOfBip",
              "denominator",
              "requestBindingRequired",
              "behaviorProofRequiredForRoutableClaim",
              "tenBpsClaimRequiresExactPerLaunchVerifiedFeePathEvidence",
              "feeBehaviorClaim",
              "claimScope",
              "genericClaimingLive",
              "buybackManagementLive"
            ],
            "properties": {
              "programmableHundredthsOfBip": {
                "const": "1000"
              },
              "denominator": {
                "const": "1000000"
              },
              "requestBindingRequired": {
                "const": true
              },
              "behaviorProofRequiredForRoutableClaim": {
                "const": true
              },
              "tenBpsClaimRequiresExactPerLaunchVerifiedFeePathEvidence": {
                "const": true
              },
              "feeBehaviorClaim": {
                "const": false
              },
              "claimScope": {
                "const": "exact-launch-and-stamped-poolkey-only"
              },
              "genericClaimingLive": {
                "const": false
              },
              "buybackManagementLive": {
                "const": false
              }
            },
            "additionalProperties": false
          },
          "walletHandoffBaseUrl": {
            "const": "https://programmable.market/developers/api-keys"
          },
          "supportUrl": {
            "type": "string",
            "format": "uri"
          },
          "safetyClaim": {
            "const": false
          },
          "auditClaim": {
            "const": false
          },
          "universalCompatibilityClaim": {
            "const": false
          }
        },
        "description": "Public additive discovery for the live profile 3.3.0 structural and operational boundary. It grants no authorization and makes no universal, audit, safety or fee-behavior claim. Pending profile 3.4.0 is preparatory and must not appear as the current capabilities profile until backend activation. Legacy resources preserve their stored evidence semantics.",
        "additionalProperties": true
      },
      "ProjectMetadataCapabilitiesV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "inputSchemaVersion",
          "requiredForProfileVersion",
          "requiredForProfileVersions",
          "strictMetadataProfileVersions",
          "strictNewPackPolicyProfileVersion",
          "enforcement",
          "profilePolicy",
          "legacyWithoutMetadataProfileVersions",
          "legacyMetadataProfileVersions",
          "requiredFields",
          "imageMayBeNull",
          "legacyImageMayBeNullProfileVersions",
          "description",
          "image",
          "maximumLinks",
          "exactlyOneRequiredLinkPerKind",
          "requiredLinkKinds",
          "websiteUriPolicy",
          "xUriPattern",
          "linkKinds",
          "projectMetadataHashDomain",
          "graphBundleHashBindingDomain",
          "postDeploymentTokenReadbackRequired"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.project-metadata.v1"
          },
          "inputSchemaVersion": {
            "const": "programmable.project-metadata-input.v1"
          },
          "requiredForProfileVersion": {
            "const": "3.3.0"
          },
          "requiredForProfileVersions": {
            "const": [
              "3.2.0",
              "3.3.0",
              "3.4.0"
            ]
          },
          "strictNewPackPolicyProfileVersion": {
            "const": "3.3.0"
          },
          "enforcement": {
            "type": "object",
            "required": [
              "routes",
              "serverSide",
              "clientBypassAccepted",
              "failureCode",
              "legacyProfilesNotRetrofitted"
            ],
            "properties": {
              "routes": {
                "const": [
                  "POST /v3/custom-launches/preflight",
                  "POST /v3/custom-launches"
                ]
              },
              "serverSide": {
                "const": true
              },
              "clientBypassAccepted": {
                "const": false
              },
              "failureCode": {
                "const": "PROJECT_METADATA_POLICY_INVALID"
              },
              "legacyProfilesNotRetrofitted": {
                "const": true
              }
            },
            "additionalProperties": false
          },
          "profilePolicy": {
            "$ref": "#/components/schemas/ProjectMetadataPolicyV1"
          },
          "legacyWithoutMetadataProfileVersions": {
            "const": [
              "2.0.0",
              "3.0.0",
              "3.1.0"
            ]
          },
          "legacyMetadataProfileVersions": {
            "const": [
              "3.2.0"
            ]
          },
          "requiredFields": {
            "const": [
              "token.name",
              "token.symbol",
              "presentation.description",
              "presentation.image",
              "presentation.links"
            ]
          },
          "imageMayBeNull": {
            "const": false
          },
          "legacyImageMayBeNullProfileVersions": {
            "const": [
              "3.2.0"
            ]
          },
          "description": {
            "type": "object",
            "required": [
              "minimumUtf8Bytes",
              "maximumUtf8Bytes",
              "minimumUnicodeLettersOrNumbers",
              "nfcAndTrimmedRequired"
            ],
            "properties": {
              "minimumUtf8Bytes": {
                "const": 20
              },
              "maximumUtf8Bytes": {
                "const": 4096
              },
              "minimumUnicodeLettersOrNumbers": {
                "const": 8
              },
              "nfcAndTrimmedRequired": {
                "const": true
              }
            },
            "additionalProperties": false
          },
          "image": {
            "type": "object",
            "required": [
              "required",
              "exactContentSha256Required",
              "exactByteLengthRequired",
              "sourceManifestFileBindingRequired",
              "mediaTypes"
            ],
            "properties": {
              "required": {
                "const": true
              },
              "exactContentSha256Required": {
                "const": true
              },
              "exactByteLengthRequired": {
                "const": true
              },
              "sourceManifestFileBindingRequired": {
                "const": true
              },
              "mediaTypes": {
                "const": [
                  "image/png",
                  "image/jpeg",
                  "image/webp",
                  "image/gif"
                ]
              }
            },
            "additionalProperties": false
          },
          "maximumLinks": {
            "const": 32
          },
          "exactlyOneRequiredLinkPerKind": {
            "const": true
          },
          "requiredLinkKinds": {
            "const": [
              "website",
              "x"
            ]
          },
          "websiteUriPolicy": {
            "const": "canonical-public-credential-free-https"
          },
          "xUriPattern": {
            "const": "^https://x\\.com/[A-Za-z0-9_]{1,64}$"
          },
          "linkKinds": {
            "const": [
              "website",
              "documentation",
              "x",
              "telegram",
              "discord",
              "github",
              "other"
            ]
          },
          "projectMetadataHashDomain": {
            "const": "programmable.project-metadata.v1"
          },
          "graphBundleHashBindingDomain": {
            "const": "programmable.custom-graph-project-metadata.v1"
          },
          "postDeploymentTokenReadbackRequired": {
            "const": true
          },
          "strictMetadataProfileVersions": {
            "const": [
              "3.3.0",
              "3.4.0"
            ]
          }
        },
        "additionalProperties": false
      },
      "PermitReissueCapabilityV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "endpoint",
          "requestSchemaVersion",
          "dispositionSchemaVersion",
          "disposition",
          "httpStatus",
          "reasonCode",
          "authenticationScope",
          "idempotencyKeyRequired",
          "resourceBindingRequired",
          "noReplacementNonceReserved",
          "noReplacementPermitIssued",
          "oldPermitStateRequired",
          "oldPermitInvalidation",
          "currentReleaseRecovery",
          "futureContractRequirements"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-permit-reissue-capability.v1"
          },
          "endpoint": {
            "const": "/v3/custom-launches/{launchId}/permit-reissues"
          },
          "requestSchemaVersion": {
            "const": "programmable.custom-launch-permit-reissue-request.v1"
          },
          "dispositionSchemaVersion": {
            "const": "programmable.custom-launch-permit-reissue-disposition.v1"
          },
          "disposition": {
            "const": "unsupported"
          },
          "httpStatus": {
            "const": 409
          },
          "reasonCode": {
            "const": "ROUTER_V1_PERMIT_NONCE_IS_CREATE2_ROUTE_NONCE"
          },
          "authenticationScope": {
            "const": "custom-launch:create"
          },
          "idempotencyKeyRequired": {
            "const": true
          },
          "resourceBindingRequired": {
            "const": [
              "launchId",
              "expectedRequestHash",
              "expectedLaunchIntentHash"
            ]
          },
          "noReplacementNonceReserved": {
            "const": true
          },
          "noReplacementPermitIssued": {
            "const": true
          },
          "oldPermitStateRequired": {
            "const": "expired-and-unconsumed"
          },
          "oldPermitInvalidation": {
            "const": "original-signature-expired-by-signed-deadline"
          },
          "currentReleaseRecovery": {
            "const": "repack-and-submit-new-launch-request"
          },
          "futureContractRequirements": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "additionalProperties": false
      },
      "PermitReissueRequestV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "expectedRequestHash",
          "expectedLaunchIntentHash",
          "replacementNonce",
          "replacementPermitWindow"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-permit-reissue-request.v1"
          },
          "expectedRequestHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "expectedLaunchIntentHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "replacementNonce": {
            "$ref": "./custom-launch-v2.json#/components/schemas/NonzeroLowerHex32"
          },
          "replacementPermitWindow": {
            "$ref": "#/components/schemas/DirectNativePermitWindowV1"
          }
        },
        "additionalProperties": false
      },
      "PermitReissueDispositionV1": {
        "type": "object",
        "required": [
          "schemaVersion"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-permit-reissue-disposition.v1"
          },
          "reason": {
            "type": "string"
          },
          "resourceBinding": {
            "type": "object"
          },
          "requestedReplacementAuthorization": {
            "type": "object"
          },
          "deployedContractConstraint": {
            "type": "object"
          },
          "feeAndSecurityGates": {
            "type": "object"
          },
          "currentReleaseRecovery": {
            "type": "object"
          },
          "futureContractBoundary": {
            "type": "object"
          }
        },
        "additionalProperties": true
      },
      "CustomLaunchPreflightV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "requestHash",
          "profileRevision",
          "serverTime",
          "disposition",
          "launchEligibility",
          "evidenceTier",
          "riskClassification",
          "behaviorEvidence",
          "productTruthAxes",
          "hardBlockFindingCodes",
          "needsEvidenceFindingCodes",
          "warningFindingCodes",
          "staticBaseline",
          "remediations",
          "quotaConsumed",
          "nonceAllocated",
          "persisted",
          "walletSignatureRequiredLater",
          "walletBroadcastByService"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-preflight.v1"
          },
          "requestHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "profileRevision": {
            "enum": [
              2,
              3
            ]
          },
          "serverTime": {
            "type": "string",
            "format": "date-time"
          },
          "disposition": {
            "enum": [
              "supported",
              "supported_with_warnings",
              "needs_evidence",
              "unsupported"
            ]
          },
          "launchEligibility": {
            "type": "object",
            "required": [
              "deployable",
              "routable",
              "featured"
            ],
            "properties": {
              "deployable": {
                "type": "boolean",
                "description": "The exact request cleared the bounded deployment-mechanics preflight at this evidence tier. This does not prove that a deployment happened."
              },
              "routable": {
                "type": "boolean",
                "description": "The exact request cleared the current routing-evidence preflight. This does not prove live trading, liquidity or economic safety."
              },
              "featured": {
                "type": "boolean",
                "description": "The exact request currently meets the preflight feature-eligibility policy. This does not prove indexing or placement."
              }
            },
            "additionalProperties": false
          },
          "evidenceTier": {
            "enum": [
              "launch_mechanics_verified",
              "standard_swap_compatible",
              "advanced_custom_accounting",
              "governed_external_trust"
            ],
            "description": "A required-evidence classification, not a passed runtime check. Read behaviorEvidence and each product-truth axis independently."
          },
          "riskClassification": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PlatformAdmissionRiskClassificationV3"
              },
              {
                "type": "null"
              }
            ],
            "description": "Current revision-3 static classification. Revision-2 compatibility preflight returns null."
          },
          "behaviorEvidence": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorEvidenceSummaryV3"
          },
          "productTruthAxes": {
            "$ref": "#/components/schemas/CustomLaunchProductTruthAxesV3"
          },
          "hardBlockFindingCodes": {
            "$ref": "#/components/schemas/CustomLaunchFindingCodeListV1"
          },
          "needsEvidenceFindingCodes": {
            "$ref": "#/components/schemas/CustomLaunchFindingCodeListV1"
          },
          "warningFindingCodes": {
            "$ref": "#/components/schemas/CustomLaunchFindingCodeListV1"
          },
          "staticBaseline": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaticBaselineReportV1"
              },
              {
                "type": "null"
              }
            ]
          },
          "remediations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomLaunchRemediationV1"
            }
          },
          "quotaConsumed": {
            "const": false,
            "description": "No launch-creation quota or durable launch reservation is consumed. The authenticated call still consumes its ordinary route rate budget; partner credentials use prepareRequestsPerHour."
          },
          "nonceAllocated": {
            "const": false
          },
          "persisted": {
            "const": false
          },
          "walletSignatureRequiredLater": {
            "const": true
          },
          "walletBroadcastByService": {
            "const": false
          }
        },
        "description": "Side-effect-free classification of one exact V3 request. Risk classification, platform-owned behavior requirements and six independent product-truth axes are explicit. An unexecuted behavior vector is not a terminal failure and never becomes a caller-declared pass; its corresponding claims remain unverified. This response is not a durable launch resource, deployment proof, trading proof, audit, source-verification result, indexing result or feature-placement promise.",
        "additionalProperties": true
      },
      "CustomLaunchFindingCodeListV1": {
        "type": "array",
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "pattern": "^[A-Z][A-Z0-9_]*$"
        },
        "uniqueItems": true
      },
      "PlatformAdmissionRiskClassificationV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "classifierVersion",
          "evidenceAuthority",
          "disposition",
          "launchEligibility",
          "evidenceTier",
          "evidenceTierStatus",
          "hardBlockFindingCodes",
          "needsEvidenceFindingCodes",
          "requiredEvidence",
          "behaviorEvidenceStatus",
          "approvalAuthority",
          "safetyClaim",
          "feeBehaviorClaim",
          "limitations"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.platform-admission-risk-classification.v3"
          },
          "classifierVersion": {
            "const": "1.0.0"
          },
          "evidenceAuthority": {
            "const": "deterministic-static-classification"
          },
          "disposition": {
            "enum": [
              "hard_blocked",
              "needs_evidence"
            ]
          },
          "launchEligibility": {
            "type": "object",
            "required": [
              "deployable",
              "routable",
              "featured",
              "basis"
            ],
            "properties": {
              "deployable": {
                "type": "boolean"
              },
              "routable": {
                "const": false
              },
              "featured": {
                "const": false
              },
              "basis": {
                "enum": [
                  "hard-blocking-static-finding",
                  "static-admission-only"
                ]
              }
            },
            "additionalProperties": false
          },
          "evidenceTier": {
            "enum": [
              "launch_mechanics_verified",
              "standard_swap_compatible",
              "advanced_custom_accounting",
              "governed_external_trust"
            ],
            "description": "A static risk/evidence classification. evidenceTierStatus reports whether the evidence duty remains required; the tier name is not a compatibility or safety claim."
          },
          "evidenceTierStatus": {
            "enum": [
              "failed",
              "required"
            ]
          },
          "hardBlockFindingCodes": {
            "$ref": "#/components/schemas/CustomLaunchFindingCodeListV1"
          },
          "requiredEvidence": {
            "type": "array",
            "items": {
              "enum": [
                "launch.router-simulation",
                "launch.exact-target-analysis",
                "launch.child-contract-lifecycle-and-codehash",
                "callback.pool-manager-authentication",
                "swap.four-quadrant-multi-size",
                "swap.second-user-and-time",
                "liquidity.declared-lifecycle-and-withdrawal",
                "liquidity.lock-release-and-custody",
                "custom-accounting.delta-solvency-backing-refund-withdrawal",
                "governance.authority-bounds-delay-and-upgrade-path",
                "external-dependency.codehash-liveness-staleness-and-trust",
                "platform-fee.ten-bps-no-bypass-no-overcharge-claim-isolation"
              ]
            },
            "uniqueItems": true
          },
          "needsEvidenceFindingCodes": {
            "$ref": "#/components/schemas/CustomLaunchFindingCodeListV1",
            "description": "Conditions that require executable or governance evidence but do not categorically block current revision-3 admission."
          },
          "riskClassification": {
            "$ref": "#/components/schemas/PlatformAdmissionRiskClassificationV3"
          },
          "behaviorEvidence": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorEvidenceSummaryV3"
          },
          "productTruthAxes": {
            "$ref": "#/components/schemas/CustomLaunchProductTruthAxesV3"
          },
          "behaviorEvidenceStatus": {
            "const": "not_executed"
          },
          "approvalAuthority": {
            "const": false
          },
          "safetyClaim": {
            "const": false
          },
          "feeBehaviorClaim": {
            "const": false
          },
          "limitations": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "minItems": 1
          }
        },
        "description": "Deterministic static classification. deployable means only that no current revision-3 hard blocker matched; routable and featured remain false until separate evidence exists.",
        "additionalProperties": false
      },
      "CustomLaunchBehaviorVectorIdV3": {
        "enum": [
          "swap.zero-for-one.exact-input.multi-size",
          "swap.zero-for-one.exact-output.multi-size",
          "swap.one-for-zero.exact-input.multi-size",
          "swap.one-for-zero.exact-output.multi-size",
          "swap.second-user",
          "swap.time-advance",
          "liquidity.lifecycle.add-remove-withdraw",
          "callback.permission-mask-and-declaration",
          "callback.enabled-entrypoints-and-selectors",
          "callback.canonical-pool-manager-only",
          "callback.unauthorized-rejected",
          "callback.wrong-pool-rejected-or-isolated",
          "fee.programmable-ten-bps",
          "fee.no-bypass",
          "fee.no-overcharge",
          "fee.claim-isolation",
          "custom-accounting.delta-solvency",
          "custom-accounting.inventory-backing",
          "custom-accounting.refund",
          "custom-accounting.withdrawal"
        ]
      },
      "RequiredCustomLaunchBehaviorVectorV3": {
        "type": "object",
        "required": [
          "vectorId",
          "category",
          "requirement",
          "claimAxes"
        ],
        "properties": {
          "vectorId": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorVectorIdV3"
          },
          "category": {
            "enum": [
              "swap",
              "liquidity",
              "callback-authentication",
              "platform-fee",
              "custom-accounting"
            ]
          },
          "requirement": {
            "const": "required"
          },
          "claimAxes": {
            "type": "array",
            "items": {
              "enum": [
                "deployability-hard-invariant",
                "platform-fee-conformance",
                "liquidity-conformance",
                "routability"
              ]
            },
            "minItems": 1,
            "uniqueItems": true
          }
        },
        "additionalProperties": false
      },
      "CustomLaunchBehaviorRequirementsV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "vectorSetVersion",
          "riskClass",
          "hookPermissionMask",
          "liquidityModel",
          "vectors",
          "requirementsSha256"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-behavior-requirements.v1"
          },
          "vectorSetVersion": {
            "const": "1.1.0"
          },
          "riskClass": {
            "enum": [
              "standard-swaps",
              "advanced-custom-accounting"
            ]
          },
          "hookPermissionMask": {
            "type": "integer",
            "minimum": 0,
            "maximum": 16383
          },
          "liquidityModel": {
            "enum": [
              "external-concentrated-liquidity",
              "launch-seeded-concentrated-liquidity",
              "hook-inventory-custom-accounting"
            ]
          },
          "vectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RequiredCustomLaunchBehaviorVectorV3"
            },
            "minItems": 16,
            "maxItems": 20,
            "uniqueItems": true
          },
          "requirementsSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          }
        },
        "additionalProperties": false
      },
      "CustomLaunchBehaviorExecutionVectorV3": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "vectorId",
              "status",
              "evidenceSha256",
              "reasonCode"
            ],
            "properties": {
              "vectorId": {
                "$ref": "#/components/schemas/CustomLaunchBehaviorVectorIdV3"
              },
              "status": {
                "const": "verified"
              },
              "evidenceSha256": {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              },
              "reasonCode": {
                "type": "null"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "vectorId",
              "status",
              "evidenceSha256",
              "reasonCode"
            ],
            "properties": {
              "vectorId": {
                "$ref": "#/components/schemas/CustomLaunchBehaviorVectorIdV3"
              },
              "status": {
                "const": "failed"
              },
              "evidenceSha256": {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              },
              "reasonCode": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "vectorId",
              "status",
              "evidenceSha256",
              "reasonCode"
            ],
            "properties": {
              "vectorId": {
                "$ref": "#/components/schemas/CustomLaunchBehaviorVectorIdV3"
              },
              "status": {
                "const": "not_executed"
              },
              "evidenceSha256": {
                "type": "null"
              },
              "reasonCode": {
                "enum": [
                  "GENERIC_ROUTER_SIMULATION_ONLY",
                  "BEHAVIOR_RUNNER_NOT_CONFIGURED",
                  "BEHAVIOR_RUNNER_UNAVAILABLE",
                  "VECTOR_NOT_SUPPORTED_BY_RUNNER",
                  "VECTOR_PREREQUISITE_UNAVAILABLE"
                ]
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "CustomLaunchBehaviorExecutionV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "subjectSha256",
          "requirementsSha256",
          "evidenceAuthority",
          "runnerId",
          "runnerVersion",
          "runnerBuildSha256",
          "executedAt",
          "vectors"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-behavior-execution.v1"
          },
          "subjectSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "requirementsSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "evidenceAuthority": {
            "const": "platform-runtime-executor"
          },
          "runnerId": {
            "type": "string",
            "minLength": 1
          },
          "runnerVersion": {
            "type": "string",
            "minLength": 1
          },
          "runnerBuildSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "executedAt": {
            "type": "string",
            "format": "date-time"
          },
          "vectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomLaunchBehaviorExecutionVectorV3"
            },
            "minItems": 16,
            "maxItems": 20
          }
        },
        "description": "Accepted only from a platform runtime executor and bound to the exact subject and requirement hashes. Caller or agent declarations never satisfy this schema.",
        "additionalProperties": false
      },
      "CustomLaunchBehaviorVectorSummaryV3": {
        "type": "object",
        "required": [
          "vectorId",
          "category",
          "claimAxes",
          "status",
          "evidenceSha256",
          "reasonCode"
        ],
        "properties": {
          "vectorId": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorVectorIdV3"
          },
          "category": {
            "enum": [
              "swap",
              "liquidity",
              "callback-authentication",
              "platform-fee",
              "custom-accounting"
            ]
          },
          "claimAxes": {
            "type": "array",
            "items": {
              "enum": [
                "deployability-hard-invariant",
                "platform-fee-conformance",
                "liquidity-conformance",
                "routability"
              ]
            },
            "minItems": 1,
            "uniqueItems": true
          },
          "status": {
            "enum": [
              "required",
              "not_executed",
              "verified",
              "failed"
            ]
          },
          "evidenceSha256": {
            "oneOf": [
              {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              },
              {
                "type": "null"
              }
            ]
          },
          "reasonCode": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "CustomLaunchBehaviorClaimAxesV3": {
        "type": "object",
        "required": [
          "deployability",
          "platformFeeConformance",
          "liquidityConformance",
          "routability",
          "featured",
          "finality"
        ],
        "properties": {
          "deployability": {
            "type": "object",
            "required": [
              "status",
              "scope",
              "requiredVectorIds",
              "outstandingVectorIds"
            ],
            "properties": {
              "status": {
                "enum": [
                  "behavior-hard-invariants-required",
                  "behavior-hard-invariants-verified",
                  "blocked"
                ]
              },
              "scope": {
                "const": "behavior-only"
              },
              "requiredVectorIds": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CustomLaunchBehaviorVectorIdV3"
                },
                "uniqueItems": true
              },
              "outstandingVectorIds": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CustomLaunchBehaviorVectorIdV3"
                },
                "uniqueItems": true
              }
            },
            "additionalProperties": false
          },
          "platformFeeConformance": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorVerificationAxisV3"
          },
          "liquidityConformance": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorVerificationAxisV3"
          },
          "routability": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorVerificationAxisV3"
          },
          "featured": {
            "type": "object",
            "required": [
              "status",
              "derivedFromBehaviorEvidence"
            ],
            "properties": {
              "status": {
                "const": "external-evidence-required"
              },
              "derivedFromBehaviorEvidence": {
                "const": false
              }
            },
            "additionalProperties": false
          },
          "finality": {
            "type": "object",
            "required": [
              "status",
              "derivedFromBehaviorEvidence"
            ],
            "properties": {
              "status": {
                "const": "independent-evidence-required"
              },
              "derivedFromBehaviorEvidence": {
                "const": false
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "CustomLaunchBehaviorVerificationAxisV3": {
        "type": "object",
        "required": [
          "status",
          "requiredVectorIds",
          "outstandingVectorIds"
        ],
        "properties": {
          "status": {
            "enum": [
              "not_verified",
              "verified",
              "blocked"
            ]
          },
          "requiredVectorIds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomLaunchBehaviorVectorIdV3"
            },
            "uniqueItems": true
          },
          "outstandingVectorIds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomLaunchBehaviorVectorIdV3"
            },
            "uniqueItems": true
          }
        },
        "additionalProperties": false
      },
      "CustomLaunchBehaviorEvidenceSummaryV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "subjectSha256",
          "requirements",
          "status",
          "execution",
          "vectors",
          "outstandingVectorIds",
          "claimAxes"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-behavior-summary.v1"
          },
          "subjectSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "requirements": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorRequirementsV3"
          },
          "status": {
            "enum": [
              "required",
              "not_executed",
              "verified",
              "failed"
            ]
          },
          "execution": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomLaunchBehaviorExecutionV3"
              },
              {
                "type": "null"
              }
            ]
          },
          "vectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomLaunchBehaviorVectorSummaryV3"
            },
            "minItems": 16,
            "maxItems": 20
          },
          "outstandingVectorIds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomLaunchBehaviorVectorIdV3"
            },
            "uniqueItems": true
          },
          "claimAxes": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorClaimAxesV3"
          }
        },
        "description": "Platform-owned runtime-evidence summary. not_executed means the vectors remain outstanding; it never means verified and cannot be supplied or promoted by the API caller. Missing execution leaves behavior-derived claims unverified; an authenticated executed failure blocks wallet handoff.",
        "additionalProperties": false
      },
      "CustomLaunchBehaviorAssuranceAxisV3": {
        "type": "object",
        "required": [
          "status",
          "basis"
        ],
        "properties": {
          "status": {
            "enum": [
              "not_verified",
              "verified",
              "conditional",
              "blocked"
            ]
          },
          "basis": {
            "enum": [
              "behavior-evidence-required",
              "exact-ten-bps-evidence-required",
              "liquidity-lifecycle-evidence-required",
              "exact-runtime-evidence",
              "mutable-authority-evidence-required",
              "behavior-vector-failed"
            ]
          }
        },
        "additionalProperties": false
      },
      "CustomLaunchBehaviorAssuranceV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "authorizationScope",
          "evidenceAuthority",
          "behaviorExecution",
          "mutableAuthorityConditional",
          "routability",
          "platformFeeConformance",
          "liquidityConformance",
          "safety"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-behavior-assurance.v1"
          },
          "authorizationScope": {
            "const": "exact-launch-provenance-only"
          },
          "evidenceAuthority": {
            "enum": [
              "platform-runtime-executor",
              "none"
            ]
          },
          "behaviorExecution": {
            "enum": [
              "executed",
              "not_executed"
            ]
          },
          "mutableAuthorityConditional": {
            "type": "boolean"
          },
          "routability": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorAssuranceAxisV3"
          },
          "platformFeeConformance": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorAssuranceAxisV3"
          },
          "liquidityConformance": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorAssuranceAxisV3"
          },
          "safety": {
            "type": "object",
            "required": [
              "status",
              "basis"
            ],
            "properties": {
              "status": {
                "const": "not_verified"
              },
              "basis": {
                "const": "no-universal-safety-claim"
              }
            },
            "additionalProperties": false
          }
        },
        "description": "Server-authored projection of what the exact per-launch runtime evidence can support. Fresh profile 3.4.0 cannot authorize unless behavior execution and exact launch-bound platform-fee conformance are verified. Missing, not-configured or unavailable execution remains retryable and blocks wallet handoff; an authenticated executed failure blocks terminally. Legacy resources preserve their stored evidence semantics. No universal safety claim is produced.",
        "additionalProperties": false
      },
      "FreshWalletHandoffBehaviorEvidenceV3_4": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CustomLaunchBehaviorEvidenceSummaryV3"
          },
          {
            "type": "object",
            "required": [
              "status",
              "claimAxes"
            ],
            "properties": {
              "status": {
                "const": "verified"
              },
              "claimAxes": {
                "type": "object",
                "required": [
                  "platformFeeConformance"
                ],
                "properties": {
                  "platformFeeConformance": {
                    "type": "object",
                    "required": [
                      "status",
                      "outstandingVectorIds"
                    ],
                    "properties": {
                      "status": {
                        "const": "verified"
                      },
                      "outstandingVectorIds": {
                        "maxItems": 0
                      }
                    }
                  }
                }
              }
            }
          }
        ],
        "description": "Fresh profile 3.4.0 wallet-handoff evidence. The server owns execution and verdicts; exact platform-fee conformance must be verified, not conditional or caller-declared."
      },
      "FreshWalletHandoffBehaviorAssuranceV3_4": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CustomLaunchBehaviorAssuranceV3"
          },
          {
            "type": "object",
            "required": [
              "evidenceAuthority",
              "behaviorExecution",
              "platformFeeConformance"
            ],
            "properties": {
              "evidenceAuthority": {
                "const": "platform-runtime-executor"
              },
              "behaviorExecution": {
                "const": "executed"
              },
              "platformFeeConformance": {
                "type": "object",
                "required": [
                  "status"
                ],
                "properties": {
                  "status": {
                    "const": "verified"
                  }
                }
              }
            }
          }
        ],
        "description": "Fresh profile 3.4.0 wallet-handoff assurance. Conditional platform-fee status is insufficient; mutable fee-path authority fails before handoff with PLATFORM_FEE_PATH_NOT_IMMUTABLE."
      },
      "CustomLaunchProductTruthAxesV3": {
        "type": "object",
        "required": [
          "deployment",
          "trading",
          "platform_fee_evidence",
          "source_verification",
          "indexing",
          "featured"
        ],
        "properties": {
          "deployment": {
            "type": "object",
            "required": [
              "status",
              "basis",
              "transactionExecuted"
            ],
            "properties": {
              "status": {
                "enum": [
                  "eligible",
                  "blocked"
                ]
              },
              "basis": {
                "enum": [
                  "static-admission-only",
                  "hard-blocking-static-finding"
                ]
              },
              "transactionExecuted": {
                "const": false
              }
            },
            "additionalProperties": false
          },
          "trading": {
            "type": "object",
            "required": [
              "status",
              "basis"
            ],
            "properties": {
              "status": {
                "const": "not_verified"
              },
              "basis": {
                "const": "runtime-behavior-evidence-required"
              }
            },
            "additionalProperties": false
          },
          "platform_fee_evidence": {
            "type": "object",
            "required": [
              "status",
              "basis"
            ],
            "properties": {
              "status": {
                "const": "not_verified"
              },
              "basis": {
                "const": "exact-fee-behavior-evidence-required"
              }
            },
            "additionalProperties": false
          },
          "source_verification": {
            "type": "object",
            "required": [
              "status",
              "basis"
            ],
            "properties": {
              "status": {
                "const": "not_verified"
              },
              "basis": {
                "const": "provider-exact-match-required"
              }
            },
            "additionalProperties": false
          },
          "indexing": {
            "type": "object",
            "required": [
              "status",
              "basis"
            ],
            "properties": {
              "status": {
                "const": "not_indexed"
              },
              "basis": {
                "const": "finalized-router-identity-required"
              }
            },
            "additionalProperties": false
          },
          "featured": {
            "type": "object",
            "required": [
              "status",
              "basis"
            ],
            "properties": {
              "status": {
                "const": "not_featured"
              },
              "basis": {
                "const": "separate-product-evidence-required"
              }
            },
            "additionalProperties": false
          }
        },
        "description": "Six independent product claims. A positive or eligible value on one axis never implies another axis.",
        "additionalProperties": false
      },
      "CustomLaunchLifecycleQueueV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "state",
          "reason",
          "generation",
          "attemptCount",
          "pollAfterSeconds",
          "nextAttemptAt",
          "leaseExpiresAt",
          "workExpiresAt",
          "lastErrorCode",
          "updatedAt",
          "polling"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-lifecycle-queue.v3"
          },
          "state": {
            "enum": [
              "queued",
              "processing",
              "backing_off",
              "waiting",
              "completed",
              "failed",
              "expired"
            ]
          },
          "reason": {
            "enum": [
              "request-created",
              "funding-authorization-verified",
              "transaction-submitted",
              "reconciliation-due",
              "operator-retry"
            ]
          },
          "generation": {
            "type": "integer",
            "minimum": 1
          },
          "attemptCount": {
            "type": "integer",
            "minimum": 0
          },
          "pollAfterSeconds": {
            "oneOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "nextAttemptAt": {
            "oneOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "leaseExpiresAt": {
            "oneOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "workExpiresAt": {
            "oneOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "lastErrorCode": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 128,
                "pattern": "^[A-Z][A-Z0-9_]*$"
              },
              {
                "type": "null"
              }
            ]
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "polling": {
            "type": "object",
            "required": [
              "method",
              "path"
            ],
            "properties": {
              "method": {
                "const": "GET"
              },
              "path": {
                "type": "string",
                "pattern": "^/v3/custom-launches/[0-9a-f-]{36}$"
              }
            },
            "additionalProperties": false
          }
        },
        "description": "Bounded durable-worker readback. Queue completion is not launch finality, and a retry does not change the durable launch status. Worker identity, payloads and raw errors are never exposed.",
        "additionalProperties": false
      },
      "NonzeroCanonicalUint256": {
        "type": "string",
        "pattern": "^(?:[1-9][0-9]*)$",
        "maxLength": 78,
        "description": "Nonzero base-10 uint256 with no sign or leading zeroes."
      },
      "SelectedFeeHundredthsOfBipV1": {
        "type": "string",
        "pattern": "^(?:0|[1-9][0-9]{0,5})$",
        "description": "Derived fee-economics amount from 0 through 999999 hundredths of a bip. This shared output range deliberately permits the additive effective total of 101000 when the applicant selects the maximum 100000 and the separate platform share is 1000."
      },
      "ApplicantSelectedFeeHundredthsOfBipV1": {
        "type": "string",
        "pattern": "^(?:0|[1-9][0-9]{0,4}|100000)$",
        "description": "Applicant-selected project fee from 0 through 100000 hundredths of a bip. The API server enforces this cap independently for buy and sell in both accounting modes. The separate Programmable share remains exactly 1000."
      },
      "DirectNativeTargetRolesV1": {
        "type": "object",
        "required": [
          "tokenTargetId",
          "hookTargetId",
          "initializerTargetId",
          "platformFeeBindingTargetId"
        ],
        "properties": {
          "tokenTargetId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier",
            "description": "Canonical selected token target identifier. Recognizable secret material is rejected because finalized metadata is public."
          },
          "hookTargetId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier"
          },
          "initializerTargetId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier",
            "description": "Must reference a direct graph target whose componentKind is other. Initializer is a role, not a component kind."
          },
          "platformFeeBindingTargetId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier",
            "description": "For pending profile 3.4.0, this must reference the exact programmable:settlement-fee-vault:v1 target. The applicant cannot select another platform fee target. Exact legacy profiles retain their immutable target-role semantics."
          }
        },
        "description": "The token, hook and initializer IDs are distinct. Pending profile 3.4.0 additionally requires a distinct canonical settlement-fee-vault target, while the reciprocal non-vault route may be the hook or another project-owned graph target.",
        "additionalProperties": false
      },
      "PlatformFeePolicyV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "accountingMode",
          "applicability",
          "rateDenominator",
          "programmableFeeHundredthsOfBip",
          "assessmentBase",
          "feeCurrency",
          "roundingMode",
          "claimAuthority"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.platform-fee-policy.v1"
          },
          "accountingMode": {
            "enum": [
              "additive-platform-share",
              "inclusive-selected-total"
            ]
          },
          "applicability": {
            "const": "successful-pool-swaps"
          },
          "rateDenominator": {
            "const": "1000000"
          },
          "programmableFeeHundredthsOfBip": {
            "const": "1000"
          },
          "assessmentBase": {
            "enum": [
              "executed-gross-declared-quote",
              "settled-input-before-platform-fee"
            ]
          },
          "feeCurrency": {
            "enum": [
              "declared-quote-currency",
              "input-currency"
            ]
          },
          "roundingMode": {
            "const": "floor"
          },
          "claimAuthority": {
            "const": "0x4957f49620AFf3Adbbe8195a4f633E49cc93376c"
          }
        },
        "description": "The exact assessment pair and accounting mode are intent-bound and the server recomputes all derived fee values. This object declares the requested fee policy; it is not execution evidence and does not by itself establish accrual, collectability or a 10 bps product claim.",
        "allOf": [
          {
            "if": {
              "properties": {
                "assessmentBase": {
                  "const": "executed-gross-declared-quote"
                }
              }
            },
            "then": {
              "properties": {
                "feeCurrency": {
                  "const": "declared-quote-currency"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "assessmentBase": {
                  "const": "settled-input-before-platform-fee"
                }
              }
            },
            "then": {
              "properties": {
                "feeCurrency": {
                  "const": "input-currency"
                }
              }
            }
          }
        ],
        "additionalProperties": false
      },
      "PlatformFeeProofPolicyV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "mode",
          "receiptSchemaVersion",
          "runnerId",
          "runnerVersion",
          "vectorSetVersion",
          "receiptAuthority",
          "subject",
          "activationStatus"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.platform-fee-conformance-policy.v1"
          },
          "mode": {
            "const": "platform-issued-exact-graph-receipt-v1"
          },
          "receiptSchemaVersion": {
            "const": "programmable.platform-fee-conformance-receipt.v1"
          },
          "runnerId": {
            "const": "programmable.platform-fee-conformance"
          },
          "runnerVersion": {
            "const": "1.0.0"
          },
          "vectorSetVersion": {
            "const": "1.0.0"
          },
          "receiptAuthority": {
            "const": "platform-only"
          },
          "subject": {
            "const": "final-graph-commitment-and-runtime-set"
          },
          "activationStatus": {
            "const": "live"
          }
        },
        "additionalProperties": false
      },
      "PlatformAdmissionPolicyV3_1_0": {
        "type": "object",
        "required": [
          "schemaVersion",
          "mode",
          "receiptSchemaVersion",
          "engineId",
          "engineVersion",
          "exactSourceCompilerGraphBindingRequired",
          "staticBaselineGateVersion",
          "blockingFindingRules",
          "warningDisposition",
          "noBlockingFindingDisposition",
          "blockingFindingDisposition",
          "routerSimulationRequiredBeforeAuthorization",
          "receiptAuthority",
          "assurance",
          "safetyClaim",
          "feeBehaviorClaim"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.direct-native-platform-admission-policy.v1"
          },
          "mode": {
            "const": "deterministic-exact-source-graph-static-baseline-v1"
          },
          "receiptSchemaVersion": {
            "const": "programmable.platform-admission-receipt.v1"
          },
          "engineId": {
            "const": "programmable.direct-native-static-admission"
          },
          "engineVersion": {
            "const": "1.0.0"
          },
          "exactSourceCompilerGraphBindingRequired": {
            "const": true
          },
          "staticBaselineGateVersion": {
            "const": "1.0.0"
          },
          "blockingFindingRules": {
            "const": [
              {
                "code": "RUNTIME_CALLCODE",
                "targetRoles": [
                  "any"
                ]
              },
              {
                "code": "RUNTIME_SELFDESTRUCT",
                "targetRoles": [
                  "any"
                ]
              },
              {
                "code": "SOURCE_SELFDESTRUCT_SURFACE",
                "targetRoles": [
                  "any"
                ]
              },
              {
                "code": "V4_CALLBACK_AUTHENTICATION_MISSING",
                "targetRoles": [
                  "hook"
                ]
              },
              {
                "code": "V4_CALLBACK_AUTHENTICATION_INVALID",
                "targetRoles": [
                  "hook"
                ]
              },
              {
                "code": "V4_CALLBACK_POOL_MANAGER_MISMATCH",
                "targetRoles": [
                  "hook"
                ]
              },
              {
                "code": "V4_ENABLED_CALLBACK_IMPLEMENTATION_MISSING",
                "targetRoles": [
                  "hook"
                ]
              }
            ]
          },
          "warningDisposition": {
            "const": "bound-and-visible"
          },
          "noBlockingFindingDisposition": {
            "const": "router-simulation-eligible"
          },
          "blockingFindingDisposition": {
            "const": "action-required"
          },
          "routerSimulationRequiredBeforeAuthorization": {
            "const": true
          },
          "receiptAuthority": {
            "const": "platform-only"
          },
          "assurance": {
            "const": "launch-admission-only"
          },
          "safetyClaim": {
            "const": false
          },
          "feeBehaviorClaim": {
            "const": false
          }
        },
        "description": "Immutable launch-admission policy shared by profiles 3.1.0 and 3.2.0. Exactly seven objective code-and-role rules are hard blockers. Proxy, delegatecall, mint, tax, pause, liquidity and return-delta surfaces require evidence but do not categorically block deployment. Admission is not an audit or a safety, honeypot, liquidity, tradeability, or fee-behavior guarantee.",
        "additionalProperties": false
      },
      "PlatformAdmissionPolicyV3_0_0": {
        "type": "object",
        "required": [
          "schemaVersion",
          "mode",
          "receiptSchemaVersion",
          "engineId",
          "engineVersion",
          "exactSourceCompilerGraphBindingRequired",
          "staticBaselineGateVersion",
          "blockingFindingRules",
          "warningDisposition",
          "noBlockingFindingDisposition",
          "blockingFindingDisposition",
          "routerSimulationRequiredBeforeAuthorization",
          "receiptAuthority",
          "assurance",
          "safetyClaim",
          "feeBehaviorClaim"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.direct-native-platform-admission-policy.v1"
          },
          "mode": {
            "const": "deterministic-exact-source-graph-static-baseline-v1"
          },
          "receiptSchemaVersion": {
            "const": "programmable.platform-admission-receipt.v1"
          },
          "engineId": {
            "const": "programmable.direct-native-static-admission"
          },
          "engineVersion": {
            "const": "1.0.0"
          },
          "exactSourceCompilerGraphBindingRequired": {
            "const": true
          },
          "staticBaselineGateVersion": {
            "const": "1.0.0"
          },
          "blockingFindingRules": {
            "const": [
              {
                "code": "SOURCE_TARGET_ANALYSIS_INCOMPLETE",
                "targetRoles": [
                  "any"
                ]
              },
              {
                "code": "V4_CALLBACK_AUTHENTICATION_REVIEW_REQUIRED",
                "targetRoles": [
                  "hook"
                ]
              },
              {
                "code": "V4_ENABLED_CALLBACK_IMPLEMENTATION_MISSING",
                "targetRoles": [
                  "hook"
                ]
              },
              {
                "code": "SOURCE_MUTABLE_BLOCKLIST_SURFACE",
                "targetRoles": [
                  "token"
                ]
              },
              {
                "code": "SOURCE_MUTABLE_TRANSFER_RESTRICTION",
                "targetRoles": [
                  "token"
                ]
              },
              {
                "code": "SOURCE_PUBLIC_MINT_SURFACE",
                "targetRoles": [
                  "token"
                ]
              },
              {
                "code": "SOURCE_MUTABLE_PAUSE_SURFACE",
                "targetRoles": [
                  "token"
                ]
              },
              {
                "code": "SOURCE_MUTABLE_TAX_OR_FEE_SURFACE",
                "targetRoles": [
                  "token"
                ]
              },
              {
                "code": "SOURCE_PROXY_OR_UPGRADE_SURFACE",
                "targetRoles": [
                  "token",
                  "hook"
                ]
              },
              {
                "code": "SOURCE_SELFDESTRUCT_SURFACE",
                "targetRoles": [
                  "token",
                  "hook"
                ]
              },
              {
                "code": "RUNTIME_CALLCODE",
                "targetRoles": [
                  "token",
                  "hook"
                ]
              },
              {
                "code": "RUNTIME_DELEGATECALL",
                "targetRoles": [
                  "token",
                  "hook"
                ]
              },
              {
                "code": "RUNTIME_SELFDESTRUCT",
                "targetRoles": [
                  "token",
                  "hook"
                ]
              }
            ]
          },
          "warningDisposition": {
            "const": "bound-and-visible"
          },
          "noBlockingFindingDisposition": {
            "const": "router-simulation-eligible"
          },
          "blockingFindingDisposition": {
            "const": "action-required"
          },
          "routerSimulationRequiredBeforeAuthorization": {
            "const": true
          },
          "receiptAuthority": {
            "const": "platform-only"
          },
          "assurance": {
            "const": "launch-admission-only"
          },
          "safetyClaim": {
            "const": false
          },
          "feeBehaviorClaim": {
            "const": false
          }
        },
        "description": "Immutable legacy profile-3.0.0 policy retained only so byte-identical existing requests remain readable and retryable. New packs use profile 3.2.0.",
        "additionalProperties": false
      },
      "PlatformAdmissionPolicyV1": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/PlatformAdmissionPolicyV3_1_0"
          },
          {
            "$ref": "#/components/schemas/PlatformAdmissionPolicyV3_0_0"
          }
        ],
        "description": "Revision-3 admission policy. Profile version selects one exact immutable policy; clients cannot combine a profile version with the other version's rule set."
      },
      "DirectNativeGraphPolicyV1": {
        "type": "object",
        "required": [
          "minimumTargets",
          "maximumTargets",
          "directTargetsOnly"
        ],
        "properties": {
          "minimumTargets": {
            "enum": [
              3,
              4
            ],
            "description": "Exactly 4 for pending profile 3.4.0; exactly 3 for legacy profile versions. The profile schema binds the version-specific value."
          },
          "maximumTargets": {
            "const": 16
          },
          "directTargetsOnly": {
            "const": true
          }
        },
        "additionalProperties": false
      },
      "DirectNativeCurrencyPolicyV1": {
        "type": "object",
        "required": [
          "native",
          "erc20"
        ],
        "properties": {
          "native": {
            "const": true
          },
          "erc20": {
            "const": true
          }
        },
        "additionalProperties": false
      },
      "DirectNativeHookPermissionPolicyV1": {
        "type": "object",
        "required": [
          "minimumMask",
          "maximumMask",
          "requireHookMinerAddressMaskMatch"
        ],
        "properties": {
          "minimumMask": {
            "const": 0
          },
          "maximumMask": {
            "const": 16383
          },
          "requireHookMinerAddressMaskMatch": {
            "const": true
          }
        },
        "description": "All fourteen Uniswap v4 permission bits are supported. Return-delta permissions require their corresponding action permission and the hook address low bits must match the declaration.",
        "additionalProperties": false
      },
      "DirectNativeFundingPolicyV1": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "mode",
              "launchFundingRequired",
              "signatureRequired",
              "valueSource"
            ],
            "properties": {
              "mode": {
                "const": "wallet-transaction-value"
              },
              "launchFundingRequired": {
                "const": true
              },
              "signatureRequired": {
                "const": false
              },
              "valueSource": {
                "const": "exact-router-transaction-msg-value"
              }
            },
            "description": "Native ETH value is carried only by the exact Router transaction returned after conformance and simulation for separate wallet review. signatureRequired is false because there is no separate pre-Router funding signature; the wallet still explicitly signs the Router transaction.",
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "mode",
              "launchFundingRequired",
              "signatureRequired"
            ],
            "properties": {
              "mode": {
                "const": "none"
              },
              "launchFundingRequired": {
                "const": false
              },
              "signatureRequired": {
                "const": false
              }
            },
            "description": "No launch funding is transferred by the graph. The final Router transaction still requires explicit wallet review and signing even when value is zero.",
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "mode",
              "launchFundingRequired",
              "signatureRequired",
              "primaryType",
              "typeHash",
              "domainName",
              "domainVersion",
              "maximumValiditySeconds"
            ],
            "properties": {
              "mode": {
                "const": "eip-3009-receive-with-authorization"
              },
              "launchFundingRequired": {
                "const": true
              },
              "signatureRequired": {
                "const": true
              },
              "primaryType": {
                "const": "ReceiveWithAuthorization"
              },
              "typeHash": {
                "const": "0xd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8"
              },
              "domainName": {
                "const": "USD Coin"
              },
              "domainVersion": {
                "const": "2"
              },
              "maximumValiditySeconds": {
                "const": "3600"
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "ProjectMetadataPolicyV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "descriptionMinimumUtf8Bytes",
          "descriptionMaximumUtf8Bytes",
          "descriptionMinimumUnicodeLettersOrNumbers",
          "imageRequired",
          "imageReceiptSourceManifestBindingRequired",
          "imageMediaTypes",
          "linksMaximumCount",
          "requiredLinkKinds",
          "exactlyOneRequiredLinkPerKind",
          "websiteUriPolicy",
          "xUriPattern"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.project-metadata-policy.v1"
          },
          "descriptionMinimumUtf8Bytes": {
            "const": 20
          },
          "descriptionMaximumUtf8Bytes": {
            "const": 4096
          },
          "descriptionMinimumUnicodeLettersOrNumbers": {
            "const": 8
          },
          "imageRequired": {
            "const": true
          },
          "imageReceiptSourceManifestBindingRequired": {
            "const": true
          },
          "imageMediaTypes": {
            "const": [
              "image/png",
              "image/jpeg",
              "image/webp",
              "image/gif"
            ]
          },
          "linksMaximumCount": {
            "const": 32
          },
          "requiredLinkKinds": {
            "const": [
              "website",
              "x"
            ]
          },
          "exactlyOneRequiredLinkPerKind": {
            "const": true
          },
          "websiteUriPolicy": {
            "const": "canonical-public-credential-free-https"
          },
          "xUriPattern": {
            "const": "^https://x\\.com/[A-Za-z0-9_]{1,64}$"
          }
        },
        "description": "Hash-bound complete-metadata policy for profiles 3.4.0 and 3.3.0. The server enforces it during preflight and create; it does not apply retroactively to exact 3.2.0 or older requests.",
        "additionalProperties": false
      },
      "DirectNativeHookGraphProfileV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "profileId",
          "profileRevision",
          "profileVersion",
          "productionLaunchAuthorized",
          "chainId",
          "router",
          "routerRuntimeCodeHash",
          "permitAuthority",
          "permitAuthorityRuntimeCodeHash",
          "graphFactory",
          "graphFactoryRuntimeCodeHash",
          "poolManager",
          "poolManagerRuntimeCodeHash",
          "fundingToken",
          "fundingTokenRuntimeCodeHash",
          "graphPolicy",
          "currencyPolicy",
          "hookPermissionPolicy",
          "fundingPolicy",
          "platformFeePolicy"
        ],
        "properties": {
          "schemaVersion": {
            "enum": [
              "programmable.direct-native-hook-graph-profile.v2",
              "programmable.direct-native-hook-graph-profile.v3"
            ]
          },
          "profileId": {
            "const": "programmable.direct-native-hook-graph.v1"
          },
          "profileRevision": {
            "enum": [
              2,
              3
            ]
          },
          "profileVersion": {
            "enum": [
              "2.0.0",
              "3.0.0",
              "3.1.0",
              "3.2.0",
              "3.3.0",
              "3.4.0"
            ]
          },
          "productionLaunchAuthorized": {
            "const": true,
            "description": "The V3 general profile is production authorized; runtime trust roots, role-aware admission and Router simulation still fail closed independently."
          },
          "chainId": {
            "const": "1"
          },
          "router": {
            "const": "0x8622DD5bAb44185f2A458ac90384Ac99248f8d56"
          },
          "routerRuntimeCodeHash": {
            "const": "0x40e27ecf201761d5eb66bc4f2d5c6124831ef078d7baf458ca5f41b1a8108546"
          },
          "permitAuthority": {
            "const": "0x755509eA6e3F5Ec1aA2E797bb68f1B87DD8b886b"
          },
          "permitAuthorityRuntimeCodeHash": {
            "const": "0xd7d408ebcd99b2b70be43e20253d6d92a8ea8fab29bd3be7f55b10032331fb4c"
          },
          "graphFactory": {
            "const": "0xB012e4A8F2c5FC4E8E4faCA9D5Ad6FfF13FBA887"
          },
          "graphFactoryRuntimeCodeHash": {
            "const": "0xd23692fae59331592048e71a96d4963e170ee56e449683dc9f7fa3f9470018b8"
          },
          "poolManager": {
            "const": "0x000000000004444c5dc75cB358380D2e3dE08A90"
          },
          "poolManagerRuntimeCodeHash": {
            "const": "0x785f1014552b7ce7d5fb7d0c970ca60edee94fd00425d7ca21609acac7ce1293"
          },
          "fundingToken": {
            "const": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
          },
          "fundingTokenRuntimeCodeHash": {
            "const": "0xd80d4b7c890cb9d6a4893e6b52bc34b56b25335cb13716e0d1d31383e6b41505"
          },
          "graphPolicy": {
            "$ref": "#/components/schemas/DirectNativeGraphPolicyV1"
          },
          "currencyPolicy": {
            "$ref": "#/components/schemas/DirectNativeCurrencyPolicyV1"
          },
          "hookPermissionPolicy": {
            "$ref": "#/components/schemas/DirectNativeHookPermissionPolicyV1"
          },
          "fundingPolicy": {
            "$ref": "#/components/schemas/DirectNativeFundingPolicyV1"
          },
          "platformFeePolicy": {
            "$ref": "#/components/schemas/PlatformFeePolicyV1"
          },
          "platformAdmissionPolicy": {
            "$ref": "#/components/schemas/PlatformAdmissionPolicyV1"
          },
          "projectMetadataPolicy": {
            "$ref": "#/components/schemas/ProjectMetadataPolicyV1"
          },
          "platformFeeProofPolicy": {
            "$ref": "#/components/schemas/PlatformFeeProofPolicyV1",
            "deprecated": true,
            "description": "Revision 2 compatibility field. New revision 3 requests use platformAdmissionPolicy."
          }
        },
        "oneOf": [
          {
            "required": [
              "platformAdmissionPolicy",
              "projectMetadataPolicy"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.direct-native-hook-graph-profile.v3"
              },
              "profileRevision": {
                "const": 3
              },
              "profileVersion": {
                "const": "3.4.0"
              },
              "platformAdmissionPolicy": {
                "$ref": "#/components/schemas/PlatformAdmissionPolicyV3_1_0"
              }
            },
            "not": {
              "required": [
                "platformFeeProofPolicy"
              ]
            }
          },
          {
            "required": [
              "platformAdmissionPolicy",
              "projectMetadataPolicy"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.direct-native-hook-graph-profile.v3"
              },
              "profileRevision": {
                "const": 3
              },
              "profileVersion": {
                "const": "3.3.0"
              },
              "platformAdmissionPolicy": {
                "$ref": "#/components/schemas/PlatformAdmissionPolicyV3_1_0"
              }
            },
            "not": {
              "required": [
                "platformFeeProofPolicy"
              ]
            }
          },
          {
            "required": [
              "platformAdmissionPolicy"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.direct-native-hook-graph-profile.v3"
              },
              "profileRevision": {
                "const": 3
              },
              "profileVersion": {
                "const": "3.2.0"
              },
              "platformAdmissionPolicy": {
                "$ref": "#/components/schemas/PlatformAdmissionPolicyV3_1_0"
              }
            },
            "not": {
              "anyOf": [
                {
                  "required": [
                    "platformFeeProofPolicy"
                  ]
                },
                {
                  "required": [
                    "projectMetadataPolicy"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "platformAdmissionPolicy"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.direct-native-hook-graph-profile.v3"
              },
              "profileRevision": {
                "const": 3
              },
              "profileVersion": {
                "const": "3.1.0"
              },
              "platformAdmissionPolicy": {
                "$ref": "#/components/schemas/PlatformAdmissionPolicyV3_1_0"
              }
            },
            "not": {
              "anyOf": [
                {
                  "required": [
                    "platformFeeProofPolicy"
                  ]
                },
                {
                  "required": [
                    "projectMetadataPolicy"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "platformAdmissionPolicy"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.direct-native-hook-graph-profile.v3"
              },
              "profileRevision": {
                "const": 3
              },
              "profileVersion": {
                "const": "3.0.0"
              },
              "platformAdmissionPolicy": {
                "$ref": "#/components/schemas/PlatformAdmissionPolicyV3_0_0"
              }
            },
            "not": {
              "anyOf": [
                {
                  "required": [
                    "platformFeeProofPolicy"
                  ]
                },
                {
                  "required": [
                    "projectMetadataPolicy"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "platformFeeProofPolicy"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.direct-native-hook-graph-profile.v2"
              },
              "profileRevision": {
                "const": 2
              },
              "profileVersion": {
                "const": "2.0.0"
              }
            },
            "not": {
              "anyOf": [
                {
                  "required": [
                    "platformAdmissionPolicy"
                  ]
                },
                {
                  "required": [
                    "projectMetadataPolicy"
                  ]
                }
              ]
            }
          }
        ],
        "allOf": [
          {
            "if": {
              "properties": {
                "profileVersion": {
                  "const": "3.4.0"
                }
              },
              "required": [
                "profileVersion"
              ]
            },
            "then": {
              "properties": {
                "graphPolicy": {
                  "properties": {
                    "minimumTargets": {
                      "const": 4
                    }
                  }
                }
              }
            },
            "else": {
              "properties": {
                "graphPolicy": {
                  "properties": {
                    "minimumTargets": {
                      "const": 3
                    }
                  }
                }
              }
            }
          }
        ],
        "description": "Revision 3 direct-graph contract. Profile 3.4.0 is a pending, preparatory candidate and is not live or production-authorized by this document; live/default discovery remains exact profile 3.3.0 until backend activation is independently verified. Pending 3.4.0 requires four through sixteen targets inclusive of the frozen settlement-fee vault plus verified reciprocal route behavior. Exact 3.3.0 and older requests retain their original minimum of three targets and immutable compatibility policy. Exact source and compiler reconstruction, role-aware static admission and Router simulation remain mandatory. No result is an audit or a universal safety, honeypot, liquidity, tradeability, or fee-behavior guarantee.",
        "additionalProperties": false
      },
      "DirectNativePoolKeyV1": {
        "type": "object",
        "required": [
          "currency0",
          "currency1",
          "fee",
          "tickSpacing",
          "hooks"
        ],
        "properties": {
          "currency0": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "currency1": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "fee": {
            "oneOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 999999
              },
              {
                "const": 8388608
              }
            ],
            "description": "Static fee 0..999999 or the Uniswap v4 dynamic-fee sentinel 0x800000."
          },
          "tickSpacing": {
            "type": "integer",
            "minimum": 1,
            "maximum": 32767
          },
          "hooks": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          }
        },
        "description": "Currencies are distinct and sorted by numeric address. The hook address low bits must equal the declared 14-bit permission mask.",
        "additionalProperties": false
      },
      "DirectNativePlatformFeeBindingV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "targetId",
          "accountingMode",
          "applicability",
          "rateDenominator",
          "programmableFeeHundredthsOfBip",
          "assessmentBase",
          "feeCurrency",
          "roundingMode",
          "claimAuthority",
          "claimBinding",
          "economics"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.platform-fee-binding.v2"
          },
          "targetId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier",
            "description": "Must equal targetRoles.platformFeeBindingTargetId and name an exact graph target."
          },
          "accountingMode": {
            "enum": [
              "additive-platform-share",
              "inclusive-selected-total"
            ]
          },
          "applicability": {
            "const": "successful-pool-swaps"
          },
          "rateDenominator": {
            "const": "1000000"
          },
          "programmableFeeHundredthsOfBip": {
            "const": "1000"
          },
          "assessmentBase": {
            "enum": [
              "executed-gross-declared-quote",
              "settled-input-before-platform-fee"
            ]
          },
          "feeCurrency": {
            "enum": [
              "declared-quote-currency",
              "input-currency"
            ]
          },
          "roundingMode": {
            "const": "floor"
          },
          "claimAuthority": {
            "const": "0x4957f49620AFf3Adbbe8195a4f633E49cc93376c"
          },
          "claimBinding": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "mode",
                  "claimAuthority",
                  "payoutRecipient"
                ],
                "properties": {
                  "mode": {
                    "const": "immutable-payout-recipient"
                  },
                  "claimAuthority": {
                    "const": "0x4957f49620AFf3Adbbe8195a4f633E49cc93376c"
                  },
                  "payoutRecipient": {
                    "const": "0x4957f49620AFf3Adbbe8195a4f633E49cc93376c"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "mode",
                  "claimAuthority",
                  "destinationConstraint"
                ],
                "properties": {
                  "mode": {
                    "const": "claim-authority-selected-recipient"
                  },
                  "claimAuthority": {
                    "const": "0x4957f49620AFf3Adbbe8195a4f633E49cc93376c"
                  },
                  "destinationConstraint": {
                    "const": "nonzero-address"
                  }
                },
                "additionalProperties": false
              }
            ]
          },
          "economics": {
            "type": "object",
            "required": [
              "buy",
              "sell"
            ],
            "properties": {
              "buy": {
                "$ref": "#/components/schemas/PlatformFeeEconomicsV2"
              },
              "sell": {
                "$ref": "#/components/schemas/PlatformFeeEconomicsV2"
              }
            },
            "additionalProperties": false
          }
        },
        "description": "The server recomputes project and effective values for both directions and rejects any mismatch. This binding is request intent, not runtime fee-path evidence; a positive 10 bps claim still requires exact per-launch server evidence for the stamped PoolKey.",
        "additionalProperties": false
      },
      "PlatformFeeEconomicsV2": {
        "type": "object",
        "required": [
          "applicantSelectedHundredthsOfBip",
          "projectHundredthsOfBip",
          "effectiveTotalHundredthsOfBip"
        ],
        "properties": {
          "applicantSelectedHundredthsOfBip": {
            "$ref": "#/components/schemas/ApplicantSelectedFeeHundredthsOfBipV1"
          },
          "projectHundredthsOfBip": {
            "$ref": "#/components/schemas/SelectedFeeHundredthsOfBipV1"
          },
          "effectiveTotalHundredthsOfBip": {
            "$ref": "#/components/schemas/SelectedFeeHundredthsOfBipV1"
          }
        },
        "additionalProperties": false
      },
      "LaunchSeededLiquidityAssessmentV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "status",
          "requestClaimsExecution",
          "requiredVectorIds"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.direct-native-liquidity-model-assessment.v1"
          },
          "status": {
            "const": "required"
          },
          "requestClaimsExecution": {
            "const": false
          },
          "requiredVectorIds": {
            "type": "array",
            "prefixItems": [
              {
                "const": "liquidity.seeded.pool-active-liquidity"
              },
              {
                "const": "liquidity.seeded.position-custody-and-withdrawal"
              },
              {
                "const": "liquidity.seeded.buy-and-sell"
              }
            ],
            "minItems": 3,
            "maxItems": 3
          }
        },
        "description": "Declares the exact seeded-liquidity checks still required. It is not evidence that they ran or passed.",
        "additionalProperties": false
      },
      "HookInventoryLiquidityAssessmentV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "status",
          "requestClaimsExecution",
          "requiredVectorIds"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.direct-native-liquidity-model-assessment.v1"
          },
          "status": {
            "const": "required"
          },
          "requestClaimsExecution": {
            "const": false
          },
          "requiredVectorIds": {
            "type": "array",
            "prefixItems": [
              {
                "const": "liquidity.hook-inventory.buy-settlement"
              },
              {
                "const": "liquidity.hook-inventory.sell-settlement"
              },
              {
                "const": "liquidity.hook-inventory.delta-solvency"
              },
              {
                "const": "liquidity.hook-inventory.backing-and-withdrawal"
              }
            ],
            "minItems": 4,
            "maxItems": 4
          }
        },
        "description": "Declares the exact custom-accounting checks still required. It is not evidence that they ran or passed.",
        "additionalProperties": false
      },
      "DirectNativeLiquidityModelIntentV1": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "schemaVersion",
              "model",
              "declaredLaunchState"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.direct-native-liquidity-model-intent.v1"
              },
              "model": {
                "const": "external-concentrated-liquidity"
              },
              "declaredLaunchState": {
                "const": "liquidity_required"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "schemaVersion",
              "model",
              "declaredLaunchState",
              "liquidityTargetId",
              "assessment"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.direct-native-liquidity-model-intent.v1"
              },
              "model": {
                "const": "launch-seeded-concentrated-liquidity"
              },
              "declaredLaunchState": {
                "const": "assessment_required"
              },
              "liquidityTargetId": {
                "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier"
              },
              "assessment": {
                "$ref": "#/components/schemas/LaunchSeededLiquidityAssessmentV1"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "schemaVersion",
              "model",
              "declaredLaunchState",
              "inventoryTargetId",
              "assessment"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.direct-native-liquidity-model-intent.v1"
              },
              "model": {
                "const": "hook-inventory-custom-accounting"
              },
              "declaredLaunchState": {
                "const": "assessment_required"
              },
              "inventoryTargetId": {
                "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier"
              },
              "assessment": {
                "$ref": "#/components/schemas/HookInventoryLiquidityAssessmentV1"
              }
            },
            "additionalProperties": false
          }
        ],
        "description": "Hash-bound liquidity intent. External concentrated liquidity remains liquidity_required; seeded and hook-inventory models require exact later assessment and cannot self-declare a pass."
      },
      "DirectNativeLiquidityIntentProjectionV3": {
        "type": "object",
        "required": [
          "model",
          "declaredLaunchState",
          "binding"
        ],
        "properties": {
          "model": {
            "enum": [
              "external-concentrated-liquidity",
              "launch-seeded-concentrated-liquidity",
              "hook-inventory-custom-accounting"
            ]
          },
          "declaredLaunchState": {
            "enum": [
              "liquidity_required",
              "assessment_required"
            ]
          },
          "binding": {
            "enum": [
              "explicit-request-hash",
              "legacy-v3-default"
            ]
          }
        },
        "description": "Server readback of the declared liquidity model. This is not current liquidity or tradeability evidence.",
        "additionalProperties": false
      },
      "DirectNativeProfileSelectionBindingV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "profileId",
          "profileRevision",
          "targetRoles",
          "fundingMode",
          "routeNamespace",
          "routeNonce",
          "hookPermissionMask",
          "predictedInitializer",
          "poolKey",
          "expectedPoolId",
          "platformFeeBinding"
        ],
        "properties": {
          "schemaVersion": {
            "enum": [
              "programmable.direct-native-hook-graph-profile-selection-binding.v2",
              "programmable.direct-native-hook-graph-profile-selection-binding.v3"
            ]
          },
          "profileId": {
            "const": "programmable.direct-native-hook-graph.v1"
          },
          "profileRevision": {
            "enum": [
              2,
              3
            ]
          },
          "targetRoles": {
            "$ref": "#/components/schemas/DirectNativeTargetRolesV1"
          },
          "fundingMode": {
            "enum": [
              "none",
              "wallet-transaction-value",
              "eip-3009-receive-with-authorization"
            ]
          },
          "routeNamespace": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "routeNonce": {
            "$ref": "./custom-launch-v2.json#/components/schemas/NonzeroLowerHex32"
          },
          "hookPermissionMask": {
            "type": "integer",
            "minimum": 0,
            "maximum": 16383
          },
          "predictedInitializer": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "poolKey": {
            "$ref": "#/components/schemas/DirectNativePoolKeyV1"
          },
          "expectedPoolId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "fundingSignaturePatch": {
            "$ref": "#/components/schemas/FundingAuthorizationPatchDescriptor"
          },
          "platformFeeBinding": {
            "$ref": "#/components/schemas/DirectNativePlatformFeeBindingV1"
          },
          "liquidityModel": {
            "$ref": "#/components/schemas/DirectNativeLiquidityModelIntentV1",
            "description": "The released CLI 3.3.9 includes this exact hash-bound intent in live/default profile 3.3.0 requests. Omission is accepted only where the live contract already permits byte-compatible earlier V3 requests."
          }
        },
        "allOf": [
          {
            "oneOf": [
              {
                "properties": {
                  "schemaVersion": {
                    "const": "programmable.direct-native-hook-graph-profile-selection-binding.v3"
                  },
                  "profileRevision": {
                    "const": 3
                  }
                }
              },
              {
                "properties": {
                  "schemaVersion": {
                    "const": "programmable.direct-native-hook-graph-profile-selection-binding.v2"
                  },
                  "profileRevision": {
                    "const": 2
                  }
                }
              }
            ]
          },
          {
            "if": {
              "properties": {
                "fundingMode": {
                  "const": "eip-3009-receive-with-authorization"
                }
              }
            },
            "then": {
              "required": [
                "fundingSignaturePatch"
              ]
            },
            "else": {
              "not": {
                "required": [
                  "fundingSignaturePatch"
                ]
              }
            }
          }
        ],
        "additionalProperties": false
      },
      "FundingSignaturePatchDescriptorV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "targetId",
          "unsignedInitializerCalldataSha256",
          "initializerCalldataLengthBytes",
          "signatureEncoding",
          "rOffsetBytes",
          "sOffsetBytes",
          "vOffsetBytes"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.eip3009-signature-patch.v1"
          },
          "targetId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier",
            "description": "Must equal targetRoles.initializerTargetId."
          },
          "unsignedInitializerCalldataSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "initializerCalldataLengthBytes": {
            "type": "integer",
            "minimum": 100,
            "maximum": 131072
          },
          "signatureEncoding": {
            "const": "eip3009-r-s-v-abi-words"
          },
          "rOffsetBytes": {
            "type": "integer",
            "minimum": 4,
            "maximum": 131040
          },
          "sOffsetBytes": {
            "type": "integer",
            "minimum": 4,
            "maximum": 131040
          },
          "vOffsetBytes": {
            "type": "integer",
            "minimum": 4,
            "maximum": 131040
          }
        },
        "description": "Derived unsigned initializer binding. Offsets include the four-byte selector, are distinct, satisfy (offset-4)%32=0, remain in bounds and identify all-zero ABI words. The create request still contains no signature bytes.",
        "additionalProperties": false
      },
      "AbiArgumentPathV2": {
        "type": "array",
        "minItems": 1,
        "maxItems": 16,
        "items": {
          "type": "integer",
          "minimum": 0,
          "maximum": 255
        },
        "description": "Zero-based ABI argument path. The first index selects a top-level initializer input. Later indices descend only static tuple components or fixed-array elements; dynamic parents are invalid."
      },
      "FundingAuthorizationPatchDescriptorV2": {
        "type": "object",
        "required": [
          "schemaVersion",
          "targetId",
          "unsignedInitializerCalldataSha256",
          "initializerCalldataLengthBytes",
          "authorizationEncoding",
          "nonceArgumentPath",
          "rArgumentPath",
          "sArgumentPath",
          "vArgumentPath"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.eip3009-authorization-patch.v2"
          },
          "targetId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier",
            "description": "Must equal targetRoles.initializerTargetId."
          },
          "unsignedInitializerCalldataSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "initializerCalldataLengthBytes": {
            "type": "integer",
            "minimum": 132,
            "maximum": 131072
          },
          "authorizationEncoding": {
            "const": "eip3009-nonce-r-s-v-abi-leaves"
          },
          "nonceArgumentPath": {
            "$ref": "#/components/schemas/AbiArgumentPathV2"
          },
          "rArgumentPath": {
            "$ref": "#/components/schemas/AbiArgumentPathV2"
          },
          "sArgumentPath": {
            "$ref": "#/components/schemas/AbiArgumentPathV2"
          },
          "vArgumentPath": {
            "$ref": "#/components/schemas/AbiArgumentPathV2"
          }
        },
        "description": "Current CLI-derived unsigned initializer binding. The four paths are distinct and resolve through static ABI containers to zero bytes32 nonce, bytes32 r, bytes32 s and uint8 v leaves. The CLI derives calldata offsets from the exact compiled ABI and proves canonical decode and re-encode; an applicant cannot submit offsets. The backend inserts only the derived nonce and verified wallet signature after the unsigned launch intent is bound. The create request contains no signature bytes.",
        "additionalProperties": false
      },
      "FundingAuthorizationPatchDescriptor": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/FundingAuthorizationPatchDescriptorV2"
          },
          {
            "$ref": "#/components/schemas/FundingSignaturePatchDescriptorV1"
          }
        ],
        "description": "The released CLI 3.3.9 uses authorization patch V2 for live/default profile 3.3.0 requests. V1 compatibility remains governed by the currently discovered 3.3 contract."
      },
      "Eip3009FundingAuthorizationDescriptorV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "method",
          "token",
          "from",
          "to",
          "value",
          "validAfter",
          "validBefore",
          "nonce"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.funding-authorization-descriptor.v1"
          },
          "method": {
            "const": "eip-3009-receive-with-authorization"
          },
          "token": {
            "const": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
          },
          "from": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress",
            "description": "Must equal launchWallet."
          },
          "to": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress",
            "description": "Must equal launchProfileSelection.predictedInitializer."
          },
          "value": {
            "$ref": "#/components/schemas/NonzeroCanonicalUint256"
          },
          "validAfter": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "validBefore": {
            "$ref": "#/components/schemas/NonzeroCanonicalUint256"
          },
          "nonce": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          }
        },
        "description": "Unsigned descriptor only. It requires validAfter < now < validBefore. It contains the nonce derived from the pre-signature funding intent but no signature, v, r or s value. Authorization patch V2 derives that intent while nonce, r, s and v leaves are zero, then inserts the derived nonce and verified signature into the final initializer calldata.",
        "additionalProperties": false
      },
      "CustomGraphBundleV3": {
        "allOf": [
          {
            "$ref": "./custom-launch-v2.json#/components/schemas/CustomGraphBundleV1"
          },
          {
            "type": "object",
            "properties": {
              "targets": {
                "type": "array",
                "minItems": 3,
                "maxItems": 16
              }
            }
          }
        ],
        "description": "Legacy exact profiles require 3 through 16 targets because the project-owned token, project-owned hook and initializer roles are distinct. The hook may use any valid Uniswap v4 permission mask; return-delta permissions require their corresponding action permission."
      },
      "CustomGraphBundleV3_4": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CustomGraphBundleV3"
          },
          {
            "type": "object",
            "properties": {
              "targets": {
                "type": "array",
                "minItems": 4,
                "maxItems": 16
              }
            }
          }
        ],
        "description": "Pending profile 3.4.0 graph: 4 through 16 direct targets inclusive of the exact programmable:settlement-fee-vault:v1 module. Project-owned token, hook, route and additional contracts remain applicant-defined."
      },
      "DirectNativePermitWindowV1": {
        "type": "object",
        "required": [
          "validAfter",
          "deadline"
        ],
        "properties": {
          "validAfter": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "deadline": {
            "$ref": "#/components/schemas/NonzeroCanonicalUint256"
          }
        },
        "description": "Exact Router permit validity window. deadline must be after validAfter and no more than 3600 seconds later.",
        "additionalProperties": false
      },
      "DirectNativeExactSourceVerificationBundleV3": {
        "allOf": [
          {
            "$ref": "./custom-launch-v2.json#/components/schemas/ExactSourceVerificationBundleV2"
          },
          {
            "type": "object",
            "properties": {
              "compilationUnits": {
                "type": "array",
                "items": {
                  "allOf": [
                    {
                      "$ref": "./custom-launch-v2.json#/components/schemas/ExactSourceCompilationUnitV1"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "compilerVersion": {
                          "const": "0.8.26+commit.8a97fa7a"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        ],
        "description": "Revision 3 exact-source bundle. Every compilation unit uses solc 0.8.26+commit.8a97fa7a. Decoded Standard JSON is limited to 5,242,880 bytes per unit and in aggregate, with at most 2,048 sources per unit. Revision 2 compatibility requests retain their prior compiler contract."
      },
      "ProjectTokenMetadataStaticBindingV1": {
        "type": "object",
        "required": [
          "staticSource",
          "argumentIndex",
          "argumentName"
        ],
        "properties": {
          "staticSource": {
            "enum": [
              "constructor-argument",
              "initializer-argument",
              "not-deterministically-extractable"
            ]
          },
          "argumentIndex": {
            "oneOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "argumentName": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 256,
                "description": "Canonical NFC ABI argument name, already trimmed, without controls or recognizable secret material, at most 256 UTF-8 bytes."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "oneOf": [
          {
            "properties": {
              "staticSource": {
                "enum": [
                  "constructor-argument",
                  "initializer-argument"
                ]
              },
              "argumentIndex": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "argumentName": {
                "type": "string",
                "minLength": 1,
                "maxLength": 256
              }
            },
            "required": [
              "staticSource",
              "argumentIndex",
              "argumentName"
            ]
          },
          {
            "properties": {
              "staticSource": {
                "const": "not-deterministically-extractable"
              },
              "argumentIndex": {
                "type": "null"
              },
              "argumentName": {
                "type": "null"
              }
            },
            "required": [
              "staticSource",
              "argumentIndex",
              "argumentName"
            ]
          }
        ],
        "description": "A unique static constructor or initializer source is matched exactly when available. Otherwise both ABI leaves are null and arbitrary token architectures remain packageable.",
        "additionalProperties": false
      },
      "ProjectTokenMetadataBindingV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "tokenTargetId",
          "declarationBinding",
          "standardReadModel",
          "name",
          "symbol",
          "postDeploymentReadback"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.project-token-metadata-binding.v1"
          },
          "tokenTargetId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier"
          },
          "declarationBinding": {
            "const": "request-and-launch-id"
          },
          "standardReadModel": {
            "type": "object",
            "required": [
              "name",
              "symbol"
            ],
            "properties": {
              "name": {
                "type": "boolean"
              },
              "symbol": {
                "type": "boolean"
              }
            },
            "additionalProperties": false
          },
          "name": {
            "$ref": "#/components/schemas/ProjectTokenMetadataStaticBindingV1"
          },
          "symbol": {
            "$ref": "#/components/schemas/ProjectTokenMetadataStaticBindingV1"
          },
          "postDeploymentReadback": {
            "const": "required"
          }
        },
        "description": "Derived nonblocking token declaration binding. Static extraction is enforced only when one exact ABI argument is unambiguous; final name and symbol still require onchain readback.",
        "additionalProperties": false
      },
      "LaunchPresentationDraftV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "description",
          "image",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.launch-presentation-draft.v1"
          },
          "description": {
            "type": "string",
            "maxLength": 4096,
            "description": "Legacy profile 3.2.0 canonical NFC public text, which may be empty. Profiles 3.4.0 and 3.3.0 use CompleteLaunchPresentationDraftV1."
          },
          "image": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "uri",
                  "contentSha256",
                  "mediaType",
                  "byteLength",
                  "width",
                  "height"
                ],
                "properties": {
                  "uri": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048
                  },
                  "contentSha256": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
                  },
                  "mediaType": {
                    "enum": [
                      "image/png",
                      "image/jpeg",
                      "image/webp",
                      "image/gif"
                    ]
                  },
                  "byteLength": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 20971520
                  },
                  "width": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 8192
                  },
                  "height": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 8192
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "links": {
            "type": "array",
            "maxItems": 32,
            "uniqueItems": true,
            "items": {
              "type": "object",
              "required": [
                "kind",
                "uri"
              ],
              "properties": {
                "kind": {
                  "enum": [
                    "website",
                    "documentation",
                    "x",
                    "telegram",
                    "discord",
                    "github",
                    "other"
                  ]
                },
                "uri": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 2048,
                  "pattern": "^https://"
                }
              },
              "additionalProperties": false
            }
          }
        },
        "description": "Immutable legacy profile 3.2.0 presentation contract retained for exact read and replay compatibility.",
        "additionalProperties": false
      },
      "CompleteLaunchPresentationDraftV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "description",
          "image",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.launch-presentation-draft.v1"
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096,
            "x-programmable-minUtf8Bytes": 20,
            "x-programmable-minUnicodeLettersOrNumbers": 8,
            "description": "Profiles 3.4.0 and 3.3.0 canonical NFC public text with at least 20 UTF-8 bytes and 8 Unicode letters or numbers, already trimmed, at most 4,096 UTF-8 bytes."
          },
          "image": {
            "type": "object",
            "required": [
              "uri",
              "contentSha256",
              "mediaType",
              "byteLength",
              "width",
              "height"
            ],
            "properties": {
              "uri": {
                "type": "string",
                "format": "uri",
                "maxLength": 2048,
                "description": "Canonical public HTTPS URI without query or fragment, canonical ipfs CID URI, or canonical ar transaction URI. HTTPS should expose browser-readable CORS bytes so wallet review can verify this object's digest, length, media type and dimensions; a failed remote check renders a placeholder and never mutates or signs the launch."
              },
              "contentSha256": {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              },
              "mediaType": {
                "enum": [
                  "image/png",
                  "image/jpeg",
                  "image/webp",
                  "image/gif"
                ]
              },
              "byteLength": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20971520
              },
              "width": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8192
              },
              "height": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8192
              }
            },
            "description": "Required image identity. The digest, byte length, media type and dimensions are derived from and bind the exact local bytes included in the source manifest.",
            "additionalProperties": false
          },
          "links": {
            "type": "array",
            "minItems": 2,
            "maxItems": 32,
            "uniqueItems": true,
            "allOf": [
              {
                "contains": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "const": "website"
                    }
                  },
                  "required": [
                    "kind"
                  ]
                },
                "minContains": 1,
                "maxContains": 1
              },
              {
                "contains": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "const": "x"
                    }
                  },
                  "required": [
                    "kind"
                  ]
                },
                "minContains": 1,
                "maxContains": 1
              }
            ],
            "items": {
              "type": "object",
              "required": [
                "kind",
                "uri"
              ],
              "properties": {
                "kind": {
                  "enum": [
                    "website",
                    "documentation",
                    "x",
                    "telegram",
                    "discord",
                    "github",
                    "other"
                  ]
                },
                "uri": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 2048,
                  "pattern": "^https://"
                }
              },
              "allOf": [
                {
                  "if": {
                    "properties": {
                      "kind": {
                        "const": "x"
                      }
                    },
                    "required": [
                      "kind"
                    ]
                  },
                  "then": {
                    "properties": {
                      "uri": {
                        "type": "string",
                        "pattern": "^https://x\\.com/[A-Za-z0-9_]{1,64}$"
                      }
                    }
                  }
                }
              ],
              "additionalProperties": false
            },
            "description": "Exactly one website and one canonical https://x.com/<project_handle> profile are required. Up to 30 additional canonical public HTTPS links are optional. Entries use strict UTF-8 order by kind, NUL, then URI."
          }
        },
        "additionalProperties": false
      },
      "ProjectMetadataV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "token",
          "presentation",
          "tokenMetadataBinding"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.project-metadata.v1"
          },
          "token": {
            "type": "object",
            "required": [
              "name",
              "symbol"
            ],
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64,
                "description": "Canonical NFC token name, already trimmed, at most 64 UTF-8 bytes."
              },
              "symbol": {
                "type": "string",
                "minLength": 1,
                "maxLength": 16,
                "description": "Canonical NFC token symbol without whitespace, at most 16 UTF-8 bytes."
              }
            },
            "additionalProperties": false
          },
          "presentation": {
            "$ref": "#/components/schemas/LaunchPresentationDraftV1"
          },
          "tokenMetadataBinding": {
            "$ref": "#/components/schemas/ProjectTokenMetadataBindingV1"
          }
        },
        "description": "Canonical display metadata. Its domain-framed projectMetadataHash is included in the bound graphBundleHash, launch intent, prepared artifact, wallet review and onchain launch identity.",
        "additionalProperties": false
      },
      "CompleteProjectMetadataV1": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProjectMetadataV1"
          },
          {
            "type": "object",
            "properties": {
              "presentation": {
                "$ref": "#/components/schemas/CompleteLaunchPresentationDraftV1"
              }
            },
            "required": [
              "presentation"
            ]
          }
        ],
        "description": "Profile 3.4.0 and exact legacy 3.3.0 metadata that satisfies the hash-bound projectMetadataPolicy."
      },
      "BehaviorScenarioTargetV1": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "kind",
              "targetId"
            ],
            "properties": {
              "kind": {
                "const": "prepared-target"
              },
              "targetId": {
                "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "kind",
              "binding"
            ],
            "properties": {
              "kind": {
                "const": "chain-binding"
              },
              "binding": {
                "const": "poolManager"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "kind",
              "harness"
            ],
            "properties": {
              "kind": {
                "const": "runner-harness"
              },
              "harness": {
                "const": "v4-actions-v1"
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "BehaviorScenarioStepV1": {
        "type": "object",
        "required": [
          "stepId",
          "phase",
          "actor",
          "target",
          "valueWei",
          "calldata",
          "hookData"
        ],
        "properties": {
          "stepId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$"
          },
          "phase": {
            "enum": [
              "seed",
              "swap",
              "liquidity",
              "claim",
              "custom-accounting"
            ]
          },
          "actor": {
            "enum": [
              "launch-wallet",
              "secondary-user",
              "unauthorized-claimer"
            ]
          },
          "target": {
            "$ref": "#/components/schemas/BehaviorScenarioTargetV1"
          },
          "valueWei": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "calldata": {
            "type": "string",
            "pattern": "^0x(?:[0-9a-f]{2})*$",
            "maxLength": 131074,
            "x-programmable-maximumBytes": 65536
          },
          "hookData": {
            "type": "string",
            "pattern": "^0x(?:[0-9a-f]{2})*$",
            "maxLength": 32770,
            "x-programmable-maximumBytes": 16384
          }
        },
        "additionalProperties": false
      },
      "BehaviorScenarioInputsV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "steps"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-behavior-scenario-inputs.v1"
          },
          "steps": {
            "type": "array",
            "minItems": 1,
            "maxItems": 128,
            "items": {
              "$ref": "#/components/schemas/BehaviorScenarioStepV1"
            },
            "x-programmable-order": "caller-declared-and-hash-bound",
            "x-programmable-uniqueStepIds": true,
            "x-programmable-aggregateCalldataAndHookDataMaximumBytes": 1048576
          }
        },
        "description": "Hash-bound declarative inputs for the server-owned network-disabled fork runner. prepared-target IDs must resolve against the exact prepared graph. The caller cannot supply scripts, URLs, assertions, expected results, statuses, runner parameters or vector verdicts.",
        "additionalProperties": false
      },
      "FinalizedCustomLaunchTokenMetadataReadbackV1": {
        "type": "object",
        "required": [
          "status",
          "declared",
          "observed",
          "observedAtBlockNumber",
          "observedAt"
        ],
        "properties": {
          "status": {
            "enum": [
              "matching",
              "mismatch",
              "unavailable"
            ]
          },
          "declared": {
            "type": "object",
            "required": [
              "name",
              "symbol"
            ],
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              },
              "symbol": {
                "type": "string",
                "minLength": 1,
                "maxLength": 16
              }
            },
            "additionalProperties": false
          },
          "observed": {
            "type": "object",
            "required": [
              "name",
              "symbol"
            ],
            "properties": {
              "name": {
                "oneOf": [
                  {
                    "type": "string",
                    "maxLength": 1024,
                    "description": "Bounded onchain readback, at most 1,024 UTF-8 bytes."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "symbol": {
                "oneOf": [
                  {
                    "type": "string",
                    "maxLength": 256,
                    "description": "Bounded onchain readback, at most 256 UTF-8 bytes."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "observedAtBlockNumber": {
            "oneOf": [
              {
                "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
              },
              {
                "type": "null"
              }
            ]
          },
          "observedAt": {
            "oneOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "description": "Finality-scoped onchain name and symbol comparison. Unavailable is explicit and never converted into a matching claim.",
        "additionalProperties": false
      },
      "LaunchPartnerAttributionV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "partnerId",
          "name",
          "website",
          "attributionSource",
          "attributionVersion",
          "snapshotDigest"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.launch-partner-attribution.v1"
          },
          "partnerId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 96,
            "description": "Canonical NFC partner display name snapshotted when the authenticated credential is accepted."
          },
          "website": {
            "oneOf": [
              {
                "type": "string",
                "format": "uri",
                "pattern": "^https://",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ]
          },
          "attributionSource": {
            "const": "authenticated-partner-api-key"
          },
          "attributionVersion": {
            "const": 1
          },
          "snapshotDigest": {
            "type": "string",
            "pattern": "^sha256:[0-9a-f]{64}$",
            "description": "SHA-256 of UTF-8 domain programmable.launch-partner-attribution.v1, NUL, and JCS of this object without snapshotDigest."
          }
        },
        "description": "Immutable server-owned partner provenance. The create body cannot set or override it. A display label such as Launched via {name} is attribution only, never project verification, safety status, endorsement, or an economic launch category.",
        "additionalProperties": false
      },
      "FinalizedTradeAssetIdentityV1": {
        "type": "object",
        "required": [
          "namespace",
          "value"
        ],
        "properties": {
          "namespace": {
            "const": "eip155:1"
          },
          "value": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          }
        },
        "additionalProperties": false
      },
      "FinalizedTradeAssetV1": {
        "type": "object",
        "required": [
          "assetId",
          "identity",
          "name",
          "symbol",
          "decimals"
        ],
        "properties": {
          "assetId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "identity": {
            "$ref": "#/components/schemas/FinalizedTradeAssetIdentityV1"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "symbol": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "decimals": {
            "type": "integer",
            "minimum": 0,
            "maximum": 255
          }
        },
        "additionalProperties": false
      },
      "FinalizedTradeRuntimeTargetV1": {
        "type": "object",
        "required": [
          "targetId",
          "kind",
          "identity",
          "runtimeCodeKeccak256",
          "runtimeCodeSha256"
        ],
        "properties": {
          "targetId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "kind": {
            "enum": [
              "token",
              "hook",
              "other"
            ]
          },
          "identity": {
            "$ref": "#/components/schemas/FinalizedTradeAssetIdentityV1"
          },
          "runtimeCodeKeccak256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "runtimeCodeSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          }
        },
        "additionalProperties": false
      },
      "DiscoverableUniswapV4PoolV2": {
        "type": "object",
        "required": [
          "poolId",
          "poolManager",
          "poolManagerReviewEvidenceBindingHash",
          "poolManagerInterfaceEvidenceBindingHash",
          "poolManagerRuntimeCodeKeccak256",
          "poolManagerRuntimeCodeSha256",
          "currency0AssetId",
          "currency1AssetId",
          "feeRaw",
          "dynamicFee",
          "tickSpacing",
          "hooksAssetId",
          "poolKeyEvidenceHash"
        ],
        "properties": {
          "poolId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "poolManager": {
            "$ref": "#/components/schemas/FinalizedTradeAssetIdentityV1"
          },
          "poolManagerReviewEvidenceBindingHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "poolManagerInterfaceEvidenceBindingHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "poolManagerRuntimeCodeKeccak256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "poolManagerRuntimeCodeSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "currency0AssetId": {
            "type": "string",
            "minLength": 1
          },
          "currency1AssetId": {
            "type": "string",
            "minLength": 1
          },
          "feeRaw": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "dynamicFee": {
            "type": "boolean"
          },
          "tickSpacing": {
            "type": "string",
            "pattern": "^-?(?:0|[1-9][0-9]*)$"
          },
          "hooksAssetId": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "poolKeyEvidenceHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          }
        },
        "additionalProperties": false
      },
      "DiscoverableMarketTradeDependencyV1": {
        "type": "object",
        "required": [
          "role",
          "dependencyId",
          "capabilityId",
          "chainProfileId",
          "identity",
          "runtimeCodeKeccak256",
          "runtimeCodeSha256",
          "reviewEvidenceBindingHash",
          "interfaceEvidenceBindingHash"
        ],
        "properties": {
          "role": {
            "enum": [
              "uniswap-v4-universal-router",
              "uniswap-v4-quoter",
              "uniswap-v4-state-view",
              "uniswap-permit2"
            ]
          },
          "dependencyId": {
            "type": "string",
            "minLength": 1
          },
          "capabilityId": {
            "type": "string",
            "minLength": 1
          },
          "chainProfileId": {
            "type": "string",
            "minLength": 1
          },
          "identity": {
            "$ref": "#/components/schemas/FinalizedTradeAssetIdentityV1"
          },
          "runtimeCodeKeccak256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "runtimeCodeSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "reviewEvidenceBindingHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "interfaceEvidenceBindingHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          }
        },
        "additionalProperties": false
      },
      "DiscoverableMarketTradePoolKeyV1": {
        "type": "object",
        "required": [
          "poolId",
          "currency0AssetId",
          "currency0",
          "currency1AssetId",
          "currency1",
          "feeRaw",
          "tickSpacing",
          "hooksAssetId",
          "hooks"
        ],
        "properties": {
          "poolId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "currency0AssetId": {
            "type": "string",
            "minLength": 1
          },
          "currency0": {
            "$ref": "#/components/schemas/FinalizedTradeAssetIdentityV1"
          },
          "currency1AssetId": {
            "type": "string",
            "minLength": 1
          },
          "currency1": {
            "$ref": "#/components/schemas/FinalizedTradeAssetIdentityV1"
          },
          "feeRaw": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "tickSpacing": {
            "type": "string",
            "pattern": "^-?(?:0|[1-9][0-9]*)$"
          },
          "hooksAssetId": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "hooks": {
            "$ref": "#/components/schemas/FinalizedTradeAssetIdentityV1"
          }
        },
        "additionalProperties": false
      },
      "DiscoverableMarketTradeCapabilityV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "capabilityId",
          "adapterId",
          "chainId",
          "chainProfileId",
          "chainProfileHash",
          "marketId",
          "baseAssetId",
          "quoteAssetId",
          "poolKey",
          "routerGeneration",
          "dependencies",
          "supportedSides",
          "sideBindings",
          "exactness",
          "hookDataPolicy",
          "actionPolicy",
          "quotePolicy",
          "slippagePolicy",
          "deadlinePolicy",
          "approvalPolicy",
          "recipientPolicy",
          "planBindingHash",
          "status",
          "poolKeyEvidenceHash",
          "marketVerificationBindingHash",
          "hookAssetIdentityEvidenceHash",
          "tradeCapabilityBindingHash"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.discoverable-market-trade-capability.v1"
          },
          "capabilityId": {
            "type": "string",
            "minLength": 1
          },
          "adapterId": {
            "const": "uniswap-v4-universal-router-exact-input:v1"
          },
          "chainId": {
            "const": "1"
          },
          "chainProfileId": {
            "type": "string",
            "minLength": 1
          },
          "chainProfileHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "marketId": {
            "type": "string",
            "minLength": 1
          },
          "baseAssetId": {
            "type": "string",
            "minLength": 1
          },
          "quoteAssetId": {
            "type": "string",
            "minLength": 1
          },
          "poolKey": {
            "$ref": "#/components/schemas/DiscoverableMarketTradePoolKeyV1"
          },
          "routerGeneration": {
            "type": "string",
            "minLength": 1
          },
          "dependencies": {
            "type": "array",
            "minItems": 4,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/DiscoverableMarketTradeDependencyV1"
            }
          },
          "supportedSides": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "enum": [
                "base-to-quote",
                "quote-to-base"
              ]
            }
          },
          "sideBindings": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "items": {
              "type": "object",
              "required": [
                "side",
                "inputAssetId",
                "outputAssetId",
                "zeroForOne",
                "inputCurrencyKind",
                "settlementAction",
                "takeAction"
              ],
              "properties": {
                "side": {
                  "enum": [
                    "base-to-quote",
                    "quote-to-base"
                  ]
                },
                "inputAssetId": {
                  "type": "string",
                  "minLength": 1
                },
                "outputAssetId": {
                  "type": "string",
                  "minLength": 1
                },
                "zeroForOne": {
                  "type": "boolean"
                },
                "inputCurrencyKind": {
                  "enum": [
                    "native",
                    "erc20"
                  ]
                },
                "settlementAction": {
                  "const": "SETTLE_ALL"
                },
                "takeAction": {
                  "const": "TAKE_ALL"
                }
              },
              "additionalProperties": false
            }
          },
          "exactness": {
            "const": "exact-input"
          },
          "hookDataPolicy": {
            "type": "object",
            "required": [
              "kind",
              "data",
              "hookDataHash"
            ],
            "properties": {
              "kind": {
                "enum": [
                  "empty",
                  "fixed"
                ]
              },
              "data": {
                "type": "string",
                "pattern": "^0x(?:[0-9a-f]{2})*$"
              },
              "hookDataHash": {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              }
            },
            "additionalProperties": false
          },
          "actionPolicy": {
            "type": "object",
            "required": [
              "swapAction",
              "settleAction",
              "takeAction",
              "multiHop",
              "exactOutput"
            ],
            "properties": {
              "swapAction": {
                "const": "SWAP_EXACT_IN_SINGLE"
              },
              "settleAction": {
                "const": "SETTLE_ALL"
              },
              "takeAction": {
                "const": "TAKE_ALL"
              },
              "multiHop": {
                "const": false
              },
              "exactOutput": {
                "const": false
              }
            },
            "additionalProperties": false
          },
          "quotePolicy": {
            "type": "object",
            "required": [
              "adapterId",
              "executionMode",
              "currentStateRequired",
              "maximumQuoteAgeSeconds"
            ],
            "properties": {
              "adapterId": {
                "const": "uniswap-v4-quoter-exact-input:v1"
              },
              "executionMode": {
                "const": "offchain-static-call-only"
              },
              "currentStateRequired": {
                "const": true
              },
              "maximumQuoteAgeSeconds": {
                "type": "integer",
                "minimum": 1
              }
            },
            "additionalProperties": false
          },
          "slippagePolicy": {
            "type": "object",
            "required": [
              "kind",
              "amountOutMinimumRequired",
              "maximumSlippageBps"
            ],
            "properties": {
              "kind": {
                "const": "user-bounded-minimum-output"
              },
              "amountOutMinimumRequired": {
                "const": true
              },
              "maximumSlippageBps": {
                "type": "integer",
                "minimum": 0,
                "maximum": 10000
              }
            },
            "additionalProperties": false
          },
          "deadlinePolicy": {
            "type": "object",
            "required": [
              "kind",
              "deadlineRequired",
              "maximumHorizonSeconds"
            ],
            "properties": {
              "kind": {
                "const": "bounded-user-deadline"
              },
              "deadlineRequired": {
                "const": true
              },
              "maximumHorizonSeconds": {
                "type": "integer",
                "minimum": 1
              }
            },
            "additionalProperties": false
          },
          "approvalPolicy": {
            "type": "object",
            "required": [
              "erc20Input",
              "nativeInput"
            ],
            "properties": {
              "erc20Input": {
                "const": "erc20-approve-permit2-then-permit2-approve-router"
              },
              "nativeInput": {
                "const": "transaction-value"
              }
            },
            "additionalProperties": false
          },
          "recipientPolicy": {
            "const": "connected-wallet-only"
          },
          "planBindingHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "status": {
            "const": "verified"
          },
          "poolKeyEvidenceHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "marketVerificationBindingHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "hookAssetIdentityEvidenceHash": {
            "oneOf": [
              {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              },
              {
                "type": "null"
              }
            ]
          },
          "tradeCapabilityBindingHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          }
        },
        "additionalProperties": false
      },
      "VerifiedDiscoverableLaunchMarketV2": {
        "type": "object",
        "required": [
          "marketId",
          "kind",
          "status",
          "marketAssetId",
          "baseAssetId",
          "quoteAssetId",
          "marketEvidenceHash",
          "verification",
          "uniswapV4",
          "tradeCapability"
        ],
        "properties": {
          "marketId": {
            "type": "string",
            "minLength": 1
          },
          "kind": {
            "type": "string",
            "minLength": 1
          },
          "status": {
            "const": "active"
          },
          "marketAssetId": {
            "type": "string",
            "minLength": 1
          },
          "baseAssetId": {
            "type": "string",
            "minLength": 1
          },
          "quoteAssetId": {
            "type": "string",
            "minLength": 1
          },
          "marketEvidenceHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "verification": {
            "type": "object",
            "required": [
              "status",
              "verifierAdapterId",
              "verifierBindingHash"
            ],
            "properties": {
              "status": {
                "const": "verified"
              },
              "verifierAdapterId": {
                "type": "string",
                "minLength": 1
              },
              "verifierBindingHash": {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              }
            },
            "additionalProperties": false
          },
          "uniswapV4": {
            "$ref": "#/components/schemas/DiscoverableUniswapV4PoolV2"
          },
          "tradeCapability": {
            "$ref": "#/components/schemas/DiscoverableMarketTradeCapabilityV1"
          }
        },
        "additionalProperties": false
      },
      "FinalizedTradeAdapterDescriptorV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "status",
          "adapterId",
          "projectId",
          "chainProfileId",
          "chainProfileHash",
          "market",
          "baseAsset",
          "quoteAsset",
          "runtimeTargets",
          "serverVerification",
          "descriptorDigest"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.finalized-trade-adapter-descriptor.v1"
          },
          "status": {
            "const": "verified"
          },
          "adapterId": {
            "const": "uniswap-v4-universal-router-exact-input:v1"
          },
          "projectId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "chainProfileId": {
            "type": "string",
            "minLength": 1
          },
          "chainProfileHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "market": {
            "$ref": "#/components/schemas/VerifiedDiscoverableLaunchMarketV2"
          },
          "baseAsset": {
            "$ref": "#/components/schemas/FinalizedTradeAssetV1"
          },
          "quoteAsset": {
            "$ref": "#/components/schemas/FinalizedTradeAssetV1"
          },
          "runtimeTargets": {
            "type": "array",
            "minItems": 1,
            "maxItems": 16,
            "items": {
              "$ref": "#/components/schemas/FinalizedTradeRuntimeTargetV1"
            },
            "x-programmable-order": "strict-utf8-targetId",
            "x-programmable-uniqueTargetIds": true,
            "description": "Sorted unique exact coverage of the launch stamp's exclusive components."
          },
          "serverVerification": {
            "type": "object",
            "required": [
              "verifierAdapterId",
              "verifiedAt",
              "evidenceHash"
            ],
            "properties": {
              "verifierAdapterId": {
                "const": "programmable-server-trade-route-review:v1"
              },
              "verifiedAt": {
                "type": "string",
                "format": "date-time"
              },
              "evidenceHash": {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              }
            },
            "additionalProperties": false
          },
          "descriptorDigest": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest",
            "description": "canonicalSha256 domain programmable.finalized-trade-adapter-descriptor.v1 over outerBinding {routerLaunchId,router,token,hook,poolManager,poolId,artifactHash,graphBundleHash,finality:{tx,block,hash,logIndex}} and this descriptor without descriptorDigest."
          }
        },
        "description": "Optional server-authored finalized-only onsite trading contract. Base asset must be the launched token; market, PoolKey, capability and identities must cross-match. The request and CLI schemas never accept this field. Absence or invalidation keeps the launch indexed but does not enable onsite trading.",
        "additionalProperties": false
      },
      "FinalizedCustomLaunchMetadataV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "resourceId",
          "routerLaunchId",
          "chainId",
          "router",
          "token",
          "hook",
          "poolManager",
          "poolId",
          "launchProfileVersion",
          "projectMetadata",
          "projectMetadataHash",
          "bindings",
          "tokenMetadataReadback",
          "finality",
          "createdAt",
          "finalizedAt"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.finalized-custom-launch-metadata.v1"
          },
          "resourceId": {
            "type": "string",
            "format": "uuid",
            "description": "Public resource correlation only. Consumers key canonical identity by routerLaunchId."
          },
          "routerLaunchId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "chainId": {
            "const": "1"
          },
          "router": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "token": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "hook": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "poolManager": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "poolId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "projectMetadata": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProjectMetadataV1"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hash-bound launch metadata when the persisted profile defines it. Legacy 2.0.0, 3.0.0 and 3.1.0 entries preserve explicit null metadata semantics."
          },
          "projectMetadataHash": {
            "oneOf": [
              {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              },
              {
                "type": "null"
              }
            ]
          },
          "partnerAttribution": {
            "$ref": "#/components/schemas/LaunchPartnerAttributionV1"
          },
          "tradeAdapterDescriptor": {
            "$ref": "#/components/schemas/FinalizedTradeAdapterDescriptorV1",
            "description": "Optional server-authored finalized projection. Omitted for legacy, unavailable, disabled or non-tradeable routes; consumers must not infer trading from submitted metadata."
          },
          "bindings": {
            "type": "object",
            "required": [
              "requestHash",
              "launchIntentHash",
              "graphBundleHash",
              "unboundGraphBundleHash",
              "artifactHash"
            ],
            "properties": {
              "requestHash": {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              },
              "launchIntentHash": {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              },
              "graphBundleHash": {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest",
                "description": "Metadata-bound graph hash used by the Router launch identity."
              },
              "unboundGraphBundleHash": {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              },
              "artifactHash": {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              }
            },
            "additionalProperties": false
          },
          "tokenMetadataReadback": {
            "$ref": "#/components/schemas/FinalizedCustomLaunchTokenMetadataReadbackV1"
          },
          "finality": {
            "type": "object",
            "required": [
              "state",
              "transactionHash",
              "blockNumber",
              "blockHash",
              "logIndex",
              "confirmationDepth",
              "requiredConfirmationDepth",
              "finalizedCheckpoint"
            ],
            "properties": {
              "state": {
                "const": "finalized"
              },
              "transactionHash": {
                "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
              },
              "blockNumber": {
                "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
              },
              "blockHash": {
                "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
              },
              "logIndex": {
                "type": "integer",
                "minimum": 0
              },
              "confirmationDepth": {
                "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
              },
              "requiredConfirmationDepth": {
                "const": "64"
              },
              "finalizedCheckpoint": {
                "$ref": "#/components/schemas/FinalizedCheckpointV1"
              }
            },
            "additionalProperties": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "finalizedAt": {
            "type": "string",
            "format": "date-time"
          },
          "launchProfileVersion": {
            "enum": [
              "2.0.0",
              "3.0.0",
              "3.1.0",
              "3.2.0",
              "3.3.0",
              "3.4.0"
            ],
            "description": "Immutable persisted launch profile version. Metadata fields are conditional by profile, so clients cannot infer current metadata requirements without this value."
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "oneOf": [
              {
                "properties": {
                  "launchProfileVersion": {
                    "enum": [
                      "3.3.0",
                      "3.4.0"
                    ]
                  },
                  "projectMetadata": {
                    "$ref": "#/components/schemas/CompleteProjectMetadataV1"
                  },
                  "projectMetadataHash": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
                  }
                },
                "required": [
                  "launchProfileVersion",
                  "projectMetadata",
                  "projectMetadataHash"
                ]
              },
              {
                "properties": {
                  "launchProfileVersion": {
                    "const": "3.2.0"
                  },
                  "projectMetadata": {
                    "$ref": "#/components/schemas/ProjectMetadataV1"
                  },
                  "projectMetadataHash": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
                  }
                },
                "required": [
                  "launchProfileVersion",
                  "projectMetadata",
                  "projectMetadataHash"
                ]
              },
              {
                "properties": {
                  "launchProfileVersion": {
                    "enum": [
                      "2.0.0",
                      "3.0.0",
                      "3.1.0"
                    ]
                  },
                  "projectMetadata": {
                    "type": "null"
                  },
                  "projectMetadataHash": {
                    "type": "null"
                  }
                },
                "required": [
                  "launchProfileVersion",
                  "projectMetadata",
                  "projectMetadataHash"
                ]
              }
            ]
          }
        ]
      },
      "FinalizedCustomLaunchMetadataQualityV1": {
        "type": "object",
        "required": [
          "status",
          "sourceRowCount",
          "publishedRowCount",
          "quarantinedRowCount",
          "diagnostics"
        ],
        "properties": {
          "status": {
            "enum": [
              "complete",
              "partial"
            ]
          },
          "sourceRowCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 25
          },
          "publishedRowCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 25
          },
          "quarantinedRowCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 25
          },
          "diagnostics": {
            "type": "array",
            "maxItems": 25,
            "items": {
              "type": "object",
              "required": [
                "rowIndex",
                "code"
              ],
              "properties": {
                "rowIndex": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 24
                },
                "code": {
                  "const": "FINALIZED_ROW_QUARANTINED"
                }
              },
              "additionalProperties": false
            }
          }
        },
        "description": "Live page-quality envelope. complete means every source row was published; partial means one or more invalid finalized rows were quarantined. publishedRowCount plus quarantinedRowCount equals sourceRowCount, and diagnostics has one row-indexed entry per quarantined row.",
        "additionalProperties": false
      },
      "FinalizedCustomLaunchMetadataListV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "generatedAt",
          "launches",
          "nextCursor",
          "quality"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.finalized-custom-launch-metadata-list.v1"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "launches": {
            "type": "array",
            "maxItems": 25,
            "items": {
              "$ref": "#/components/schemas/FinalizedCustomLaunchMetadataV1"
            }
          },
          "nextCursor": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 512
              },
              {
                "type": "null"
              }
            ]
          },
          "quality": {
            "$ref": "#/components/schemas/FinalizedCustomLaunchMetadataQualityV1"
          }
        },
        "description": "Finalized-only public backend page. It has no embedded LKG fallback; downstream services must label their own bounded fallback freshness.",
        "additionalProperties": false
      },
      "CustomLaunchCreateRequestV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "launchWallet",
          "chainId",
          "nonce",
          "permitWindow",
          "sourceDescriptor",
          "sourceBundleManifest",
          "graphBundle",
          "launchProfile",
          "launchProfileSelection",
          "launchProfileHash",
          "launchIntentHash",
          "agentAttestation",
          "verificationBundle"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-create-request.v3"
          },
          "launchWallet": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress",
            "description": "Exact controller wallet. It must equal a wallet API key's wallet binding. A partner credential may select it in the immutable request but gains no signing authority; this address must review, sign and broadcast the wallet handoff."
          },
          "chainId": {
            "const": "1"
          },
          "nonce": {
            "$ref": "./custom-launch-v2.json#/components/schemas/NonzeroLowerHex32"
          },
          "permitWindow": {
            "$ref": "#/components/schemas/DirectNativePermitWindowV1"
          },
          "sourceDescriptor": {
            "$ref": "./custom-launch-v2.json#/components/schemas/DeterministicSourceBundleV2"
          },
          "sourceBundleManifest": {
            "$ref": "./custom-launch-v2.json#/components/schemas/SourceBundleManifestV2"
          },
          "graphBundle": {
            "$ref": "#/components/schemas/CustomGraphBundleV3"
          },
          "projectMetadata": {
            "$ref": "#/components/schemas/ProjectMetadataV1",
            "description": "Required complete metadata for every fresh profile 3.4.0 request and exact 3.3.0 retry, including partner-created requests. It is optional only under the older exact legacy profile branches defined below."
          },
          "projectMetadataHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest",
            "description": "sha256 of the UTF-8 domain programmable.project-metadata.v1, one NUL byte, and canonical projectMetadata JSON."
          },
          "behaviorScenarioInputs": {
            "$ref": "#/components/schemas/BehaviorScenarioInputsV1",
            "description": "Required only for fresh profile 3.4.0. The server rehashes these declarative inputs, resolves exact targets against the prepared artifact and remains the sole assertion and verdict authority."
          },
          "behaviorScenarioInputsHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest",
            "description": "sha256 of the UTF-8 domain programmable.custom-launch-behavior-scenario-inputs.v1, one NUL byte, and canonical behaviorScenarioInputs JSON. It is included in launchIntentHash."
          },
          "launchProfile": {
            "$ref": "#/components/schemas/DirectNativeHookGraphProfileV1"
          },
          "launchProfileSelection": {
            "$ref": "#/components/schemas/DirectNativeProfileSelectionBindingV1"
          },
          "launchProfileHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "launchIntentHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "fundingAuthorization": {
            "$ref": "#/components/schemas/Eip3009FundingAuthorizationDescriptorV1"
          },
          "fundingIntentHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32",
            "description": "Pre-signature domain-separated funding intent. It is not a sha256: label. Authorization patch V2 derives it from the unsigned launch intent whose nonce, r, s and v leaves are zero; it does not include the final graph containing the patched nonce or signature."
          },
          "agentAttestation": {
            "$ref": "./custom-launch-v2.json#/components/schemas/AgentLaunchAttestationV2"
          },
          "verificationBundle": {
            "$ref": "./custom-launch-v2.json#/components/schemas/ExactSourceVerificationBundleV2"
          }
        },
        "allOf": [
          {
            "oneOf": [
              {
                "properties": {
                  "launchProfile": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile.v3"
                      },
                      "profileRevision": {
                        "const": 3
                      },
                      "profileVersion": {
                        "const": "3.4.0"
                      }
                    }
                  },
                  "projectMetadata": {
                    "$ref": "#/components/schemas/CompleteProjectMetadataV1"
                  },
                  "graphBundle": {
                    "$ref": "#/components/schemas/CustomGraphBundleV3_4"
                  },
                  "launchProfileSelection": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile-selection-binding.v3"
                      },
                      "profileRevision": {
                        "const": 3
                      }
                    }
                  },
                  "verificationBundle": {
                    "$ref": "#/components/schemas/DirectNativeExactSourceVerificationBundleV3"
                  }
                },
                "required": [
                  "launchProfile",
                  "launchProfileSelection",
                  "verificationBundle",
                  "projectMetadata",
                  "projectMetadataHash",
                  "behaviorScenarioInputs",
                  "behaviorScenarioInputsHash"
                ]
              },
              {
                "properties": {
                  "launchProfile": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile.v3"
                      },
                      "profileRevision": {
                        "const": 3
                      },
                      "profileVersion": {
                        "const": "3.3.0"
                      }
                    }
                  },
                  "projectMetadata": {
                    "$ref": "#/components/schemas/CompleteProjectMetadataV1"
                  },
                  "launchProfileSelection": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile-selection-binding.v3"
                      },
                      "profileRevision": {
                        "const": 3
                      }
                    }
                  },
                  "verificationBundle": {
                    "$ref": "#/components/schemas/DirectNativeExactSourceVerificationBundleV3"
                  }
                },
                "required": [
                  "launchProfile",
                  "launchProfileSelection",
                  "verificationBundle",
                  "projectMetadata",
                  "projectMetadataHash"
                ]
              },
              {
                "properties": {
                  "launchProfile": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile.v3"
                      },
                      "profileRevision": {
                        "const": 3
                      },
                      "profileVersion": {
                        "const": "3.2.0"
                      }
                    }
                  },
                  "launchProfileSelection": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile-selection-binding.v3"
                      },
                      "profileRevision": {
                        "const": 3
                      }
                    }
                  },
                  "verificationBundle": {
                    "$ref": "#/components/schemas/DirectNativeExactSourceVerificationBundleV3"
                  }
                },
                "required": [
                  "launchProfile",
                  "launchProfileSelection",
                  "verificationBundle",
                  "projectMetadata",
                  "projectMetadataHash"
                ]
              },
              {
                "properties": {
                  "launchProfile": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile.v3"
                      },
                      "profileRevision": {
                        "const": 3
                      },
                      "profileVersion": {
                        "const": "3.1.0"
                      }
                    }
                  },
                  "launchProfileSelection": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile-selection-binding.v3"
                      },
                      "profileRevision": {
                        "const": 3
                      }
                    }
                  },
                  "verificationBundle": {
                    "$ref": "#/components/schemas/DirectNativeExactSourceVerificationBundleV3"
                  }
                },
                "required": [
                  "launchProfile",
                  "launchProfileSelection",
                  "verificationBundle"
                ],
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "projectMetadata"
                      ]
                    },
                    {
                      "required": [
                        "projectMetadataHash"
                      ]
                    }
                  ]
                }
              },
              {
                "properties": {
                  "launchProfile": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile.v3"
                      },
                      "profileRevision": {
                        "const": 3
                      },
                      "profileVersion": {
                        "const": "3.0.0"
                      }
                    }
                  },
                  "launchProfileSelection": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile-selection-binding.v3"
                      },
                      "profileRevision": {
                        "const": 3
                      }
                    }
                  },
                  "verificationBundle": {
                    "$ref": "#/components/schemas/DirectNativeExactSourceVerificationBundleV3"
                  }
                },
                "required": [
                  "launchProfile",
                  "launchProfileSelection",
                  "verificationBundle"
                ],
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "projectMetadata"
                      ]
                    },
                    {
                      "required": [
                        "projectMetadataHash"
                      ]
                    }
                  ]
                }
              },
              {
                "properties": {
                  "launchProfile": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile.v2"
                      },
                      "profileRevision": {
                        "const": 2
                      },
                      "profileVersion": {
                        "const": "2.0.0"
                      }
                    }
                  },
                  "launchProfileSelection": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "const": "programmable.direct-native-hook-graph-profile-selection-binding.v2"
                      },
                      "profileRevision": {
                        "const": 2
                      }
                    }
                  },
                  "verificationBundle": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/ExactSourceVerificationBundleV2"
                  }
                },
                "required": [
                  "launchProfile",
                  "launchProfileSelection",
                  "verificationBundle"
                ],
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "projectMetadata"
                      ]
                    },
                    {
                      "required": [
                        "projectMetadataHash"
                      ]
                    }
                  ]
                }
              }
            ]
          },
          {
            "if": {
              "properties": {
                "launchProfile": {
                  "type": "object",
                  "properties": {
                    "profileVersion": {
                      "const": "3.4.0"
                    }
                  },
                  "required": [
                    "profileVersion"
                  ]
                }
              },
              "required": [
                "launchProfile"
              ]
            },
            "then": {
              "required": [
                "behaviorScenarioInputs",
                "behaviorScenarioInputsHash"
              ]
            },
            "else": {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "behaviorScenarioInputs"
                    ]
                  },
                  {
                    "required": [
                      "behaviorScenarioInputsHash"
                    ]
                  }
                ]
              }
            }
          },
          {
            "if": {
              "properties": {
                "launchProfileSelection": {
                  "properties": {
                    "fundingMode": {
                      "const": "eip-3009-receive-with-authorization"
                    }
                  },
                  "required": [
                    "fundingMode"
                  ]
                }
              },
              "required": [
                "launchProfileSelection"
              ]
            },
            "then": {
              "required": [
                "fundingAuthorization",
                "fundingIntentHash"
              ]
            },
            "else": {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "fundingAuthorization"
                    ]
                  },
                  {
                    "required": [
                      "fundingIntentHash"
                    ]
                  }
                ]
              }
            }
          }
        ],
        "description": "Closed unsigned V3 create envelope for a project-owned token, project-owned hook and complete 3-16 target launch graph. The request contains no wallet signature or transaction approval, and additional properties are rejected.",
        "additionalProperties": false
      },
      "Eip3009FundingTypedDataV1": {
        "type": "object",
        "required": [
          "domain",
          "primaryType",
          "types",
          "message"
        ],
        "properties": {
          "domain": {
            "type": "object",
            "required": [
              "name",
              "version",
              "chainId",
              "verifyingContract"
            ],
            "properties": {
              "name": {
                "const": "USD Coin"
              },
              "version": {
                "const": "2"
              },
              "chainId": {
                "const": 1
              },
              "verifyingContract": {
                "const": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
              }
            },
            "additionalProperties": false
          },
          "primaryType": {
            "const": "ReceiveWithAuthorization"
          },
          "types": {
            "type": "object",
            "required": [
              "ReceiveWithAuthorization"
            ],
            "properties": {
              "ReceiveWithAuthorization": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "object",
                    "required": [
                      "name",
                      "type"
                    ],
                    "properties": {
                      "name": {
                        "const": "from"
                      },
                      "type": {
                        "const": "address"
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "name",
                      "type"
                    ],
                    "properties": {
                      "name": {
                        "const": "to"
                      },
                      "type": {
                        "const": "address"
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "name",
                      "type"
                    ],
                    "properties": {
                      "name": {
                        "const": "value"
                      },
                      "type": {
                        "const": "uint256"
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "name",
                      "type"
                    ],
                    "properties": {
                      "name": {
                        "const": "validAfter"
                      },
                      "type": {
                        "const": "uint256"
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "name",
                      "type"
                    ],
                    "properties": {
                      "name": {
                        "const": "validBefore"
                      },
                      "type": {
                        "const": "uint256"
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "name",
                      "type"
                    ],
                    "properties": {
                      "name": {
                        "const": "nonce"
                      },
                      "type": {
                        "const": "bytes32"
                      }
                    },
                    "additionalProperties": false
                  }
                ],
                "minItems": 6,
                "maxItems": 6
              }
            },
            "additionalProperties": false
          },
          "message": {
            "type": "object",
            "required": [
              "from",
              "to",
              "value",
              "validAfter",
              "validBefore",
              "nonce"
            ],
            "properties": {
              "from": {
                "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
              },
              "to": {
                "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
              },
              "value": {
                "$ref": "#/components/schemas/NonzeroCanonicalUint256"
              },
              "validAfter": {
                "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
              },
              "validBefore": {
                "$ref": "#/components/schemas/NonzeroCanonicalUint256"
              },
              "nonce": {
                "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
              }
            },
            "additionalProperties": false
          }
        },
        "description": "Exact eth_signTypedData_v4 payload. The connected wallet, chain, domain, to, value, nonce and validity window must be checked client-side before the explicit signature action.",
        "additionalProperties": false
      },
      "CustomLaunchFundingChallengeV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "kind",
          "method",
          "fundingIntentHash",
          "fundingAuthorization",
          "typedData",
          "typedDataDigest",
          "submission"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-funding-challenge.v1"
          },
          "kind": {
            "const": "wallet-signature"
          },
          "method": {
            "const": "eip-3009-receive-with-authorization"
          },
          "fundingIntentHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "fundingAuthorization": {
            "$ref": "#/components/schemas/Eip3009FundingAuthorizationDescriptorV1"
          },
          "typedData": {
            "$ref": "#/components/schemas/Eip3009FundingTypedDataV1"
          },
          "typedDataDigest": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "submission": {
            "type": "object",
            "required": [
              "method",
              "path",
              "schemaVersion"
            ],
            "properties": {
              "method": {
                "const": "POST"
              },
              "path": {
                "type": "string",
                "pattern": "^/v3/wallet-admin/custom-launches/[A-Za-z0-9_-]{16,128}/funding-authorization$",
                "description": "Single-resource website wallet-admin handoff returned by the backend. It is not an API-key CLI operation."
              },
              "schemaVersion": {
                "const": "programmable.custom-launch-funding-authorization-signature.v1"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "FundingAuthorizationSubmissionV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "fundingIntentHash",
          "typedDataDigest",
          "signature"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-funding-authorization-signature.v1"
          },
          "fundingIntentHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "typedDataDigest": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "signature": {
            "type": "string",
            "pattern": "^0x[0-9a-f]{130}$",
            "description": "Canonical 65-byte lower-case r || s || v serialization. The website submits it only after an explicit wallet signature action."
          }
        },
        "description": "Website wallet-admin handoff schema. It is exposed only on the website-token operation and never on an API-key CLI operation.",
        "additionalProperties": false
      },
      "ExactWalletTransactionV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "chainId",
          "from",
          "to",
          "valueWei",
          "calldata"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.exact-wallet-transaction.v3"
          },
          "chainId": {
            "const": "1"
          },
          "from": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress",
            "description": "Exact request controller and resource ownerWallet. The connected wallet must match this address before signing or sending."
          },
          "to": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "valueWei": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "calldata": {
            "$ref": "./custom-launch-v2.json#/components/schemas/HexData"
          }
        },
        "description": "Exact Router transaction for explicit wallet review and send. It is a second wallet action only for EIP-3009 funding; for native-value or no-funding mode it is the sole wallet action. It is never auto-signed or auto-broadcast.",
        "additionalProperties": false
      },
      "PreparedLaunchArtifactV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "verificationBundleHash",
          "graphBundleHash",
          "sourceBundleSha256",
          "chainBindings",
          "callerConstraints",
          "timing",
          "route",
          "predictedComponents",
          "market",
          "stampRequest",
          "stampRequestHash",
          "permit",
          "permitDigest",
          "unsignedRouterTransaction",
          "claims",
          "artifactHash"
        ],
        "properties": {
          "schemaVersion": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/schemaVersion"
          },
          "verificationBundleHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "graphBundleHash": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/graphBundleHash"
          },
          "unboundGraphBundleHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest",
            "description": "Raw sha256 of canonical graphBundle JSON before project metadata binding."
          },
          "projectMetadata": {
            "$ref": "#/components/schemas/ProjectMetadataV1"
          },
          "projectMetadataHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "sourceBundleSha256": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/sourceBundleSha256"
          },
          "chainBindings": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/chainBindings"
          },
          "callerConstraints": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/callerConstraints"
          },
          "timing": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/timing"
          },
          "route": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/route"
          },
          "predictedComponents": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/predictedComponents"
          },
          "market": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/market"
          },
          "stampRequest": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/stampRequest"
          },
          "stampRequestHash": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/stampRequestHash"
          },
          "permit": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/permit"
          },
          "permitDigest": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/permitDigest"
          },
          "unsignedRouterTransaction": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/unsignedRouterTransaction"
          },
          "claims": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/claims"
          },
          "artifactHash": {
            "$ref": "./custom-launch-v1.json#/components/schemas/PreparedLaunchArtifactV1/properties/artifactHash"
          }
        },
        "oneOf": [
          {
            "required": [
              "unboundGraphBundleHash",
              "projectMetadata",
              "projectMetadataHash"
            ]
          },
          {
            "not": {
              "anyOf": [
                {
                  "required": [
                    "unboundGraphBundleHash"
                  ]
                },
                {
                  "required": [
                    "projectMetadata"
                  ]
                },
                {
                  "required": [
                    "projectMetadataHash"
                  ]
                }
              ]
            }
          }
        ],
        "description": "Prepared Router artifact with the exact-source verification bundle required by the V3 admission contract. Current profile 3.2 artifacts contain the complete non-null metadata triple; exact legacy artifacts omit all three metadata fields.",
        "additionalProperties": false
      },
      "FinalizedProviderObservationV1": {
        "type": "object",
        "required": [
          "provider",
          "finalizedBlockNumber",
          "finalizedBlockHash",
          "commonBlockHash"
        ],
        "properties": {
          "provider": {
            "enum": [
              "primary",
              "secondary"
            ]
          },
          "finalizedBlockNumber": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "finalizedBlockHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "commonBlockHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          }
        },
        "additionalProperties": false
      },
      "FinalizedCheckpointV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "blockNumber",
          "blockHash",
          "quorumSize",
          "observations"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.ethereum-finalized-checkpoint-quorum.v1"
          },
          "blockNumber": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "blockHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "quorumSize": {
            "const": 2
          },
          "observations": {
            "type": "array",
            "prefixItems": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/FinalizedProviderObservationV1"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "provider": {
                        "const": "primary"
                      }
                    }
                  }
                ]
              },
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/FinalizedProviderObservationV1"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "provider": {
                        "const": "secondary"
                      }
                    }
                  }
                ]
              }
            ],
            "minItems": 2,
            "maxItems": 2
          }
        },
        "description": "Two-provider finalized checkpoint quorum. It may coexist with submitted evidence when the agreed checkpoint still trails the launch block.",
        "additionalProperties": false
      },
      "CustomLaunchOnchainEvidenceV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "finalityState",
          "chainId",
          "router",
          "onchainLaunchId",
          "transactionHash",
          "blockNumber",
          "blockHash",
          "logIndex",
          "token",
          "hook",
          "poolManager",
          "poolId",
          "stampHash",
          "confirmationDepth",
          "requiredConfirmationDepth",
          "observedAtBlockNumber"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-onchain-evidence.v1"
          },
          "finalityState": {
            "enum": [
              "submitted",
              "finalized"
            ]
          },
          "chainId": {
            "const": "1"
          },
          "router": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "onchainLaunchId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "transactionHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "blockNumber": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "blockHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "logIndex": {
            "type": "integer",
            "minimum": 0
          },
          "token": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "hook": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "poolManager": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress"
          },
          "poolId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "stampHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "confirmationDepth": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "requiredConfirmationDepth": {
            "const": "64"
          },
          "observedAtBlockNumber": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "finalizedCheckpoint": {
            "$ref": "#/components/schemas/FinalizedCheckpointV1"
          }
        },
        "description": "Canonical Router event evidence. finalizedCheckpoint is optional for legacy compatibility and may be present in either submitted or finalized evidence.",
        "additionalProperties": false
      },
      "ExactSimulationEvidenceV3": {
        "type": "object",
        "required": [
          "outcome",
          "transactionPreimageHash",
          "profileHash",
          "blockNumber",
          "blockHash",
          "blockTimestamp",
          "responseDigest",
          "gasEstimate",
          "behaviorEvidence"
        ],
        "properties": {
          "outcome": {
            "const": "passed"
          },
          "transactionPreimageHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "profileHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "blockNumber": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "blockHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
          },
          "blockTimestamp": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "responseDigest": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "gasEstimate": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalUint256"
          },
          "behaviorEvidence": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorEvidenceSummaryV3"
          }
        },
        "description": "Server-authored exact Router simulation evidence pinned to one canonical Mainnet block and timestamp.",
        "additionalProperties": false
      },
      "FundingBoundaryV3": {
        "type": "object",
        "required": [
          "approvalTransactionRequired",
          "permit2Used",
          "fundingSignatureProducedByService",
          "walletTransactionBroadcastByService"
        ],
        "properties": {
          "approvalTransactionRequired": {
            "const": false
          },
          "permit2Used": {
            "const": false
          },
          "fundingSignatureProducedByService": {
            "const": false
          },
          "walletTransactionBroadcastByService": {
            "const": false
          }
        },
        "description": "Closed wallet-authority boundary repeated on every V3 output stage. No mode uses an approval transaction or Permit2. Only EIP-3009 mode adds a separate typed-data funding signature; native-value mode carries exact msg.value on the Router transaction and none mode carries no funding. The service never produces a wallet signature or broadcasts the Router transaction.",
        "additionalProperties": false
      },
      "PlatformAdmissionStatusV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "disposition",
          "reportSha256",
          "warningFindingCodes",
          "needsEvidenceFindingCodes",
          "riskClassification",
          "behaviorEvidence",
          "productTruthAxes",
          "routerSimulationRequiredBeforeAuthorization",
          "safetyClaim",
          "feeBehaviorClaim"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.platform-admission-status.v1"
          },
          "disposition": {
            "const": "no_blocking_static_finding"
          },
          "reportSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "warningFindingCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaticBaselineFindingV1/properties/code"
            },
            "uniqueItems": true
          },
          "needsEvidenceFindingCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaticBaselineFindingV1/properties/code"
            },
            "uniqueItems": true
          },
          "riskClassification": {
            "$ref": "#/components/schemas/PlatformAdmissionRiskClassificationV3"
          },
          "behaviorEvidence": {
            "$ref": "#/components/schemas/CustomLaunchBehaviorEvidenceSummaryV3"
          },
          "productTruthAxes": {
            "$ref": "#/components/schemas/CustomLaunchProductTruthAxesV3"
          },
          "routerSimulationRequiredBeforeAuthorization": {
            "const": true
          },
          "safetyClaim": {
            "const": false
          },
          "feeBehaviorClaim": {
            "const": false
          }
        },
        "description": "Revision 3 admission classification after the exact-source static baseline found no hard-blocking code and target-role pair. Evidence duties remain bound and visible without becoming routing, fee, source, indexing or feature claims. For fresh profile 3.4.0, exact Router simulation, verified behavior evidence and exact launch-bound 10 bps fee-path verification must all pass before wallet handoff. Missing, not-configured or unavailable execution remains retryable and cannot authorize; an authenticated executed failure blocks terminally. This is not an audit or a safety, honeypot, liquidity, tradeability, or universal fee-behavior guarantee.",
        "additionalProperties": false
      },
      "StaticBaselineSourceLocationV1": {
        "type": "object",
        "required": [
          "compilationUnitId",
          "sourcePath",
          "contractName",
          "line",
          "column"
        ],
        "properties": {
          "compilationUnitId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier"
          },
          "sourcePath": {
            "type": "string",
            "minLength": 1
          },
          "contractName": {
            "type": "string",
            "minLength": 1
          },
          "line": {
            "type": "integer",
            "minimum": 1
          },
          "column": {
            "type": "integer",
            "minimum": 1
          }
        },
        "additionalProperties": false
      },
      "StaticBaselineRuntimeLocationV1": {
        "type": "object",
        "required": [
          "targetId",
          "programCounter",
          "opcode"
        ],
        "properties": {
          "targetId": {
            "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier"
          },
          "programCounter": {
            "type": "integer",
            "minimum": 0
          },
          "opcode": {
            "enum": [
              "CALLCODE",
              "CREATE",
              "CREATE2",
              "DELEGATECALL",
              "SELFDESTRUCT"
            ]
          }
        },
        "additionalProperties": false
      },
      "StaticBaselineFindingV1": {
        "type": "object",
        "required": [
          "code",
          "disposition",
          "evidenceAuthority",
          "targetIds",
          "detail",
          "source",
          "runtime"
        ],
        "properties": {
          "code": {
            "enum": [
              "RUNTIME_CALLCODE",
              "RUNTIME_CREATE",
              "RUNTIME_CREATE2",
              "RUNTIME_DELEGATECALL",
              "RUNTIME_SELFDESTRUCT",
              "SOURCE_PROXY_OR_UPGRADE_SURFACE",
              "SOURCE_SELFDESTRUCT_SURFACE",
              "SOURCE_MUTABLE_PAUSE_SURFACE",
              "SOURCE_MUTABLE_BLOCKLIST_SURFACE",
              "SOURCE_MUTABLE_TAX_OR_FEE_SURFACE",
              "SOURCE_MUTABLE_TRANSFER_RESTRICTION",
              "SOURCE_MUTABLE_ADMIN_SURFACE",
              "SOURCE_PUBLIC_MINT_SURFACE",
              "SOURCE_TRANSFER_FEE_SURFACE",
              "SOURCE_LIQUIDITY_LOCK_OR_CUSTODY_SURFACE",
              "SOURCE_EXTERNAL_DEPENDENCY_SURFACE",
              "V4_CALLBACK_AUTHENTICATION_MISSING",
              "V4_CALLBACK_AUTHENTICATION_INVALID",
              "V4_CALLBACK_POOL_MANAGER_MISMATCH",
              "V4_CALLBACK_AUTHENTICATION_REVIEW_REQUIRED",
              "V4_ENABLED_CALLBACK_IMPLEMENTATION_MISSING",
              "SOURCE_TARGET_ANALYSIS_INCOMPLETE"
            ]
          },
          "disposition": {
            "const": "action_required"
          },
          "evidenceAuthority": {
            "const": "deterministic-exact-source-and-runtime-scan"
          },
          "targetIds": {
            "type": "array",
            "items": {
              "$ref": "./custom-launch-v2.json#/components/schemas/CanonicalIdentifier"
            },
            "minItems": 1,
            "uniqueItems": true
          },
          "detail": {
            "type": "string",
            "minLength": 1
          },
          "source": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaticBaselineSourceLocationV1"
              },
              {
                "type": "null"
              }
            ]
          },
          "runtime": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/StaticBaselineRuntimeLocationV1"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "StaticBaselineReportV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "gateVersion",
          "evidenceAuthority",
          "disposition",
          "approvalAuthority",
          "safetyClaim",
          "exactSourceGraphSha256",
          "verificationBundleSha256",
          "findings",
          "limitations",
          "reportSha256"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-static-baseline-gate.v1"
          },
          "gateVersion": {
            "const": "1.0.0"
          },
          "evidenceAuthority": {
            "const": "deterministic-exact-source-and-runtime-scan"
          },
          "disposition": {
            "enum": [
              "no_static_finding",
              "action_required"
            ]
          },
          "approvalAuthority": {
            "const": false
          },
          "safetyClaim": {
            "const": false
          },
          "exactSourceGraphSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "verificationBundleSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "findings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaticBaselineFindingV1"
            }
          },
          "limitations": {
            "type": "array",
            "prefixItems": [
              {
                "const": "Static indicators do not prove that a contract is safe, non-malicious, or economically solvent."
              },
              {
                "const": "No static result replaces exact fork simulation of buys, sells, liquidity lifecycle, callbacks, or fee routing."
              },
              {
                "const": "A no-static-finding result only permits later conformance review; it is never an approval or audit."
              }
            ],
            "minItems": 3,
            "maxItems": 3
          },
          "reportSha256": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          }
        },
        "description": "Deterministic bounded exact-source and runtime indicator report. It is neither approval nor a safety claim.",
        "additionalProperties": false
      },
      "CustomLaunchRemediationV1": {
        "type": "object",
        "required": [
          "schemaVersion",
          "remediationId",
          "code",
          "stage",
          "targetId",
          "targetRole",
          "sourcePath",
          "expected",
          "observed",
          "requiredChange",
          "catalogUrl",
          "guideUrl",
          "retryable",
          "requiresNewRequest",
          "resumeAt"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-remediation.v1"
          },
          "remediationId": {
            "enum": [
              "PACK_CONFIG_V3_MISSING",
              "PACK_CONFIG_V3_INVALID",
              "SOURCE_REVISION_NOT_EXACT",
              "FUNDING_SIGNATURE_PATCH_NOT_TOP_LEVEL",
              "FUNDING_AUTHORIZATION_PATCH_PATH_INVALID",
              "LIQUIDITY_MODEL_NOT_EXACT",
              "HOOK_PERMISSION_OR_CALLBACK_MISMATCH",
              "PLATFORM_ADMISSION_FINDING",
              "PROFILE_INVALID",
              "ROUTER_SIMULATION_REVERTED",
              "ROUTER_SIMULATION_UNAVAILABLE",
              "FUNDING_NONCE_DERIVATION_CONFLICT_SUSPECTED",
              "FUNDING_NONCE_CONFORMANCE_UNPROVEN"
            ]
          },
          "code": {
            "type": "string",
            "minLength": 1
          },
          "stage": {
            "enum": [
              "admission",
              "validation-or-admission",
              "simulation"
            ]
          },
          "targetId": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "targetRole": {
            "oneOf": [
              {
                "enum": [
                  "token",
                  "hook",
                  "initializer",
                  "platform-fee-binding",
                  "other"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "sourcePath": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "expected": {
            "type": "string",
            "minLength": 1
          },
          "observed": {
            "type": "string",
            "minLength": 1
          },
          "requiredChange": {
            "type": "string",
            "minLength": 1
          },
          "catalogUrl": {
            "const": "https://programmable.market/policies/custom-launch-agent-remediation-v1.json"
          },
          "guideUrl": {
            "const": "https://programmable.market/docs/developers/custom-launch#existing-project-integration"
          },
          "retryable": {
            "type": "boolean"
          },
          "requiresNewRequest": {
            "type": "boolean"
          },
          "resumeAt": {
            "enum": [
              "pack",
              "validate",
              "inspect-project",
              "status"
            ]
          }
        },
        "description": "Bounded machine-readable project remediation. It never contains credentials, signatures, source excerpts or provider diagnostics.",
        "additionalProperties": false
      },
      "CustomLaunchFailureV3": {
        "type": "object",
        "required": [
          "code",
          "message",
          "retryable",
          "remediations"
        ],
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1
          },
          "message": {
            "type": "string",
            "minLength": 1
          },
          "retryable": {
            "type": "boolean"
          },
          "remediations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomLaunchRemediationV1"
            }
          }
        },
        "additionalProperties": false
      },
      "CustomLaunchOutputV3": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "schemaVersion",
              "integrationState",
              "stage",
              "actionRequired",
              "fundingBoundary"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.custom-launch-authorization-result.v3"
              },
              "integrationState": {
                "const": "ready"
              },
              "stage": {
                "const": "platform-review-pending"
              },
              "actionRequired": {
                "type": "null"
              },
              "fundingBoundary": {
                "$ref": "#/components/schemas/FundingBoundaryV3"
              },
              "platformAdmission": {
                "$ref": "#/components/schemas/PlatformAdmissionStatusV1"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "schemaVersion",
              "integrationState",
              "stage",
              "actionRequired",
              "fundingBoundary"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.custom-launch-authorization-result.v3"
              },
              "integrationState": {
                "const": "ready"
              },
              "stage": {
                "const": "funding-signature-required"
              },
              "actionRequired": {
                "$ref": "#/components/schemas/CustomLaunchFundingChallengeV1"
              },
              "fundingBoundary": {
                "$ref": "#/components/schemas/FundingBoundaryV3"
              },
              "platformAdmission": {
                "$ref": "#/components/schemas/PlatformAdmissionStatusV1"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "schemaVersion",
              "integrationState",
              "stage",
              "actionRequired",
              "fundingBoundary"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.custom-launch-authorization-result.v3"
              },
              "integrationState": {
                "const": "ready"
              },
              "stage": {
                "const": "funding-signature-verified"
              },
              "actionRequired": {
                "type": "null"
              },
              "fundingBoundary": {
                "$ref": "#/components/schemas/FundingBoundaryV3"
              },
              "platformAdmission": {
                "$ref": "#/components/schemas/PlatformAdmissionStatusV1"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "schemaVersion",
              "integrationState",
              "stage",
              "actionRequired",
              "fundingBoundary",
              "artifact",
              "signedPermit",
              "observationWindow",
              "onchain",
              "walletTransaction",
              "simulation",
              "behaviorEvidence",
              "behaviorAssurance"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.custom-launch-authorization-result.v3"
              },
              "integrationState": {
                "const": "ready"
              },
              "stage": {
                "const": "router-transaction-required"
              },
              "actionRequired": {
                "type": "object",
                "required": [
                  "kind",
                  "walletHandoffUrl",
                  "expiresAt",
                  "transaction",
                  "graphCommitment",
                  "artifactHash",
                  "transactionPreimageHash",
                  "permitDigest",
                  "initializerCalldataHash"
                ],
                "properties": {
                  "kind": {
                    "const": "send-router-transaction"
                  },
                  "walletHandoffUrl": {
                    "type": "string",
                    "format": "uri",
                    "description": "First-party review page for this exact authorized resource."
                  },
                  "expiresAt": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Expiry of the exact prepared Router permit and wallet handoff."
                  },
                  "transaction": {
                    "$ref": "#/components/schemas/ExactWalletTransactionV3"
                  },
                  "graphCommitment": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
                  },
                  "artifactHash": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
                  },
                  "transactionPreimageHash": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
                  },
                  "permitDigest": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
                  },
                  "initializerCalldataHash": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
                  }
                },
                "additionalProperties": false
              },
              "fundingBoundary": {
                "$ref": "#/components/schemas/FundingBoundaryV3"
              },
              "platformAdmission": {
                "$ref": "#/components/schemas/PlatformAdmissionStatusV1"
              },
              "artifact": {
                "$ref": "#/components/schemas/PreparedLaunchArtifactV3"
              },
              "signedPermit": {
                "$ref": "./custom-launch-v2.json#/components/schemas/SignedPreparedLaunchPermitV1"
              },
              "observationWindow": {
                "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchObservationWindowV1"
              },
              "onchain": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CustomLaunchOnchainEvidenceV3"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "walletTransaction": {
                "$ref": "#/components/schemas/ExactWalletTransactionV3"
              },
              "simulation": {
                "$ref": "#/components/schemas/ExactSimulationEvidenceV3"
              },
              "behaviorEvidence": {
                "$ref": "#/components/schemas/CustomLaunchBehaviorEvidenceSummaryV3"
              },
              "behaviorAssurance": {
                "$ref": "#/components/schemas/CustomLaunchBehaviorAssuranceV3"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "schemaVersion",
              "integrationState",
              "stage",
              "actionRequired",
              "fundingBoundary",
              "artifact",
              "observationWindow",
              "onchain",
              "simulation",
              "behaviorEvidence",
              "behaviorAssurance"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.custom-launch-authorization-result.v3"
              },
              "integrationState": {
                "const": "ready"
              },
              "stage": {
                "const": "onchain-observation"
              },
              "actionRequired": {
                "type": "null"
              },
              "fundingBoundary": {
                "$ref": "#/components/schemas/FundingBoundaryV3"
              },
              "platformAdmission": {
                "$ref": "#/components/schemas/PlatformAdmissionStatusV1"
              },
              "artifact": {
                "$ref": "#/components/schemas/PreparedLaunchArtifactV3"
              },
              "observationWindow": {
                "$ref": "./custom-launch-v2.json#/components/schemas/CustomLaunchObservationWindowV1"
              },
              "onchain": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CustomLaunchOnchainEvidenceV3"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "simulation": {
                "$ref": "#/components/schemas/ExactSimulationEvidenceV3"
              },
              "behaviorEvidence": {
                "$ref": "#/components/schemas/CustomLaunchBehaviorEvidenceSummaryV3"
              },
              "behaviorAssurance": {
                "$ref": "#/components/schemas/CustomLaunchBehaviorAssuranceV3"
              }
            },
            "description": "Submitted and finalized single-resource polling output. It preserves canonical Router evidence and product-truth classifications but removes the spent wallet transaction and signed permit so clients cannot mistake a terminal resource for a new signing action.",
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "schemaVersion",
              "integrationState",
              "stage",
              "actionRequired",
              "staticBaseline",
              "fundingBoundary"
            ],
            "properties": {
              "schemaVersion": {
                "const": "programmable.custom-launch-authorization-result.v3"
              },
              "integrationState": {
                "const": "ready"
              },
              "stage": {
                "const": "platform-review-action-required"
              },
              "actionRequired": {
                "type": "object",
                "required": [
                  "kind",
                  "reportSha256",
                  "findingCodes",
                  "message",
                  "remediations"
                ],
                "properties": {
                  "kind": {
                    "const": "security-review"
                  },
                  "reportSha256": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
                  },
                  "findingCodes": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/StaticBaselineFindingV1/properties/code"
                    },
                    "minItems": 1
                  },
                  "message": {
                    "const": "Automatic static admission found a blocking target-role condition. Follow the bound remediation before wallet authorization."
                  },
                  "remediations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CustomLaunchRemediationV1"
                    },
                    "minItems": 1
                  }
                },
                "additionalProperties": false
              },
              "staticBaseline": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/StaticBaselineReportV1"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "disposition": {
                        "const": "action_required"
                      },
                      "findings": {
                        "minItems": 1
                      }
                    }
                  }
                ]
              },
              "fundingBoundary": {
                "$ref": "#/components/schemas/FundingBoundaryV3"
              }
            },
            "description": "Automatic static admission found a blocking target-role condition. Follow the bound remediation before wallet authorization. This stage never asks the controller wallet to sign or broadcast.",
            "additionalProperties": false
          }
        ]
      },
      "CustomLaunchResourceV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "launchId",
          "requestId",
          "onchainLaunchId",
          "routeId",
          "ownerWallet",
          "status",
          "requestHash",
          "launchProfileVersion",
          "projectMetadata",
          "projectMetadataHash",
          "launchProfileHash",
          "launchIntentHash",
          "fundingIntentHash",
          "liquidityIntent",
          "createdAt",
          "updatedAt",
          "output",
          "failure",
          "lifecycleQueue"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch.v3"
          },
          "launchId": {
            "type": "string",
            "format": "uuid"
          },
          "requestId": {
            "type": "string",
            "format": "uuid"
          },
          "onchainLaunchId": {
            "oneOf": [
              {
                "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
              },
              {
                "type": "null"
              }
            ]
          },
          "routeId": {
            "const": "custom-launch:create:v3"
          },
          "ownerWallet": {
            "$ref": "./custom-launch-v2.json#/components/schemas/EthereumAddress",
            "description": "The immutable launchWallet/controller selected by the request. For wallet credentials it equals the key binding; for partner credentials it remains the separate wallet that must review, sign and broadcast."
          },
          "status": {
            "type": "string",
            "description": "Durable lifecycle state. action_required carries a deterministic static-baseline report and bound remediation; it is not a wallet action or a request for manual approval. awaiting_funding_authorization can request a separate funding signature. For fresh profile 3.4.0, missing, not-configured or unavailable behavior execution stays simulating and returns retryable 503/CUSTOM_LAUNCH_V3_UNAVAILABLE; an authenticated executed failure is terminal failed with BEHAVIOR_EVIDENCE_NOT_VERIFIED. authorized exposes the Router wallet transaction only after every mandatory server gate, including verified behavior evidence and exact launch-bound 10 bps fee-path verification, passes. Legacy resources preserve their stored evidence state.",
            "enum": [
              "received",
              "validating",
              "pending_review",
              "action_required",
              "prepared",
              "simulating",
              "awaiting_funding_authorization",
              "funding_authorization_verified",
              "authorized",
              "submitted",
              "finalized",
              "failed",
              "cancelled"
            ]
          },
          "requestHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "launchProfileVersion": {
            "enum": [
              "2.0.0",
              "3.0.0",
              "3.1.0",
              "3.2.0",
              "3.3.0",
              "3.4.0"
            ],
            "description": "Immutable persisted launchProfile.profileVersion. Complete metadata is required for 3.4.0 and 3.3.0; 3.2.0 retains its original permissive metadata semantics; exact 2.0.0, 3.0.0 and 3.1.0 resources retain null metadata semantics. Only 3.4.0 carries the fresh verified behavior and exact fee-path wallet-handoff gate."
          },
          "projectMetadata": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProjectMetadataV1"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hash-bound current-profile metadata. Null only for byte-compatible legacy requests."
          },
          "projectMetadataHash": {
            "oneOf": [
              {
                "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
              },
              {
                "type": "null"
              }
            ]
          },
          "partnerAttribution": {
            "$ref": "#/components/schemas/LaunchPartnerAttributionV1"
          },
          "launchProfileHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "launchIntentHash": {
            "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
          },
          "fundingIntentHash": {
            "oneOf": [
              {
                "$ref": "./custom-launch-v2.json#/components/schemas/LowerHex32"
              },
              {
                "type": "null"
              }
            ]
          },
          "liquidityIntent": {
            "$ref": "#/components/schemas/DirectNativeLiquidityIntentProjectionV3"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "walletHandoffUrl": {
            "oneOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "HTTPS controller-wallet handoff for the current explicit signing stage. It is absent or null until mandatory server gates and exact Router simulation pass, remains absent outside a wallet action and never grants signing authority to the API key."
          },
          "expiresAt": {
            "oneOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "description": "Expiry of the current wallet handoff, when one exists. Clients must refetch status instead of signing an expired payload."
          },
          "output": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomLaunchOutputV3"
              },
              {
                "type": "null"
              }
            ],
            "description": "Null while simulating. CLI, client or model output cannot advance this state. The signed permit and exact wallet transaction are exposed only after objective static server gates and exact Router simulation pass and the resource reaches authorized. Behavior-derived claims remain unverified unless authenticated execution supports them."
          },
          "failure": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomLaunchFailureV3"
              },
              {
                "type": "null"
              }
            ]
          },
          "lifecycleQueue": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomLaunchLifecycleQueueV3"
              },
              {
                "type": "null"
              }
            ],
            "description": "Durable worker scheduling state. It is operational readback, not launch finality or transaction evidence."
          },
          "sourceVerification": {
            "oneOf": [
              {
                "$ref": "./custom-launch-v2.json#/components/schemas/SourceVerificationStatusV1"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "allOf": [
          {
            "oneOf": [
              {
                "properties": {
                  "launchProfileVersion": {
                    "enum": [
                      "3.3.0",
                      "3.4.0"
                    ]
                  },
                  "projectMetadata": {
                    "$ref": "#/components/schemas/CompleteProjectMetadataV1"
                  },
                  "projectMetadataHash": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
                  }
                },
                "required": [
                  "launchProfileVersion",
                  "projectMetadata",
                  "projectMetadataHash"
                ]
              },
              {
                "properties": {
                  "launchProfileVersion": {
                    "const": "3.2.0"
                  },
                  "projectMetadata": {
                    "$ref": "#/components/schemas/ProjectMetadataV1"
                  },
                  "projectMetadataHash": {
                    "$ref": "./custom-launch-v2.json#/components/schemas/Sha256Digest"
                  }
                },
                "required": [
                  "launchProfileVersion",
                  "projectMetadata",
                  "projectMetadataHash"
                ]
              },
              {
                "properties": {
                  "launchProfileVersion": {
                    "enum": [
                      "2.0.0",
                      "3.0.0",
                      "3.1.0"
                    ]
                  },
                  "projectMetadata": {
                    "type": "null"
                  },
                  "projectMetadataHash": {
                    "type": "null"
                  }
                },
                "required": [
                  "launchProfileVersion",
                  "projectMetadata",
                  "projectMetadataHash"
                ]
              }
            ]
          },
          {
            "if": {
              "properties": {
                "launchProfileVersion": {
                  "const": "3.4.0"
                },
                "status": {
                  "enum": [
                    "authorized",
                    "submitted",
                    "finalized"
                  ]
                }
              },
              "required": [
                "launchProfileVersion",
                "status"
              ]
            },
            "then": {
              "properties": {
                "output": {
                  "type": "object",
                  "required": [
                    "behaviorEvidence",
                    "behaviorAssurance"
                  ],
                  "properties": {
                    "behaviorEvidence": {
                      "$ref": "#/components/schemas/FreshWalletHandoffBehaviorEvidenceV3_4"
                    },
                    "behaviorAssurance": {
                      "$ref": "#/components/schemas/FreshWalletHandoffBehaviorAssuranceV3_4"
                    }
                  }
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "status": {
                  "const": "simulating"
                }
              },
              "required": [
                "status"
              ]
            },
            "then": {
              "properties": {
                "output": {
                  "type": "null"
                }
              },
              "required": [
                "output"
              ]
            }
          },
          {
            "if": {
              "properties": {
                "output": {
                  "type": "object",
                  "anyOf": [
                    {
                      "required": [
                        "signedPermit"
                      ]
                    },
                    {
                      "required": [
                        "walletTransaction"
                      ]
                    }
                  ]
                }
              },
              "required": [
                "output"
              ]
            },
            "then": {
              "properties": {
                "status": {
                  "enum": [
                    "authorized",
                    "submitted",
                    "finalized"
                  ]
                }
              },
              "required": [
                "status"
              ]
            }
          }
        ],
        "additionalProperties": false
      },
      "CustomLaunchSummaryV3": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CustomLaunchResourceV3"
          },
          {
            "type": "object",
            "required": [
              "output"
            ],
            "properties": {
              "output": {
                "type": "null"
              }
            }
          }
        ],
        "description": "Bounded list projection. Output is always redacted; use the single-resource GET for precise polling and wallet handoff data."
      },
      "CustomLaunchListPageV3": {
        "type": "object",
        "required": [
          "schemaVersion",
          "launches",
          "nextCursor"
        ],
        "properties": {
          "schemaVersion": {
            "const": "programmable.custom-launch-list.v3"
          },
          "launches": {
            "type": "array",
            "maxItems": 25,
            "items": {
              "$ref": "#/components/schemas/CustomLaunchSummaryV3"
            }
          },
          "nextCursor": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 16,
                "maxLength": 512,
                "pattern": "^[A-Za-z0-9_-]+$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      }
    }
  }
}
