| # StoryCode Agent Checklist |
|
|
| Use this file as the durable handoff if another agent needs to continue. Do not |
| mark an item done unless it was actually run or verified. |
|
|
| ## Current Status |
|
|
| - [x] Read `HANDOFF.md`, `AGENTS.md`, and `README.md`. |
| - [x] Installed local CPU dependencies with `python3 -m pip install -r requirements.txt`. |
| - [x] Verified analyzer baseline with `python3 tests/test_analyzer.py` -> `10/10 passed`. |
| - [x] Fixed fallback rendering bug where `ProjectModel.note` was referenced but not preserved from ingest. |
| - [x] Checked the MiniCPM4.1-8B Hugging Face model card. |
| - [x] Disabled MiniCPM reasoning mode for app calls by appending `/no_think` in `llm.py`. |
| - [x] Added `add_special_tokens=True` to vLLM OpenAI calls, per the model card. |
| - [x] Updated Modal image build to use pre-release/nightly vLLM, per the model card. |
| - [x] Deployed once and found `vllm-0.23.0` rejects the old server flag `--guided-decoding-backend`; removed it and kept request-level xgrammar. |
| - [x] Found vLLM 0.23 defaults to v1 and does not recognize `VLLM_USE_V1`; switched Modal to a CUDA 13 devel base image so FlashInfer can find `nvcc`. |
| - [x] Changed `serve()` from `subprocess.Popen()` to blocking `subprocess.run()` so Modal keeps the web server process alive. |
|
|
| ## Next Required Steps |
|
|
| - [ ] Run `python3 app.py` with no `.env` model endpoint, open it, click "Try the sample project", and verify Story, Map, Safe-to-Edit, and Dependencies render with fallback narration. |
| - [ ] Install Modal locally if needed: `python3 -m pip install modal`. |
| - [ ] Authenticate Modal: `modal token new`. |
| - [ ] Create a long random shared secret; do not commit it. |
| - [ ] Create the Modal secret: `modal secret create storycode-api MODAL_API_KEY=<secret>`. |
| - [ ] Redeploy after removing the obsolete vLLM server flag: `modal deploy modal_app.py`. |
| - [ ] Record the printed public Modal URL without the secret. |
| - [ ] Smoke-test `<printed-url>/v1/chat/completions` with Authorization bearer secret. |
| - [ ] Confirm smoke-test JSON response contains no `<think>` content and returns valid JSON. |
| - [ ] Copy `.env.example` to `.env` and set `MODAL_ENDPOINT_URL=<printed-url>/v1` plus `MODAL_API_KEY=<secret>`. |
| - [ ] Run `python3 app.py` with the live model. |
| - [ ] Verify the Story tab renders model-backed Story plus Plain English. |
| - [ ] Verify style and difficulty changes re-narrate without re-analysis. |
| - [ ] Verify Architecture Map draws from `ProjectModel`. |
| - [ ] Verify Safe-to-Edit shows `config.py` and `app.py` as red. |
| - [ ] Verify Dependencies explains `openai`, `chromadb`, and `gradio`. |
| - [ ] Upload a zip with a fake API key and verify the secret-redaction banner. |
| - [ ] Tune prompts in `story.py` only for all 5 styles x 3 difficulty levels. |
| - [ ] After every prompt change, run `python3 tests/test_analyzer.py`. |
| - [ ] Make small Codex-attributed commits with clear messages. |
| - [ ] Add real-user proof to `README.md` under "The person I built it for". |
| - [ ] Deploy to a Gradio Space under `build-small-hackathon`, set secrets, and test on phone. |
| - [ ] Record and link the demo video. |
| - [ ] Push public GitHub repo and link it in `README.md`. |
| - [ ] Post on social and link it in `README.md`. |
|
|
| ## Rules To Preserve |
|
|
| - Static analysis is the source of truth; the model only narrates `ProjectModel` facts. |
| - Do not add `torch`, `vllm`, or `transformers` to `requirements.txt`. |
| - Core model stays `openbmb/MiniCPM4.1-8B`. |
| - Do not claim Tiny Titan. |
| - Keep `ui/styles.css`. |
| - Never display or send code that has not passed `ingest.redact_secrets`. |
|
|