feat: govern Architecture task decomposition #3

Merged
jarvis-at-skic merged 7 commits from policy/architecture-task-breakdown-ownership into test 2026-09-02 08:11:21 -07:00
2 changed files with 38 additions and 1 deletions
Showing only changes of commit 07634ab144 - Show all commits
+13 -1
View File
@@ -1,7 +1,7 @@
---
name: corp-v1-channel-architecture
description: "Use when operating or synchronizing a Corp v1 project's architecture channel. Maintains C4-based architecture documentation, Draw.io diagrams, architecture decisions, and requirements while correlating verified activity across the project's seven channels."
version: 1.6.2
version: 1.7.0
author: Hermes Agent
license: MIT
metadata:
@@ -202,6 +202,17 @@ Use stable IDs such as `FR-0001` and `NFR-0001`. Requirements must be unambiguou
Architecture derives and maintains implementation-task semantics, dependencies, sequencing, and readiness from the FR/NFR solution. Scope hosts the canonical task records and reader pages under their owning Feature; Architecture must not create a competing task registry page or task navigation.
Architecture owns complete Task decomposition for every Feature allocated to the release. Before reporting a release planning-ready, Architecture must:
1. review existing Tasks and retain, revise, or supersede them according to the current Feature outcomes and Architecture boundaries;
2. define at least two independently executable Tasks per Feature unless a recorded Architecture rationale proves that one atomic Task is the smallest verifiable boundary;
3. map the Feature's Tasks collectively to every acceptance outcome and every applicable requirement, with reciprocal canonical traceability;
4. encode within-Feature sequencing and every cross-Feature prerequisite as acyclic Task dependencies;
5. give each Task one specific outcome, bounded scope, repository/component owner, future acceptance-evidence requirement, and canonical/display identity;
6. keep draft Tasks separate from implementation approval and Kanban Focus admission.
Architecture must not report planning readiness while any Feature allocated to the release lacks this complete Task breakdown. A Feature-shaped placeholder Task, a generated empty Task group, or requirement coverage without executable Tasks does not satisfy the gate.
```text
canonical_id | display_id | feature | outcome | scope | dependencies | owner | status | acceptance evidence | affected repository/component
```
@@ -291,6 +302,7 @@ Requires team approval for:
- [ ] ADR, FR, and NFR entries have stable IDs and traceability.
- [ ] Every solution Feature has explicit human `Approved for Solution` evidence.
- [ ] Eligible Features have dependency-aware task derivation and version proposals, with canonical task reader pages under their Scope Feature.
- [ ] Every Feature allocated to the planned release has a reviewed, non-placeholder Task breakdown covering every acceptance outcome and applicable requirement, with acyclic within-Feature and cross-Feature dependencies.
- [ ] Task display IDs use `<UPPERCASE_PROJECT_CODE>-TS-<NUMBER>` without rewriting historic canonical identities, evidence, or append-only hashes.
- [ ] Only a human team member moved a Feature to `Approved for Implementation` or finalized its version.
- [ ] Tasks were proposed to Kanban with readiness/dependency evidence; Architecture did not self-admit them to Focus `InBacklog`.
+25
View File
@@ -0,0 +1,25 @@
from pathlib import Path
import unittest
class TaskBreakdownPolicyTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.skill = Path(__file__).parents[1].joinpath("SKILL.md").read_text()
def test_architecture_owns_complete_release_task_breakdown(self):
required = [
"Architecture owns complete Task decomposition",
"every Feature allocated to the release",
"review existing Tasks",
"at least two independently executable Tasks",
"every acceptance outcome",
"every applicable requirement",
"must not report planning readiness",
]
for marker in required:
self.assertIn(marker, self.skill)
if __name__ == "__main__":
unittest.main()