midnight-static / docs /TASKS.md
cajpany's picture
Upload folder using huggingface_hub
9b19329 verified
|
Raw
History Blame Contribute Delete
6.04 kB
# TASKS.md — Midnight Static Execution Tracker
Deadline: **June 15, 2026**. Target submit: **June 14 evening**.
Status legend:
- `[x]` done
- `[~]` partially done / usable but not final
- `[ ]` not started
- `[>]` next / current focus
- `[D]` deferred or cut unless time allows
## Current Position
We have a live Hugging Face Space with a working Gradio fallback, one instant
showcase rerun, a schema-valid fixture writer, Kokoro TTS, and a crude mixer.
Live Space:
https://huggingface.co/spaces/build-small-hackathon/midnight-static
Current recommended focus:
1. Build the custom radio UI.
2. Post social update #1 after the UI is visually credible.
3. Run real Nemotron smoke on GPU infra.
## Phase 1 — Foundation And Repo
1.1. `[x]` Initialize repo via Codex with project skeleton.
1.2. `[x]` Add `AGENTS.md`, docs, `uv` project metadata, tests.
1.3. `[x]` Set repo-local Git author to `Codex <codex@openai.com>`.
1.4. `[x]` Add `.env` protection and `.env.example`.
1.5. `[x]` Keep `uv run pytest` green before pushes.
Current evidence:
- First commit: `8c16939 Initialize Midnight Static scaffold`
- Latest test count: 14 passing
## Phase 2 — Script Schema And Writer Boundary
2.1. `[x]` Define shared script schema in `midnight_static.schema`.
2.2. `[x]` Add deterministic fixture writer.
2.3. `[x]` Add writer contract and `--writer fixture` pipeline option.
2.4. `[x]` Add five-premise writer smoke test.
2.5. `[~]` Add `NemotronWriter` implementation boundary.
Notes:
- `NemotronWriter` targets `nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16`.
- Local macOS BF16 smoke failed because the model requires `mamba-ssm`.
- Llama-Nemotron fallback avoided that import path but checkpoint fetch was
interrupted after 3m47s.
- Real Nemotron smoke should move to GPU infra.
2.6. `[>]` Run real Nemotron smoke on deployment GPU path.
2.7. `[ ]` Add one retry on invalid model JSON, then fixture fallback.
## Phase 3 — Voice And Audio Pipeline
3.1. `[x]` Verify Kokoro voice IDs from `hexgrad/Kokoro-82M`.
3.2. `[x]` Lock `VoiceID` enum.
3.3. `[x]` Render full fixture scene with multi-voice Kokoro.
3.4. `[x]` Add crude mixer: dialogue + hardcoded bed + SFX.
3.5. `[x]` One-command typed premise → mixed WAV:
```bash
uv run python -m midnight_static.pipeline --mode crude "a phone booth that rings under the sea"
```
3.6. `[ ]` Add production mixer chain:
- AM radio band-pass / saturation
- vinyl crackle
- ducking under dialogue
- LUFS normalization
- MP3 export
3.7. `[ ]` Add SFX retrieval/generation trace interface.
3.8. `[ ]` Add music bed/sting library interface.
## Phase 4 — Live Space
4.1. `[x]` Add Gradio app entrypoint.
4.2. `[x]` Fix Space build packaging.
4.3. `[x]` Fix Space runtime launch.
4.4. `[x]` Publish Space under hackathon org.
4.5. `[x]` Add README Space metadata/frontmatter.
4.6. `[x]` Add model inventory table.
4.7. `[x]` Add Codex and Modal sections to README.
4.8. `[x]` Add three instant showcase reruns.
4.9. `[x]` Add showcase selector in Gradio UI.
4.10. `[ ]` Add README links for demo video, social post, blog, dataset,
adapter, and traces as they become available.
## Phase 5 — Showcase And Demo Quality
5.1. `[x]` Showcase 1: `a phone booth that rings under the sea`.
5.2. `[x]` Showcase 2: `two rival lighthouse keepers, one light`.
5.3. `[x]` Showcase 3: `a wedding where every guest recognizes the wrong bride`.
5.4. `[x]` Add showcase selector in Gradio UI.
5.5. `[x]` Manual listen test for all showcase broadcasts.
- First listen found the three reruns too similar.
- Fixed by adding hand-authored showcase scripts with distinct genres, casts,
voices, and scene structures.
5.6. `[ ]` Tune levels if showcases are harsh, too quiet, or unclear.
Never cut:
- showcase broadcasts
- listen test
- README tags/model table
- demo video
## Phase 6 — Custom Radio UI
6.1. `[x]` Build static radio visual shell.
6.2. `[x]` Genre dial interaction.
6.3. `[x]` Premise input as telegram slip.
6.4. `[x]` ON AIR loading/state sequence.
6.5. `[>]` Playback with script display.
6.6. `[ ]` Keep Gradio fallback available.
6.7. `[D]` Call-in microphone / ASR mode.
6.8. `[D]` FLUX poster generation.
Notes:
- Off-Brand score depends heavily on this phase.
- Do not block the live Space on this phase; the plain app is already live.
## Phase 7 — Modal, Dataset, And Fine-Tune
7.1. `[ ]` Add `modal/gen_dataset.py`.
7.2. `[ ]` Generate 400 validated examples.
7.3. `[ ]` Human skim pass, 45 minute cap.
7.4. `[ ]` Publish dataset to HF Hub.
7.5. `[ ]` Add `modal/finetune.py`.
7.6. `[ ]` Train LoRA and publish adapter.
7.7. `[ ]` Evaluate base vs LoRA.
7.8. `[ ]` Add `modal/batch_audio.py`.
7.9. `[ ]` Generate SFX/music library and manifest.
Notes:
- This phase needs Modal credentials.
- This phase is high prize evidence but not required for the app to be live.
## Phase 8 — Social, Blog, And Submission
8.1. `[>]` Social post #1: build-in-public with live Space link.
8.2. `[ ]` Add social post link to README.
8.3. `[ ]` Social post #2: radio UI reveal.
8.4. `[ ]` Demo video, 60-90 seconds.
8.5. `[ ]` Add demo video link to README.
8.6. `[ ]` Blog / Field Notes post.
8.7. `[ ]` Publish traces dataset.
8.8. `[ ]` Run `docs/SUBMISSION.md` checklist.
8.9. `[ ]` Final fresh-browser test on desktop and mobile.
8.10. `[ ]` Submit.
## Deferred / Cut Unless Ahead
9.1. `[D]` VoxCPM2 G1 gate.
Reason: Kokoro is working, and OpenBMB/MiniCPM evidence is not core to the
current path.
9.2. `[D]` BillShield-lite side project.
Reason: Midnight Static still needs showcase, UI, social, and submission work.
9.3. `[D]` FLUX posters.
Reason: only after custom radio UI and demo basics are done.
## Standing Rules
- Commit small via Codex throughout.
- Keep `uv run pytest` green before every push.
- If a task takes more than 2x estimate, cut scope or downgrade it.
- Never commit `.env` or tokens.
- Prefer live, audible, demonstrable progress over deeper model work that is
invisible to judges.