205 lines
9.1 KiB
Markdown
205 lines
9.1 KiB
Markdown
|
# 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
|