notex.nvim/specs/002-notex-is-a/tasks.md

205 lines
9.1 KiB
Markdown
Raw Normal View History

2025-10-05 20:16:33 -04:00
# Tasks: Relational Document System for Neovim
**Input**: Design documents from `/specs/002-notex-is-a/`
**Prerequisites**: plan.md (required), research.md, data-model.md, contracts/, quickstart.md
## Execution Flow (main)
```
1. Load plan.md from feature directory
→ If not found: ERROR "No implementation plan found"
→ Extract: tech stack, libraries, structure
2. Load optional design documents:
→ data-model.md: Extract entities → model tasks
→ contracts/: Each file → contract test task
→ research.md: Extract decisions → setup tasks
3. Generate tasks by category:
→ Setup: project init, dependencies, linting
→ Tests: contract tests, integration tests
→ Core: models, services, CLI commands
→ Integration: DB, middleware, logging
→ Polish: unit tests, performance, docs
4. Apply task rules:
→ Different files = mark [P] for parallel
→ Same file = sequential (no [P])
→ Tests before implementation (TDD)
5. Number tasks sequentially (T001, T002...)
6. Generate dependency graph
7. Create parallel execution examples
8. Validate task completeness:
→ All contracts have tests?
→ All entities have models?
→ All endpoints implemented?
9. Return: SUCCESS (tasks ready for execution)
```
## Format: `[ID] [P?] Description`
- **[P]**: Can run in parallel (different files, no dependencies)
- Include exact file paths in descriptions
## Path Conventions
- **Neovim plugin**: `lua/notex/`, `tests/` at repository root
- Paths shown below follow the project structure from plan.md
## Phase 3.1: Setup
- [x] T001 Create project structure per implementation plan (lua/notex/, tests/)
- [x] T002 Initialize Lua project with lsqlite3, lyaml, busted dependencies
- [x] T003 [P] Configure luacheck and stylua for Lua code formatting
## Phase 3.2: Tests First (TDD) ⚠️ MUST COMPLETE BEFORE 3.3
**CRITICAL: These tests MUST be written and MUST FAIL before ANY implementation**
- [x] T004 [P] Contract test query parsing API in tests/contract/test_query_api.lua
- [x] T005 [P] Contract test query execution API in tests/contract/test_query_api.lua
- [x] T006 [P] Contract test virtual buffer API in tests/contract/test_query_api.lua
- [x] T007 [P] Integration test document indexing workflow in tests/integration/test_document_indexing.lua
- [x] T008 [P] Integration test query workflow in tests/integration/test_query_workflow.lua
- [x] T009 [P] Integration test virtual buffer workflow in tests/integration/test_virtual_buffer.lua
## Phase 3.3: Core Implementation - Database Layer (ONLY after tests are failing)
- [x] T010 [P] Database connection module in lua/notex/database/init.lua
- [x] T011 [P] Database schema module in lua/notex/database/schema.lua
- [x] T012 [P] Database migrations module in lua/notex/database/migrations.lua
- [x] T013 Document model implementation in lua/notex/database/schema.lua
- [x] T014 Property model implementation in lua/notex/database/schema.lua
- [x] T015 Query model implementation in lua/notex/database/schema.lua
- [x] T016 Schema model implementation in lua/notex/database/schema.lua
## Phase 3.4: Core Implementation - Parser Layer
- [x] T017 [P] YAML header parser in lua/notex/parser/yaml.lua
- [x] T018 [P] Markdown content parser in lua/notex/parser/markdown.lua
- [x] T019 Parser coordination module in lua/notex/parser/init.lua
- [x] T020 Document indexing coordination in lua/notex/index/init.lua
- [x] T021 [P] File system scanner in lua/notex/index/scanner.lua
- [x] T022 [P] Incremental index updater in lua/notex/index/updater.lua
## Phase 3.5: Core Implementation - Query Layer
- [x] T023 [P] Query syntax parser in lua/notex/query/parser.lua
- [x] T024 [P] SQL query builder in lua/notex/query/builder.lua
- [x] T025 [P] Query execution engine in lua/notex/query/executor.lua
- [x] T026 Query coordination module in lua/notex/query/init.lua
## Phase 3.6: Core Implementation - UI Layer
- [x] T027 [P] Virtual buffer manager in lua/notex/ui/buffer.lua
- [x] T028 [P] Query result visualization in lua/notex/ui/view.lua
- [x] T029 [P] Inline editing interface in lua/notex/ui/editor.lua
- [x] T030 UI coordination module in lua/notex/ui/init.lua
## Phase 3.7: Core Implementation - Plugin Integration
- [ ] T031 [P] Utility functions in lua/notex/utils/init.lua
- [ ] T032 [P] Date parsing and formatting in lua/notex/utils/date.lua
- [ ] T033 [P] Type detection and conversion in lua/notex/utils/types.lua
- [ ] T034 [P] Data validation helpers in lua/notex/utils/validation.lua
- [ ] T035 Plugin entry point and setup in lua/notex/init.lua
## Phase 3.8: Integration and Error Handling
- [ ] T036 Connect database layer to parser layer
- [ ] T037 Connect parser layer to query layer
- [ ] T038 Connect query layer to UI layer
- [ ] T039 Error handling and logging integration
- [ ] T040 Performance optimization and caching
## Phase 3.9: Polish and Documentation
- [ ] T041 [P] Unit tests for utility functions in tests/unit/utils/
- [ ] T042 [P] Unit tests for database operations in tests/unit/database/
- [ ] T043 [P] Unit tests for parser functions in tests/unit/parser/
- [ ] T044 [P] Unit tests for query operations in tests/unit/query/
- [ ] T045 [P] Unit tests for UI components in tests/unit/ui/
- [ ] T046 Performance tests (<100ms query execution)
- [ ] T047 [P] Update README.md with installation and usage
- [ ] T048 [P] Create comprehensive API documentation
- [ ] T049 Remove code duplication and optimize
- [ ] T050 Run quickstart.md manual testing scenarios
## Dependencies
- Setup (T001-T003) before everything
- Tests (T004-T009) before all implementation (T010-T050)
- Database layer (T010-T016) blocks parser layer (T017-T022)
- Parser layer (T017-T022) blocks query layer (T023-T026)
- Query layer (T023-T026) blocks UI layer (T027-T030)
- UI layer (T027-T030) blocks plugin integration (T031-T035)
- Integration (T036-T040) before polish (T041-T050)
## Parallel Execution Examples
### Phase 3.2 - Contract Tests (Parallel)
```
# Launch T004-T009 together:
Task: "Contract test query parsing API in tests/contract/test_query_api.lua"
Task: "Contract test query execution API in tests/contract/test_query_api.lua"
Task: "Contract test virtual buffer API in tests/contract/test_query_api.lua"
Task: "Integration test document indexing workflow in tests/integration/test_document_indexing.lua"
Task: "Integration test query workflow in tests/integration/test_query_workflow.lua"
Task: "Integration test virtual buffer workflow in tests/integration/test_virtual_buffer.lua"
```
### Phase 3.3 - Database Models (Parallel)
```
# Launch T010-T016 together:
Task: "Database connection module in lua/notex/database/init.lua"
Task: "Database schema module in lua/notex/database/schema.lua"
Task: "Database migrations module in lua/notex/database/migrations.lua"
Task: "Document model implementation in lua/notex/database/schema.lua"
Task: "Property model implementation in lua/notex/database/schema.lua"
Task: "Query model implementation in lua/notex/database/schema.lua"
Task: "Schema model implementation in lua/notex/database/schema.lua"
```
### Phase 3.4 - Parser Components (Parallel)
```
# Launch T017-T022 together:
Task: "YAML header parser in lua/notex/parser/yaml.lua"
Task: "Markdown content parser in lua/notex/parser/markdown.lua"
Task: "File system scanner in lua/notex/index/scanner.lua"
Task: "Incremental index updater in lua/notex/index/updater.lua"
```
### Phase 3.9 - Unit Tests (Parallel)
```
# Launch T041-T045 together:
Task: "Unit tests for utility functions in tests/unit/utils/"
Task: "Unit tests for database operations in tests/unit/database/"
Task: "Unit tests for parser functions in tests/unit/parser/"
Task: "Unit tests for query operations in tests/unit/query/"
Task: "Unit tests for UI components in tests/unit/ui/"
```
## Notes
- [P] tasks = different files, no dependencies
- Verify tests fail before implementing
- Commit after each task
- Avoid: vague tasks, same file conflicts
- Follow constitutional principles: Clean Code, Functional Style, Descriptive Coding, Test-First Development, Performance by Design
## Task Generation Rules Applied
1. **From Contracts**:
- query-api.md → contract tests T004-T006 [P]
- API endpoints → implementation tasks T023-T030
2. **From Data Model**:
- Document entity → model task T013 [P]
- Property entity → model task T014 [P]
- Query entity → model task T015 [P]
- Schema entity → model task T016 [P]
3. **From Research Decisions**:
- lsqlite3 dependency → setup task T002
- lyaml dependency → parser task T017
- busted framework → test tasks T004-T009
4. **From User Stories**:
- Document indexing → integration test T007 [P]
- Query execution → integration test T008 [P]
- Virtual buffer interaction → integration test T009 [P]
- Quickstart scenarios → validation task T050
5. **Ordering Strategy**:
- Setup → Tests → Database → Parser → Query → UI → Integration → Polish
- Dependencies block parallel execution
## Validation Checklist
- [x] All contracts have corresponding tests
- [x] All entities have model tasks
- [x] All tests come before implementation
- [x] Parallel tasks truly independent
- [x] Each task specifies exact file path
- [x] No task modifies same file as another [P] task