Cleans up task tracker.
This commit is contained in:
294
Tasks.md
294
Tasks.md
@@ -49,189 +49,52 @@ task-types:
|
|||||||
|
|
||||||
# Nextcloud Upload Tool — Project Plan
|
# Nextcloud Upload Tool — Project Plan
|
||||||
|
|
||||||
This document defines the full project plan for the **Nextcloud Upload Tool**, including the CLI and GUI applications, shared backend library, credential system, and packaging/distribution.
|
This document defines the complete project roadmap and task tracking system for the **Nextcloud Upload Tool**, encompassing the CLI and GUI applications, shared backend library, credential storage, and distribution packaging.
|
||||||
|
|
||||||
It follows the same conventions as your existing monorepo task system:
|
|
||||||
|
|
||||||
- Anchor tags are the **single source of truth** for task ID, status, and type
|
|
||||||
- The summary table is a rendered view of the detailed tasks
|
|
||||||
- Task dependencies are direct-only
|
|
||||||
- IDs follow the format: `${project.prefix}-XXX` → `NUT-001`, `NUT-002`, etc.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Here’s the clean, unrendered **Notes / Directions for Agents & Users** section you asked for — formatted exactly like the style in your old Tasks.md, but adapted for your new single‑project document.
|
## Task Management Quick Guide
|
||||||
|
|
||||||
Every line is prefixed with `%` so you can copy/paste safely.
|
> [!IMPORTANT]
|
||||||
You can append this block **just before the Rendered Task Statuses section** in your file.
|
> **For Agents & Contributors:**
|
||||||
|
> - **Anchor Tags as SSOT**: The HTML anchor tag `<a id="..." class="task" data-status="..." data-task-type="..."></a>` above each task heading is the single source of truth (SSOT) for ID, status, and task type.
|
||||||
|
> - **Task Details as SSOT**: The detailed task body is the SSOT for title, description, requirements checklist, and direct dependencies.
|
||||||
|
> - **Rendered Sections**: The [Tasks Summary](#tasks-summary) table and the bottom enum tables ([Task Statuses](#task-statuses) & [Task Types](#task-types)) are rendered views that must be synchronized whenever SSOT data changes.
|
||||||
|
> - **Full Documentation**: Review the complete rules, schemas, and contributor workflows in [Task System Documentation & Rules](#task-system-rules) before editing or restructuring tasks.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Task System Documentation (Requirements for Agents)
|
|
||||||
|
|
||||||
This section defines how agents and contributors must interpret, update, and maintain this Tasks.md file.
|
|
||||||
It mirrors the conventions of the original multi‑project Tasks.md, adapted for a single‑project workflow.
|
|
||||||
|
|
||||||
### **Single Source of Truth (SSOT)**
|
|
||||||
|
|
||||||
- The **anchor tag** for each task is the SSOT for:
|
|
||||||
- **Task ID** → from the `id` attribute
|
|
||||||
- **Task Status** → from the `data-status` attribute
|
|
||||||
- **Task Type** → from the `data-task-type` attribute
|
|
||||||
|
|
||||||
- The **Detailed Task section** is the SSOT for:
|
|
||||||
- Task title
|
|
||||||
- Task description
|
|
||||||
- Requirements checklist
|
|
||||||
- Dependencies
|
|
||||||
|
|
||||||
- The **Tasks Summary table** is a *rendered view* of the SSOT.
|
|
||||||
It must be updated whenever SSOT attributes or task details change.
|
|
||||||
|
|
||||||
### **Rendered Sections**
|
|
||||||
|
|
||||||
Sections marked with **“(Rendered from …)”** are generated from frontmatter or SSOT data.
|
|
||||||
These sections must be updated whenever:
|
|
||||||
- A task is added
|
|
||||||
- A task’s ID, status, or type changes
|
|
||||||
- A task type or status is added/removed/renamed in frontmatter
|
|
||||||
|
|
||||||
Rendered sections include:
|
|
||||||
- Tasks Summary table
|
|
||||||
- Task Statuses table
|
|
||||||
- Task Types table
|
|
||||||
|
|
||||||
These sections should never be manually edited except to regenerate them.
|
|
||||||
|
|
||||||
### **Task Identification**
|
|
||||||
|
|
||||||
- Every task begins with an anchor tag of the form:
|
|
||||||
```
|
|
||||||
<a id="nut-001" class="task" data-status="pending" data-task-type="foundation"></a>
|
|
||||||
```
|
|
||||||
- The `id` attribute must match the task’s ID in the summary table.
|
|
||||||
- The `class="task"` attribute identifies the start of a detailed task section.
|
|
||||||
|
|
||||||
### **Task ID Format**
|
|
||||||
|
|
||||||
- All task IDs follow the format:
|
|
||||||
**`${project.prefix}-XXX`**
|
|
||||||
where `XXX` is a zero‑padded, monotonic 3‑digit number.
|
|
||||||
|
|
||||||
- IDs must never be reused or renumbered.
|
|
||||||
New tasks always append the next available number.
|
|
||||||
|
|
||||||
### **Task Lifecycle**
|
|
||||||
|
|
||||||
Tasks follow this lifecycle:
|
|
||||||
|
|
||||||
1. **Triage** — Initial state; incomplete information allowed
|
|
||||||
2. **Pending** — Ready for implementation
|
|
||||||
3. **In Progress** — Work is actively being done
|
|
||||||
4. **Fixed / Done** — Work completed
|
|
||||||
5. **Blocked** — Cannot proceed due to external dependency
|
|
||||||
6. **Cancelled** — No longer relevant or intentionally discarded
|
|
||||||
|
|
||||||
### **Adding New Tasks**
|
|
||||||
|
|
||||||
When adding a new task:
|
|
||||||
|
|
||||||
1. Create a new anchor tag with the next available ID
|
|
||||||
2. Add a detailed task section immediately after the anchor
|
|
||||||
3. Update the Tasks Summary table
|
|
||||||
4. Ensure the task is placed in numeric order in the detailed list
|
|
||||||
|
|
||||||
### **Missing Task Details**
|
|
||||||
|
|
||||||
If a task appears in the Tasks Summary table **without** a corresponding detailed section:
|
|
||||||
|
|
||||||
- Create a new detailed section for it
|
|
||||||
- Insert it in numeric order
|
|
||||||
- Use placeholder text if requirements are unknown
|
|
||||||
|
|
||||||
### **Dependencies**
|
|
||||||
|
|
||||||
- Only **direct dependencies** should be listed
|
|
||||||
- Avoid listing transitive dependencies
|
|
||||||
- Dependencies must reference task IDs exactly
|
|
||||||
|
|
||||||
### **Frontmatter Rules**
|
|
||||||
|
|
||||||
- The `project` section is the SSOT for:
|
|
||||||
- Project name
|
|
||||||
- Project ID
|
|
||||||
- Task prefix
|
|
||||||
|
|
||||||
- The `task-statuses` and `task-types` sections define the SSOT for:
|
|
||||||
- Allowed status values
|
|
||||||
- Allowed type values
|
|
||||||
- Their labels
|
|
||||||
- Their descriptions
|
|
||||||
|
|
||||||
- Rendered tables must reflect these values exactly.
|
|
||||||
|
|
||||||
### **Agent Responsibilities**
|
|
||||||
|
|
||||||
Agents modifying this file must:
|
|
||||||
|
|
||||||
- Update rendered sections when SSOT changes
|
|
||||||
- Maintain numeric ordering of detailed tasks
|
|
||||||
- Ensure anchor tags remain valid and consistent
|
|
||||||
- Preserve the frontmatter structure
|
|
||||||
- Avoid altering IDs or removing tasks
|
|
||||||
- Add missing detailed sections when needed
|
|
||||||
|
|
||||||
### **User Responsibilities**
|
|
||||||
|
|
||||||
- Users should modify only the detailed task sections when changing requirements
|
|
||||||
- Users should not manually edit rendered tables except to regenerate them
|
|
||||||
- Users should avoid renumbering tasks or altering IDs
|
|
||||||
|
|
||||||
### **General Formatting Rules**
|
|
||||||
|
|
||||||
- All checklists use GitHub-style `[ ]` / `[x]` syntax
|
|
||||||
- All anchor tags appear directly above their task’s heading
|
|
||||||
- All headings use `###` for task titles
|
|
||||||
- All rendered tables use pipes (`|`) and must align with SSOT
|
|
||||||
- All tasks must include a **Description**, **Requirements**, and **Dependencies** section
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a id="tasks-summary"></a>
|
<a id="tasks-summary"></a>
|
||||||
## Tasks Summary
|
## Tasks Summary (Rendered from task details)
|
||||||
|
|
||||||
| ID | Title | Status | Type |
|
| ID | Title | Status | Type |
|
||||||
|----------|--------------------------------------------------|-------------|-------------|
|
|---|---|---|---|
|
||||||
| NUT-001 | Establish Repository Structure | Pending | Foundation |
|
| [NUT-001](#nut-001) | Establish Repository Structure | Pending | Foundation |
|
||||||
| NUT-002 | Implement Shared Rust Backend Library | Triage | Foundation |
|
| [NUT-002](#nut-002) | Implement Shared Rust Backend Library | Triage | Foundation |
|
||||||
| NUT-003 | Implement WebDAV Upload Logic | Triage | Feature |
|
| [NUT-003](#nut-003) | Implement WebDAV Upload Logic | Triage | Feature |
|
||||||
| NUT-004 | Implement OCS Share Link Generation | Triage | Feature |
|
| [NUT-004](#nut-004) | Implement OCS Share Link Generation | Triage | Feature |
|
||||||
| NUT-005 | Implement Direct Download URL Builder | Triage | Feature |
|
| [NUT-005](#nut-005) | Implement Direct Download URL Builder | Triage | Feature |
|
||||||
| NUT-006 | Implement Credential Storage System | Triage | Feature |
|
| [NUT-006](#nut-006) | Implement Credential Storage System | Triage | Feature |
|
||||||
| NUT-007 | Implement Multi-Account Support (Backend) | Triage | Feature |
|
| [NUT-007](#nut-007) | Implement Multi-Account Support (Backend) | Triage | Feature |
|
||||||
| NUT-008 | Implement CLI Frontend | Triage | Feature |
|
| [NUT-008](#nut-008) | Implement CLI Frontend | Triage | Feature |
|
||||||
| NUT-009 | Implement CLI Output Formatting Options | Triage | Feature |
|
| [NUT-009](#nut-009) | Implement CLI Output Formatting Options | Triage | Feature |
|
||||||
| NUT-010 | Implement CLI Multi-file Upload Support | Triage | Feature |
|
| [NUT-010](#nut-010) | Implement CLI Multi-file Upload Support | Triage | Feature |
|
||||||
| NUT-011 | Implement CLI Progress Reporting + pv Support | Triage | Feature |
|
| [NUT-011](#nut-011) | Implement CLI Progress Reporting + pv Support | Triage | Feature |
|
||||||
| NUT-012 | Implement GUI (Tauri) Frontend | Triage | Feature |
|
| [NUT-012](#nut-012) | Implement GUI (Tauri) Frontend | Triage | Feature |
|
||||||
| NUT-013 | Implement GUI File Queue + Drag-and-Drop | Triage | Feature |
|
| [NUT-013](#nut-013) | Implement GUI File Queue + Drag-and-Drop | Triage | Feature |
|
||||||
| NUT-014 | Implement GUI Credential Management UI | Triage | Feature |
|
| [NUT-014](#nut-014) | Implement GUI Credential Management UI | Triage | Feature |
|
||||||
| NUT-015 | Implement GUI Upload Progress Bars | Triage | Feature |
|
| [NUT-015](#nut-015) | Implement GUI Upload Progress Bars | Triage | Feature |
|
||||||
| NUT-016 | Implement Shared Auth Token Reuse | Triage | Integration |
|
| [NUT-016](#nut-016) | Implement Shared Auth Token Reuse | Triage | Integration |
|
||||||
| NUT-017 | Implement Multi-Account Switching (GUI + CLI) | Triage | Integration |
|
| [NUT-017](#nut-017) | Implement Multi-Account Switching (GUI + CLI) | Triage | Integration |
|
||||||
| NUT-018 | Implement Packaging for macOS, Windows, Linux | Triage | Chore |
|
| [NUT-018](#nut-018) | Implement Packaging for macOS, Windows, Linux | Triage | Chore |
|
||||||
| NUT-019 | Implement Homebrew/Winget/Chocolatey Manifests | Triage | Chore |
|
| [NUT-019](#nut-019) | Implement Homebrew/Winget/Chocolatey Manifests | Triage | Chore |
|
||||||
| NUT-020 | Write Documentation + Examples | Triage | Chore |
|
| [NUT-020](#nut-020) | Write Documentation + Examples | Triage | Chore |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<a id="task-details"></a>
|
<a id="task-details"></a>
|
||||||
## Detailed Tasks
|
## Detailed Tasks
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-001" class="task" data-status="pending" data-task-type="foundation"></a>
|
<a id="nut-001" class="task" data-status="pending" data-task-type="foundation"></a>
|
||||||
### Establish Repository Structure
|
### Establish Repository Structure
|
||||||
**ID:** NUT-001
|
**ID:** NUT-001
|
||||||
@@ -252,7 +115,6 @@ Create the initial repository layout for the project, including the shared Rust
|
|||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
None
|
None
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-002" class="task" data-status="triage" data-task-type="foundation"></a>
|
<a id="nut-002" class="task" data-status="triage" data-task-type="foundation"></a>
|
||||||
### Implement Shared Rust Backend Library
|
### Implement Shared Rust Backend Library
|
||||||
@@ -273,7 +135,6 @@ Implement the shared Rust library that provides all core functionality: WebDAV u
|
|||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- NUT-001
|
- NUT-001
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-003" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-003" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement WebDAV Upload Logic
|
### Implement WebDAV Upload Logic
|
||||||
@@ -293,7 +154,6 @@ Implement file upload using Nextcloud’s WebDAV API. Support streaming uploads,
|
|||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- NUT-002
|
- NUT-002
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-004" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-004" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement OCS Share Link Generation
|
### Implement OCS Share Link Generation
|
||||||
@@ -313,7 +173,6 @@ Implement creation of public share links using the OCS Sharing API.
|
|||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- NUT-002
|
- NUT-002
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-005" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-005" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement Direct Download URL Builder
|
### Implement Direct Download URL Builder
|
||||||
@@ -332,7 +191,6 @@ Generate direct-download URLs from share tokens.
|
|||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- NUT-004
|
- NUT-004
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-006" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-006" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement Credential Storage System
|
### Implement Credential Storage System
|
||||||
@@ -353,7 +211,6 @@ Implement secure credential storage using OS keychain when available, falling ba
|
|||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- NUT-002
|
- NUT-002
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-007" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-007" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement Multi-Account Support (Backend)
|
### Implement Multi-Account Support (Backend)
|
||||||
@@ -372,7 +229,6 @@ Support multiple Nextcloud accounts in the backend credential system.
|
|||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- NUT-006
|
- NUT-006
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-008" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-008" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement CLI Frontend
|
### Implement CLI Frontend
|
||||||
@@ -395,7 +251,6 @@ Implement the CLI tool using the shared backend library.
|
|||||||
- NUT-005
|
- NUT-005
|
||||||
- NUT-006
|
- NUT-006
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-009" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-009" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement CLI Output Formatting Options
|
### Implement CLI Output Formatting Options
|
||||||
@@ -415,7 +270,6 @@ Add output formatting options for scripting and automation.
|
|||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- NUT-008
|
- NUT-008
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-010" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-010" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement CLI Multi-file Upload Support
|
### Implement CLI Multi-file Upload Support
|
||||||
@@ -434,7 +288,6 @@ Support uploading multiple files in a single CLI invocation.
|
|||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- NUT-008
|
- NUT-008
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-011" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-011" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement CLI Progress Reporting + pv Support
|
### Implement CLI Progress Reporting + pv Support
|
||||||
@@ -454,7 +307,6 @@ Integrate with `pv` for progress reporting and support streaming uploads.
|
|||||||
- NUT-003
|
- NUT-003
|
||||||
- NUT-008
|
- NUT-008
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-012" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-012" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement GUI (Tauri) Frontend
|
### Implement GUI (Tauri) Frontend
|
||||||
@@ -477,7 +329,6 @@ Implement the Tauri-based GUI application.
|
|||||||
- NUT-005
|
- NUT-005
|
||||||
- NUT-006
|
- NUT-006
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-013" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-013" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement GUI File Queue + Drag-and-Drop
|
### Implement GUI File Queue + Drag-and-Drop
|
||||||
@@ -496,7 +347,6 @@ Add drag-and-drop file support and a queue system for multiple uploads.
|
|||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- NUT-012
|
- NUT-012
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-014" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-014" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement GUI Credential Management UI
|
### Implement GUI Credential Management UI
|
||||||
@@ -517,7 +367,6 @@ Add UI for managing accounts, logging in, logging out, and switching accounts.
|
|||||||
- NUT-007
|
- NUT-007
|
||||||
- NUT-012
|
- NUT-012
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-015" class="task" data-status="triage" data-task-type="feature"></a>
|
<a id="nut-015" class="task" data-status="triage" data-task-type="feature"></a>
|
||||||
### Implement GUI Upload Progress Bars
|
### Implement GUI Upload Progress Bars
|
||||||
@@ -538,7 +387,6 @@ Add per-file and total progress bars to the GUI.
|
|||||||
- NUT-012
|
- NUT-012
|
||||||
- NUT-013
|
- NUT-013
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-016" class="task" data-status="triage" data-task-type="integration"></a>
|
<a id="nut-016" class="task" data-status="triage" data-task-type="integration"></a>
|
||||||
### Implement Shared Auth Token Reuse
|
### Implement Shared Auth Token Reuse
|
||||||
@@ -559,7 +407,6 @@ Ensure both CLI and GUI reuse the same credential store and cached tokens.
|
|||||||
- NUT-008
|
- NUT-008
|
||||||
- NUT-012
|
- NUT-012
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-017" class="task" data-status="triage" data-task-type="integration"></a>
|
<a id="nut-017" class="task" data-status="triage" data-task-type="integration"></a>
|
||||||
### Implement Multi-Account Switching (GUI + CLI)
|
### Implement Multi-Account Switching (GUI + CLI)
|
||||||
@@ -580,7 +427,6 @@ Add multi-account switching to both CLI and GUI.
|
|||||||
- NUT-008
|
- NUT-008
|
||||||
- NUT-014
|
- NUT-014
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-018" class="task" data-status="triage" data-task-type="chore"></a>
|
<a id="nut-018" class="task" data-status="triage" data-task-type="chore"></a>
|
||||||
### Implement Packaging for macOS, Windows, Linux
|
### Implement Packaging for macOS, Windows, Linux
|
||||||
@@ -601,7 +447,6 @@ Package the CLI and GUI for distribution.
|
|||||||
- NUT-008
|
- NUT-008
|
||||||
- NUT-012
|
- NUT-012
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-019" class="task" data-status="triage" data-task-type="chore"></a>
|
<a id="nut-019" class="task" data-status="triage" data-task-type="chore"></a>
|
||||||
### Implement Homebrew/Winget/Chocolatey Manifests
|
### Implement Homebrew/Winget/Chocolatey Manifests
|
||||||
@@ -621,7 +466,6 @@ Add package manager manifests for easy installation.
|
|||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- NUT-018
|
- NUT-018
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<a id="nut-020" class="task" data-status="triage" data-task-type="chore"></a>
|
<a id="nut-020" class="task" data-status="triage" data-task-type="chore"></a>
|
||||||
### Write Documentation + Examples
|
### Write Documentation + Examples
|
||||||
@@ -645,12 +489,74 @@ Write documentation for installation, usage, examples, and API reference.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Rendered Task Statuses
|
<a id="task-system-rules"></a>
|
||||||
|
## Task System Documentation & Rules
|
||||||
|
|
||||||
|
This section defines how contributors and AI agents must interpret, update, and maintain this `Tasks.md` file.
|
||||||
|
|
||||||
|
### Single Source of Truth (SSOT)
|
||||||
|
|
||||||
|
- **Task Anchor Tag**: The HTML anchor tag directly above each task title is the SSOT for machine-readable attributes:
|
||||||
|
- **Task ID**: `id` attribute (lowercase, e.g. `id=\"nut-001\"`)
|
||||||
|
- **Task Status**: `data-status` attribute (must match a value in `task-statuses` frontmatter)
|
||||||
|
- **Task Type**: `data-task-type` attribute (must match a value in `task-types` frontmatter)
|
||||||
|
- **Detailed Task Section**: The markdown text under the task heading is the SSOT for human-readable content:
|
||||||
|
- Task title (`### Title`)
|
||||||
|
- Task ID label (`**ID:** NUT-XXX`)
|
||||||
|
- Task status label (`**Status:** ...`)
|
||||||
|
- Task type label (`**Type:** ...`)
|
||||||
|
- Description, Requirements checklist (`- [ ] ...`), and Dependencies.
|
||||||
|
- **Rendered Sections**: Tables marked as `(Rendered from ...)` are non-canonical views generated from frontmatter and task anchor/detail sections.
|
||||||
|
|
||||||
|
### Task Lifecycle & Status Values
|
||||||
|
|
||||||
|
Tasks progress through defined statuses:
|
||||||
|
1. `triage`: Under initial evaluation and specification. Missing requirements allowed.
|
||||||
|
2. `pending`: Scope defined and ready for active work.
|
||||||
|
3. `in_progress`: Active implementation in progress.
|
||||||
|
4. `done`: Work complete, requirements checked, and verified.
|
||||||
|
5. `blocked`: Blocked by an external obstacle or unmet dependency.
|
||||||
|
6. `cancelled`: Deprecated or abandoned.
|
||||||
|
|
||||||
|
### Formatting & Identification Invariants
|
||||||
|
|
||||||
|
- **Task ID Schema**: `${project.prefix}-XXX` where `XXX` is a zero-padded monotonic 3-digit number (e.g. `NUT-001`).
|
||||||
|
- IDs must be monotonic and never renumbered or reused.
|
||||||
|
- Anchor IDs are lowercase: `<a id="nut-001" class="task" data-status="pending" data-task-type="foundation"></a>`.
|
||||||
|
- Table and header IDs are uppercase: `[NUT-001](#nut-001)`.
|
||||||
|
- Dependencies list **direct dependencies only** (no transitive dependencies).
|
||||||
|
- Checklists must use standard GitHub Markdown `- [ ]` and `- [x]`.
|
||||||
|
- Spacing: Use two blank lines between detailed task blocks. Horizontal rules (`---`) are reserved for separating major top-level sections.
|
||||||
|
|
||||||
|
### Maintenance Procedures
|
||||||
|
|
||||||
|
- **Adding a Task**: Append the next sequential ID, create the anchor tag and detailed section separated by two blank lines, and add the row to [Tasks Summary](#tasks-summary).
|
||||||
|
- **Updating Status/Type**: Update the `data-status` and `data-task-type` attributes in the task anchor tag, the text fields in the task detail section, and the corresponding row in [Tasks Summary](#tasks-summary).
|
||||||
|
- **Modifying Enums**: Any changes to available statuses or types must originate in the YAML frontmatter (`task-statuses` / `task-types`) and be re-rendered into the corresponding reference tables below.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<a id="task-statuses"></a>
|
||||||
|
## Task Statuses (Rendered from task-statuses)
|
||||||
|
|
||||||
| Value | Label | Description |
|
| Value | Label | Description |
|
||||||
|-------------|-------------|---------------------------------------------------------------------------------------------|
|
|---|---|---|
|
||||||
| triage | Triage | The task is being evaluated and prioritized. It may still be missing important information. |
|
| `triage` | Triage | The task is being evaluated and prioritized. It may still be missing important information. |
|
||||||
| pending | Pending | The task is ready to be acted on. |
|
| `pending` | Pending | The task is ready to be acted on. |
|
||||||
| in_progress | In Progress | The task is currently being worked on. |
|
| `in_progress` | In Progress | The task is currently being worked on. |
|
||||||
| done | Fixed | The task has been completed. |
|
| `done` | Fixed | The task has been completed. |
|
||||||
| blocked | Blocked | The task cannot proceed due to an obstacle or dependency. |
|
| `blocked` | Blocked | The task cannot proceed due to an obstacle or dependency. |
|
||||||
| cancelled | Cancelled | The task was decided against or is no longer relevant. |
|
| `cancelled` | Cancelled | The task was decided against or is no longer relevant. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<a id="task-types"></a>
|
||||||
|
## Task Types (Rendered from task-types)
|
||||||
|
|
||||||
|
| Value | Prefix | Label | Description |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `foundation` | FND | Foundation | Core project setup, repo structure, build system, and shared libraries. |
|
||||||
|
| `feature` | FEA | Feature | A new feature to implement. |
|
||||||
|
| `bug` | BUG | Bug | A defect or incorrect behavior to fix. |
|
||||||
|
| `chore` | CHR | Chore | Routine maintenance or cleanup work. |
|
||||||
|
| `integration` | INT | Integration | Connecting components together or integrating external systems. |
|
||||||
|
|||||||
Reference in New Issue
Block a user