diff --git a/conductor/tracks/twitter_threads_extraction_20260705/plan.md b/conductor/tracks/twitter_threads_extraction_20260705/plan.md index 1d0407c9..7f5312c1 100644 --- a/conductor/tracks/twitter_threads_extraction_20260705/plan.md +++ b/conductor/tracks/twitter_threads_extraction_20260705/plan.md @@ -87,11 +87,11 @@ git commit -m "feat(twitter_threads): scaffold package + error types + typed dat --- -## Phase 2: `render_markdown.py` (the pure-function module; TDD-first) +## Phase 2: `render_markdown.py` (the pure-function module; TDD-first) [checkpoint: ef98f6d1] Focus: the Markdown emission module. This is pure (no network, no subprocess), so it's the easiest to TDD and the highest-confidence module. -- [ ] **Task 2.1: Write failing tests for `render_markdown.py`** +- [x] **Task 2.1: Write failing tests for `render_markdown.py`** WHERE: `tests/test_twitter_threads_render.py` WHAT: 5+ tests: @@ -104,7 +104,7 @@ WHAT: 5+ tests: HOW: Construct `ThreadData` fixtures inline (no network). Assert on the returned Markdown string. VERIFY: `uv run pytest tests/test_twitter_threads_render.py` FAILS (module doesn't exist yet). -- [ ] **Task 2.2: Implement `render_markdown.py`** +- [x] **Task 2.2: Implement `render_markdown.py`** WHERE: `scripts/twitter_threads/render_markdown.py` WHAT: The `render_markdown(thread: ThreadData, media_paths: dict[str, list[Path]], output: Path) -> Result[Path, ErrorInfo]` function. @@ -117,7 +117,7 @@ HOW: - Return `Result.ok(output)` on success; `Result.err(...)` on file-write failure. VERIFY: `uv run pytest tests/test_twitter_threads_render.py` PASSES. -- [ ] **Task 2.3: Commit Phase 2** +- [x] **Task 2.3: Commit Phase 2** ```bash git add scripts/twitter_threads/render_markdown.py tests/test_twitter_threads_render.py