From 07634ab1448c07c9269cef30e957ff03697c2feb Mon Sep 17 00:00:00 2001 From: Jarvis Jr Hermes Date: Wed, 2 Sep 2026 12:11:52 +0000 Subject: [PATCH] feat: require complete architecture task breakdowns --- SKILL.md | 14 +++++++++++++- tests/test_task_breakdown_policy.py | 25 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 tests/test_task_breakdown_policy.py diff --git a/SKILL.md b/SKILL.md index 4318b4d..56b0d85 100644 --- a/SKILL.md +++ b/SKILL.md @@ -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 `-TS-` 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`. diff --git a/tests/test_task_breakdown_policy.py b/tests/test_task_breakdown_policy.py new file mode 100644 index 0000000..703f135 --- /dev/null +++ b/tests/test_task_breakdown_policy.py @@ -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()