diff --git a/AGENTS.md b/AGENTS.md index 2b1015c..4feb65b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -131,7 +131,7 @@ taskmark-spec/ | Type | Pattern | Example | Notes | |------|---------|---------|-------| | Assignee | `@username` | `@alice @bob` | Case-insensitive, `a-zA-Z0-9_-` | -| Project | `+name[/sub]` | `+Acme/Backend` | Hierarchical with `/` | +| Project | `+name[/sub]` | `+Acme/Backend`, `+app/v1.2.3` | Hierarchical `/`, versions with `.` | | Tag | `#tag` | `#critical #backend` | Case-insensitive | | Due date | `due:DATETIME` | `due:2024-03-15T18:00` | ISO 8601 format | | Estimate | `~NUM[hmd]` | `~2h`, `~30m`, `~3d` | Hours, minutes, days | @@ -169,11 +169,11 @@ taskmark-spec/ ### Section Headers and Inheritance ```markdown -# TODO +GlobalProject #globalTag type:value +# TODO +GlobalProject #globalTag @team type:value -## Section Name +SectionProject #sectionTag +## Section Name +SectionProject #sectionTag @alice -- [ ] Task +TaskProject #taskTag +- [ ] Task +TaskProject #taskTag @bob ``` **Inheritance Rules:** @@ -182,19 +182,20 @@ taskmark-spec/ |---------------|----------|---------| | Projects (`+`) | Hierarchical join with `/` | `+A` + `+B` + `+C` = `+A/B/C` | | Tags (`#`) | Additive (all tags included) | `#api` + `#urgent` = both | +| Assignees (`@`) | Additive (all assignees included) | `@alice` + `@bob` = both | | Key-value | Child overrides parent | Child `type:bug` overrides parent `type:feature` | **Example:** ```markdown -# TODO +Acme #work +# TODO +Acme #work @team -## Backend +API #critical +## Backend +API #critical @alice -- [ ] Task +Database +- [ ] Task +Database @bob ``` -**Task inherits:** `+Acme/API/Database`, `#work`, `#critical` +**Task inherits:** `+Acme/API/Database`, `#work`, `#critical`, `@team`, `@alice`, `@bob` ### Subtasks @@ -206,6 +207,7 @@ taskmark-spec/ - Independent state from parent - Projects hierarchical join - Tags additive +- Assignees additive ```markdown - [ ] (A) Parent task @alice +Database #critical ~8h @@ -567,21 +569,21 @@ taskmark-spec/ ### Section with Inheritance ```markdown -# TODO +global-project #global-tag +# TODO +global-project #global-tag @team -## Section Name +section-project #section-tag +## Section Name +section-project #section-tag @alice -- [ ] Task inherits: +global-project/section-project, #global-tag, #section-tag +- [ ] Task inherits: +global-project/section-project, #global-tag, #section-tag, @team, @alice ``` ### File Link with Inheritance ```markdown -## Backend +Acme #critical +## Backend +Acme #critical @alice [API Team](team/api.md) -# All tasks in api.md inherit: +Acme, #critical +# All tasks in api.md inherit: +Acme, #critical, @alice ``` --- diff --git a/TODO.md b/TODO.md index 53a1893..d275028 100644 --- a/TODO.md +++ b/TODO.md @@ -2,11 +2,6 @@ Project roadmap and tasks for the TaskMark specification. -## v1.2.0 - Documentation Updates +taskmark-spec/v1.2.0 #documentation - -- [ ] Document `@user` assignees in headers for inheritance ~1h -- [ ] Document `.` support in project names (e.g., `+app/v1.2.3`) ~30m - ## Backlog +taskmark-spec/backlog - [ ] Reference parser implementation #implementation diff --git a/docs/specification.md b/docs/specification.md index 981eb1d..1a48aee 100644 --- a/docs/specification.md +++ b/docs/specification.md @@ -62,7 +62,7 @@ | Done date | `YYYY-MM-DD[THH:MM[:SS][±HH:MM]]` | After planned | No | N/A | ISO 8601 datetime | | Description | Plain text | After dates/priority/state | Yes | Yes | 1-unlimited chars | | Assignee | `@username` | In line | No | No | `a-zA-Z0-9_-` | -| Project | `+name[/sub]` | In line | No | No | `a-zA-Z0-9_-/` | +| Project | `+name[/sub]` | In line | No | No | `a-zA-Z0-9_-./` | | Tag | `#tag` | In line | No | No | `a-zA-Z0-9_-` | | Created date | `created:DATETIME` | In line | No | N/A | ISO 8601 datetime | | Started date | `started:DATETIME` | In line | No | N/A | ISO 8601 datetime | @@ -110,7 +110,7 @@ | Token Type | Pattern | Valid Characters | Notes | |------------|---------|------------------|-------| | Assignee | `@NAME` | `a-zA-Z0-9_-` | MUST follow whitespace | -| Project | `+NAME` or `+NAME/SUB` | `a-zA-Z0-9_-/` | `/` for hierarchy only | +| Project | `+NAME` or `+NAME/SUB` | `a-zA-Z0-9_-./` | `/` for hierarchy, `.` for versions | | Tag | `#NAME` | `a-zA-Z0-9_-` | MUST NOT be section header | | Metadata key | `KEY:` | `a-zA-Z0-9_-` | Before colon | | Metadata value (unquoted) | `:VALUE` | Any non-whitespace | Until whitespace | @@ -229,11 +229,11 @@ | Header Level | Pattern | Example | |--------------|---------|---------| -| Top level | `# TODO` (required) | `# TODO +Acme #work` | -| Section | `## Section Name` | `## Backend +API #critical` | -| Subsection | `### Subsection Name` | `### Database +Maintenance` | +| Top level | `# TODO` (required) | `# TODO +Acme #work @team` | +| Section | `## Section Name` | `## Backend +API #critical @alice` | +| Subsection | `### Subsection Name` | `### Database +Maintenance @bob` | -**All headers MAY include metadata (projects, tags, key-value pairs).** +**All headers MAY include metadata (projects, tags, assignees, key-value pairs).** ### 5.2 Inheritance Rules @@ -241,19 +241,20 @@ |---------------|----------|---------| | Projects (`+`) | Hierarchical (join with `/`) | `+A` + `+B` = `+A/B` | | Tags (`#`) | Additive | `#api` + `#urgent` = both tags | +| Assignees (`@`) | Additive | `@alice` + `@bob` = both assignees | | Key-value | Override | `type:bug` overrides `type:feature` | **Example:** ```markdown -# TODO +Acme #work +# TODO +Acme #work @team -## Backend +API #critical +## Backend +API #critical @alice -- [ ] Task +Database +- [ ] Task +Database @bob ``` -**Task inherits:** `+Acme/API/Database`, `#work`, `#critical` +**Task inherits:** `+Acme/API/Database`, `#work`, `#critical`, `@team`, `@alice`, `@bob` --- @@ -268,6 +269,7 @@ | States | Independent of parent | Can differ from parent state | | Projects | Hierarchical join | Parent `+A`, subtask `+B` → `+A/B` | | Tags | Additive | Parent `#api`, subtask `#urgent` → both | +| Assignees | Additive | Parent `@alice`, subtask `@bob` → both | | Key-value | Override | Child overrides parent | **Invalid Nesting:** @@ -312,13 +314,13 @@ **Example:** ```markdown -## Engineering +Enterprise #engineering type:maintenance +## Engineering +Enterprise #engineering @geordi type:maintenance [Warp Core](team/warp.md) [Transporters](team/transport.md) ``` -**Result:** All tasks from both files inherit: `+Enterprise`, `#engineering`, `type:maintenance` +**Result:** All tasks from both files inherit: `+Enterprise`, `#engineering`, `@geordi`, `type:maintenance` --- @@ -393,7 +395,7 @@ | Type | Examples | |------|----------| | Assignees | `@user1 @user2` | -| Projects | `+proj1 +proj2/sub` | +| Projects | `+proj1 +proj2/sub +app/v1.2.3` | | Tags | `#tag1 #tag2` | | Dates | `created:`, `started:`, `paused:`, `due:` | | Recurrence | `repeat:PATTERN` or `repeat:"natural language"` |