0908f8fa28
Scripts + workflow for extracting Twitter/X posts and threads into Markdown with associated media. Mirrors the scripts/video_analysis/ pattern. Standalone requirement: zero imports from src/, conductor/, or scripts.video_analysis — copy-pasteable to another repo with only gallery-dl as the external dep. 5 modules: __init__.py, error_types.py (Result[T, ErrorInfo] + ThreadData/PostData typed dataclasses), fetch_thread.py (gallery-dl subprocess for URLs + html.parser fallback for local HTML), download_media.py (stdlib urllib, idempotent), render_markdown.py (YAML front-matter + per-post sections + ./media/ links). Reference project: C:\projects\forth\bootslop — the corpus feeds bootslop's scripts and reference-generation pipeline. Acceptance corpus: 8 threads (@NOTimothyLottes x6 + @VPCOMPRESSB x2) extracted to tests/artifacts/twitter_threads_corpus/. The ?s=20 quote-share suffix on the @VPCOMPRESSB URLs must be stripped by fetch_thread.py before acquisition (added to FR2 as URL normalization). 5 phases / 23 tasks. 8 verification criteria (VC1-VC8). TDD red-first on the pure-function modules (render_markdown, types, media naming).
97 lines
7.9 KiB
Markdown
97 lines
7.9 KiB
Markdown
# Project Tracks
|
|
|
|
This file tracks all major tracks for the project. Each track has its own detailed plan in its respective folder (or in `../archive/<track_name>/` for completed tracks).
|
|
|
|
**Structure:**
|
|
- **Active Tracks (Current Queue):** In-flight and unblocked work the implementer can pick up today.
|
|
- **Standby / Pending Spec:** Tracks with spec TBD or pending decision.
|
|
- **Full project history:** see [`chronology.md`](./chronology.md) (the canonical index of all tracks: active, shipped, superseded, abandoned, sorted newest-first with git-history-evidence-backed status).
|
|
|
|
Archive directories live at `../archive/<track_name>/` (from this file's location at `conductor/tracks.md`).
|
|
|
|
---
|
|
|
|
## Active Tracks (Current Queue)
|
|
|
|
Tracks that are unblocked and ready to start. Ordered by **dependency** (blocked-by first) and **priority** (A foundational → D forward-looking).
|
|
|
|
| # | Priority | Track | Status | Blocked By |
|
|
|---|---|---|---|---|
|
|
| 36 | A (sunset) | [MMA Quarantine + RAG Test Decoupling](#track-mma-quarantine--rag-test-decoupling) | spec ✓, plan pending | (none) |
|
|
| 4 | A | [MCP Architecture Refactor (Sub-MCP Extraction)](#track-mcp-architecture-refactor) | spec ✓, plan pending | (none) |
|
|
| 22b | A | [Meta-Tooling Workflow Review](#track-meta-tooling-workflow-review) | spec ✓, plan ✓, parked | (none) |
|
|
| 23 | A | [Intent-Based Scripting Languages Survey](#track-intent-dsl-survey) | spec ✓, plan pending | (none) |
|
|
| 30 | A | [Twitter/X Thread Extraction Tooling](#track-twitter-threads-extraction) | spec ✓, plan ✓, ready to start | (none) |
|
|
| 7 | — | [UI Polish (Five Issues)](#track-ui-polish-five-issues) | spec ✓, plan ✓, ready to start | (none) |
|
|
| 19 | — | [Context First Message Fix](#track-context-first-message-fix) | spec TBD | (none) |
|
|
|
|
### Track detail anchors
|
|
|
|
- **MMA Quarantine + RAG Test Decoupling** → `conductor/tracks/mma_quarantine_rag_test_decoupling_20260701/`
|
|
- **MCP Architecture Refactor** → `conductor/tracks/mcp_architecture_refactor_20260606/`
|
|
- **Meta-Tooling Workflow Review** → `conductor/tracks/meta_tooling_workflow_review_20260620/`
|
|
- **Intent-Based Scripting Languages Survey** → `conductor/tracks/intent_dsl_survey_20260612/`
|
|
- **Twitter/X Thread Extraction Tooling** → `conductor/tracks/twitter_threads_extraction_20260705/`
|
|
- **UI Polish (Five Issues)** → `conductor/tracks/` (see spec for details)
|
|
- **Context First Message Fix** → `conductor/tracks/context_first_message_fix_20260604/`
|
|
|
|
---
|
|
|
|
## Standby / Pending Spec
|
|
|
|
| # | Priority | Track | Status | Blocked By |
|
|
|---|---|---|---|---|
|
|
| 6 | D | [Public API Result Migration](#track-public-api-result-migration) | **Largely Completed** (umbrella + 6 sub-tracks shipped per chronology): `public_api_migration_and_ui_polish_20260615` ✓, `send_result_to_send_20260616` ✓, `result_migration_review_pass_20260617` ✓, `result_migration_small_files_20260617` ✓, `result_migration_app_controller_20260618` ✓, `result_migration_gui_2_20260619` ✓, `result_migration_baseline_cleanup_20260620` ✓; only `result_migration_cruft_removal_20260620` still Active (Round 4 corrections applied; user-confirmed closeout; state.toml stale) | (none) |
|
|
| 8 | — | [Bootstrap gencpp Python Bindings](#track-gencpp-python-bindings) | spec TBD | (none) |
|
|
| 9 | — | [Tree-Sitter Lua MCP Tools](#track-tree-sitter-lua-mcp-tools) | spec TBD | (none) |
|
|
| 10 | — | [GDScript Language Support Tools](#track-gdscript-language-support-tools) | spec TBD | (none) |
|
|
| 11 | — | [C# Language Support Tools](#track-csharp-language-support-tools) | spec TBD | (none) |
|
|
| 12 | — | [OpenAI Provider Integration](#track-openai-provider-integration) | spec TBD | (none) |
|
|
| 13 | — | [Zhipu AI (GLM) Provider Integration](#track-zhipu-integration) | spec TBD | (none) |
|
|
| 14 | — | [AI Provider Caching Optimization](#track-caching-optimization) | spec TBD | (none) |
|
|
| 15 | — | [Manual UX Validation & Review](#track-manual-ux-validation) | spec TBD | (none) |
|
|
| 15a | — | [Manual UX Validation — ASCII-Sketch Workflow](#track-manual-ux-validation-ascii) | spec ✓, plan ✓, ready to start | (none) |
|
|
| 15b | — | [Chunkification Optimization (Contingency)](#track-chunkification-optimization) | spec ✓ (contingency), no plan | hard constraint surface (deferred) |
|
|
| 16 | — | [GenCpp Dogfood Feedback Loop](#track-gencpp-dogfood-feedback) | spec TBD | (none) |
|
|
| 18 | — | [GUI Architecture Refinement](#track-gui-architecture-refinement) | no spec.md | (TBD) |
|
|
|
|
### Standby track anchors
|
|
|
|
- **Public API Result Migration** → umbrella `result_migration_20260616/` (Active; no state.toml) + 8 sub-tracks (7 shipped, 1 Active awaiting user verify of Round 4 closeout): `public_api_migration_and_ui_polish_20260615/`, `send_result_to_send_20260616/`, `result_migration_review_pass_20260617/`, `result_migration_small_files_20260617/`, `result_migration_app_controller_20260618/`, `result_migration_gui_2_20260619/`, `result_migration_baseline_cleanup_20260620/`, `result_migration_cruft_removal_20260620/`
|
|
- **Bootstrap gencpp Python Bindings** → `conductor/tracks/gencpp_python_bindings_20260308/`
|
|
- **Tree-Sitter Lua MCP Tools** → `conductor/tracks/tree_sitter_lua_mcp_tools_20260310/`
|
|
- **GDScript Language Support Tools** → `conductor/tracks/gdscript_godot_script_language_support_tools_20260310/`
|
|
- **C# Language Support Tools** → `conductor/tracks/csharp_language_support_tools_20260310/`
|
|
- **OpenAI Provider Integration** → `conductor/tracks/openai_integration_20260308/`
|
|
- **Zhipu AI (GLM) Provider Integration** → `conductor/tracks/zhipu_integration_20260308/`
|
|
- **AI Provider Caching Optimization** → `conductor/tracks/caching_optimization_20260308/`
|
|
- **Manual UX Validation & Review** → `conductor/tracks/manual_ux_validation_20260302/`
|
|
- **Manual UX Validation — ASCII-Sketch Workflow** → `conductor/tracks/manual_ux_validation_20260608_PLACEHOLDER/`
|
|
- **Chunkification Optimization (Contingency)** → `conductor/tracks/chunkification_optimization_20260608_PLACEHOLDER/`
|
|
- **GenCpp Dogfood Feedback Loop** → `conductor/tracks/gencpp_dogfood_feedback_20260510/`
|
|
- **GUI Architecture Refinement** → (no spec.md)
|
|
|
|
---
|
|
|
|
> **Full project history:** see [`chronology.md`](./chronology.md) — the canonical index of all tracks (active, shipped, superseded, abandoned), sorted newest-first, with git-history-evidence-backed status per row. Maintained manually (the generator scripts were deleted 2026-07-05 after repeated corruption incidents).
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
**Archive link convention:** `./archive/...` paths resolve to `conductor/archive/...` (this file is at `conductor/tracks.md`).
|
|
|
|
**Status legend:**
|
|
- `[ ]` not started
|
|
- `[~]` in progress
|
|
- `[x]` completed (track may still be in `tracks/` or may have been moved to `archive/`)
|
|
- `~~**...**~~` struck-through (renamed/replaced/superseded)
|
|
|
|
**Naming convention:** Each track's `spec.md` and `plan.md` (where present) follow the project's standard format: `spec.md` for design intent (the "why"), `plan.md` for executable tasks (the "how").
|
|
|
|
**Editing this file:** When you mark a track as `[x]` and move its folder to `archive/`, remove its row from the Active Tracks table (its history is in `chronology.md`). When you start a new track, create the folder under `tracks/` first, then add the entry to the Active Tracks table.
|
|
|
|
**Archiving a track (3 steps):** When a track ships and its folder moves from `conductor/tracks/<id>/` to `conductor/archive/<id>/`, complete all 3 steps in order:
|
|
1. Move the folder: `git mv conductor/tracks/<id> conductor/archive/<id>` (preserves history as a rename).
|
|
2. Remove the row from this file (`conductor/tracks.md`).
|
|
3. Add a row to `conductor/chronology.md` (top of the table, newest-first) summarizing the track: Date, ID, Status, one-line Summary, Folder path, commit Range. Commit with `docs(chronology): add row for <track-id> archive`. (Chronology is maintained manually as of 2026-07-05 — the generator scripts were deleted after repeated corruption incidents.) |