docs(chronology): switch to manual maintenance; delete generator scripts; archive review report
Deleted scripts/audit/generate_chronology.py + chronology_quality_gate.py after repeated corruption incidents (auto-classifier drifted from user intent, silently rewrote rows). chronology.md is now maintained by hand: add a row at the top when a track ships/abandons/is archived. Updated conductor/workflow.md §Chronology Maintenance and conductor/tracks.md §Archiving a track to reflect manual maintenance. Added 40 rows to conductor/chronology.md for the 2026-07-05 archive batch, with archive-folder paths and deferral notes where applicable. Removed 12 archived-track rows from conductor/tracks.md Active Tracks table (rows 2, 3, 7c, 16, 17, 23b, 23c, 23d, 25, 26, 29, 29c) and their track-detail anchors. Wrote docs/reports/ARCHIVE_REVIEW_20260705.md: a categorized index of unfinished work items from the archived tracks' state.toml files that remain relevant to the codebase, with a ranked follow-up list.
This commit is contained in:
@@ -0,0 +1,236 @@
|
||||
# Archive Review: Unfinished Work Still Relevant to the Codebase
|
||||
|
||||
**Date:** 2026-07-05
|
||||
**Author:** Tier 1 Orchestrator (post-archive audit)
|
||||
**Scope:** Tracks archived in the 2026-07-05 batch (commits `98977f5c`..`2f3a8283`, ~21 archive commits). This report enumerates the unfinished work items recorded in each archived track's `state.toml` that remain relevant to the current codebase, grouped by category.
|
||||
|
||||
The intent is a single index the user can scan to decide what (if anything) deserves a follow-up track. Each entry cites the archived track ID + the file:line / scope the deferral points at.
|
||||
|
||||
---
|
||||
|
||||
## 1. The Python Type Promotion Mandate (the largest cluster)
|
||||
|
||||
The C11/Odin/Jai-in-Python mandate (`conductor/code_styleguides/data_oriented_design.md` §8.5) is the project's Core Value. Several archived tracks deferred sub-scopes of this mandate; the deferrals are still live debt.
|
||||
|
||||
### 1.1 `cruft_elimination_20260627` (Partially Completed)
|
||||
|
||||
The biggest single source of deferred type-promotion work. Per `conductor/archive/cruft_elimination_20260627/state.toml`:
|
||||
|
||||
| Phase | Status | Deferred Scope |
|
||||
|---|---|---|
|
||||
| phase_2 | deferred | Add `ProjectContext` dataclass for `flat_config` (spec mismatch) |
|
||||
| phase_4 | deferred | Fix `_do_generate` return type |
|
||||
| phase_5 | deferred | Fix `rag_engine.search()` return type (`List[Dict[str, Any]]` → typed) |
|
||||
| phase_6 | deferred | Eliminate `Optional[T]` returns (30 sites across 14 files) |
|
||||
| phase_7 | deferred | Eliminate `Any` and `dict[str, Any]` from internal signatures (69 sites) |
|
||||
| phase_3 (partial) | completed (with deferral) | 13 `hasattr` checks removed in `app_controller.py`; **18 `hasattr` checks in `gui_2.py` deferred** |
|
||||
|
||||
**Relevance now:** the 30 `Optional[T]` sites and 69 `Any`/`dict[str, Any]` sites are still present in `src/`. The audit scripts `scripts/audit_weak_types.py --strict` and `scripts/audit_optional_in_3_files.py` continue to enforce the boundary; these deferred sites are the remaining work the audits surface.
|
||||
|
||||
### 1.2 `metadata_promotion_20260624` (Partially Completed)
|
||||
|
||||
Per `conductor/archive/metadata_promotion_20260624/state.toml`, three open blockers remain:
|
||||
|
||||
| Blocker | Location | Deferral |
|
||||
|---|---|---|
|
||||
| `blocker_3_rag_return_type` | `src/rag_engine.py:367` | `rag_engine.search()` returns `List[Dict[str, Any]]`; `RAGChunk` dataclass exists but consumers read dict keys directly (`chunk['document']`, `chunk['metadata']['path']`). Cascading return-type change affects 3+ sites. Deferred to `typed_rag_return_type_followup`. |
|
||||
| `blocker_4_tool_builders_dicts` | `src/ai_client.py:609,615,665,671,1132,1138` | Per-vendor tool builders construct wire-format dicts directly (`raw_tools.append({'type': 'function', ...})`); `ToolDefinition` dataclass exists but isn't used. Deferred to `typed_tool_builders_followup`. |
|
||||
| `blocker_5_drifted_field_types` | `src/type_aliases.py:10-148` | Field types drifted from the plan: `CommsLogEntry.kind` default, `CommsLogEntry.direction` default, `CommsLogEntry.content` type, `HistoryMessage.ts` type, `HistoryMessage.tool_calls` type, `HistoryMessage.role` default, no `@dataclass(slots=True)`, `PathInfo.logs_dir` type. Deferred to `field_type_alignment_followup`. |
|
||||
|
||||
Also: `typed_dispatcher_boundaries_followup_20260625` was planned (typed parameters at function boundaries) but never opened.
|
||||
|
||||
**Relevance now:** these are the most concrete unfinished type-promotion items. Each has a specific file:line and a specific migration target. They would compose into a single follow-up track or three small ones.
|
||||
|
||||
### 1.3 `data_oriented_error_handling_20260606` (Completed, with deferrals)
|
||||
|
||||
Per `conductor/archive/data_oriented_error_handling_20260606/state.toml`:
|
||||
|
||||
- `t2_7` cancelled: the 30+ `assert p is not None` chain in the `mcp_client.py` tool functions is **not** removed. Deferred to "a follow-up track that will refactor the full `mcp_client.py` tool surface."
|
||||
- `t2_8` cancelled: `async_dispatch` internals are not changed; the old str-returning API is preserved.
|
||||
|
||||
**Relevance now:** `src/mcp_client.py` still has the `assert p is not None` chain in its tool dispatch. The audit_exception_handling.py gate continues to allow it under the existing baseline; a follow-up would tighten the baseline.
|
||||
|
||||
### 1.4 `type_alias_unfuck_20260626`
|
||||
|
||||
- `vc4_codepaths_drop = "not_measured"` — the required metric computation (number of value-class codepaths dropped) was deferred. The track shipped without the metric.
|
||||
|
||||
### 1.5 `any_type_componentization_20260621` (Partially Completed)
|
||||
|
||||
- The phase 2/4/5 call-site completion **was** deferred to `phase2_4_5_call_site_completion_20260621` (which shipped).
|
||||
- `phase2_4_5_call_site_completion_20260621` has its own deferral: `OpenAICompatibleRequest.tools: list[dict] -> list[ToolSpec]; deferred` (cross_phase_coupling).
|
||||
|
||||
**Relevance now:** `OpenAICompatibleRequest.tools` is still `list[dict]`, not `list[ToolSpec]`. This is the same site as `blocker_4_tool_builders_dicts` above (§1.2).
|
||||
|
||||
---
|
||||
|
||||
## 2. The Metadata SSDL Campaign (parent + 2 of 3 children still Active)
|
||||
|
||||
The `metadata_ssdl_defusing_20260624` campaign was a 3-child effort to defuse the `Metadata` aggregate's combinatoric explosion (4.01e22 effective codepaths). State:
|
||||
|
||||
| Track | Status | Folder |
|
||||
|---|---|---|
|
||||
| `metadata_ssdl_defusing_20260624` (parent) | **Active** | `conductor/tracks/metadata_ssdl_defusing_20260624` |
|
||||
| `metadata_nil_sentinel_20260624` (child 1) | Completed (archived) | `conductor/archive/metadata_nil_sentinel_20260624` |
|
||||
| `metadata_generational_handle_20260624` (child 2) | **Active** | `conductor/tracks/metadata_generational_handle_20260624` |
|
||||
| `metadata_field_cache_20260624` (child 3) | **Active** | `conductor/tracks/metadata_field_cache_20260624` |
|
||||
|
||||
**Note:** these three Active tracks were NOT archived in the 2026-07-05 batch. They remain in `conductor/tracks/`. The user may want to either resume or formally abandon them; their state is currently stale (last commit `7c352e1c`, 2026-06-24).
|
||||
|
||||
---
|
||||
|
||||
## 3. The Result[T] Migration Campaign (umbrella still Active)
|
||||
|
||||
The umbrella `result_migration_20260616` and `result_migration_cruft_removal_20260620` were NOT archived and remain in `conductor/tracks/`. The archived children:
|
||||
|
||||
- `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` — Phase 10-14 invariant tests marked `in_progress` per state.toml. The track shipped, but the invariant tests were never committed as checkpoints.
|
||||
|
||||
**Relevance now:** the umbrella and `result_migration_cruft_removal_20260620` are the two remaining Active tracks in this campaign. The user previously confirmed closeout of the cruft_removal track; state.toml is stale.
|
||||
|
||||
---
|
||||
|
||||
## 4. Provider Integration: Qwen / Llama / Grok (deferrals + 1 cancellation)
|
||||
|
||||
### `qwen_llama_grok_followup_20260611` (archived via earlier commit `8ac8e64d`)
|
||||
|
||||
Per its `[deferred_work]` section:
|
||||
- **Anthropic + Gemini + DeepSeek** — deferred (use vendored call paths; the v2 matrix fields weren't wired into these providers' send functions). Only `gemini_cli` got the v2 wiring.
|
||||
- **Qwen `_dashscope_call`** — deferred (uses `_dashscope_call`, not `send_openai_compatible`). Qwen v2 field wiring was not done.
|
||||
- **8 of 9 UX adaptations** — deferred from `qwen_llama_grok_integration_20260606` Phase 5 (only 1 of 9 shipped: "Screenshot button iff vision").
|
||||
- **Per-field UI** (toggles, attachment buttons, panels) — design work deferred to a follow-up track. Only visibility-only badges shipped (`t5_4`).
|
||||
- **Meta Llama API adapter** — `t4_3` / `t6_1` CANCELLED permanently. Meta does not publish a public OpenAI-compat surface; waiting for Meta.
|
||||
|
||||
### `qwen_llama_grok_integration_20260606` (archived via earlier commit `8ac8e64d`)
|
||||
|
||||
- `t1_11` in_progress: `dashscope>=1.14.0,<2.0.0` dependency was never added to `pyproject.toml`.
|
||||
- Phase 5 was partial: 1 of 9 UX adaptations done.
|
||||
|
||||
**Relevance now:** the v2 capability matrix is wired only for `gemini_cli`. Anthropic, Gemini (direct), DeepSeek, and Qwen still need the v2 wiring if the user wants full v2 coverage. The `dashscope` dependency still needs to be pinned. The 8 deferred UX adaptations (interactive per-field toggles/panels) are still open design work.
|
||||
|
||||
---
|
||||
|
||||
## 5. Default Layout Campaign (3 tracks, multiple deferrals)
|
||||
|
||||
### `default_layout_extract_20260629`
|
||||
- `panel_defs_fleury_migration = "deferred (consumes LayoutFile + get_layouts_dir)"` — panel_defs still uses the old structure, not the Fleury-pattern dataclass migration.
|
||||
- `render_persona_editor_window_fix = "deferred (Layer 1 sentinel catches the empty-content bug)"` — the persona editor window has an empty-content bug that's masked by a Layer 1 sentinel, not actually fixed.
|
||||
|
||||
### `default_layout_install_20260629`
|
||||
- `t2_9` deferred: User Manual Verification — needs a desktop session, can't run in headless Tier 2 sandbox.
|
||||
|
||||
### `default_layout_install_followup_20260629`
|
||||
- `t4_5` / `t4_6` in_progress: commit final plan + state + tracks.md row. (The track shipped functionally; the bookkeeping was never finished.)
|
||||
|
||||
**Relevance now:** the persona editor empty-content bug is still masked, not fixed. The panel_defs Fleury migration is still open.
|
||||
|
||||
---
|
||||
|
||||
## 6. Superpowers Review + Apply (the apply-high track has 1 in_progress task)
|
||||
|
||||
### `superpowers_review_apply_high_20260705`
|
||||
- `t3_4 = { status = "in_progress", commit_sha = "PENDING", description = "Commit + git notes" }` — the final commit + git notes for the apply-high track was never made. The work itself is done (Phase 1-3 shipped), but the bookkeeping commit is missing.
|
||||
|
||||
### `superpowers_review_20260619`
|
||||
- `research_only = "Per user Q1 = A (2026-06-19): no src/, tests/, or agent-directive changes. Recommendations go in decisions.md for the deferred rebuild."` — the deferred rebuild (nagent-rebuild) is a user-deferred decision; no track exists yet.
|
||||
|
||||
**Relevance now:** minor. The `t3_4` bookkeeping commit is the only outstanding item; it's a 1-line git operation.
|
||||
|
||||
---
|
||||
|
||||
## 7. Fable Review (1 pending section)
|
||||
|
||||
### `fable_review_20260617`
|
||||
- `t3_16 = { status = "pending", commit_sha = "", description = "Section 16: Recommendations for the deferred nagent-rebuild. Source: all clusters. Approx LOC: 200." }` — the report is complete through Section 15; Section 16 (the recommendations for the deferred nagent-rebuild) was never written.
|
||||
- `deferred_nagent_rebuild = "user-deferred (no track yet); the Fable review's decisions.md is one of several inputs"` — the nagent-rebuild is a user-deferred decision that would consume Fable + Superpowers + nagent_review_20260608 outputs.
|
||||
|
||||
**Relevance now:** if/when the user decides to do the nagent-rebuild, the Fable review's Section 16 is one of the inputs that doesn't exist yet.
|
||||
|
||||
---
|
||||
|
||||
## 8. Directive Hotswap Harness (Partially Completed)
|
||||
|
||||
### `directive_hotswap_harness_20260627`
|
||||
- `t3_2 = { status = "deferred", ... "Manual verification: does the LLM follow the warm with: instruction? DEFERRED to user per directive" }` — the harness was built but never verified end-to-end with a live LLM session.
|
||||
- `t3_4 = { status = "in_progress", ... "Commit the end-of-track report + this state.toml update atomically" }` — the end-of-track report + state.toml final commit was never made.
|
||||
- 3 additional deferred items + 2 in_progress items per state.toml.
|
||||
|
||||
**Relevance now:** the directive hotswap harness is functional but unverified. The user would need to test it in a live OpenCode session to confirm the LLM follows the `warm with:` instruction. This is the user-deferred verification gate.
|
||||
|
||||
---
|
||||
|
||||
## 9. Chronology Maintenance Switch (this session)
|
||||
|
||||
The chronology generator scripts (`scripts/audit/generate_chronology.py` + `scripts/audit/chronology_quality_gate.py`) were **deleted** in this session (2026-07-05) after repeated corruption incidents. `conductor/chronology.md` is now maintained manually:
|
||||
|
||||
- `conductor/workflow.md` §"Chronology Maintenance" updated to reflect manual maintenance.
|
||||
- `conductor/tracks.md` §"Archiving a track (3 steps)" step 3 updated to "Add a row to `conductor/chronology.md` (top of the table, newest-first) by hand."
|
||||
- The footer of `conductor/tracks.md` updated: the "Full project history" pointer now says "Maintained manually (the generator scripts were deleted 2026-07-05...)".
|
||||
|
||||
**Relevance now:** future agents must NOT try to regenerate the chronology via a script. The convention is now: add a row by hand when a track ships/abandons/is superseded/is archived.
|
||||
|
||||
The archived tracks `chronology_20260619` and `chronology_v2_20260701` contain the design history for the deleted scripts; they're retained as reference but the scripts themselves are gone.
|
||||
|
||||
---
|
||||
|
||||
## 10. Test Infrastructure (minor deferrals)
|
||||
|
||||
### `test_sandbox_hardening_20260619`
|
||||
- `phase_8 = { status = "partial", ... "Full suite verification (Tier-1 smoke run showed FR1 guard catches real corruption; full suite deferred to user)" }` — the full-suite verification was deferred to the user; only a Tier-1 smoke run was done.
|
||||
|
||||
### `fix_mma_concurrent_tracks_sim_20260627`
|
||||
- `t2_3 = { status = "in_progress", ... "Update TRACK_COMPLETION_fix_mma_concurrent_tracks_sim_20260627.md to include all 5 fixes" }` — the TRACK_COMPLETION report was never updated with all 5 fixes.
|
||||
- `phase_1` is marked in_progress despite the track being functionally complete.
|
||||
|
||||
### `result_migration_baseline_cleanup_20260620`
|
||||
- Phases 10-14 invariant tests marked `in_progress` — never committed as checkpoints.
|
||||
|
||||
**Relevance now:** minor. These are bookkeeping deferrals, not functional debt.
|
||||
|
||||
---
|
||||
|
||||
## 11. Other Minor Deferrals
|
||||
|
||||
### `tier2_leak_prevention_20260620`
|
||||
- `[deferred]` section exists in state.toml (content not enumerated here; the track's primary work — the 3-layer hard-ban enforcement — shipped).
|
||||
|
||||
### `data_structure_strengthening_20260606`
|
||||
- `[typed_dict_migration_followup]` and `[public_api_migration_followup]` sections retained as forward-pointers; both were consumed by later tracks (the Result[T] migration campaign).
|
||||
|
||||
### `post_module_taxonomy_de_cruft_20260627`
|
||||
- `out_of_scope = "VC4/VC13 (full batched suite deferred); 2 pre-existing audit failures (main_thread_imports + exception_handling)"` — two pre-existing audit failures were noted as out-of-scope. They may still be failing.
|
||||
|
||||
### `phase2_4_5_call_site_completion_20260621`
|
||||
- `cross_phase_coupling = "OpenAICompatibleRequest.tools: list[dict] -> list[ToolSpec]; deferred"` — same as §1.2 `blocker_4_tool_builders_dicts`.
|
||||
|
||||
### `code_path_audit_phase_2_20260624`
|
||||
- `t3_1` was a snapshot task deferred to post-Phase-3 (the metric was captured post-phase instead).
|
||||
|
||||
---
|
||||
|
||||
## Summary: What Deserves a Follow-Up Track?
|
||||
|
||||
Ranked by codebase relevance (highest first):
|
||||
|
||||
1. **`typed_rag_return_type_followup`** — `src/rag_engine.py:367` returns `List[Dict[str, Any]]`; `RAGChunk` exists but isn't used. Cascading change across 3+ consumer sites. (From §1.2 blocker_3.)
|
||||
2. **`typed_tool_builders_followup`** — `src/ai_client.py:609,615,665,671,1132,1138` construct wire-format dicts directly; `ToolDefinition` exists but isn't used. Affects `OpenAICompatibleRequest.tools: list[dict]`. (From §1.2 blocker_4 + §1.5 + §4.)
|
||||
3. **`field_type_alignment_followup`** — `src/type_aliases.py:10-148` has drifted field types vs the plan. Consumer migration could work or break. (From §1.2 blocker_5.)
|
||||
4. **`cruft_elimination_phase_6_followup`** — 30 `Optional[T]` return sites across 14 files. (From §1.1 phase_6.)
|
||||
5. **`cruft_elimination_phase_7_followup`** — 69 `Any`/`dict[str, Any]` internal-signature sites. (From §1.1 phase_7.)
|
||||
6. **`mcp_client_tool_surface_assert_removal`** — the 30+ `assert p is not None` chain in `mcp_client.py` tool dispatch. (From §1.3.)
|
||||
7. **`gui_2_hasattr_removal`** — 18 `hasattr` checks in `gui_2.py` (the deferred half of cruft_elimination phase_3). (From §1.1.)
|
||||
8. **`qwen_v2_wiring` + `anthropic_gemini_deepseek_v2_wiring`** — v2 capability matrix fields not wired into Qwen/Anthropic/Gemini-direct/DeepSeek send functions. (From §4.)
|
||||
9. **`dashscope_dependency_pin`** — add `dashscope>=1.14.0,<2.0.0` to `pyproject.toml`. (From §4, 1-line fix.)
|
||||
10. **`v2_ux_interactive_toggles`** — per-field UI toggles/attachment buttons/panels (design work; the visibility-only badges shipped). (From §4.)
|
||||
11. **`persona_editor_empty_content_fix`** — the persona editor window has an empty-content bug masked by a Layer 1 sentinel. (From §5.)
|
||||
12. **`metadata_ssdl_defusing_campaign_resume_or_abandon`** — parent + 2 of 3 children still Active; state stale since 2026-06-24. User decision needed. (From §2.)
|
||||
13. **`result_migration_cruft_removal_closeout`** — umbrella + cruft_removal still Active per state.toml; user confirmed closeout. Update state.toml. (From §3.)
|
||||
14. **`fable_section_16`** — write Section 16 (nagent-rebuild recommendations, ~200 LOC). Only relevant if the user decides to do the nagent-rebuild. (From §7.)
|
||||
|
||||
Items 1-3 are the most concrete type-promotion work and have specific file:line targets. Items 4-6 are the bulk type-promotion sweeps. Items 7-10 are provider-integration debt. Items 11-14 are smaller / decision-gated.
|
||||
|
||||
The user should pick which (if any) of these to open as follow-up tracks. The archive review is complete; this report is the index for that decision.
|
||||
Reference in New Issue
Block a user