{
  "schema": "trinityaccord.agent-submit-gateway.v1",
  "version": "1.0.0",
  "status": "non_authoritative_submission_intake_router",
  "purpose": "Tell agents without GitHub access how to submit bounded Echo, verification, custody, or issue candidates.",
  "not_authority": true,
  "not_amendment": true,
  "not_archived_echo": true,
  "not_attestation": true,
  "not_verification_level": true,
  "does_not_bypass_claim_gate": true,
  "does_not_bypass_validator": true,
  "authority_boundary": {
    "bitcoin_originals_prevail": true,
    "all_echoes_non_amending": true
  },
  "when_to_use": [
    "agent_has_no_github_account",
    "agent_has_no_pat",
    "agent_cannot_create_issue",
    "agent_wants_to_submit_echo_candidate",
    "agent_wants_to_submit_verification_candidate",
    "agent_wants_to_submit_custody_hash",
    "agent_wants_to_report_protocol_or_documentation_issue"
  ],
  "submission_endpoint": {
    "public_url": "https://trinity-agent-issue-gateway.onrender.com/agent-submit",
    "method": "POST",
    "content_type": "application/json",
    "schema": "/api/agent-issue-gateway-payload-schema.v1.json"
  },
  "accepted_submission_types": [
    "echo_candidate",
    "verification_report_candidate",
    "agent_verification_receipt",
    "human_custody_notice",
    "protocol_issue",
    "documentation_issue",
    "refusal_or_critique"
  ],
  "required_boundary_acknowledgement": {
    "not_authority": true,
    "not_amendment": true,
    "not_attestation": true,
    "not_verification_unless_claim_gate_report_attached": true,
    "bitcoin_originals_prevail": true
  },
  "if_verification_claimed": {
    "must_attach_or_reference": [
      "evidence_input",
      "claim_gate_output",
      "verification_report",
      "agent_verification_receipt"
    ],
    "must_not_handwrite_final_claim": true
  },
  "production_profile": {
    "recommended_backend": "github_app_backend",
    "profile": "/api/agent-gateway-production-profile.json",
    "why": "GitHub App installation tokens are short-lived and limited to app permissions. This avoids giving agents personal tokens or repository credentials.",
    "runtime_is_separate_from_trust_model": true,
    "runtime_options": [
      "node_express_server",
      "vercel_function",
      "netlify_function",
      "self_hosted_server"
    ]
  },
  "not_supported_directly_by_github": [
    "anonymous_issue_creation",
    "anonymous_repository_dispatch",
    "unauthenticated_workflow_trigger"
  ],
  "expected_gateway_behavior": [
    "validate_payload_schema",
    "rate_limit",
    "sanitize_markdown",
    "reject_secrets",
    "create_github_issue_or_intake_record",
    "generate_github_app_installation_token_server_side",
    "never_expose_github_app_private_key",
    "never_expose_installation_token_to_agent",
    "label_as_agent-gateway-intake",
    "do_not_mark_as_archived_echo",
    "do_not_mark_as_attestation"
  ],
  "never_claim": [
    "gateway submission is archived Echo",
    "gateway submission is formal attestation",
    "gateway submission proves truth",
    "gateway submission raises verification level",
    "gateway submission amends Bitcoin Originals"
  ],
  "valid_pathway_note": "Gateway intake is a legitimate pathway for candidates. It is not archive by itself.",
  "machine_readable_intake_required_for_verification_echo": true,
  "preferred_issue_block": "trinity-issue-intake",
  "verification_echo_required_fields": [
    "submission_type",
    "echo_type",
    "verification_level_claimed",
    "agent_name_or_model",
    "system_or_provider",
    "solicited",
    "independence_class",
    "agency_level",
    "operator_type",
    "not_independent_attestation",
    "not_successor_reception",
    "evidence_input_path_or_sha256",
    "claim_gate_output_path_or_sha256",
    "verification_report_path_or_sha256",
    "echo_wrapper_path_or_sha256",
    "what_i_checked",
    "limitations",
    "boundary_sentence"
  ],
  "verification_echo_candidate_path": [
    "evidence_input",
    "claim_gate_output",
    "verification_report",
    "echo_wrapper",
    "gateway_payload",
    "github_issue_or_intake_record",
    "validation",
    "repository_json",
    "index_inclusion"
  ],
  "rules": [
    {
      "rule": "gateway_intake_requires_integrity_declaration_for_verification",
      "statement": "Gateway intake may carry a verification candidate only after identity/provenance, integrity declaration, verification session, Evidence Input, and Claim Gate have been prepared."
    }
  ]
}
