# Sonic-Forage Full Autonomy Content Factory Plan

Status: `draft_safe_architecture_active_next`

Goal: evolve Intergalactic Radio from a fixed loop into a self-refreshing, rights-safe, proof-backed autonomous show that can create new media, react to public trends, accept human/chat sparks, and rebuild the stream loop without creating platform, copyright, gambling, safety, or secret-risk problems.

## Current foundation

- Primary stream pusher: local FFmpeg, one primary pusher per stream key.
- Stream health: watchdog every 1 minute.
- Stream sanity: Stream Captain every 2 minutes, silent when healthy.
- Creative loop: hourly improver.
- Program clock: `docs/streaming/intergalactic_radio_program_clock.json`.
- Modal fallback lane: `modal/kick_24h_streamer.py`, not active simultaneously with local primary.

## Kick policy research notes

Sources reviewed:

- `https://kick.com/community-guidelines`, updated 19/03/2026.
- `https://kick.com/terms-of-service`, modified 23 March 2026.
- `https://kick.com/partner-terms-and-conditions`.

Important operating rules from official pages:

- Creators are responsible for all content streamed on their channel.
- Repeated violations can escalate enforcement.
- Bot/engagement manipulation/artificial inflation is prohibited.
- Doxxing and non-consensual private information release are prohibited.
- Minor safety is strict/zero-tolerance; if minors appear unexpectedly in randomized interactions, disengage/skip.
- Sexual content, graphic violence/gore, illegal harm, harassment, and dangerous content require strict avoidance.
- Gambling-related content must comply with laws/regulations; minors must never participate in gambling-related activities.
- Terms incorporate Community Guidelines and Safety Hub.
- KPP/partner terms have special rights/multistreaming/confidentiality terms; do not assume partner status or revenue claims.

Practical Sonic-Forage stance:

- Do not rebroadcast other streamers, copyrighted music, movies, or clips.
- Do not run gambling streams, gambling affiliate promos, or casino-style calls to action.
- We may discuss public trend categories, but transform them into original commentary, diagrams, generated visuals, and safe prompts.
- AI-generated content should be clearly framed/labeled as generated when it mimics reality or could confuse viewers.

This is a safety summary, not legal advice.

## Autonomy lanes

### Lane 1 — Generated show material

Allowed now:

- station IDs;
- oracle poems;
- glitch/signal takeovers;
- proof-hub recaps;
- command-center cards;
- procedural music beds;
- generated images/backgrounds;
- TTS explainers;
- visualized repo/proof status.

Output rule: every item gets a manifest with source, rights status, prompt or script path, QA status, and approved uses.

### Lane 2 — Trend radar, no rebroadcast

Allowed now:

- research public Kick category/trend pages;
- summarize high-level topic patterns;
- identify safe prompt themes;
- generate original commentary/cards from those themes.

Not allowed without explicit rights/approval:

- rebroadcasting other streamers;
- downloading and replaying clips;
- showing usernames/private chat as content;
- implying endorsement/traction;
- copying other creators' bits.

### Lane 3 — Clip factory for owned material

Allowed now:

- clip our own generated stream assets;
- cut highlights from our own master loops;
- produce short vertical/landscape teasers locally;
- store draft clips and copy.

Requires approval before public posting:

- X/TikTok/YouTube/Instagram posts;
- paid boosts;
- cross-posting as official launch content.

### Lane 4 — Environmental moments / tracks

Allowed now:

- watch local logs/manifests/stream health;
- detect repo events, new generated assets, verifier passes, and playlist rebuilds;
- turn those into “environmental moments” like status cards, countdowns, and build-wall updates.

Future:

- official Kick chat/OAuth listener;
- approved music/trend APIs;
- Modal sandbox generation workers.

### Lane 5 — Modal content worker

Use Modal as a bounded generation worker after the user sets it up/approves scope:

- isolated CPU/GPU sandbox;
- render one asset batch at a time;
- write results to a review queue;
- do not stream from Modal while local is primary unless Modal becomes the single primary;
- do not run indefinite GPU spend without explicit budget and stop condition.

## Proposed fully autonomous loop

1. **Sense**
   - Stream Captain state.
   - Git/proof hub changes.
   - Program clock current segment.
   - Public trend/category summary.
   - Manual Telegram/Kick chat sparks when available.

2. **Decide**
   - Pick one content lane.
   - Check safety policy.
   - Choose generated asset type.

3. **Generate**
   - Image, poem, TTS, procedural bed, command-center card, or clip.
   - Keep raw prompts/manifests.

4. **QA**
   - ffprobe/duration checks for media.
   - vision QA for generated visuals.
   - policy/secret scan.
   - no copyrighted rebroadcast.

5. **Package**
   - Add to review/live queue.
   - Rebuild normalized master loop if safe.

6. **Operate**
   - Restart exactly one pusher if media changed.
   - Stream Captain monitors health.
   - Ops digest reports every 6 hours.

7. **Escalate**
   - If repeated RTMP refusal: ask human to reset/rotate stream key.
   - If content policy uncertainty: keep as draft only.
   - If cloud spend needed: ask exact approval.

## First safe next build

Build `scripts/autonomous_content_factory.py` to:

- read the program clock;
- read the stream status;
- pick the next safe content block;
- create a manifest in `docs/streaming/content_factory_queue/`;
- optionally generate a local card/bumper from approved owned inputs;
- never post publicly;
- never start paid jobs;
- never publish datasets.

## Current generated concept asset

- Image: `docs/assets/stream/autonomy_factory/autonomy_factory_robot_sidekick_concept.png`
- Manifest: `docs/assets/stream/autonomy_factory/autonomy_factory_robot_sidekick_concept.json`
- Status: review pass with minor text typo; use as concept/background only, not exact text proof.
