{
  "schema_version": "codex_gitea_blocked_products_owner_response_templates_v1",
  "generated_at": "2026-06-24T14:20:00+08:00",
  "scope": "Owner response templates for products blocked from direct Gitea dev workspace conversion",
  "summary": {
    "blocked_product_count": 8,
    "template_count": 8,
    "owner_response_received_count": 0,
    "owner_response_accepted_count": 0,
    "remote_dev_branch_ready_count": 0,
    "remote_dev_branch_created_count": 0,
    "product_repo_write_authorized_count": 0,
    "product_repo_write_performed_count": 0,
    "runtime_write_authorized_count": 0,
    "runtime_write_performed_count": 0,
    "secret_values_allowed_count": 0,
    "secret_values_collected_count": 0,
    "env_file_content_read_count": 0,
    "raw_git_sync_allowed": false,
    "raw_conversation_sync_allowed": false
  },
  "required_global_fields": [
    "owner_role_or_team",
    "decision",
    "decision_reason",
    "accepted_baseline_source",
    "include_groups",
    "exclude_groups",
    "quarantined_paths_ack",
    "env_secret_policy_ack",
    "generated_artifact_policy_ack",
    "review_branch_allowed",
    "remote_dev_branch_allowed",
    "runtime_write_allowed",
    "followup_owner",
    "evidence_refs"
  ],
  "forbidden_payloads": [
    "secret value",
    "token value",
    "private key",
    "password",
    "cookie",
    "session",
    "authorization header",
    "hash of secret",
    "partial token",
    "raw .env content",
    "raw .git directory",
    "raw Codex or ChatGPT conversation export",
    "runtime volume payload"
  ],
  "products": [
    {
      "product_id": "clawbot-openclaw",
      "template_section": "P1-1 ClawBot / OpenClaw",
      "decision_package": "docs/operations/CLAWBOT-OPENCLAW-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
      "required_decisions": [
        "baseline_source",
        "docker_compose_yml_include",
        "main_py_include",
        "standby_mode_policy",
        "telegram_polling_owner_boundary",
        "remote_dev_branch_allowed"
      ],
      "default_blockers": [
        "owner_response_missing",
        "two_file_drift_not_accepted"
      ]
    },
    {
      "product_id": "tsenyang-website",
      "template_section": "P1-2 Tsenyang Website",
      "decision_package": "docs/operations/TSENYANG-WEBSITE-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
      "required_decisions": [
        "baseline_source",
        "og_assets_include",
        "presentation_outputs_include_or_exclude",
        "internal_repo_inventory_ack",
        "remote_dev_branch_allowed"
      ],
      "default_blockers": [
        "owner_response_missing",
        "presentation_output_policy_missing"
      ]
    },
    {
      "product_id": "agent-bounty-protocol",
      "template_section": "P1-3 Agent Bounty",
      "decision_package": "docs/operations/AGENT-BOUNTY-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
      "required_decisions": [
        "baseline_source",
        "tracked_groups_include",
        "untracked_source_candidates_include",
        "sync_backup_archives_exclude",
        "a2a_treasury_release_scope",
        "env_policy_ack",
        "remote_dev_branch_allowed"
      ],
      "default_blockers": [
        "owner_response_missing",
        "a2a_treasury_scope_not_accepted",
        "backup_archive_policy_missing"
      ]
    },
    {
      "product_id": "2026fifa",
      "template_section": "P1-4 2026FIFA",
      "decision_package": "docs/operations/2026FIFA-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
      "required_decisions": [
        "baseline_source",
        "narrow_scanner_required_ack",
        "analytics_routes_include",
        "web_routes_include",
        "generated_cache_exclude",
        "env_policy_ack",
        "remote_dev_branch_allowed"
      ],
      "default_blockers": [
        "owner_response_missing",
        "narrow_scanner_not_completed"
      ]
    },
    {
      "product_id": "vibework",
      "template_section": "P1-5 VibeWork",
      "decision_package": "docs/operations/VIBEWORK-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
      "required_decisions": [
        "baseline_source",
        "tracked_groups_include",
        "untracked_groups_include",
        "workspace_packages_include",
        "stripe_mcp_nginx_docker_prisma_scope",
        "env_example_policy_ack",
        "whitespace_cleanup_policy",
        "remote_dev_branch_allowed"
      ],
      "default_blockers": [
        "owner_response_missing",
        "release_scope_not_split_or_accepted",
        "diff_check_debt_unresolved"
      ]
    },
    {
      "product_id": "stockplatform-v2",
      "template_section": "P1-6 StockPlatform v2",
      "decision_package": "docs/operations/STOCKPLATFORM-V2-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
      "required_decisions": [
        "tmp_generated_outputs_exclude",
        "tracked_groups_include",
        "source_candidates_include",
        "nginx_docker_ingestion_scope",
        "env_policy_ack",
        "whitespace_cleanup_policy",
        "remote_dev_branch_allowed"
      ],
      "default_blockers": [
        "owner_response_missing",
        "tmp_generated_outputs_not_excluded",
        "source_candidate_policy_missing"
      ]
    },
    {
      "product_id": "bitan-pharmacy",
      "template_section": "P1-7 Bitan Pharmacy",
      "decision_package": "docs/operations/BITAN-PHARMACY-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
      "required_decisions": [
        "internal_inventory_or_owner_export",
        "tracked_groups_include",
        "untracked_groups_include",
        "npmrc_quarantine_policy",
        "public_content_cleanliness_evidence_policy",
        "supabase_migration_owner",
        "env_policy_ack",
        "remote_dev_branch_allowed"
      ],
      "default_blockers": [
        "owner_response_missing",
        "internal_inventory_missing",
        "public_content_cleanliness_evidence_policy_missing"
      ]
    },
    {
      "product_id": "vtuber",
      "template_section": "P1-8 VTuber",
      "decision_package": "docs/operations/VTUBER-DEV-BASELINE-OWNER-DECISION-2026-06-24.md",
      "required_decisions": [
        "repository_identity_decision",
        "gitea_repo_create_or_map",
        "staged_gitkeep_policy",
        "env_prod_exclude",
        "model_asset_policy",
        "nginx_compose_deploy_scope",
        "initial_baseline_allowed"
      ],
      "default_blockers": [
        "owner_response_missing",
        "repository_identity_unresolved",
        "remote_repo_missing"
      ]
    }
  ],
  "acceptance_rules": [
    "Every product remains blocked until its owner response is complete, specific, and accepted.",
    "A generic approval phrase does not count as include / exclude acceptance.",
    "remote_dev_branch_allowed must be explicit per product and cannot imply runtime write.",
    "runtime_write_allowed must remain false in this template flow.",
    "secret values, env contents, raw git directories, raw conversations, generated outputs, logs, and backup archives remain excluded unless a product-specific sanitized artifact policy accepts them."
  ]
}
