@cleocode/core 2026.4.11 → 2026.4.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/dist/codebase-map/analyzers/architecture.d.ts.map +1 -1
  2. package/dist/codebase-map/analyzers/architecture.js +0 -1
  3. package/dist/codebase-map/analyzers/architecture.js.map +1 -1
  4. package/dist/conduit/local-transport.d.ts +18 -8
  5. package/dist/conduit/local-transport.d.ts.map +1 -1
  6. package/dist/conduit/local-transport.js +23 -13
  7. package/dist/conduit/local-transport.js.map +1 -1
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +0 -1
  10. package/dist/config.js.map +1 -1
  11. package/dist/errors.d.ts +19 -0
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js +6 -0
  14. package/dist/errors.js.map +1 -1
  15. package/dist/index.js +175 -68950
  16. package/dist/index.js.map +1 -7
  17. package/dist/init.d.ts +1 -2
  18. package/dist/init.d.ts.map +1 -1
  19. package/dist/init.js +1 -2
  20. package/dist/init.js.map +1 -1
  21. package/dist/internal.d.ts +8 -3
  22. package/dist/internal.d.ts.map +1 -1
  23. package/dist/internal.js +13 -6
  24. package/dist/internal.js.map +1 -1
  25. package/dist/memory/learnings.d.ts +2 -2
  26. package/dist/memory/patterns.d.ts +6 -6
  27. package/dist/output.d.ts +32 -11
  28. package/dist/output.d.ts.map +1 -1
  29. package/dist/output.js +67 -67
  30. package/dist/output.js.map +1 -1
  31. package/dist/paths.js +80 -14
  32. package/dist/paths.js.map +1 -1
  33. package/dist/skills/dynamic-skill-generator.d.ts +0 -2
  34. package/dist/skills/dynamic-skill-generator.d.ts.map +1 -1
  35. package/dist/skills/dynamic-skill-generator.js.map +1 -1
  36. package/dist/store/agent-registry-accessor.d.ts +203 -12
  37. package/dist/store/agent-registry-accessor.d.ts.map +1 -1
  38. package/dist/store/agent-registry-accessor.js +618 -100
  39. package/dist/store/agent-registry-accessor.js.map +1 -1
  40. package/dist/store/api-key-kdf.d.ts +73 -0
  41. package/dist/store/api-key-kdf.d.ts.map +1 -0
  42. package/dist/store/api-key-kdf.js +84 -0
  43. package/dist/store/api-key-kdf.js.map +1 -0
  44. package/dist/store/cleanup-legacy.js +171 -0
  45. package/dist/store/cleanup-legacy.js.map +1 -0
  46. package/dist/store/conduit-sqlite.d.ts +184 -0
  47. package/dist/store/conduit-sqlite.d.ts.map +1 -0
  48. package/dist/store/conduit-sqlite.js +570 -0
  49. package/dist/store/conduit-sqlite.js.map +1 -0
  50. package/dist/store/global-salt.d.ts +78 -0
  51. package/dist/store/global-salt.d.ts.map +1 -0
  52. package/dist/store/global-salt.js +147 -0
  53. package/dist/store/global-salt.js.map +1 -0
  54. package/dist/store/migrate-signaldock-to-conduit.d.ts +81 -0
  55. package/dist/store/migrate-signaldock-to-conduit.d.ts.map +1 -0
  56. package/dist/store/migrate-signaldock-to-conduit.js +555 -0
  57. package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
  58. package/dist/store/nexus-sqlite.js +28 -3
  59. package/dist/store/nexus-sqlite.js.map +1 -1
  60. package/dist/store/signaldock-sqlite.d.ts +122 -19
  61. package/dist/store/signaldock-sqlite.d.ts.map +1 -1
  62. package/dist/store/signaldock-sqlite.js +401 -251
  63. package/dist/store/signaldock-sqlite.js.map +1 -1
  64. package/dist/store/sqlite-backup.js +122 -4
  65. package/dist/store/sqlite-backup.js.map +1 -1
  66. package/dist/system/backup.d.ts +0 -26
  67. package/dist/system/backup.d.ts.map +1 -1
  68. package/dist/system/runtime.d.ts +0 -2
  69. package/dist/system/runtime.d.ts.map +1 -1
  70. package/dist/system/runtime.js +3 -3
  71. package/dist/system/runtime.js.map +1 -1
  72. package/dist/tasks/add.d.ts +1 -1
  73. package/dist/tasks/add.d.ts.map +1 -1
  74. package/dist/tasks/add.js +98 -23
  75. package/dist/tasks/add.js.map +1 -1
  76. package/dist/tasks/complete.d.ts.map +1 -1
  77. package/dist/tasks/complete.js +4 -1
  78. package/dist/tasks/complete.js.map +1 -1
  79. package/dist/tasks/find.d.ts.map +1 -1
  80. package/dist/tasks/find.js +4 -1
  81. package/dist/tasks/find.js.map +1 -1
  82. package/dist/tasks/labels.d.ts.map +1 -1
  83. package/dist/tasks/labels.js +4 -1
  84. package/dist/tasks/labels.js.map +1 -1
  85. package/dist/tasks/relates.d.ts.map +1 -1
  86. package/dist/tasks/relates.js +16 -4
  87. package/dist/tasks/relates.js.map +1 -1
  88. package/dist/tasks/show.d.ts.map +1 -1
  89. package/dist/tasks/show.js +4 -1
  90. package/dist/tasks/show.js.map +1 -1
  91. package/dist/tasks/update.d.ts.map +1 -1
  92. package/dist/tasks/update.js +32 -6
  93. package/dist/tasks/update.js.map +1 -1
  94. package/dist/validation/engine.d.ts.map +1 -1
  95. package/dist/validation/engine.js +16 -4
  96. package/dist/validation/engine.js.map +1 -1
  97. package/dist/validation/param-utils.d.ts +5 -3
  98. package/dist/validation/param-utils.d.ts.map +1 -1
  99. package/dist/validation/param-utils.js +8 -6
  100. package/dist/validation/param-utils.js.map +1 -1
  101. package/dist/validation/protocols/_shared.d.ts.map +1 -1
  102. package/dist/validation/protocols/_shared.js +13 -6
  103. package/dist/validation/protocols/_shared.js.map +1 -1
  104. package/package.json +7 -7
  105. package/src/adapters/__tests__/manager.test.ts +0 -1
  106. package/src/codebase-map/analyzers/architecture.ts +0 -1
  107. package/src/conduit/__tests__/local-credential-flow.test.ts +20 -18
  108. package/src/conduit/__tests__/local-transport.test.ts +14 -12
  109. package/src/conduit/local-transport.ts +23 -13
  110. package/src/config.ts +0 -1
  111. package/src/errors.ts +24 -0
  112. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.ts +2 -5
  113. package/src/init.ts +1 -2
  114. package/src/internal.ts +49 -2
  115. package/src/lifecycle/cant/lifecycle-rcasd.cant +133 -0
  116. package/src/memory/__tests__/engine-compat.test.ts +2 -2
  117. package/src/memory/__tests__/pipeline-manifest-sqlite.test.ts +4 -4
  118. package/src/observability/__tests__/index.test.ts +4 -4
  119. package/src/observability/__tests__/log-filter.test.ts +4 -4
  120. package/src/output.ts +73 -75
  121. package/src/sessions/__tests__/session-grade.integration.test.ts +1 -1
  122. package/src/sessions/__tests__/session-grade.test.ts +2 -2
  123. package/src/skills/__tests__/dynamic-skill-generator.test.ts +0 -2
  124. package/src/skills/dynamic-skill-generator.ts +0 -2
  125. package/src/store/__tests__/agent-registry-accessor.test.ts +807 -0
  126. package/src/store/__tests__/api-key-kdf.test.ts +113 -0
  127. package/src/store/__tests__/conduit-sqlite.test.ts +413 -0
  128. package/src/store/__tests__/global-salt.test.ts +195 -0
  129. package/src/store/__tests__/migrate-signaldock-to-conduit.test.ts +715 -0
  130. package/src/store/__tests__/signaldock-sqlite.test.ts +652 -0
  131. package/src/store/__tests__/sqlite-backup-global.test.ts +307 -3
  132. package/src/store/__tests__/sqlite-backup.test.ts +5 -1
  133. package/src/store/__tests__/t310-integration.test.ts +1150 -0
  134. package/src/store/agent-registry-accessor.ts +847 -140
  135. package/src/store/api-key-kdf.ts +104 -0
  136. package/src/store/conduit-sqlite.ts +655 -0
  137. package/src/store/global-salt.ts +175 -0
  138. package/src/store/migrate-signaldock-to-conduit.ts +669 -0
  139. package/src/store/signaldock-sqlite.ts +431 -254
  140. package/src/store/sqlite-backup.ts +185 -10
  141. package/src/system/backup.ts +2 -62
  142. package/src/system/runtime.ts +4 -6
  143. package/src/tasks/__tests__/error-hints.test.ts +256 -0
  144. package/src/tasks/add.ts +99 -9
  145. package/src/tasks/complete.ts +4 -1
  146. package/src/tasks/find.ts +4 -1
  147. package/src/tasks/labels.ts +4 -1
  148. package/src/tasks/relates.ts +16 -4
  149. package/src/tasks/show.ts +4 -1
  150. package/src/tasks/update.ts +32 -3
  151. package/src/validation/__tests__/error-hints.test.ts +97 -0
  152. package/src/validation/engine.ts +16 -1
  153. package/src/validation/param-utils.ts +10 -7
  154. package/src/validation/protocols/_shared.ts +14 -6
  155. package/src/validation/protocols/cant/architecture-decision.cant +80 -0
  156. package/src/validation/protocols/cant/artifact-publish.cant +95 -0
  157. package/src/validation/protocols/cant/consensus.cant +74 -0
  158. package/src/validation/protocols/cant/contribution.cant +82 -0
  159. package/src/validation/protocols/cant/decomposition.cant +92 -0
  160. package/src/validation/protocols/cant/implementation.cant +67 -0
  161. package/src/validation/protocols/cant/provenance.cant +88 -0
  162. package/src/validation/protocols/cant/release.cant +96 -0
  163. package/src/validation/protocols/cant/research.cant +66 -0
  164. package/src/validation/protocols/cant/specification.cant +67 -0
  165. package/src/validation/protocols/cant/testing.cant +88 -0
  166. package/src/validation/protocols/cant/validation.cant +65 -0
  167. package/src/validation/protocols/protocols-markdown/decomposition.md +0 -4
  168. package/templates/config.template.json +0 -1
  169. package/templates/global-config.template.json +0 -1
@@ -0,0 +1,80 @@
1
+ ---
2
+ kind: protocol
3
+ version: 1.0.0
4
+ id: ADR
5
+ title: "Architecture Decision Record Protocol"
6
+ status: active
7
+ type: conditional
8
+ audience: "llm-agent, orchestrator"
9
+ tags: "adr, architecture, decisions"
10
+ skillRef: ct-adr-recorder
11
+ lastUpdated: 2026-04-07
12
+ enforcement: advisory
13
+ ---
14
+
15
+ # Architecture Decision Record (ADR) Protocol
16
+ #
17
+ # Provenance: @task T4798 (ADR-006 Implementation)
18
+ # Type: Conditional Protocol
19
+ # Stage: RCADSD - A (ADR)
20
+ # Max Active: 3 protocols (including base)
21
+ #
22
+ # Trigger Conditions
23
+ #
24
+ # This protocol activates when the task involves:
25
+ # Decision Recording: "decision", "adr", "architecture decision"
26
+ # Stage Transition: "after consensus", "begin adr"
27
+ # Formalization: "lock in decision", "formalize choice", "decide"
28
+ # Architectural Shift: "pivot", "new architecture", "supersede"
29
+ # Record Creation: "create adr", "write adr", "record decision"
30
+ #
31
+ # Explicit Override: --protocol adr flag on task creation.
32
+ #
33
+ # Requirements (RFC 2119)
34
+ #
35
+ # MUST:
36
+ # ADR-001: MUST be generated from an accepted Consensus report verdict
37
+ # ADR-002: MUST include a consensus_manifest_id linking to its originating consensus
38
+ # ADR-003: MUST require explicit HITL approval to transition from proposed to accepted
39
+ # ADR-004: MUST include Context, Options Evaluated, Decision, Rationale, and Consequences sections
40
+ # ADR-005: MUST trigger downstream invalidation if superseded
41
+ # ADR-006: MUST be stored in the canonical decisions SQLite table via Drizzle ORM
42
+ # ADR-007: MUST set agent_type: "decision" in manifest entry
43
+ # ADR-008: MUST block the Specification stage until the ADR status is accepted
44
+ #
45
+ # SHOULD:
46
+ # ADR-010: SHOULD document the exact data structures or schema changes required
47
+ # ADR-011: SHOULD explicitly list which existing ADRs are superseded, with rationale
48
+ # ADR-012: SHOULD flag known technical debt introduced by the decision
49
+ # ADR-013: SHOULD document rejected alternatives with rationale for rejection
50
+ #
51
+ # MAY:
52
+ # ADR-020: MAY include diagrams (Mermaid) illustrating the architectural shift
53
+ # ADR-021: MAY link to external prior art or research documents
54
+ # ADR-022: MAY reference related ADRs that are not superseded but contextually relevant
55
+ #
56
+ # Decision Status Lifecycle:
57
+ # proposed -> accepted -> superseded
58
+ # \-> deprecated
59
+ #
60
+ # HITL Gate:
61
+ # 1. Agent drafts the ADR based on consensus verdict
62
+ # 2. Status is set to proposed
63
+ # 3. Pipeline pauses (HANDOFF_REQUIRED - exit code 65)
64
+ # 4. Human reviews the proposed ADR
65
+ # 5. If approved, status transitions to accepted
66
+ # 6. Only an accepted ADR unlocks the Specification stage
67
+ #
68
+ # Exit Codes:
69
+ # 65: HANDOFF_REQUIRED - ADR drafted as proposed, awaiting HITL acceptance
70
+ # 84: PROVENANCE_REQUIRED - Attempted to create ADR without linked Consensus report
71
+ # 18: CASCADE_FAILED - Downstream work blocked because governing ADR was superseded
72
+ #
73
+ # Anti-Patterns:
74
+ # - Creating ADR without consensus (decisions lack evidence foundation)
75
+ # - Auto-accepting without HITL review (bypasses human oversight gate)
76
+ # - Omitting downstream impact section (future implementers unaware of cascade)
77
+ # - Superseding without updating specs (creates orphaned specifications)
78
+ # - Using ADR to define implementation requirements (that is Specification's role)
79
+ # - Storing ADR only as markdown without SQLite record (loses relational queries)
80
+ # - Skipping rejected alternatives (loses institutional knowledge)
@@ -0,0 +1,95 @@
1
+ ---
2
+ kind: protocol
3
+ version: 1.0.0
4
+ id: ART
5
+ title: "Artifact Publish Protocol"
6
+ status: active
7
+ type: cross-cutting
8
+ audience: "llm-agent, orchestrator"
9
+ tags: "artifact, publish, distribution"
10
+ skillRef: ct-artifact-publisher
11
+ lastUpdated: 2026-04-07
12
+ enforcement: advisory
13
+ ---
14
+
15
+ # Artifact Publish Protocol
16
+ #
17
+ # Type: Conditional Protocol
18
+ # Max Active: 3 protocols (including base)
19
+ #
20
+ # Relationship to Release Protocol:
21
+ # This protocol orchestrates artifact building and publishing.
22
+ # Release orchestrates version bumping, tagging, and changelog.
23
+ # They compose: release triggers artifact-publish for distribution phase.
24
+ #
25
+ # Trigger Conditions
26
+ #
27
+ # This protocol activates when the task involves:
28
+ # Package Publish: "publish", "package", "distribute"
29
+ # Artifact Build: "artifact", "build artifact", "bundle"
30
+ # Container Push: "docker push", "container registry", "image publish"
31
+ # Language Package: "crate", "gem", "wheel", "sdist"
32
+ # Multi-Artifact: "publish all", "release artifacts", "multi-package"
33
+ #
34
+ # Explicit Override: --protocol artifact-publish flag on task creation.
35
+ #
36
+ # Requirements (RFC 2119)
37
+ #
38
+ # MUST:
39
+ # ARTP-001: MUST validate artifact configuration before build
40
+ # ARTP-002: MUST execute dry-run before any real publish
41
+ # ARTP-003: MUST follow handler interface contract: validate -> build -> publish
42
+ # ARTP-004: MUST generate SHA-256 checksums for all built artifacts
43
+ # ARTP-005: MUST record provenance metadata via record_release()
44
+ # ARTP-006: MUST use sequential execution for multi-artifact publish
45
+ # ARTP-007: MUST set agent_type: "artifact-publish" in manifest
46
+ # ARTP-008: MUST NOT store credentials in config, output, or manifest
47
+ # ARTP-009: MUST halt pipeline and attempt rollback on first publish failure
48
+ #
49
+ # SHOULD:
50
+ # ARTP-010: SHOULD verify registry reachability before publish
51
+ # ARTP-011: SHOULD validate version consistency between config and artifact metadata
52
+ # ARTP-012: SHOULD log all publish operations to audit trail
53
+ # ARTP-013: SHOULD verify build output exists and is non-empty before publish
54
+ #
55
+ # MAY:
56
+ # ARTP-020: MAY batch validation across all artifacts before starting builds
57
+ # ARTP-021: MAY generate SBOM alongside artifacts (delegate to provenance)
58
+ # ARTP-022: MAY sign artifacts using configured signing method (delegate to provenance)
59
+ #
60
+ # Artifact Lifecycle State Machine:
61
+ # configured -> validated -> built -> published
62
+ # | | |
63
+ # failed failed failed -> rollback
64
+ #
65
+ # Registered Handlers (9 types):
66
+ # npm-package, python-wheel, python-sdist, go-module,
67
+ # cargo-crate, ruby-gem, docker-image, github-release, generic-tarball
68
+ #
69
+ # Multi-Artifact Pipeline Phases:
70
+ # Phase 1: Pre-validate all artifacts
71
+ # Phase 2: Build sequential per artifact
72
+ # Phase 3: Publish with rollback on failure
73
+ #
74
+ # Credential Handling:
75
+ # Agents MUST NOT store, log, or embed credentials
76
+ # Resolution order: env var -> CI secret -> credential manager (future)
77
+ #
78
+ # Error Codes (85-89):
79
+ # 85: E_ARTIFACT_TYPE_UNKNOWN
80
+ # 86: E_ARTIFACT_VALIDATION_FAILED
81
+ # 87: E_ARTIFACT_BUILD_FAILED
82
+ # 88: E_ARTIFACT_PUBLISH_FAILED (rollback attempted)
83
+ # 89: E_ARTIFACT_ROLLBACK_FAILED
84
+ #
85
+ # Anti-Patterns:
86
+ # - Publishing without dry-run first (irreversible registry state)
87
+ # - Storing credentials in config.json (committed to VCS)
88
+ # - Parallel multi-artifact publish (race conditions)
89
+ # - Skipping checksum generation (cannot verify integrity)
90
+ # - Publishing without version check (duplicate version errors)
91
+ # - Ignoring publish failures (inconsistent state)
92
+ # - Logging credential values (exposure in audit trail)
93
+ # - Building without validation (wastes time)
94
+ # - Manual rollback without recording (lost provenance chain)
95
+ # - Hardcoding registry URLs (breaks across environments)
@@ -0,0 +1,74 @@
1
+ ---
2
+ kind: protocol
3
+ version: 1.0.0
4
+ id: CONS
5
+ title: "Consensus Protocol"
6
+ status: active
7
+ type: conditional
8
+ audience: "llm-agent, orchestrator"
9
+ tags: "consensus, voting, validation"
10
+ skillRef: ct-consensus-voter
11
+ lastUpdated: 2026-04-07
12
+ enforcement: strict
13
+ ---
14
+
15
+ # Consensus Protocol
16
+ #
17
+ # Provenance: @task T3155, @epic T3147
18
+ # Type: Conditional Protocol
19
+ # Max Active: 3 protocols (including base)
20
+ #
21
+ # Trigger Conditions
22
+ #
23
+ # This protocol activates when the task involves:
24
+ # Decision Making: "vote", "decide", "choose", "select"
25
+ # Agreement: "consensus", "agree", "alignment"
26
+ # Conflict Resolution: "resolve", "dispute", "conflict"
27
+ # Validation: "validate claim", "verify assertion"
28
+ #
29
+ # Explicit Override: --protocol consensus flag on task creation.
30
+ #
31
+ # Requirements (RFC 2119)
32
+ #
33
+ # MUST:
34
+ # CONS-001: MUST use structured voting format
35
+ # CONS-002: MUST document rationale for each position
36
+ # CONS-003: MUST include confidence scores (0.0-1.0)
37
+ # CONS-004: MUST cite evidence supporting positions
38
+ # CONS-005: MUST flag conflicts with severity levels
39
+ # CONS-006: MUST escalate to HITL when threshold not reached
40
+ # CONS-007: MUST set agent_type: "analysis" in manifest
41
+ #
42
+ # SHOULD:
43
+ # CONS-010: SHOULD present multiple perspectives
44
+ # CONS-011: SHOULD identify hidden assumptions
45
+ # CONS-012: SHOULD document rejected alternatives
46
+ # CONS-013: SHOULD include uncertainty notes for low confidence
47
+ #
48
+ # MAY:
49
+ # CONS-020: MAY propose compromise positions
50
+ # CONS-021: MAY defer non-critical decisions
51
+ # CONS-022: MAY request additional research
52
+ #
53
+ # Verdict Thresholds:
54
+ # PROVEN: 3/5 agents OR 50%+ weighted confidence, reproducible evidence
55
+ # REFUTED: Counter-evidence invalidates, counter-proof exists
56
+ # CONTESTED: 3/5 split after 2 challenge rounds, document both sides
57
+ # INSUFFICIENT_EVIDENCE: Cannot reach verdict, request investigation
58
+ #
59
+ # HITL Escalation:
60
+ # - Contested verdict (3/5 split): Present conflict to user
61
+ # - Critical severity conflict: Immediate escalation
62
+ # - Insufficient evidence: Request user guidance
63
+ # - Unanimous suspicious consensus: Verify with user
64
+ #
65
+ # Exit Codes:
66
+ # EXIT_PROTOCOL_CONSENSUS (61) - Consensus protocol violation
67
+ # EXIT_PROTOCOL_GENERIC (67) - Generic protocol error
68
+ #
69
+ # Anti-Patterns:
70
+ # - Accepting unanimous consensus without scrutiny (may indicate groupthink)
71
+ # - Skipping evidence citations (decisions lack foundation)
72
+ # - Binary voting without confidence (loses nuance)
73
+ # - Ignoring minority positions (may miss valid concerns)
74
+ # - Premature escalation (wastes human attention)
@@ -0,0 +1,82 @@
1
+ ---
2
+ kind: protocol
3
+ version: 1.0.0
4
+ id: CONT
5
+ title: "Contribution Protocol"
6
+ status: active
7
+ type: cross-cutting
8
+ audience: "llm-agent, orchestrator"
9
+ tags: "contribution, commit, pr"
10
+ skillRef: ct-contribution
11
+ lastUpdated: 2026-02-24
12
+ enforcement: strict
13
+ ---
14
+
15
+ # Contribution Protocol
16
+ #
17
+ # Provenance: @task T3155, @epic T3147
18
+ # Type: Cross-Cutting Protocol
19
+ # Applies To: All RCASD-IVTR+C stages
20
+ # Max Active: 3 protocols (including base)
21
+ #
22
+ # Cross-Cutting Nature: This protocol applies across ALL stages of RCASD-IVTR+C.
23
+ # Unlike stage-specific protocols, contribution tracking is active whenever
24
+ # multi-agent coordination or attribution is needed.
25
+ #
26
+ # Trigger Conditions
27
+ #
28
+ # This protocol activates when the task involves:
29
+ # Shared File Modification: Modifying CLAUDE.md, AGENTS.md, shared configs
30
+ # PR Creation: "pull request", "PR", "merge request"
31
+ # Cross-Session Work: Multiple agents on same epic
32
+ # Audit Trail: Provenance, attribution, tracking
33
+ #
34
+ # Explicit Override: --protocol contribution flag on task creation.
35
+ #
36
+ # Requirements (RFC 2119)
37
+ #
38
+ # MUST:
39
+ # CONT-001: MUST follow commit message conventions
40
+ # CONT-002: MUST include provenance tags in code comments
41
+ # CONT-003: MUST pass all validation gates before merge
42
+ # CONT-004: MUST document decisions with rationale
43
+ # CONT-005: MUST flag conflicts with other sessions
44
+ # CONT-006: MUST write contribution record to manifest
45
+ # CONT-007: MUST set agent_type: "implementation" in manifest
46
+ #
47
+ # SHOULD:
48
+ # CONT-010: SHOULD include test coverage for changes
49
+ # CONT-011: SHOULD link to related tasks and research
50
+ # CONT-012: SHOULD document rejected alternatives
51
+ # CONT-013: SHOULD request review for significant changes
52
+ #
53
+ # MAY:
54
+ # CONT-020: MAY batch related changes into single contribution
55
+ # CONT-021: MAY defer documentation updates
56
+ # CONT-022: MAY propose follow-up improvements
57
+ #
58
+ # Commit Message Format:
59
+ # <type>(<scope>): <summary>
60
+ # Types: feat, fix, docs, test, refactor, chore, perf
61
+ #
62
+ # Validation Gates:
63
+ # Schema: JSON Schema validation (MUST pass)
64
+ # Tests: All tests pass (MUST pass)
65
+ # Lint: Code style compliance (SHOULD pass)
66
+ # Security: No secrets committed (MUST pass)
67
+ # Conflicts: No unresolved conflicts (MUST resolve)
68
+ #
69
+ # Provenance Thresholds:
70
+ # New code: 100%
71
+ # Existing code: 80%
72
+ # Legacy code: 50%
73
+ #
74
+ # Exit Codes:
75
+ # EXIT_PROTOCOL_CONTRIBUTION (65) - Contribution protocol violation
76
+ #
77
+ # Anti-Patterns:
78
+ # - Committing without provenance (breaks audit trail)
79
+ # - Skipping validation gates (quality regression)
80
+ # - Ignoring conflicts (creates merge debt)
81
+ # - Large unfocused commits (hard to review/revert)
82
+ # - Missing decision documentation (lost context)
@@ -0,0 +1,92 @@
1
+ ---
2
+ kind: protocol
3
+ version: 2.0.0
4
+ id: DCMP
5
+ title: "Decomposition Protocol"
6
+ status: active
7
+ type: conditional
8
+ audience: "llm-agent, orchestrator"
9
+ tags: "decomposition, hierarchy, atomicity, planning"
10
+ skillRef: ct-epic-architect
11
+ lastUpdated: 2026-02-24
12
+ provenanceTask: T3155
13
+ enforcement: strict
14
+ ---
15
+
16
+ # Decomposition Protocol
17
+ #
18
+ # Provenance: @task T3155, @epic T3147
19
+ # Type: Conditional Protocol
20
+ # Max Active: 3 protocols (including base)
21
+ #
22
+ # Trigger Conditions
23
+ #
24
+ # This protocol activates when the task involves:
25
+ # Epic Planning: "epic", "project", "initiative"
26
+ # Breakdown: "decompose", "break down", "split"
27
+ # Planning: "plan", "roadmap", "phases"
28
+ # Analysis: "scope", "estimate complexity"
29
+ #
30
+ # Explicit Override: --protocol decomposition flag on task creation.
31
+ #
32
+ # Hard Invariants (always enforced):
33
+ # - Parent must exist: parent task ID must be present in the task store
34
+ # - No circular references: moving a task under its own descendant is rejected
35
+ # - Dependency DAG integrity: blockedBy/blocks must remain acyclic
36
+ #
37
+ # Configurable Limits (profile-driven):
38
+ # maxSiblings: default 0 (unlimited for llm-agent-first); 7 for human-cognitive
39
+ # maxActiveSiblings: default 32 (operational concurrency guard)
40
+ # maxDepth: default 3 (epic -> task -> subtask)
41
+ #
42
+ # Enforcement Profiles:
43
+ # llm-agent-first (default): maxSiblings=0, maxActiveSiblings=32, maxDepth=3
44
+ # human-cognitive: maxSiblings=7, maxActiveSiblings=3, maxDepth=3
45
+ #
46
+ # Requirements (RFC 2119)
47
+ #
48
+ # MUST:
49
+ # DCMP-001: MUST follow MECE principle (Mutually Exclusive, Collectively Exhaustive)
50
+ # DCMP-002: MUST map dependencies between tasks
51
+ # DCMP-003: MUST respect the configured hierarchy.maxDepth policy (default: 3)
52
+ # DCMP-004: MUST verify atomicity for leaf tasks
53
+ # DCMP-005: MUST NOT include time estimates (use size: small/medium/large)
54
+ # DCMP-006: MUST include acceptance criteria for each task
55
+ # DCMP-007: Siblings MUST respect the configured hierarchy.maxSiblings policy
56
+ # DCMP-008: Depth MUST respect the configured hierarchy.maxDepth policy
57
+ # DCMP-009: MUST set agent_type: "analysis" in manifest
58
+ #
59
+ # SHOULD:
60
+ # DCMP-010: SHOULD identify parallel execution opportunities
61
+ # DCMP-011: SHOULD flag unclear requirements for HITL
62
+ # DCMP-012: SHOULD consider existing task overlap
63
+ # DCMP-013: SHOULD assign phase to each task
64
+ #
65
+ # MAY:
66
+ # DCMP-020: MAY propose multiple decomposition options
67
+ # DCMP-021: MAY identify risks and mitigations
68
+ # DCMP-022: MAY suggest task consolidation
69
+ #
70
+ # Atomicity Criteria (6-Point Test):
71
+ # 1. Single File Scope: Affects <=3 tightly-coupled files
72
+ # 2. Single Cognitive Concern: One bounded concern per task
73
+ # 3. Clear Acceptance Criteria: Testable completion condition
74
+ # 4. No Context Switching: Completable within a single agent session
75
+ # 5. No Hidden Sub-Decisions: All choices made at decomposition
76
+ # 6. Programmatic Validation: Result verifiable by code/test
77
+ #
78
+ # Size Definitions:
79
+ # small: 1-2 files, single concern, MUST be atomic
80
+ # medium: 3-7 files, related concerns, SHOULD be atomic
81
+ # large: 8+ files, multiple concerns, MUST decompose further
82
+ #
83
+ # Exit Codes:
84
+ # EXIT_PROTOCOL_DECOMPOSITION (63) - Decomposition protocol violation
85
+ #
86
+ # Anti-Patterns:
87
+ # - Time estimates (cannot predict duration accurately)
88
+ # - Non-atomic leaf tasks (create hidden work)
89
+ # - Missing dependencies (incorrect execution order)
90
+ # - Exceeding configured maxDepth (complexity explosion)
91
+ # - Overlapping scopes (not MECE - duplicate work)
92
+ # - Skipping atomicity check (quality regression)
@@ -0,0 +1,67 @@
1
+ ---
2
+ kind: protocol
3
+ version: 1.0.0
4
+ id: IMPL
5
+ title: "Implementation Protocol"
6
+ status: active
7
+ type: base
8
+ audience: "llm-agent"
9
+ tags: "implementation, coding, development"
10
+ skillRef: ct-task-executor
11
+ lastUpdated: 2026-02-24
12
+ enforcement: strict
13
+ ---
14
+
15
+ # Implementation Protocol
16
+ #
17
+ # Provenance: @task T3155, @epic T3147
18
+ # Type: Conditional Protocol
19
+ # Max Active: 3 protocols (including base)
20
+ #
21
+ # Trigger Conditions
22
+ #
23
+ # This protocol activates when the task involves:
24
+ # Building: "implement", "build", "create", "develop"
25
+ # Coding: "code", "write", "program"
26
+ # Fixing: "fix", "bug", "patch", "repair"
27
+ # Enhancement: "improve", "enhance", "optimize"
28
+ #
29
+ # Explicit Override: --protocol implementation flag on task creation.
30
+ #
31
+ # Requirements (RFC 2119)
32
+ #
33
+ # MUST:
34
+ # IMPL-001: MUST include tests for new functionality
35
+ # IMPL-002: MUST follow project code style conventions
36
+ # IMPL-003: MUST include JSDoc/docstring provenance tags
37
+ # IMPL-004: MUST verify changes pass existing tests
38
+ # IMPL-005: MUST document breaking changes
39
+ # IMPL-006: MUST write implementation summary to manifest
40
+ # IMPL-007: MUST set agent_type: "implementation" in manifest
41
+ #
42
+ # SHOULD:
43
+ # IMPL-010: SHOULD add inline comments for complex logic
44
+ # IMPL-011: SHOULD refactor duplicated code
45
+ # IMPL-012: SHOULD update related documentation
46
+ # IMPL-013: SHOULD consider error handling edge cases
47
+ #
48
+ # MAY:
49
+ # IMPL-020: MAY propose architectural improvements
50
+ # IMPL-021: MAY add performance benchmarks
51
+ # IMPL-022: MAY suggest follow-up enhancements
52
+ #
53
+ # Provenance Thresholds:
54
+ # New code: 100% coverage required
55
+ # Existing code: 80% coverage required
56
+ # Legacy code: 50% coverage required
57
+ #
58
+ # Exit Codes:
59
+ # EXIT_PROTOCOL_IMPLEMENTATION (64) - Implementation protocol violation
60
+ #
61
+ # Anti-Patterns:
62
+ # - Code without tests (regression risk)
63
+ # - Missing provenance (lost attribution)
64
+ # - Skipping validation (quality regression)
65
+ # - Undocumented breaking changes (surprise failures)
66
+ # - No error handling (silent failures)
67
+ # - Hardcoded values (maintenance burden)
@@ -0,0 +1,88 @@
1
+ ---
2
+ kind: protocol
3
+ version: 1.0.0
4
+ id: PROV
5
+ title: "Provenance Protocol"
6
+ status: active
7
+ type: cross-cutting
8
+ audience: "llm-agent, orchestrator"
9
+ tags: "provenance, traceability, lineage"
10
+ skillRef: ct-provenance-keeper
11
+ lastUpdated: 2026-04-07
12
+ enforcement: advisory
13
+ ---
14
+
15
+ # Provenance Protocol
16
+ #
17
+ # Type: Conditional Protocol
18
+ # Max Active: 3 protocols (including base)
19
+ #
20
+ # Trigger Conditions
21
+ #
22
+ # This protocol activates when the task involves:
23
+ # Supply Chain: "provenance", "supply chain", "chain of custody"
24
+ # Attestation: "attest", "attestation", "in-toto", "SLSA"
25
+ # SBOM: "sbom", "bill of materials", "cyclonedx", "spdx"
26
+ # Signing: "sign", "cosign", "sigstore", "verify signature"
27
+ # Checksums: "checksum", "digest", "sha256", "integrity"
28
+ #
29
+ # Explicit Override: --protocol provenance flag on task creation.
30
+ #
31
+ # Requirements (RFC 2119)
32
+ #
33
+ # MUST:
34
+ # PROV-001: MUST record provenance chain from source commit to published artifact
35
+ # PROV-002: MUST compute SHA-256 digest for every produced artifact
36
+ # PROV-003: MUST generate attestation in in-toto Statement v1 format
37
+ # PROV-004: MUST record SLSA Build Level achieved (L1 minimum)
38
+ # PROV-005: MUST store provenance record in .cleo/releases.json via record_release()
39
+ # PROV-006: MUST verify provenance chain integrity before publishing attestation
40
+ # PROV-007: MUST set agent_type: "provenance" in manifest
41
+ #
42
+ # SHOULD:
43
+ # PROV-010: SHOULD generate SBOM (CycloneDX or SPDX) for artifacts with dependencies
44
+ # PROV-011: SHOULD sign attestations using keyless signing (sigstore/cosign)
45
+ # PROV-012: SHOULD publish provenance attestation alongside artifact
46
+ # PROV-013: SHOULD verify all input materials have provenance
47
+ #
48
+ # MAY:
49
+ # PROV-020: MAY achieve SLSA Build Level 3 or 4
50
+ # PROV-021: MAY use key-based signing (GPG) as alternative to keyless
51
+ # PROV-022: MAY generate multiple SBOM formats (both CycloneDX and SPDX)
52
+ #
53
+ # Provenance Chain Model:
54
+ # commit -> build -> artifact -> attestation -> registry
55
+ #
56
+ # Chain Integrity Rules:
57
+ # Each link MUST reference previous link's output
58
+ # No link MAY be modified after creation (append-only)
59
+ # Missing links MUST be recorded as incomplete
60
+ # Chain MUST be verifiable offline
61
+ #
62
+ # SLSA Compliance Levels:
63
+ # L1: Provenance exists
64
+ # L2: Provenance signed + build on hosted platform
65
+ # L3: Non-falsifiable provenance
66
+ # L4: All deps have provenance + hermetic reproducible build
67
+ #
68
+ # Signing Methods:
69
+ # sigstore (default): cosign sign-blob --yes <artifact>
70
+ # gpg: gpg --detach-sign --armor -u <key-id> <artifact>
71
+ # none: Skip signing (SLSA L1 only)
72
+ #
73
+ # Error Codes (90-94):
74
+ # 90: E_PROVENANCE_CONFIG_INVALID
75
+ # 91: E_SIGNING_KEY_MISSING
76
+ # 92: E_SIGNATURE_INVALID
77
+ # 93: E_DIGEST_MISMATCH
78
+ # 94: E_ATTESTATION_INVALID
79
+ #
80
+ # Anti-Patterns:
81
+ # - Skipping digest computation (breaks chain integrity)
82
+ # - Hardcoding signing keys in config (security risk)
83
+ # - Generating attestation without matching digest
84
+ # - Publishing artifact before signing
85
+ # - Modifying provenance records after creation
86
+ # - Skipping SBOM for artifacts with dependencies
87
+ # - Using SHA-1 or MD5 for digests (cryptographically broken)
88
+ # - Storing private keys in .cleo/ directory
@@ -0,0 +1,96 @@
1
+ ---
2
+ kind: protocol
3
+ version: 1.0.0
4
+ id: REL
5
+ title: "Release Protocol"
6
+ status: active
7
+ type: conditional
8
+ audience: "llm-agent, orchestrator"
9
+ tags: "release, semver, changelog"
10
+ skillRef: ct-release-orchestrator
11
+ lastUpdated: 2026-04-07
12
+ enforcement: strict
13
+ ---
14
+
15
+ # Release Protocol
16
+ #
17
+ # Provenance: @task T3155, @epic T3147
18
+ # Type: Conditional Protocol
19
+ # Max Active: 3 protocols (including base)
20
+ #
21
+ # Trigger Conditions
22
+ #
23
+ # This protocol activates when the task involves:
24
+ # Version: "release", "version", "v1.x.x"
25
+ # Publish: "publish", "deploy", "ship"
26
+ # Changelog: "changelog", "release notes"
27
+ # Tag: "tag", "milestone", "GA"
28
+ #
29
+ # Explicit Override: --protocol release flag on task creation.
30
+ #
31
+ # Requirements (RFC 2119)
32
+ #
33
+ # MUST:
34
+ # RLSE-001: MUST follow semantic versioning (semver)
35
+ # RLSE-002: MUST update changelog with all changes
36
+ # RLSE-003: MUST pass all validation gates before release
37
+ # RLSE-004: MUST tag release in version control
38
+ # RLSE-005: MUST document breaking changes with migration path
39
+ # RLSE-006: MUST verify version consistency across files
40
+ # RLSE-007: MUST set agent_type: "documentation" in manifest
41
+ #
42
+ # SHOULD:
43
+ # RLSE-010: SHOULD include upgrade instructions
44
+ # RLSE-011: SHOULD verify documentation is current
45
+ # RLSE-012: SHOULD test installation process
46
+ # RLSE-013: SHOULD create backup before release
47
+ # RLSE-014: SHOULD run test suite for major/minor releases
48
+ # RLSE-015: SHOULD verify tests pass before tagging
49
+ #
50
+ # MAY:
51
+ # RLSE-020: MAY include performance benchmarks
52
+ # RLSE-021: MAY announce on communication channels
53
+ # RLSE-022: MAY batch minor fixes into single release
54
+ #
55
+ # State Machine:
56
+ # create -> planned -> active -> released (immutable)
57
+ #
58
+ # Ship Workflow (10 steps):
59
+ # 1. Auto-populate release tasks
60
+ # 1.5. Run release guards
61
+ # 2. Bump version (if --bump-version)
62
+ # 3. Ensure [Unreleased] section in CHANGELOG.md
63
+ # 4. Generate changelog from task metadata
64
+ # 5. Validate changelog content
65
+ # 6. Append to CHANGELOG.md + platform outputs
66
+ # 7. Run validation gates
67
+ # 8. Create release commit
68
+ # 9. Create annotated tag (if --create-tag)
69
+ # 10. Push to remote (if --push)
70
+ # 11. Update release status to released
71
+ #
72
+ # Composition with Sub-Protocols:
73
+ # artifact-publish: Conditional, triggered when release config has artifact handlers
74
+ # provenance: Conditional, invoked transitively via artifact-publish for signing
75
+ #
76
+ # Error Codes (50-59):
77
+ # 50: E_RELEASE_NOT_FOUND
78
+ # 51: E_RELEASE_EXISTS
79
+ # 52: E_RELEASE_LOCKED
80
+ # 53: E_INVALID_VERSION
81
+ # 54: E_VALIDATION_FAILED
82
+ # 55: E_VERSION_BUMP_FAILED
83
+ # 56: E_TAG_CREATION_FAILED
84
+ # 57: E_CHANGELOG_GENERATION_FAILED
85
+ # 58: E_TAG_EXISTS
86
+ # 59: E_TASKS_INCOMPLETE
87
+ #
88
+ # Anti-Patterns:
89
+ # - Skipping version bump (version confusion)
90
+ # - Missing changelog entry (lost history)
91
+ # - Undocumented breaking changes (user frustration)
92
+ # - No release tag (cannot reference version)
93
+ # - Incomplete checklist (missed steps)
94
+ # - Major releases without --run-tests (quality risk)
95
+ # - Ignoring epic completeness warnings
96
+ # - Overusing --force (bypasses guards)