{
  "schema": "sonic_forage.browser_visual_qa_fallback.v1",
  "generated_utc": "2026-05-06T08:37:21Z",
  "status": "browser_visual_qa_fallback_manual_review_only_closed_until_human_yes",
  "canonical_namespace": "Sonic-Forage",
  "review_only": true,
  "manual_review_required": true,
  "manual_upload_required": true,
  "requires_human_approval": true,
  "auto_upload_enabled": false,
  "auto_post_enabled": false,
  "auto_stream_enabled": false,
  "auto_record_enabled": false,
  "purpose": "Manual fallback path for visually checking faceless-video thumbnail, caption, transcript, and proof-hub surfaces before any external action.",
  "human_approval_question": "Do you approve using this Sonic-Forage browser visual QA fallback to manually review the thumbnail/caption/video proof paths before any separate upload, post, stream, recording, outreach, payment, revenue, affiliation, GPU/training, or cron action?",
  "fallback_path": [
    "Run PYTHONDONTWRITEBYTECODE=1 python3 scripts/verify_site.py and confirm VERIFY OK afterparty explainer site.",
    "Open the proof hub and jump to #youtube-framework-pack.",
    "Check the thumbnail card at phone and desktop widths for readable alt/caption wording.",
    "Open captions/transcript pack and confirm VTT, SRT, and transcript paths remain local proof only.",
    "Open the thumbnail alt/caption QA checklist and compare the safe wording to the visible thumbnail concept.",
    "Open the caption readability screen path and read the 45-second route aloud.",
    "If browser preview is blank, use verified repo-local docs/data proof paths as fallback evidence; do not upload or post from automation.",
    "Stop at one human decision: approve manual upload/post prep, request copy edits, or keep building proof."
  ],
  "safe_wording": [
    "This is a manual browser QA fallback for review only.",
    "Caption upload and YouTube upload remain closed until a human approves exact text/media.",
    "If the browser preview is blank, use verified repo-local docs/data paths; do not post from automation.",
    "The proof hub is a source map, not a revenue or affiliation claim."
  ],
  "do_not_say": [
    "The video was uploaded automatically.",
    "The captions are live on YouTube.",
    "The proof hub has posted the launch.",
    "OpenAI/platform affiliation is confirmed.",
    "Revenue is guaranteed.",
    "GPU/video generation or paid API jobs started.",
    "Cron scheduled the publication."
  ],
  "proof_paths": [
    "docs/index.html",
    "docs/data/site-manifest.json",
    "docs/data/youtube-captions-pack.json",
    "docs/youtube/CAPTIONS_TRANSCRIPTS_PACK.md",
    "docs/data/thumbnail-alt-caption-qa.json",
    "docs/youtube/THUMBNAIL_ALT_CAPTION_QA.md",
    "docs/data/caption-readability-screen-path.json",
    "docs/youtube/CAPTION_READABILITY_SCREEN_PATH.md",
    "docs/assets/thumbnails/afterparty_forge_youtube_thumbnail_clean.png"
  ],
  "verifier_commands": [
    "PYTHONDONTWRITEBYTECODE=1 python3 scripts/verify_site.py",
    "python3 -m json.tool docs/data/browser-visual-qa-fallback.json >/dev/null",
    "git diff --check"
  ],
  "blocked_without_approval": [
    "youtube_upload",
    "caption_upload",
    "public_posting",
    "social_scheduling",
    "space_or_livestream_start",
    "recording",
    "private_media_upload",
    "payment_link_or_invoice",
    "outreach",
    "revenue_or_affiliation_claim",
    "gpu_or_paid_api_job",
    "training_or_model_download",
    "cron_mutation"
  ],
  "closed_gates": {
    "youtube_upload": false,
    "caption_upload": false,
    "public_posting": false,
    "social_scheduling": false,
    "publishes_stream": false,
    "records_audio": false,
    "uploads_private_media": false,
    "starts_gpu": false,
    "starts_paid_api": false,
    "downloads_models": false,
    "starts_training": false,
    "payment_links_or_invoices": false,
    "outreach": false,
    "claim_revenue": false,
    "claim_openai_affiliation": false,
    "mutates_cron": false,
    "secret_exposure": false
  }
}
