diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md
index d47b80ba..07710a8b 100644
--- a/.planning/REQUIREMENTS.md
+++ b/.planning/REQUIREMENTS.md
@@ -82,36 +82,36 @@ Which phases cover which requirements. Updated during roadmap creation.
| Requirement | Phase | Status |
|-------------|-------|--------|
-| CONF-01 | Phase [N] | Pending |
-| CONF-02 | Phase [N] | Pending |
-| CONF-03 | Phase [N] | Pending |
-| CONF-04 | Phase [N] | Pending |
-| ASSET-01 | Phase [N] | Pending |
-| ASSET-02 | Phase [N] | Pending |
-| ASSET-03 | Phase [N] | Pending |
-| ASSET-04 | Phase [N] | Pending |
-| STATE-01 | Phase [N] | Pending |
-| STATE-02 | Phase [N] | Pending |
-| STATE-03 | Phase [N] | Pending |
-| STATE-04 | Phase [N] | Pending |
-| SURF-01 | Phase [N] | Pending |
-| SURF-02 | Phase [N] | Pending |
-| SURF-03 | Phase [N] | Pending |
-| SURF-04 | Phase [N] | Pending |
-| AIC-01 | Phase [N] | Pending |
-| AIC-02 | Phase [N] | Pending |
-| AIC-03 | Phase [N] | Pending |
-| AIC-04 | Phase [N] | Pending |
-| MIG-01 | Phase [N] | Pending |
-| MIG-02 | Phase [N] | Pending |
-| MIG-03 | Phase [N] | Pending |
-| MIG-04 | Phase [N] | Pending |
+| CONF-01 | Phase 22 | Pending |
+| CONF-02 | Phase 22 | Pending |
+| CONF-03 | Phase 22 | Pending |
+| CONF-04 | Phase 22 | Pending |
+| ASSET-01 | Phase 23 | Pending |
+| ASSET-02 | Phase 23 | Pending |
+| ASSET-03 | Phase 23 | Pending |
+| ASSET-04 | Phase 23 | Pending |
+| STATE-01 | Phase 24 | Pending |
+| STATE-02 | Phase 24 | Pending |
+| STATE-03 | Phase 24 | Pending |
+| STATE-04 | Phase 24 | Pending |
+| SURF-01 | Phase 25 | Pending |
+| SURF-02 | Phase 25 | Pending |
+| SURF-03 | Phase 25 | Pending |
+| SURF-04 | Phase 25 | Pending |
+| AIC-01 | Phase 24 | Pending |
+| AIC-02 | Phase 26 | Pending |
+| AIC-03 | Phase 26 | Pending |
+| AIC-04 | Phase 26 | Pending |
+| MIG-01 | Phase 25 | Pending |
+| MIG-02 | Phase 23 | Pending |
+| MIG-03 | Phase 25 | Pending |
+| MIG-04 | Phase 25 | Pending |
**Coverage:**
- v1 requirements: 24 total
-- Mapped to phases: 0
-- Unmapped: 24 ⚠️
+- Mapped to phases: 24
+- Unmapped: 0 ✓
---
*Requirements defined: 2026-05-03*
-*Last updated: 2026-05-03 after v1.6 requirements definition*
+*Last updated: 2026-05-03 after v1.6 roadmap creation*
diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md
index 1080281f..f06f78c5 100644
--- a/.planning/ROADMAP.md
+++ b/.planning/ROADMAP.md
@@ -1,8 +1,8 @@
-# Roadmap: PaperForge Lite
+# Roadmap: PaperForge
**Project kind:** brownfield-release-hardening
-**Current milestone:** v1.5 — Obsidian Plugin Setup Integration
-**Phase numbering:** Continuous (never restarts). v1.0 Phases 1-5, v1.1 Phases 6-8, v1.2 Phases 9-10, v1.3 Phases 11-12, v1.4 Phases 13-19, v1.5 Phases 20-21
+**Current milestone:** v1.6 — AI-Ready Literature Asset Foundation
+**Phase numbering:** Continuous (never restarts). Previous milestone ended at Phase 21, so v1.6 begins at Phase 22.
---
@@ -14,201 +14,100 @@
- ✅ **v1.3 Path Normalization & Architecture Hardening** — Phases 11-12 (shipped 2026-04-24)
- ✅ **v1.4 Code Health & UX Hardening** — Phases 13-19 (shipped 2026-04-28)
- ✅ **v1.5 Obsidian Plugin Setup Integration** — Phases 20-21 (shipped 2026-04-29)
+- 🚧 **v1.6 AI-Ready Literature Asset Foundation** — Phases 22-26 (planned)
---
+## Overview
+
+v1.6 turns PaperForge's existing sync, OCR, deep-reading, status, plugin, and `formal-library.json` outputs into one coherent literature asset foundation. The milestone starts by unifying configuration truth, upgrades `formal-library.json` into the canonical derived asset index, derives lifecycle and health from real source artifacts, converges CLI/plugin/Base surfaces on that shared meaning, and then exposes traceable AI context packs on top of trustworthy assets.
+
## Phases
-
-✅ v1.0 MVP (Phases 1-5) — SHIPPED 2026-04-23
+**Phase Numbering:**
+- Integer phases (22, 23, 24...): Planned milestone work
+- Decimal phases (22.1, 22.2...): Urgent insertions after roadmap approval
-### Phase 1: Config And Command Foundation
-**Goal**: Stable commands and shared path/env resolution
-**Plans**: 3/3 plans complete
-
-### Phase 2: PaddleOCR And PDF Path Hardening
-**Goal**: Diagnosable, retryable OCR
-**Plans**: 2/2 plans complete
-
-### Phase 3: Config-Aware Obsidian Bases
-**Goal**: Real workflow Bases without hardcoded paths
-**Plans**: 2/2 plans complete
-
-### Phase 4: End-To-End Onboarding And Validation
-**Goal**: User can complete first-paper flow
-**Plans**: 2/2 plans complete
-
-### Phase 5: Release Verification
-**Goal**: Tests and docs prove ship readiness
-**Plans**: 2/2 plans complete
-
-_Archived: `.planning/milestones/v1.0.md`_
-
-
-
-
-✅ v1.1 Sandbox Onboarding (Phases 6-8) — SHIPPED 2026-04-24
-
-### Phase 6: Setup, CLI, And Diagnostics Consistency
-**Goal**: Field names, env vars, export validation, HTTP 405 handling, vault prefill
-**Plans**: 3/3 plans complete
-
-### Phase 7: Zotero PDF, Metadata, And State Repair
-**Goal**: OCR meta validation, three-way divergence repair, PDF resolver tests
-**Plans**: 2/2 plans complete
-
-### Phase 8: Deep Helper Deployment And Sandbox Regression Gate
-**Goal**: Importability, fixtures, smoke tests, rollback
-**Plans**: 2/2 plans complete
-
-_Archived: `.planning/milestones/v1.1.md`_
-
-
-
-
-✅ v1.2 Systematization & Cohesion (Phases 9-10) — SHIPPED 2026-04-24
-
-### Phase 9: Command Unification & CLI Simplification
-**Goal**: Unified `/pf-*` namespace, `paperforge sync` combined command
-**Plans**: 2/2 plans complete
-
-### Phase 10: Documentation & Cohesion
-**Goal**: Updated AGENTS.md, migration guide, consistency audit
-**Plans**: 2/2 plans complete
-
-_Archived: `.planning/milestones/v1.2-ROADMAP.md`_
-
-
-
-
-✅ v1.3 Path Normalization & Architecture Hardening (Phases 11-12) — SHIPPED 2026-04-24
-
-### Phase 11: Zotero Path Normalization
-**Goal**: Parse 3 BBT formats, generate wikilinks, multi-attachment support
-**Plans**: 1/1 plan complete
-**Requirements**: ZPATH-01, ZPATH-02, ZPATH-03
-
-### Phase 12: Architecture Cleanup
-**Goal**: Eliminate module boundary leaks (pipeline/ → paperforge/worker/), migrate skills
-**Plans**: 1/1 plan complete
-**Requirements**: ARCH-01, ARCH-02
-
-_Archived: `.planning/milestones/v1.3.md`_
-
-
-
-
-✅ v1.4 Code Health & UX Hardening (Phases 13-19) — SHIPPED 2026-04-28
-
-### Phase 13: Logging Foundation
-**Goal**: Structured logging, `--verbose` flag, zero behavioral change to user-facing output
-**Requirements**: OBS-01, OBS-02, OBS-03
-**Plans**: 3/3 plans complete
-
-### Phase 14: Shared Utilities Extraction
-**Goal**: Extract `_utils.py`, eliminate ~1,610 lines of duplication across 7 workers
-**Requirements**: CH-01, CH-02, CH-05, TEST-03
-**Plans**: 2/2 plans complete
-
-### Phase 15: Deep-Reading Queue Merge
-**Goal**: Single canonical `scan_library_records()` for both CLI and Agent consumers
-**Requirements**: CH-03, CH-04
-**Plans**: 1/1 plan complete
-
-### Phase 16: Retry + Progress Bars
-**Goal**: Resilient OCR with exponential backoff and user-visible progress indication
-**Requirements**: UX-01, UX-02
-**Plans**: 2/2 plans complete
-
-### Phase 17: Dead Code Removal + Pre-Commit
-**Goal**: Clean codebase validated by automated git hooks (ruff)
-**Requirements**: CH-06, CH-07
-**Plans**: 1/1 plan complete
-
-### Phase 18: Documentation + CHANGELOG + UX Polish
-**Goal**: Complete user/maintainer docs, auto_analyze_after_ocr, CHANGELOG, CONTRIBUTING
-**Requirements**: DOC-01, DOC-02, DOC-03, UX-03
-**Plans**: 2/2 plans complete
-
-### Phase 19: Testing
-**Goal**: E2E pipeline tests, setup wizard tests, `_utils.py` unit tests (317 passed, 2 skipped)
-**Requirements**: TEST-01, TEST-02, TEST-04
-**Plans**: 3/3 plans complete
-
-_Note: Phase 20 (v1.4.2 "Headless Setup & Obsidian Plugin") was a placeholder. v1.5 expands this into a full plugin settings tab with setup integration — see Phases 20-21 below._
-
-_Archived: `.planning/milestones/v1.4.md`_
-
-
-
-### ✅ v1.5 Obsidian Plugin Setup Integration (Complete)
-
-**Milestone Goal:** Move the entire PaperForge setup/configuration experience from terminal CLI into the Obsidian plugin's settings tab, so a new user downloads one plugin and completes full installation without touching a terminal.
-
-- [x] **Phase 20: Plugin Settings Shell & Persistence** — Obsidian settings tab with all setup fields, persistence across restarts, debounced saves (completed 2026-04-29)
-- [x] **Phase 21: One-Click Install & Polished UX** — Install button with field validation, `spawn`-based subprocess orchestration, human-readable Chinese notices (completed 2026-04-29)
-
----
+- [ ] **Phase 22: Configuration Truth & Compatibility** - Make `paperforge.json` the single runtime truth across CLI, workers, setup, and plugin.
+- [ ] **Phase 23: Canonical Asset Index & Safe Rebuilds** - Upgrade `formal-library.json` into a rebuildable, atomic, per-paper asset index.
+- [ ] **Phase 24: Derived Lifecycle, Health & Maturity** - Compute readiness, health findings, maturity, and next steps from source artifacts.
+- [ ] **Phase 25: Surface Convergence, Doctor & Repair** - Make status, plugin dashboard, Base views, doctor, and repair consume the same canonical semantics.
+- [ ] **Phase 26: Traceable AI Context Packs** - Generate explainable paper and collection context packs from canonical assets.
## Phase Details
-### Phase 20: Plugin Settings Shell & Persistence
-**Goal**: Users can access PaperForge configuration in Obsidian's Settings tab, edit all setup wizard fields, and settings survive restarts and tab switches — all without breaking the existing sidebar.
-**Depends on**: Phase 19 (tested deployment pipeline exists)
-**Requirements**: SETUP-01, SETUP-02, SETUP-03
+### Phase 22: Configuration Truth & Compatibility
+**Goal**: Users can trust one authoritative PaperForge configuration across Python and plugin surfaces, including brownfield vaults with legacy config shapes.
+**Depends on**: Phase 21
+**Requirements**: CONF-01, CONF-02, CONF-03, CONF-04
**Success Criteria** (what must be TRUE):
- 1. User opens Obsidian Settings → Community Plugins → PaperForge (gear icon) and sees a settings tab with all 8 configuration fields grouped in logical sections with Chinese labels and tooltips
- 2. User edits any text field, navigates to a different settings tab and returns — all edited values remain intact (in-memory state survives `display()` re-invocation without data loss)
- 3. User fills in all fields, closes and re-opens Obsidian, and all values restore correctly from `data.json` — no data loss, corruption, or `TypeError` on null data
- 4. First-time install (no prior `data.json`) loads gracefully with `DEFAULT_SETTINGS` values pre-filled — settings tab renders cleanly without JavaScript errors
- 5. After registering the settings tab via `addSettingTab()`, the existing `PaperForgeStatusView` sidebar and command palette actions (`Sync Library`, `Run OCR`) continue functioning without regression
+ 1. User can inspect the effective runtime configuration and clearly see which values come from authoritative `paperforge.json` fields versus plugin UI cache fields.
+ 2. User can edit settings through the plugin or setup flow, then run `paperforge sync`, `paperforge ocr`, or `paperforge status` and observe the same resolved paths and runtime behavior.
+ 3. User can open an older vault with legacy top-level config keys and keep using existing commands successfully while PaperForge writes the normalized config shape going forward.
+ 4. User can change plugin settings without creating a second runtime truth that disagrees with Python-owned config resolution.
**Plans**: TBD
**UI hint**: yes
-### Phase 21: One-Click Install & Polished UX
-**Goal**: Users trigger full PaperForge setup with one click and receive step-by-step Chinese feedback via Obsidian notices — no terminal interaction required, no raw traceback exposure.
-**Depends on**: Phase 20 (settings tab shell and persistence must exist before adding install behavior)
-**Requirements**: INST-01, INST-02, INST-03, INST-04
+### Phase 23: Canonical Asset Index & Safe Rebuilds
+**Goal**: Users can rebuild and safely refresh a canonical literature asset index from existing library-records, OCR outputs, formal notes, and repair results.
+**Depends on**: Phase 22
+**Requirements**: ASSET-01, ASSET-02, ASSET-03, ASSET-04, MIG-02
**Success Criteria** (what must be TRUE):
- 1. User fills in all required configuration fields and clicks "安装配置" — the full setup pipeline executes: `paperforge.json` is written, directories are created, environment checks pass, and agent configs are generated
- 2. During setup execution, the Install button is visually disabled and displays "正在安装..." — clicking it again produces no duplicate subprocess (double-click prevention with `setDisabled(true)`)
- 3. User sees step-by-step Chinese notice toasts throughout setup progress ("正在创建目录... ✓", "正在写入配置文件... ✓", "正在检查环境... ✓") — raw Python tracebacks or terminal stderr content is never displayed directly in the Notice
- 4. User leaves a required field empty (e.g., Vault path) and clicks Install — receives a specific, friendly Chinese error notice (e.g., "未找到 Vault 路径,请检查设置") before any subprocess is spawned, preventing cryptic mid-install failures
- 5. After setup completes (success or failure), the sidebar `PaperForgeStatusView` panel and command palette actions (`Sync Library`, `Run OCR`) continue working normally — settings tab code is strictly additive with zero coupling to sidebar internals
-**Plans**: 2 plans (21-01, 21-02)
+ 1. User can rebuild `formal-library.json` from existing library-records, OCR outputs, and formal notes without manually repairing the index file itself.
+ 2. User can inspect the canonical index and see each paper represented once with stable identifiers, schema version, normalized paths, and provenance.
+ 3. After `sync`, `ocr`, `deep-reading`, or `repair`, user can refresh the index incrementally and see affected papers update without unrelated asset records being corrupted.
+ 4. If an index write is interrupted, the previous readable index remains intact and user can rerun the rebuild safely on Windows.
+ 5. During migration or rebuild, generated artifacts can be regenerated without losing hand-authored notes or user intent fields.
+**Plans**: TBD
+
+### Phase 24: Derived Lifecycle, Health & Maturity
+**Goal**: Users can understand each paper's lifecycle state, health findings, maturity level, and next best action from source-derived evidence instead of hand-edited status flags.
+**Depends on**: Phase 23
+**Requirements**: STATE-01, STATE-02, STATE-03, STATE-04, AIC-01
+**Success Criteria** (what must be TRUE):
+ 1. User can see each paper's lifecycle state such as imported, indexed, PDF-ready, fulltext-ready, deep-read, and AI-context-ready, derived from actual source artifacts.
+ 2. User can see concrete health findings explaining why a paper is blocked, including PDF, path, OCR, note-link, and generated-asset evidence.
+ 3. User can see a recommended next step for a paper or collection, such as `sync`, `ocr`, `repair`, `/pf-deep`, or rebuild index.
+ 4. User can trust that readiness states are computed from source artifacts rather than hand-edited status fields.
+ 5. User can see a transparent maturity/workflow level with explainable criteria instead of a black-box score.
+**Plans**: TBD
+
+### Phase 25: Surface Convergence, Doctor & Repair
+**Goal**: Users see one consistent library-state model across `paperforge status`, doctor/repair flows, plugin dashboard, and generated Base views, with migration-safe repair paths.
+**Depends on**: Phase 24
+**Requirements**: SURF-01, SURF-02, SURF-03, SURF-04, MIG-01, MIG-03, MIG-04
+**Success Criteria** (what must be TRUE):
+ 1. User sees the same lifecycle, health, maturity, and next-step meaning in `paperforge status`, plugin dashboard, and generated Base views because they all read the canonical index.
+ 2. User can use plugin dashboard actions as thin shells over CLI commands and get the same outcomes without JavaScript re-implementing lifecycle or health rules.
+ 3. User can run `paperforge doctor` or `paperforge repair` on an older vault and get explicit findings for stale configs, old index formats, old Base/templates, or partial OCR assets before those issues silently break workflows.
+ 4. User can repair source artifacts first and then rebuild derived state, and the repaired result is reflected across CLI, plugin, and Base surfaces without hand-editing the canonical index.
+ 5. If migration or rebuild fails, user has a documented and reversible rebuild path that restores working generated surfaces without losing notes or intent fields.
+**Plans**: TBD
**UI hint**: yes
----
+### Phase 26: Traceable AI Context Packs
+**Goal**: Users can generate explainable, reusable AI context packs for one paper or a collection using only canonical, traceable PaperForge assets.
+**Depends on**: Phase 25
+**Requirements**: AIC-02, AIC-03, AIC-04
+**Success Criteria** (what must be TRUE):
+ 1. User can generate an ask-this-paper or copy-context-pack bundle for a single paper that clearly lists included metadata, fulltext, note links, and provenance.
+ 2. User can generate a collection-level context pack from canonical assets without requiring hardcoded discipline-specific extraction schemas.
+ 3. User can only invoke AI context entry points when PaperForge can explain what source assets were included or why pack generation is blocked.
+ 4. User can trace every item in a context pack back to the originating PDF, OCR output, and formal note.
+**Plans**: TBD
## Progress
-**Execution Order:** Phases 20 → 21 are strictly sequential. Phase 20 provides the settings shell; Phase 21 adds install behavior on top.
+**Execution Order:** Phases execute sequentially: 22 → 23 → 24 → 25 → 26.
-| Phase | Milestone | Plans Complete | Status | Completed |
-|-------|-----------|----------------|--------|-----------|
-| 1. Config & Command Foundation | v1.0 | 3/3 | Complete | 2026-04-23 |
-| 2. PaddleOCR & PDF Path Hardening | v1.0 | 2/2 | Complete | 2026-04-23 |
-| 3. Config-Aware Obsidian Bases | v1.0 | 2/2 | Complete | 2026-04-23 |
-| 4. End-To-End Onboarding | v1.0 | 2/2 | Complete | 2026-04-23 |
-| 5. Release Verification | v1.0 | 2/2 | Complete | 2026-04-23 |
-| 6. Setup & CLI Diagnostics | v1.1 | 3/3 | Complete | 2026-04-24 |
-| 7. Zotero PDF & Metadata Repair | v1.1 | 2/2 | Complete | 2026-04-24 |
-| 8. Deep Helper & Sandbox Gate | v1.1 | 2/2 | Complete | 2026-04-24 |
-| 9. Command Unification & CLI | v1.2 | 2/2 | Complete | 2026-04-24 |
-| 10. Documentation & Cohesion | v1.2 | 2/2 | Complete | 2026-04-24 |
-| 11. Zotero Path Normalization | v1.3 | 1/1 | Complete | 2026-04-24 |
-| 12. Architecture Cleanup | v1.3 | 1/1 | Complete | 2026-04-24 |
-| 13. Logging Foundation | v1.4 | 3/3 | Complete | 2026-04-27 |
-| 14. Shared Utils Extraction | v1.4 | 2/2 | Complete | 2026-04-27 |
-| 15. Queue Merge | v1.4 | 1/1 | Complete | 2026-04-27 |
-| 16. Retry + Progress | v1.4 | 2/2 | Complete | 2026-04-27 |
-| 17. Dead Code + Pre-Commit | v1.4 | 1/1 | Complete | 2026-04-27 |
-| 18. Docs + CHANGELOG + UX | v1.4 | 2/2 | Complete | 2026-04-27 |
-| 19. Testing | v1.4 | 3/3 | Complete | 2026-04-28 |
-| 20. Plugin Settings Shell & Persistence | v1.5 | 1/1 | Complete | 2026-04-29 |
-| 21. One-Click Install & Polished UX | v1.5 | 2/2 | Complete | 2026-04-29 |
-| 22. Install Wizard Modal | v1.5 | 0/0 | Planned | — |
+| Phase | Plans Complete | Status | Completed |
+|-------|----------------|--------|-----------|
+| 22. Configuration Truth & Compatibility | 0/TBD | Not started | - |
+| 23. Canonical Asset Index & Safe Rebuilds | 0/TBD | Not started | - |
+| 24. Derived Lifecycle, Health & Maturity | 0/TBD | Not started | - |
+| 25. Surface Convergence, Doctor & Repair | 0/TBD | Not started | - |
+| 26. Traceable AI Context Packs | 0/TBD | Not started | - |
---
-*Roadmap updated: 2026-04-29 — Phase 22 planned (settings/install separation)*
+*Roadmap updated: 2026-05-03 for milestone v1.6 planning*
diff --git a/.planning/STATE.md b/.planning/STATE.md
index cead9388..ee42fa32 100644
--- a/.planning/STATE.md
+++ b/.planning/STATE.md
@@ -2,11 +2,11 @@
gsd_state_version: 1.0
milestone: v1.6
milestone_name: AI-Ready Literature Asset Foundation
-status: Defining requirements
-stopped_at: New milestone initialized
+status: Ready to plan
+stopped_at: Roadmap created for v1.6
last_updated: "2026-05-03"
progress:
- total_phases: 0
+ total_phases: 5
completed_phases: 0
total_plans: 0
completed_plans: 0
@@ -19,53 +19,46 @@ progress:
See: .planning/PROJECT.md (updated 2026-05-03)
**Core value:** Researchers always know what papers they have, what state those papers are in, and whether each paper is reliably usable by AI with traceable fulltext, figures, notes, and source links.
-**Current focus:** Milestone v1.6 definition
+**Current focus:** Phase 22 — Configuration Truth & Compatibility
## Current Position
-Phase: Not started (defining requirements)
-Plan: —
-Status: Defining requirements
-Last activity: 2026-05-03 — Milestone v1.6 started
+Phase: 22 of 26 (Configuration Truth & Compatibility)
+Plan: 0 of TBD in current phase
+Status: Ready to plan
+Last activity: 2026-05-03 — Created v1.6 roadmap and traceability mapping
+
+Progress: [░░░░░░░░░░] 0%
## Performance Metrics
**Velocity:**
+- Total plans completed: 41
+- Average duration: Not yet tracked consistently
+- Total execution time: Not yet tracked consistently
-- Total plans completed: 38 (across Phases 1-19)
-- Average duration: Not yet tracked
-- Total execution time: Not yet tracked
+**By Phase:**
-**By Phase (most recent):**
+| Phase | Plans | Total | Avg/Plan |
+|-------|-------|-------|----------|
+| 20. Plugin Settings Shell & Persistence | 1/1 | Not tracked | Not tracked |
+| 21. One-Click Install & Polished UX | 2/2 | Not tracked | Not tracked |
+| 22-26. v1.6 roadmap | 0/TBD | - | - |
-| Phase | Milestone | Plans | Status |
-|-------|-----------|-------|--------|
-| 19. Testing | v1.4 | 3/3 | Complete |
-| 20. Plugin Settings Shell | v1.5 | 3/3 | Complete |
-| 21. One-Click Install | v1.5 | 2/2 | Planned |
-
-**Recent Trend:** v1.4 averaged ~1 day per phase. Target for v1.5 should be similar.
-
-*Updated after each plan completion*
-| Phase 20 P20 | 2min | 3 tasks | 1 files |
-| Phase 21 P21-01 | — | 3 tasks | 2 files |
-| Phase 21 P21-02 | — | 2 tasks | 1 files |
-| Phase 21-one-click-install-and-polished-ux P01 | 5 min | 3 tasks | 2 files |
-| Phase 21-one-click-install-and-polished-ux P02 | 5 min | 2 tasks | 1 files |
+**Recent Trend:**
+- Last 5 plans: Not normalized in historical records
+- Trend: Stable
## Accumulated Context
### Decisions
-- **v1.5**: Settings tab in Obsidian plugin as setup entry point — eliminates terminal requirement; plugin becomes single download artifact. Zero new npm or Python dependencies. (See PROJECT.md Key Decisions)
-
+Decisions are logged in PROJECT.md Key Decisions table.
Recent decisions affecting current work:
-- **Phase 20**: Plugin settings use Obsidian's `PluginSettingTab` API, `loadData()`/`saveData()` for persistence, `Setting` form builder for UI. No TypeScript, no build system. Plugin is pure JS CommonJS (`paperforge/plugin/main.js`).
-- **Phase 20-21**: Settings tab is purely additive — zero changes to existing `PaperForgeStatusView` sidebar or `ACTIONS[]` definitions.
-- **Phase 21**: Subprocess orchestration uses `node:child_process.spawn` (not `exec`) for non-blocking setup execution with stdout/stderr parsing.
-- [Phase 21-one-click-install-and-polished-ux]: Settings tab is purely additive — zero changes to PaperForgeStatusView sidebar or ACTIONS[] definitions
-- [Phase 21-one-click-install-and-polished-ux]: Subprocess uses spawn (not exec) for stdout streaming, --headless (not --non-interactive), API key via --paddleocr-key flag
+- v1.6 stays Python-first: config, lifecycle, health, maturity, and context-pack rules remain Python-owned.
+- `formal-library.json` evolves into the canonical derived asset index rather than introducing a parallel index.
+- Plugin remains a thin shell over CLI logic and canonical index outputs.
### Pending Todos
@@ -73,12 +66,11 @@ None yet.
### Blockers/Concerns
-- **Phase 20**: Critical pitfalls from research — debounced saves (500ms) prevent `data.json` corruption; `display()` lifecycle requires immediate in-memory update on change; `loadData()` null merge via `Object.assign({}, DEFAULTS, data || {})`
-- **Phase 21**: Windows path encoding with spaces/Unicode requires `spawn` with proper quoting; raw stderr must be parsed into friendly Chinese messages before Notice display; button double-click prevention via `setDisabled(true)`
+- Brownfield rollout must protect existing vaults, old Base templates, partial OCR assets, and legacy config shapes.
+- AI context entry points should ship only after provenance and readiness are trustworthy.
## Session Continuity
-Last session: 2026-05-02
-Last Activity: All 20 phases (01-21) learnings extracted — 355 items total (161 decisions, 75 lessons, 76 patterns, 43 surprises)
-Stopped at: Completed Phase 21 (One-Click Install & Polished UX) — both plans delivered
+Last session: 2026-05-03 00:00
+Stopped at: Roadmap creation complete; next step is `/gsd-plan-phase 22`
Resume file: None