@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.
- package/dist/codebase-map/analyzers/architecture.d.ts.map +1 -1
- package/dist/codebase-map/analyzers/architecture.js +0 -1
- package/dist/codebase-map/analyzers/architecture.js.map +1 -1
- package/dist/conduit/local-transport.d.ts +18 -8
- package/dist/conduit/local-transport.d.ts.map +1 -1
- package/dist/conduit/local-transport.js +23 -13
- package/dist/conduit/local-transport.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -1
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +19 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +6 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.js +175 -68950
- package/dist/index.js.map +1 -7
- package/dist/init.d.ts +1 -2
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +1 -2
- package/dist/init.js.map +1 -1
- package/dist/internal.d.ts +8 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +13 -6
- package/dist/internal.js.map +1 -1
- package/dist/memory/learnings.d.ts +2 -2
- package/dist/memory/patterns.d.ts +6 -6
- package/dist/output.d.ts +32 -11
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +67 -67
- package/dist/output.js.map +1 -1
- package/dist/paths.js +80 -14
- package/dist/paths.js.map +1 -1
- package/dist/skills/dynamic-skill-generator.d.ts +0 -2
- package/dist/skills/dynamic-skill-generator.d.ts.map +1 -1
- package/dist/skills/dynamic-skill-generator.js.map +1 -1
- package/dist/store/agent-registry-accessor.d.ts +203 -12
- package/dist/store/agent-registry-accessor.d.ts.map +1 -1
- package/dist/store/agent-registry-accessor.js +618 -100
- package/dist/store/agent-registry-accessor.js.map +1 -1
- package/dist/store/api-key-kdf.d.ts +73 -0
- package/dist/store/api-key-kdf.d.ts.map +1 -0
- package/dist/store/api-key-kdf.js +84 -0
- package/dist/store/api-key-kdf.js.map +1 -0
- package/dist/store/cleanup-legacy.js +171 -0
- package/dist/store/cleanup-legacy.js.map +1 -0
- package/dist/store/conduit-sqlite.d.ts +184 -0
- package/dist/store/conduit-sqlite.d.ts.map +1 -0
- package/dist/store/conduit-sqlite.js +570 -0
- package/dist/store/conduit-sqlite.js.map +1 -0
- package/dist/store/global-salt.d.ts +78 -0
- package/dist/store/global-salt.d.ts.map +1 -0
- package/dist/store/global-salt.js +147 -0
- package/dist/store/global-salt.js.map +1 -0
- package/dist/store/migrate-signaldock-to-conduit.d.ts +81 -0
- package/dist/store/migrate-signaldock-to-conduit.d.ts.map +1 -0
- package/dist/store/migrate-signaldock-to-conduit.js +555 -0
- package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
- package/dist/store/nexus-sqlite.js +28 -3
- package/dist/store/nexus-sqlite.js.map +1 -1
- package/dist/store/signaldock-sqlite.d.ts +122 -19
- package/dist/store/signaldock-sqlite.d.ts.map +1 -1
- package/dist/store/signaldock-sqlite.js +401 -251
- package/dist/store/signaldock-sqlite.js.map +1 -1
- package/dist/store/sqlite-backup.js +122 -4
- package/dist/store/sqlite-backup.js.map +1 -1
- package/dist/system/backup.d.ts +0 -26
- package/dist/system/backup.d.ts.map +1 -1
- package/dist/system/runtime.d.ts +0 -2
- package/dist/system/runtime.d.ts.map +1 -1
- package/dist/system/runtime.js +3 -3
- package/dist/system/runtime.js.map +1 -1
- package/dist/tasks/add.d.ts +1 -1
- package/dist/tasks/add.d.ts.map +1 -1
- package/dist/tasks/add.js +98 -23
- package/dist/tasks/add.js.map +1 -1
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +4 -1
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/find.d.ts.map +1 -1
- package/dist/tasks/find.js +4 -1
- package/dist/tasks/find.js.map +1 -1
- package/dist/tasks/labels.d.ts.map +1 -1
- package/dist/tasks/labels.js +4 -1
- package/dist/tasks/labels.js.map +1 -1
- package/dist/tasks/relates.d.ts.map +1 -1
- package/dist/tasks/relates.js +16 -4
- package/dist/tasks/relates.js.map +1 -1
- package/dist/tasks/show.d.ts.map +1 -1
- package/dist/tasks/show.js +4 -1
- package/dist/tasks/show.js.map +1 -1
- package/dist/tasks/update.d.ts.map +1 -1
- package/dist/tasks/update.js +32 -6
- package/dist/tasks/update.js.map +1 -1
- package/dist/validation/engine.d.ts.map +1 -1
- package/dist/validation/engine.js +16 -4
- package/dist/validation/engine.js.map +1 -1
- package/dist/validation/param-utils.d.ts +5 -3
- package/dist/validation/param-utils.d.ts.map +1 -1
- package/dist/validation/param-utils.js +8 -6
- package/dist/validation/param-utils.js.map +1 -1
- package/dist/validation/protocols/_shared.d.ts.map +1 -1
- package/dist/validation/protocols/_shared.js +13 -6
- package/dist/validation/protocols/_shared.js.map +1 -1
- package/package.json +7 -7
- package/src/adapters/__tests__/manager.test.ts +0 -1
- package/src/codebase-map/analyzers/architecture.ts +0 -1
- package/src/conduit/__tests__/local-credential-flow.test.ts +20 -18
- package/src/conduit/__tests__/local-transport.test.ts +14 -12
- package/src/conduit/local-transport.ts +23 -13
- package/src/config.ts +0 -1
- package/src/errors.ts +24 -0
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.ts +2 -5
- package/src/init.ts +1 -2
- package/src/internal.ts +49 -2
- package/src/lifecycle/cant/lifecycle-rcasd.cant +133 -0
- package/src/memory/__tests__/engine-compat.test.ts +2 -2
- package/src/memory/__tests__/pipeline-manifest-sqlite.test.ts +4 -4
- package/src/observability/__tests__/index.test.ts +4 -4
- package/src/observability/__tests__/log-filter.test.ts +4 -4
- package/src/output.ts +73 -75
- package/src/sessions/__tests__/session-grade.integration.test.ts +1 -1
- package/src/sessions/__tests__/session-grade.test.ts +2 -2
- package/src/skills/__tests__/dynamic-skill-generator.test.ts +0 -2
- package/src/skills/dynamic-skill-generator.ts +0 -2
- package/src/store/__tests__/agent-registry-accessor.test.ts +807 -0
- package/src/store/__tests__/api-key-kdf.test.ts +113 -0
- package/src/store/__tests__/conduit-sqlite.test.ts +413 -0
- package/src/store/__tests__/global-salt.test.ts +195 -0
- package/src/store/__tests__/migrate-signaldock-to-conduit.test.ts +715 -0
- package/src/store/__tests__/signaldock-sqlite.test.ts +652 -0
- package/src/store/__tests__/sqlite-backup-global.test.ts +307 -3
- package/src/store/__tests__/sqlite-backup.test.ts +5 -1
- package/src/store/__tests__/t310-integration.test.ts +1150 -0
- package/src/store/agent-registry-accessor.ts +847 -140
- package/src/store/api-key-kdf.ts +104 -0
- package/src/store/conduit-sqlite.ts +655 -0
- package/src/store/global-salt.ts +175 -0
- package/src/store/migrate-signaldock-to-conduit.ts +669 -0
- package/src/store/signaldock-sqlite.ts +431 -254
- package/src/store/sqlite-backup.ts +185 -10
- package/src/system/backup.ts +2 -62
- package/src/system/runtime.ts +4 -6
- package/src/tasks/__tests__/error-hints.test.ts +256 -0
- package/src/tasks/add.ts +99 -9
- package/src/tasks/complete.ts +4 -1
- package/src/tasks/find.ts +4 -1
- package/src/tasks/labels.ts +4 -1
- package/src/tasks/relates.ts +16 -4
- package/src/tasks/show.ts +4 -1
- package/src/tasks/update.ts +32 -3
- package/src/validation/__tests__/error-hints.test.ts +97 -0
- package/src/validation/engine.ts +16 -1
- package/src/validation/param-utils.ts +10 -7
- package/src/validation/protocols/_shared.ts +14 -6
- package/src/validation/protocols/cant/architecture-decision.cant +80 -0
- package/src/validation/protocols/cant/artifact-publish.cant +95 -0
- package/src/validation/protocols/cant/consensus.cant +74 -0
- package/src/validation/protocols/cant/contribution.cant +82 -0
- package/src/validation/protocols/cant/decomposition.cant +92 -0
- package/src/validation/protocols/cant/implementation.cant +67 -0
- package/src/validation/protocols/cant/provenance.cant +88 -0
- package/src/validation/protocols/cant/release.cant +96 -0
- package/src/validation/protocols/cant/research.cant +66 -0
- package/src/validation/protocols/cant/specification.cant +67 -0
- package/src/validation/protocols/cant/testing.cant +88 -0
- package/src/validation/protocols/cant/validation.cant +65 -0
- package/src/validation/protocols/protocols-markdown/decomposition.md +0 -4
- package/templates/config.template.json +0 -1
- 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)
|