docs: create milestone v1.6 roadmap (5 phases)

This commit is contained in:
Research Assistant 2026-05-03 13:52:25 +08:00
parent f7f4b8464d
commit 4071317631
3 changed files with 134 additions and 243 deletions

View file

@ -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*

View file

@ -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
<details>
<summary>✅ v1.0 MVP (Phases 1-5) — SHIPPED 2026-04-23</summary>
**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`_
</details>
<details>
<summary>✅ v1.1 Sandbox Onboarding (Phases 6-8) — SHIPPED 2026-04-24</summary>
### 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`_
</details>
<details>
<summary>✅ v1.2 Systematization & Cohesion (Phases 9-10) — SHIPPED 2026-04-24</summary>
### 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`_
</details>
<details>
<summary>✅ v1.3 Path Normalization & Architecture Hardening (Phases 11-12) — SHIPPED 2026-04-24</summary>
### 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`_
</details>
<details>
<summary>✅ v1.4 Code Health & UX Hardening (Phases 13-19) — SHIPPED 2026-04-28</summary>
### 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`_
</details>
### ✅ 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*

View file

@ -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