cleargate 0.10.0 → 0.11.1
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/CHANGELOG.md +27 -0
- package/README.md +11 -1
- package/dist/MANIFEST.json +40 -26
- package/dist/chunk-HZPJ5QX4.js +459 -0
- package/dist/chunk-HZPJ5QX4.js.map +1 -0
- package/dist/cli.cjs +421 -204
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +389 -515
- package/dist/cli.js.map +1 -1
- package/dist/lib/lifecycle-reconcile.cjs +497 -0
- package/dist/lib/lifecycle-reconcile.cjs.map +1 -0
- package/dist/lib/lifecycle-reconcile.d.cts +136 -0
- package/dist/lib/lifecycle-reconcile.d.ts +136 -0
- package/dist/lib/lifecycle-reconcile.js +20 -0
- package/dist/lib/lifecycle-reconcile.js.map +1 -0
- package/dist/templates/cleargate-planning/.claude/agents/architect.md +55 -2
- package/dist/templates/cleargate-planning/.claude/agents/developer.md +22 -0
- package/dist/templates/cleargate-planning/.claude/agents/devops.md +249 -0
- package/dist/templates/cleargate-planning/.claude/agents/qa.md +41 -0
- package/dist/templates/cleargate-planning/.claude/agents/reporter.md +44 -8
- package/dist/templates/cleargate-planning/.claude/hooks/pre-commit-surface-gate.sh +21 -0
- package/dist/templates/cleargate-planning/.claude/hooks/stamp-and-gate.sh +12 -1
- package/dist/templates/cleargate-planning/.claude/hooks/token-ledger.sh +21 -1
- package/dist/templates/cleargate-planning/.claude/skills/sprint-execution/SKILL.md +200 -29
- package/dist/templates/cleargate-planning/.cleargate/knowledge/mid-sprint-triage-rubric.md +160 -0
- package/dist/templates/cleargate-planning/.cleargate/knowledge/readiness-gates.md +41 -9
- package/dist/templates/cleargate-planning/.cleargate/scripts/close_sprint.mjs +98 -16
- package/dist/templates/cleargate-planning/.cleargate/scripts/gate-checks.json +3 -3
- package/dist/templates/cleargate-planning/.cleargate/scripts/init_sprint.mjs +86 -10
- package/dist/templates/cleargate-planning/.cleargate/scripts/run_script.sh +173 -87
- package/dist/templates/cleargate-planning/.cleargate/scripts/suggest_improvements.mjs +150 -22
- package/dist/templates/cleargate-planning/.cleargate/scripts/test/test_flashcard_gate.sh +20 -20
- package/dist/templates/cleargate-planning/.cleargate/scripts/validate_state.mjs +32 -8
- package/dist/templates/cleargate-planning/.cleargate/scripts/write_dispatch.sh +12 -1
- package/dist/templates/cleargate-planning/.cleargate/templates/Bug.md +3 -0
- package/dist/templates/cleargate-planning/.cleargate/templates/CR.md +3 -0
- package/dist/templates/cleargate-planning/.cleargate/templates/epic.md +3 -0
- package/dist/templates/cleargate-planning/.cleargate/templates/hotfix.md +3 -0
- package/dist/templates/cleargate-planning/.cleargate/templates/initiative.md +1 -1
- package/dist/templates/cleargate-planning/.cleargate/templates/sprint_context.md +8 -0
- package/dist/templates/cleargate-planning/.cleargate/templates/story.md +3 -0
- package/dist/templates/cleargate-planning/CLAUDE.md +3 -1
- package/dist/templates/cleargate-planning/MANIFEST.json +40 -26
- package/package.json +8 -5
- package/templates/cleargate-planning/.claude/agents/architect.md +55 -2
- package/templates/cleargate-planning/.claude/agents/developer.md +22 -0
- package/templates/cleargate-planning/.claude/agents/devops.md +249 -0
- package/templates/cleargate-planning/.claude/agents/qa.md +41 -0
- package/templates/cleargate-planning/.claude/agents/reporter.md +44 -8
- package/templates/cleargate-planning/.claude/hooks/pre-commit-surface-gate.sh +21 -0
- package/templates/cleargate-planning/.claude/hooks/stamp-and-gate.sh +12 -1
- package/templates/cleargate-planning/.claude/hooks/token-ledger.sh +21 -1
- package/templates/cleargate-planning/.claude/skills/sprint-execution/SKILL.md +200 -29
- package/templates/cleargate-planning/.cleargate/knowledge/mid-sprint-triage-rubric.md +160 -0
- package/templates/cleargate-planning/.cleargate/knowledge/readiness-gates.md +41 -9
- package/templates/cleargate-planning/.cleargate/scripts/close_sprint.mjs +98 -16
- package/templates/cleargate-planning/.cleargate/scripts/gate-checks.json +3 -3
- package/templates/cleargate-planning/.cleargate/scripts/init_sprint.mjs +86 -10
- package/templates/cleargate-planning/.cleargate/scripts/run_script.sh +173 -87
- package/templates/cleargate-planning/.cleargate/scripts/suggest_improvements.mjs +150 -22
- package/templates/cleargate-planning/.cleargate/scripts/test/test_flashcard_gate.sh +20 -20
- package/templates/cleargate-planning/.cleargate/scripts/validate_state.mjs +32 -8
- package/templates/cleargate-planning/.cleargate/scripts/write_dispatch.sh +12 -1
- package/templates/cleargate-planning/.cleargate/templates/Bug.md +3 -0
- package/templates/cleargate-planning/.cleargate/templates/CR.md +3 -0
- package/templates/cleargate-planning/.cleargate/templates/epic.md +3 -0
- package/templates/cleargate-planning/.cleargate/templates/hotfix.md +3 -0
- package/templates/cleargate-planning/.cleargate/templates/initiative.md +1 -1
- package/templates/cleargate-planning/.cleargate/templates/sprint_context.md +8 -0
- package/templates/cleargate-planning/.cleargate/templates/story.md +3 -0
- package/templates/cleargate-planning/CLAUDE.md +3 -1
- package/templates/cleargate-planning/MANIFEST.json +40 -26
|
@@ -19,11 +19,12 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
19
19
|
const REPO_ROOT = path.resolve(__dirname, '..', '..');
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
-
* Validate a parsed state object.
|
|
22
|
+
* Validate a parsed state object, ignoring schema_version check.
|
|
23
|
+
* Used PRE-MIGRATION so that v1 files pass shape validation before being upgraded.
|
|
23
24
|
* @param {object} state - Parsed state.json content
|
|
24
25
|
* @returns {{ valid: boolean, errors: string[] }}
|
|
25
26
|
*/
|
|
26
|
-
export function
|
|
27
|
+
export function validateShapeIgnoringVersion(state) {
|
|
27
28
|
const errors = [];
|
|
28
29
|
|
|
29
30
|
if (typeof state !== 'object' || state === null) {
|
|
@@ -31,12 +32,6 @@ export function validateState(state) {
|
|
|
31
32
|
return { valid: false, errors };
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
if (state.schema_version !== SCHEMA_VERSION) {
|
|
35
|
-
errors.push(
|
|
36
|
-
`schema_version mismatch: expected ${SCHEMA_VERSION}, got ${state.schema_version}`
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
35
|
if (!state.sprint_id) {
|
|
41
36
|
errors.push('missing required field: sprint_id');
|
|
42
37
|
}
|
|
@@ -98,6 +93,35 @@ export function validateState(state) {
|
|
|
98
93
|
return { valid: errors.length === 0, errors };
|
|
99
94
|
}
|
|
100
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Validate a parsed state object (strict — includes schema_version check).
|
|
98
|
+
* Call this AFTER migration to assert the file is fully v2-compliant.
|
|
99
|
+
* @param {object} state - Parsed state.json content
|
|
100
|
+
* @returns {{ valid: boolean, errors: string[] }}
|
|
101
|
+
*/
|
|
102
|
+
export function validateState(state) {
|
|
103
|
+
const errors = [];
|
|
104
|
+
|
|
105
|
+
if (typeof state !== 'object' || state === null) {
|
|
106
|
+
errors.push('state is not an object');
|
|
107
|
+
return { valid: false, errors };
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (state.schema_version !== SCHEMA_VERSION) {
|
|
111
|
+
errors.push(
|
|
112
|
+
`schema_version mismatch: expected ${SCHEMA_VERSION}, got ${state.schema_version}`
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Delegate shape validation (everything except version check)
|
|
117
|
+
const shapeResult = validateShapeIgnoringVersion(state);
|
|
118
|
+
for (const e of shapeResult.errors) {
|
|
119
|
+
errors.push(e);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return { valid: errors.length === 0, errors };
|
|
123
|
+
}
|
|
124
|
+
|
|
101
125
|
// CLI mode
|
|
102
126
|
if (process.argv[1] === fileURLToPath(import.meta.url)) {
|
|
103
127
|
const args = process.argv.slice(2);
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
#
|
|
18
18
|
# Args:
|
|
19
19
|
# $1 work_item_id — e.g. STORY-020-02, CR-016, BUG-021
|
|
20
|
-
# $2 agent_type — one of: developer|architect|qa|reporter|cleargate-wiki-contradict
|
|
20
|
+
# $2 agent_type — one of: developer|architect|qa|reporter|devops|cleargate-wiki-contradict
|
|
21
21
|
#
|
|
22
22
|
# Env (optional):
|
|
23
23
|
# CLAUDE_SESSION_ID — session UUID of the orchestrator session
|
|
@@ -49,6 +49,17 @@ fi
|
|
|
49
49
|
WORK_ITEM_ID="${1}"
|
|
50
50
|
AGENT_TYPE="${2}"
|
|
51
51
|
|
|
52
|
+
# ─── Validate agent_type ────────────────────────────────────────────────────
|
|
53
|
+
case "${AGENT_TYPE}" in
|
|
54
|
+
developer|architect|qa|reporter|devops|cleargate-wiki-contradict)
|
|
55
|
+
;;
|
|
56
|
+
*)
|
|
57
|
+
printf '[%s] error: invalid agent_type: %s\n' "$(date -u +%FT%TZ)" "${AGENT_TYPE}" >> "${LOG}"
|
|
58
|
+
printf 'error: invalid agent_type: %s (expected developer|architect|qa|reporter|devops|cleargate-wiki-contradict)\n' "${AGENT_TYPE}" >&2
|
|
59
|
+
exit 3
|
|
60
|
+
;;
|
|
61
|
+
esac
|
|
62
|
+
|
|
52
63
|
# ─── Resolve active sprint ──────────────────────────────────────────────────
|
|
53
64
|
ACTIVE_SENTINEL="${REPO_ROOT}/.cleargate/sprint-runs/.active"
|
|
54
65
|
if [[ ! -f "${ACTIVE_SENTINEL}" ]]; then
|
|
@@ -12,6 +12,7 @@ POST-WRITE BRIEF
|
|
|
12
12
|
After Writing this document, render a Brief in chat with the following sections,
|
|
13
13
|
mechanically extracted from the document's own structure:
|
|
14
14
|
|
|
15
|
+
- Prior work ← cleargate-wiki-query result (cite [[IDs]] or write "none found")
|
|
15
16
|
- Summary ← §1 The Anomaly (repro)
|
|
16
17
|
- Open Questions ← §0.5 Open Questions
|
|
17
18
|
- Edge Cases ← §2 Impact (edge conditions)
|
|
@@ -106,6 +107,8 @@ last_synced_body_sha: null # sha256 of body at last sync
|
|
|
106
107
|
## ClearGate Ambiguity Gate (🟢 / 🟡 / 🔴)
|
|
107
108
|
**Current Status: 🔴 High Ambiguity**
|
|
108
109
|
|
|
110
|
+
*Evaluate each criterion against its literal text. If you substituted an interpretation, leave the box unchecked and surface the substitution in the Brief.*
|
|
111
|
+
|
|
109
112
|
Requirements to pass to Green (Ready for Fix):
|
|
110
113
|
- [ ] Reproduction steps are 100% deterministic.
|
|
111
114
|
- [ ] Actual vs. Expected behavior is explicitly defined.
|
|
@@ -12,6 +12,7 @@ POST-WRITE BRIEF
|
|
|
12
12
|
After Writing this document, render a Brief in chat with the following sections,
|
|
13
13
|
mechanically extracted from the document's own structure:
|
|
14
14
|
|
|
15
|
+
- Prior work ← cleargate-wiki-query result (cite [[IDs]] or write "none found")
|
|
15
16
|
- Summary ← §1 The Context Override
|
|
16
17
|
- Open Questions ← §0.5 Open Questions
|
|
17
18
|
- Edge Cases ← §2 Blast Radius & Invalidation
|
|
@@ -108,6 +109,8 @@ last_synced_body_sha: null # sha256 of body at last sync
|
|
|
108
109
|
## ClearGate Ambiguity Gate (🟢 / 🟡 / 🔴)
|
|
109
110
|
**Current Status: 🔴 High Ambiguity**
|
|
110
111
|
|
|
112
|
+
*Evaluate each criterion against its literal text. If you substituted an interpretation, leave the box unchecked and surface the substitution in the Brief.*
|
|
113
|
+
|
|
111
114
|
Requirements to pass to Green (Ready for Execution):
|
|
112
115
|
- [ ] "Obsolete Logic" to be evicted is explicitly declared.
|
|
113
116
|
- [ ] All impacted downstream Epics/Stories are identified and reverted to 🔴 High Ambiguity.
|
|
@@ -16,6 +16,7 @@ POST-WRITE BRIEF
|
|
|
16
16
|
After Writing this document, render a Brief in chat with the following sections,
|
|
17
17
|
mechanically extracted from the document's own structure:
|
|
18
18
|
|
|
19
|
+
- Prior work ← cleargate-wiki-query result (cite [[IDs]] or write "none found")
|
|
19
20
|
- Summary ← §1 Problem & Value
|
|
20
21
|
- Open Questions ← §6 AI Interrogation Loop
|
|
21
22
|
- Edge Cases ← §2 OUT-OF-SCOPE list + §5 error scenarios
|
|
@@ -153,6 +154,8 @@ Feature: {Epic Name}
|
|
|
153
154
|
## ClearGate Ambiguity Gate (🟢 / 🟡 / 🔴)
|
|
154
155
|
**Current Status: 🔴 High Ambiguity**
|
|
155
156
|
|
|
157
|
+
*Evaluate each criterion against its literal text. If you substituted an interpretation, leave the box unchecked and surface the substitution in the Brief.*
|
|
158
|
+
|
|
156
159
|
Requirements to pass to Green (Ready for Coding Agent):
|
|
157
160
|
- [ ] Proposal document has `approved: true`.
|
|
158
161
|
- [ ] The `<agent_context>` block is complete and validated.
|
|
@@ -14,6 +14,7 @@ POST-WRITE BRIEF
|
|
|
14
14
|
After Writing this document, render a Brief in chat with the following sections,
|
|
15
15
|
mechanically extracted from the document's own structure:
|
|
16
16
|
|
|
17
|
+
- Prior work ← cleargate-wiki-query result (cite [[IDs]] or write "none found")
|
|
17
18
|
- Summary ← §1 Anomaly (Problem)
|
|
18
19
|
- Open Questions ← §0.5 Open Questions
|
|
19
20
|
- Edge Cases ← §3 Files Affected (risk of adjacent regression)
|
|
@@ -101,6 +102,8 @@ If the hotfix introduces a regression, revert by running `git revert <commit-sha
|
|
|
101
102
|
## ClearGate Ambiguity Gate (🟢 / 🟡 / 🔴)
|
|
102
103
|
**Current Status: 🔴 High Ambiguity**
|
|
103
104
|
|
|
105
|
+
*Evaluate each criterion against its literal text. If you substituted an interpretation, leave the box unchecked and surface the substitution in the Brief.*
|
|
106
|
+
|
|
104
107
|
Requirements to pass to Green (Ready for Merge):
|
|
105
108
|
- [ ] Anomaly is deterministically reproducible (§1 filled).
|
|
106
109
|
- [ ] Files Touched list is ≤2 files (§2 filled).
|
|
@@ -26,7 +26,7 @@ DO NOT output these instructions in the rendered file.
|
|
|
26
26
|
</instructions>
|
|
27
27
|
|
|
28
28
|
---
|
|
29
|
-
initiative_id: "
|
|
29
|
+
initiative_id: "INITIATIVE-{NNN}"
|
|
30
30
|
remote_id: null
|
|
31
31
|
source_tool: "linear | jira | github | manual-paste"
|
|
32
32
|
status: "{PM native status — e.g. Discovery, In Triage, Triaged}"
|
|
@@ -8,6 +8,10 @@ last_updated: "YYYY-MM-DDTHH:MM:SSZ"
|
|
|
8
8
|
|
|
9
9
|
Per-sprint audit artefact. Populated at sprint init (M1 planning) and re-touched after each story merges. Referenced from every Developer/QA/Architect task brief so all agents start from the same baseline.
|
|
10
10
|
|
|
11
|
+
## Sprint Goal
|
|
12
|
+
|
|
13
|
+
_(populated by orchestrator from sprint plan §0 at kickoff)_
|
|
14
|
+
|
|
11
15
|
## Locked Versions
|
|
12
16
|
|
|
13
17
|
Frozen dependency versions for this sprint. Orchestrator populates from `package.json` snapshots at sprint init; Developers must not upgrade these mid-sprint without an explicit CR.
|
|
@@ -40,3 +44,7 @@ Exported helpers and modules from already-merged stories in this sprint. The Arc
|
|
|
40
44
|
| Story | Module / Export | Path |
|
|
41
45
|
|-------|----------------|------|
|
|
42
46
|
| (populated as stories merge) | | |
|
|
47
|
+
|
|
48
|
+
## Mid-Sprint Amendments
|
|
49
|
+
|
|
50
|
+
_(populated by Architect on CR:scope-change or CR:approach-change; never rewrite, only append. Format: '<ISO-ts> · <ID> · <one-line note>')_
|
|
@@ -40,6 +40,7 @@ POST-WRITE BRIEF
|
|
|
40
40
|
After Writing this document, render a Brief in chat with the following sections,
|
|
41
41
|
mechanically extracted from the document's own structure:
|
|
42
42
|
|
|
43
|
+
- Prior work ← cleargate-wiki-query result (cite [[IDs]] or write "none found")
|
|
43
44
|
- Summary ← §1.1 User Story
|
|
44
45
|
- Open Questions ← §1.4 Open Questions
|
|
45
46
|
- Edge Cases ← §2.1 Gherkin error scenarios
|
|
@@ -199,6 +200,8 @@ Feature: {Story Name}
|
|
|
199
200
|
## ClearGate Ambiguity Gate (🟢 / 🟡 / 🔴)
|
|
200
201
|
**Current Status: 🔴 High Ambiguity**
|
|
201
202
|
|
|
203
|
+
*Evaluate each criterion against its literal text. If you substituted an interpretation, leave the box unchecked and surface the substitution in the Brief.*
|
|
204
|
+
|
|
202
205
|
Requirements to pass to Green (Ready for Execution):
|
|
203
206
|
- [ ] Gherkin scenarios completely cover all detailed requirements in §1.2.
|
|
204
207
|
- [ ] Implementation Guide (§3) maps to specific, verified file paths from the approved proposal.
|
|
@@ -23,12 +23,14 @@ This repository uses **ClearGate** — a standalone planning framework for AI co
|
|
|
23
23
|
|
|
24
24
|
**Codebase is source of truth.** Wiki, memory, and `context_source` are derived caches. On conflict between cache and code, the code wins; the cache rebuilds. Before stating that a capability exists or doesn't exist, grep the code.
|
|
25
25
|
|
|
26
|
-
**Duplicate check before drafting.** Before
|
|
26
|
+
**Duplicate check before drafting.** Before Writing any new file under `.cleargate/delivery/pending-sync/`, dispatch the `cleargate-wiki-query` subagent with the request topic. Record the result (`[[IDs]]` of related prior work, or `none found`) on a `Prior work:` line in the Brief — this is auditable evidence the check ran. Then grep `.cleargate/delivery/archive/` + `.cleargate/FLASHCARD.md` for residual hits the wiki may have missed (raw items not yet ingested). If the request names an integration, feature, or capability, also grep the source tree for existing implementations and cite findings in `## Existing Surfaces`. If you find overlap, surface it as a one-liner (*"This is very close to STORY-003-05 shipped in SPRINT-01 — are you extending it or redoing it?"*) before drafting.
|
|
27
27
|
|
|
28
28
|
**Halt at gates.** You halt at Gate 1 (Initiative approval) and Gate 2 (Ambiguity resolution) and wait for explicit human sign-off. You never call `cleargate_push_item` without `approved: true` (hard reject) and explicit human confirmation. Readiness gates (`cached_gate_result.pass`) are advisory by default — the push proceeds and the item body receives an `[advisory: gate_failed — <criteria>]` prefix; opt into hard-reject via `STRICT_PUSH_GATES=true` on the MCP server.
|
|
29
29
|
|
|
30
30
|
**Sprint mode.** Read `execution_mode:` in the active sprint's frontmatter before spawning Developer/QA. `v1` = advisory; `v2` = enforce the rules in `cleargate-enforcement.md`. Default `v1`.
|
|
31
31
|
|
|
32
|
+
**Ambiguity Gate criteria are evaluated literally.** Each `[ ]` box in a work-item's Ambiguity Gate footer must be evaluated against the literal criterion text, not against your interpretation of its intent. If a criterion is not met but you believe the human's intent is satisfied, leave the box unchecked, say so explicitly in the Brief, and ask. Do not substitute "in spirit" satisfaction for literal satisfaction. The gate exists specifically to catch the case where you are about to declare 🟢 by interpretive leap.
|
|
33
|
+
|
|
32
34
|
**Brief is the universal pre-push handshake.** Every work-item template's `<instructions>` block tells you to render a Brief in chat after Writing the document — Summary / Open Questions / Edge Cases / Risks / Ambiguity. Halt for human review. When ambiguity reaches 🟢, push via `cleargate_push_item` automatically — the same approval covers Gate 1 and the push.
|
|
33
35
|
|
|
34
36
|
**Boundary gates (CR-017).** `cleargate sprint init` runs the decomposition gate; `close_sprint.mjs` runs the lifecycle reconciler. Both block in v2.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cleargate_version": "0.
|
|
3
|
-
"generated_at": "2026-05-
|
|
2
|
+
"cleargate_version": "0.11.1",
|
|
3
|
+
"generated_at": "2026-05-04T22:23:50.738Z",
|
|
4
4
|
"files": [
|
|
5
5
|
{
|
|
6
6
|
"path": ".claude/agents/architect.md",
|
|
7
|
-
"sha256": "
|
|
7
|
+
"sha256": "a2d11d6a7f21bce22730ba9076af9ddde44b258082e33aa99fcd57c14ad75f55",
|
|
8
8
|
"tier": "agent",
|
|
9
9
|
"overwrite_policy": "always",
|
|
10
10
|
"preserve_on_uninstall": false
|
|
@@ -39,21 +39,28 @@
|
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"path": ".claude/agents/developer.md",
|
|
42
|
-
"sha256": "
|
|
42
|
+
"sha256": "36f75fe9f8dc8412eb22706dfd021f5db5694c81d73e0c938e701a83c0149126",
|
|
43
|
+
"tier": "agent",
|
|
44
|
+
"overwrite_policy": "always",
|
|
45
|
+
"preserve_on_uninstall": false
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"path": ".claude/agents/devops.md",
|
|
49
|
+
"sha256": "65e84275b7a6480be2144250cc00573e8c26840abed98768ce4c168d594c7f8e",
|
|
43
50
|
"tier": "agent",
|
|
44
51
|
"overwrite_policy": "always",
|
|
45
52
|
"preserve_on_uninstall": false
|
|
46
53
|
},
|
|
47
54
|
{
|
|
48
55
|
"path": ".claude/agents/qa.md",
|
|
49
|
-
"sha256": "
|
|
56
|
+
"sha256": "c6fab6b64acc717a6bb5618531e6568010b3aeb10a98e33ba10b8dde45f5becb",
|
|
50
57
|
"tier": "agent",
|
|
51
58
|
"overwrite_policy": "always",
|
|
52
59
|
"preserve_on_uninstall": false
|
|
53
60
|
},
|
|
54
61
|
{
|
|
55
62
|
"path": ".claude/agents/reporter.md",
|
|
56
|
-
"sha256": "
|
|
63
|
+
"sha256": "36558f7f90e2e52192df88f243631735a880b7d371e6df17025933151a825c56",
|
|
57
64
|
"tier": "agent",
|
|
58
65
|
"overwrite_policy": "always",
|
|
59
66
|
"preserve_on_uninstall": false
|
|
@@ -67,7 +74,7 @@
|
|
|
67
74
|
},
|
|
68
75
|
{
|
|
69
76
|
"path": ".claude/hooks/pre-commit-surface-gate.sh",
|
|
70
|
-
"sha256": "
|
|
77
|
+
"sha256": "6741422cd8ca75b45e26bd0e9cb54126ad9e933f763c9094ceba6b84794b761a",
|
|
71
78
|
"tier": "hook",
|
|
72
79
|
"overwrite_policy": "always",
|
|
73
80
|
"preserve_on_uninstall": false
|
|
@@ -109,14 +116,14 @@
|
|
|
109
116
|
},
|
|
110
117
|
{
|
|
111
118
|
"path": ".claude/hooks/stamp-and-gate.sh",
|
|
112
|
-
"sha256": "
|
|
119
|
+
"sha256": "2c654dc3a6707d394f782f68d7318410d4acbbcb70c0a9d0d674d966241fc310",
|
|
113
120
|
"tier": "hook",
|
|
114
121
|
"overwrite_policy": "pin-aware",
|
|
115
122
|
"preserve_on_uninstall": false
|
|
116
123
|
},
|
|
117
124
|
{
|
|
118
125
|
"path": ".claude/hooks/token-ledger.sh",
|
|
119
|
-
"sha256": "
|
|
126
|
+
"sha256": "6678f814520c379b3ab055f3a1b98c92f631fd415ae24752d45aa8bee058c29c",
|
|
120
127
|
"tier": "hook",
|
|
121
128
|
"overwrite_policy": "always",
|
|
122
129
|
"preserve_on_uninstall": false
|
|
@@ -137,7 +144,7 @@
|
|
|
137
144
|
},
|
|
138
145
|
{
|
|
139
146
|
"path": ".claude/skills/sprint-execution/SKILL.md",
|
|
140
|
-
"sha256": "
|
|
147
|
+
"sha256": "877fabf8fcc682d9ba55421e6ba8c2a4ccf2b84a83d66e77dedc418b5aa47a3a",
|
|
141
148
|
"tier": "skill",
|
|
142
149
|
"overwrite_policy": "always",
|
|
143
150
|
"preserve_on_uninstall": false
|
|
@@ -163,9 +170,16 @@
|
|
|
163
170
|
"overwrite_policy": "merge-3way",
|
|
164
171
|
"preserve_on_uninstall": false
|
|
165
172
|
},
|
|
173
|
+
{
|
|
174
|
+
"path": ".cleargate/knowledge/mid-sprint-triage-rubric.md",
|
|
175
|
+
"sha256": "170f762b427074a84c183a91fb65d1d6408650b7746de3bbc460d21194bda30a",
|
|
176
|
+
"tier": "protocol",
|
|
177
|
+
"overwrite_policy": "merge-3way",
|
|
178
|
+
"preserve_on_uninstall": false
|
|
179
|
+
},
|
|
166
180
|
{
|
|
167
181
|
"path": ".cleargate/knowledge/readiness-gates.md",
|
|
168
|
-
"sha256": "
|
|
182
|
+
"sha256": "10cb46cdaf264f8aa7c3841d12101bfad422a45f36c758be5327b0e4009a46a0",
|
|
169
183
|
"tier": "protocol",
|
|
170
184
|
"overwrite_policy": "merge-3way",
|
|
171
185
|
"preserve_on_uninstall": false
|
|
@@ -186,7 +200,7 @@
|
|
|
186
200
|
},
|
|
187
201
|
{
|
|
188
202
|
"path": ".cleargate/scripts/close_sprint.mjs",
|
|
189
|
-
"sha256": "
|
|
203
|
+
"sha256": "1807e5b27f1501476c9dec41cbb350c432d2894cb0727d8da0c860ad3f9181c7",
|
|
190
204
|
"tier": "script",
|
|
191
205
|
"overwrite_policy": "always",
|
|
192
206
|
"preserve_on_uninstall": false
|
|
@@ -214,7 +228,7 @@
|
|
|
214
228
|
},
|
|
215
229
|
{
|
|
216
230
|
"path": ".cleargate/scripts/gate-checks.json",
|
|
217
|
-
"sha256": "
|
|
231
|
+
"sha256": "9c520e63ac582289b6905a1c5704326590923eeef90d1e02801d1a57b4262877",
|
|
218
232
|
"tier": "script",
|
|
219
233
|
"overwrite_policy": "always",
|
|
220
234
|
"preserve_on_uninstall": false
|
|
@@ -228,7 +242,7 @@
|
|
|
228
242
|
},
|
|
229
243
|
{
|
|
230
244
|
"path": ".cleargate/scripts/init_sprint.mjs",
|
|
231
|
-
"sha256": "
|
|
245
|
+
"sha256": "80d532754b0b27bb274aca4e30a0e9a208f2528d079c24d4e319de2e429cd268",
|
|
232
246
|
"tier": "script",
|
|
233
247
|
"overwrite_policy": "always",
|
|
234
248
|
"preserve_on_uninstall": false
|
|
@@ -277,7 +291,7 @@
|
|
|
277
291
|
},
|
|
278
292
|
{
|
|
279
293
|
"path": ".cleargate/scripts/run_script.sh",
|
|
280
|
-
"sha256": "
|
|
294
|
+
"sha256": "f2bd931d3b7bb4d30f5da9c116714345480163e9afb4c244c1a1c074410c15d0",
|
|
281
295
|
"tier": "script",
|
|
282
296
|
"overwrite_policy": "always",
|
|
283
297
|
"preserve_on_uninstall": false
|
|
@@ -298,7 +312,7 @@
|
|
|
298
312
|
},
|
|
299
313
|
{
|
|
300
314
|
"path": ".cleargate/scripts/suggest_improvements.mjs",
|
|
301
|
-
"sha256": "
|
|
315
|
+
"sha256": "62e71e7bf43abb6f015290f6ff3e06f15fb097682ddb95dbdf9532922d27925a",
|
|
302
316
|
"tier": "script",
|
|
303
317
|
"overwrite_policy": "always",
|
|
304
318
|
"preserve_on_uninstall": false
|
|
@@ -333,7 +347,7 @@
|
|
|
333
347
|
},
|
|
334
348
|
{
|
|
335
349
|
"path": ".cleargate/scripts/test/test_flashcard_gate.sh",
|
|
336
|
-
"sha256": "
|
|
350
|
+
"sha256": "40fb023b0db1556295b92858b303ba90745ef89c3131bc760232e5cd8ebe7815",
|
|
337
351
|
"tier": "script",
|
|
338
352
|
"overwrite_policy": "always",
|
|
339
353
|
"preserve_on_uninstall": false
|
|
@@ -368,49 +382,49 @@
|
|
|
368
382
|
},
|
|
369
383
|
{
|
|
370
384
|
"path": ".cleargate/scripts/validate_state.mjs",
|
|
371
|
-
"sha256": "
|
|
385
|
+
"sha256": "ee3e8c0aeadb9a4e182d2a061cd992b6751e5bf067e0729b88da58582c67dbf1",
|
|
372
386
|
"tier": "script",
|
|
373
387
|
"overwrite_policy": "always",
|
|
374
388
|
"preserve_on_uninstall": false
|
|
375
389
|
},
|
|
376
390
|
{
|
|
377
391
|
"path": ".cleargate/scripts/write_dispatch.sh",
|
|
378
|
-
"sha256": "
|
|
392
|
+
"sha256": "abdcaf09b09251f3ab42cb7ec8bdedc5806fd0eb337578f55043bffb158d8128",
|
|
379
393
|
"tier": "script",
|
|
380
394
|
"overwrite_policy": "always",
|
|
381
395
|
"preserve_on_uninstall": false
|
|
382
396
|
},
|
|
383
397
|
{
|
|
384
398
|
"path": ".cleargate/templates/Bug.md",
|
|
385
|
-
"sha256": "
|
|
399
|
+
"sha256": "570112e3a60856c891652837307fc6f296cc39acc20451f8bde62da0fe033026",
|
|
386
400
|
"tier": "template",
|
|
387
401
|
"overwrite_policy": "merge-3way",
|
|
388
402
|
"preserve_on_uninstall": false
|
|
389
403
|
},
|
|
390
404
|
{
|
|
391
405
|
"path": ".cleargate/templates/CR.md",
|
|
392
|
-
"sha256": "
|
|
406
|
+
"sha256": "ab111792dc79fd5181b44a63c76ac696fa4e456161ac44e2c4d0dc609e8dd904",
|
|
393
407
|
"tier": "template",
|
|
394
408
|
"overwrite_policy": "merge-3way",
|
|
395
409
|
"preserve_on_uninstall": false
|
|
396
410
|
},
|
|
397
411
|
{
|
|
398
412
|
"path": ".cleargate/templates/epic.md",
|
|
399
|
-
"sha256": "
|
|
413
|
+
"sha256": "fd3b54de89befe7c5bcef65e2fa5550fc7f371d55c8f15143ae73d84f3ae6d36",
|
|
400
414
|
"tier": "template",
|
|
401
415
|
"overwrite_policy": "merge-3way",
|
|
402
416
|
"preserve_on_uninstall": false
|
|
403
417
|
},
|
|
404
418
|
{
|
|
405
419
|
"path": ".cleargate/templates/hotfix.md",
|
|
406
|
-
"sha256": "
|
|
420
|
+
"sha256": "b75dd154c156e68a44ae01b85eff7ec16f54050e4fe7eb71f59e17d87c03a298",
|
|
407
421
|
"tier": "template",
|
|
408
422
|
"overwrite_policy": "merge-3way",
|
|
409
423
|
"preserve_on_uninstall": false
|
|
410
424
|
},
|
|
411
425
|
{
|
|
412
426
|
"path": ".cleargate/templates/initiative.md",
|
|
413
|
-
"sha256": "
|
|
427
|
+
"sha256": "28680917228e5d9887c8820193cc21bfecc6aad3bc0658e8a59087adf63551fd",
|
|
414
428
|
"tier": "template",
|
|
415
429
|
"overwrite_policy": "merge-3way",
|
|
416
430
|
"preserve_on_uninstall": false
|
|
@@ -424,7 +438,7 @@
|
|
|
424
438
|
},
|
|
425
439
|
{
|
|
426
440
|
"path": ".cleargate/templates/sprint_context.md",
|
|
427
|
-
"sha256": "
|
|
441
|
+
"sha256": "82a95b8e5e9a5842a9dcad68bc3ed7405819a616d13d616cdb80083c32cc1fc3",
|
|
428
442
|
"tier": "template",
|
|
429
443
|
"overwrite_policy": "merge-3way",
|
|
430
444
|
"preserve_on_uninstall": false
|
|
@@ -438,7 +452,7 @@
|
|
|
438
452
|
},
|
|
439
453
|
{
|
|
440
454
|
"path": ".cleargate/templates/story.md",
|
|
441
|
-
"sha256": "
|
|
455
|
+
"sha256": "56d793983614d832e84193d99ee5318c061d2f3ea4f019cefb861c026513cb31",
|
|
442
456
|
"tier": "template",
|
|
443
457
|
"overwrite_policy": "merge-3way",
|
|
444
458
|
"preserve_on_uninstall": false
|