codex-genesis-harness 0.1.0
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/.codex/skills/project-genesis-harness/SKILL.md +727 -0
- package/.codex/skills/project-genesis-harness/agents/openai.yaml +9 -0
- package/.codex/skills/project-genesis-harness/references/planning-schema.md +35 -0
- package/.codex/skills/project-genesis-harness/references/quality-rubric.md +21 -0
- package/.codex/skills/project-genesis-harness/references/research-rubric.md +41 -0
- package/.codex/skills/project-genesis-harness/references/workflows.md +33 -0
- package/.codex/skills/project-genesis-harness/resources/agents-template.md +27 -0
- package/.codex/skills/project-genesis-harness/resources/api-docs-template.md +32 -0
- package/.codex/skills/project-genesis-harness/resources/architecture-template.md +30 -0
- package/.codex/skills/project-genesis-harness/resources/audit-template.md +26 -0
- package/.codex/skills/project-genesis-harness/resources/bug-template.md +34 -0
- package/.codex/skills/project-genesis-harness/resources/check-template.md +21 -0
- package/.codex/skills/project-genesis-harness/resources/conventions-template.md +42 -0
- package/.codex/skills/project-genesis-harness/resources/decision-template.md +33 -0
- package/.codex/skills/project-genesis-harness/resources/design-template.md +26 -0
- package/.codex/skills/project-genesis-harness/resources/escalation-template.md +21 -0
- package/.codex/skills/project-genesis-harness/resources/feature-template.md +49 -0
- package/.codex/skills/project-genesis-harness/resources/integrations-template.md +32 -0
- package/.codex/skills/project-genesis-harness/resources/journeys-template.md +13 -0
- package/.codex/skills/project-genesis-harness/resources/lessons-learned-template.md +12 -0
- package/.codex/skills/project-genesis-harness/resources/observability-template.md +34 -0
- package/.codex/skills/project-genesis-harness/resources/phase-template.md +34 -0
- package/.codex/skills/project-genesis-harness/resources/pitfalls-template.md +22 -0
- package/.codex/skills/project-genesis-harness/resources/planning-tree-template.md +39 -0
- package/.codex/skills/project-genesis-harness/resources/project-template.md +38 -0
- package/.codex/skills/project-genesis-harness/resources/quality-score-template.md +11 -0
- package/.codex/skills/project-genesis-harness/resources/requirements-template.md +26 -0
- package/.codex/skills/project-genesis-harness/resources/research-template.md +26 -0
- package/.codex/skills/project-genesis-harness/resources/review-template.md +22 -0
- package/.codex/skills/project-genesis-harness/resources/spec-changelog-template.md +6 -0
- package/.codex/skills/project-genesis-harness/resources/stack-template.md +33 -0
- package/.codex/skills/project-genesis-harness/resources/verification-template.md +26 -0
- package/.codex/skills/project-genesis-harness/scripts/check-architecture-boundaries.sh +23 -0
- package/.codex/skills/project-genesis-harness/scripts/check-docs-sync.sh +24 -0
- package/.codex/skills/project-genesis-harness/scripts/check-no-debug-logs.sh +21 -0
- package/.codex/skills/project-genesis-harness/scripts/check-required-planning-files.sh +46 -0
- package/.codex/skills/project-genesis-harness/scripts/check-spec-changelog.sh +24 -0
- package/.codex/skills/project-genesis-harness/scripts/check-task-tracking.sh +25 -0
- package/.codex/skills/project-genesis-harness/scripts/create-adr.sh +74 -0
- package/.codex/skills/project-genesis-harness/scripts/create-bug.sh +160 -0
- package/.codex/skills/project-genesis-harness/scripts/create-feature.sh +217 -0
- package/.codex/skills/project-genesis-harness/scripts/detect-stack.sh +26 -0
- package/.codex/skills/project-genesis-harness/scripts/init-planning.sh +719 -0
- package/.codex/skills/project-genesis-harness/scripts/list-changed-files.sh +12 -0
- package/.codex/skills/project-genesis-harness/scripts/run-verification.sh +47 -0
- package/.codex/skills/project-genesis-harness/scripts/update-state.sh +33 -0
- package/.codex-plugin/plugin.json +35 -0
- package/LICENSE +22 -0
- package/README.md +181 -0
- package/VERSION +2 -0
- package/bin/genesis-harness.js +164 -0
- package/package.json +37 -0
- package/scripts/install.sh +69 -0
- package/scripts/run-evals.sh +52 -0
- package/scripts/uninstall.sh +52 -0
- package/scripts/verify.sh +109 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Project
|
|
2
|
+
|
|
3
|
+
## What This Project Is
|
|
4
|
+
|
|
5
|
+
TBD
|
|
6
|
+
|
|
7
|
+
## Target Users
|
|
8
|
+
|
|
9
|
+
TBD
|
|
10
|
+
|
|
11
|
+
## Core Value
|
|
12
|
+
|
|
13
|
+
TBD
|
|
14
|
+
|
|
15
|
+
## Product Scope
|
|
16
|
+
|
|
17
|
+
- [ ] TBD
|
|
18
|
+
|
|
19
|
+
## Out Of Scope
|
|
20
|
+
|
|
21
|
+
- [ ] TBD
|
|
22
|
+
|
|
23
|
+
## Constraints
|
|
24
|
+
|
|
25
|
+
- [ ] TBD
|
|
26
|
+
|
|
27
|
+
## Assumptions
|
|
28
|
+
|
|
29
|
+
- [ ] TBD
|
|
30
|
+
|
|
31
|
+
## Current Milestone
|
|
32
|
+
|
|
33
|
+
TBD
|
|
34
|
+
|
|
35
|
+
## Success Criteria
|
|
36
|
+
|
|
37
|
+
- [ ] TBD
|
|
38
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Quality Score
|
|
2
|
+
|
|
3
|
+
| Area | Score | Issues | Next Action |
|
|
4
|
+
|---|---:|---|---|
|
|
5
|
+
| Architecture | 0/10 | TBD | TBD |
|
|
6
|
+
| Tests | 0/10 | TBD | TBD |
|
|
7
|
+
| Docs Sync | 0/10 | TBD | TBD |
|
|
8
|
+
| Security | 0/10 | TBD | TBD |
|
|
9
|
+
| Maintainability | 0/10 | TBD | TBD |
|
|
10
|
+
| Observability | 0/10 | TBD | TBD |
|
|
11
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Requirements
|
|
2
|
+
|
|
3
|
+
## Functional Requirements
|
|
4
|
+
|
|
5
|
+
- [ ] TBD
|
|
6
|
+
|
|
7
|
+
## Non-Functional Requirements
|
|
8
|
+
|
|
9
|
+
- [ ] TBD
|
|
10
|
+
|
|
11
|
+
## User Stories
|
|
12
|
+
|
|
13
|
+
- [ ] As a user, I want TBD so that TBD.
|
|
14
|
+
|
|
15
|
+
## Acceptance Criteria
|
|
16
|
+
|
|
17
|
+
- [ ] TBD
|
|
18
|
+
|
|
19
|
+
## Edge Cases
|
|
20
|
+
|
|
21
|
+
- [ ] TBD
|
|
22
|
+
|
|
23
|
+
## Known Unknowns
|
|
24
|
+
|
|
25
|
+
- [ ] TBD
|
|
26
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Review
|
|
2
|
+
|
|
3
|
+
## Changed Files Reviewed
|
|
4
|
+
|
|
5
|
+
- [ ] TBD
|
|
6
|
+
|
|
7
|
+
## Findings
|
|
8
|
+
|
|
9
|
+
| Severity | File | Issue | Required Action |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| TBD | TBD | TBD | TBD |
|
|
12
|
+
|
|
13
|
+
## Cleanup Performed
|
|
14
|
+
|
|
15
|
+
- [ ] Removed unnecessary files/code
|
|
16
|
+
- [ ] Removed debug logs
|
|
17
|
+
- [ ] Removed unrelated changes
|
|
18
|
+
|
|
19
|
+
## Residual Risks
|
|
20
|
+
|
|
21
|
+
- [ ] TBD
|
|
22
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Stack
|
|
2
|
+
|
|
3
|
+
## Detected Stack
|
|
4
|
+
|
|
5
|
+
Language:
|
|
6
|
+
Framework:
|
|
7
|
+
Runtime:
|
|
8
|
+
Database:
|
|
9
|
+
Package manager:
|
|
10
|
+
Test framework:
|
|
11
|
+
Lint:
|
|
12
|
+
Typecheck:
|
|
13
|
+
Build:
|
|
14
|
+
Deployment:
|
|
15
|
+
|
|
16
|
+
## Version Constraints
|
|
17
|
+
|
|
18
|
+
- [ ] TBD
|
|
19
|
+
|
|
20
|
+
## Local Development Commands
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
# start
|
|
24
|
+
# test
|
|
25
|
+
# lint
|
|
26
|
+
# typecheck
|
|
27
|
+
# build
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Tooling Gaps
|
|
31
|
+
|
|
32
|
+
- [ ] TBD
|
|
33
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Verification
|
|
2
|
+
|
|
3
|
+
## Test Contract
|
|
4
|
+
|
|
5
|
+
- [ ] Normal input/output
|
|
6
|
+
- [ ] Edge cases
|
|
7
|
+
- [ ] Invalid inputs
|
|
8
|
+
- [ ] Expected errors
|
|
9
|
+
- [ ] Acceptance tests
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
# TBD
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Results
|
|
18
|
+
|
|
19
|
+
| Command | Result | Evidence |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| TBD | TBD | TBD |
|
|
22
|
+
|
|
23
|
+
## Manual Verification
|
|
24
|
+
|
|
25
|
+
- [ ] TBD
|
|
26
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
root="${1:-.}"
|
|
5
|
+
cd "$root"
|
|
6
|
+
|
|
7
|
+
status=0
|
|
8
|
+
for file in .planning/ARCHITECTURE.md .planning/diagrams/system-context.mmd .planning/diagrams/container-architecture.mmd; do
|
|
9
|
+
if [ ! -s "$file" ]; then
|
|
10
|
+
echo "Missing or empty architecture source: $file"
|
|
11
|
+
status=1
|
|
12
|
+
fi
|
|
13
|
+
done
|
|
14
|
+
|
|
15
|
+
if [ -f .planning/ARCHITECTURE.md ]; then
|
|
16
|
+
if ! grep -Eiq 'boundary|boundaries|dependency|forbidden|data flow' .planning/ARCHITECTURE.md; then
|
|
17
|
+
echo "ARCHITECTURE.md should document boundaries, dependency direction, forbidden patterns, or data flow."
|
|
18
|
+
status=1
|
|
19
|
+
fi
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
exit "$status"
|
|
23
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
root="${1:-.}"
|
|
5
|
+
cd "$root"
|
|
6
|
+
|
|
7
|
+
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
8
|
+
echo "Not a git repository; docs sync check is limited to required files."
|
|
9
|
+
test -f .planning/SPEC_CHANGELOG.md
|
|
10
|
+
exit $?
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
changed="$(git diff --name-only HEAD 2>/dev/null || git diff --name-only)"
|
|
14
|
+
docs_changed="$(printf '%s\n' "$changed" | grep -E '^(\.planning/|docs/|README\.md|AGENTS\.md)' || true)"
|
|
15
|
+
code_changed="$(printf '%s\n' "$changed" | grep -Ev '^(\.planning/|docs/|README\.md|AGENTS\.md)$' || true)"
|
|
16
|
+
|
|
17
|
+
if [ -n "$code_changed" ] && [ -z "$docs_changed" ]; then
|
|
18
|
+
echo "Code changed but no planning/docs files changed."
|
|
19
|
+
echo "$code_changed"
|
|
20
|
+
exit 1
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
echo "Docs sync check passed or no code changes detected."
|
|
24
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
root="${1:-.}"
|
|
5
|
+
cd "$root"
|
|
6
|
+
|
|
7
|
+
exclude='\.planning/|\.codex/skills/|node_modules/|vendor/|\.git/|build/|dist/|coverage/'
|
|
8
|
+
pattern='console\.log|debugger;|var_dump\(|dd\(|print_r\(|pdb\.set_trace\(|binding\.pry|puts\s+["'\'']DEBUG|System\.out\.println'
|
|
9
|
+
|
|
10
|
+
if command -v rg >/dev/null 2>&1; then
|
|
11
|
+
matches="$(rg -n --hidden -g '!.planning' -g '!.codex/skills' -g '!node_modules' -g '!vendor' -g '!dist' -g '!build' -g '!coverage' "$pattern" . || true)"
|
|
12
|
+
else
|
|
13
|
+
matches="$(grep -RInE "$pattern" . 2>/dev/null | grep -Ev "$exclude" || true)"
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if [ -n "$matches" ]; then
|
|
17
|
+
echo "$matches"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "No obvious debug logs found."
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
root="${1:-.}"
|
|
5
|
+
cd "$root"
|
|
6
|
+
|
|
7
|
+
required=(
|
|
8
|
+
".planning/PROJECT.md"
|
|
9
|
+
".planning/REQUIREMENTS.md"
|
|
10
|
+
".planning/ROADMAP.md"
|
|
11
|
+
".planning/STATE.md"
|
|
12
|
+
".planning/STACK.md"
|
|
13
|
+
".planning/ARCHITECTURE.md"
|
|
14
|
+
".planning/DESIGN.md"
|
|
15
|
+
".planning/API_DOCS.md"
|
|
16
|
+
".planning/INTEGRATIONS.md"
|
|
17
|
+
".planning/CONVENTIONS.md"
|
|
18
|
+
".planning/PITFALLS.md"
|
|
19
|
+
".planning/LESSONS_LEARNED.md"
|
|
20
|
+
".planning/SPEC_CHANGELOG.md"
|
|
21
|
+
".planning/FEATURE_INDEX.md"
|
|
22
|
+
".planning/CHANGE_IMPACT_MATRIX.md"
|
|
23
|
+
".planning/QUALITY_SCORE.md"
|
|
24
|
+
".planning/ESCALATION.md"
|
|
25
|
+
".planning/OBSERVABILITY.md"
|
|
26
|
+
".planning/SMOKE_TESTS.md"
|
|
27
|
+
".planning/JOURNEYS.md"
|
|
28
|
+
".planning/SUMMARY.md"
|
|
29
|
+
".planning/config.json"
|
|
30
|
+
".planning/diagrams/system-context.mmd"
|
|
31
|
+
".planning/diagrams/container-architecture.mmd"
|
|
32
|
+
".planning/diagrams/database-erd.mmd"
|
|
33
|
+
".planning/diagrams/deployment-flow.mmd"
|
|
34
|
+
".planning/diagrams/roadmap-flow.mmd"
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
missing=0
|
|
38
|
+
for file in "${required[@]}"; do
|
|
39
|
+
if [ ! -f "$file" ]; then
|
|
40
|
+
echo "Missing: $file"
|
|
41
|
+
missing=1
|
|
42
|
+
fi
|
|
43
|
+
done
|
|
44
|
+
|
|
45
|
+
exit "$missing"
|
|
46
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
root="${1:-.}"
|
|
5
|
+
cd "$root"
|
|
6
|
+
|
|
7
|
+
if [ ! -f .planning/SPEC_CHANGELOG.md ]; then
|
|
8
|
+
echo "Missing .planning/SPEC_CHANGELOG.md"
|
|
9
|
+
exit 1
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
13
|
+
changed="$(git diff --name-only HEAD 2>/dev/null || git diff --name-only)"
|
|
14
|
+
spec_affecting="$(printf '%s\n' "$changed" | grep -E 'api|route|schema|migration|model|ui|component|config|env|auth|security|integration' || true)"
|
|
15
|
+
changelog_changed="$(printf '%s\n' "$changed" | grep -x '.planning/SPEC_CHANGELOG.md' || true)"
|
|
16
|
+
if [ -n "$spec_affecting" ] && [ -z "$changelog_changed" ]; then
|
|
17
|
+
echo "Spec-affecting files changed but SPEC_CHANGELOG.md was not updated:"
|
|
18
|
+
echo "$spec_affecting"
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
echo "Spec changelog check passed."
|
|
24
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
root="${1:-.}"
|
|
5
|
+
cd "$root"
|
|
6
|
+
|
|
7
|
+
if [ ! -d .planning ]; then
|
|
8
|
+
echo "Missing .planning directory."
|
|
9
|
+
exit 1
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
status=0
|
|
13
|
+
while IFS= read -r file; do
|
|
14
|
+
case "$file" in
|
|
15
|
+
*TASKS.md|*PLAN.md|*REVIEW.md|*VERIFICATION.md|.planning/ROADMAP.md|.planning/STATE.md|.planning/SUMMARY.md)
|
|
16
|
+
if ! grep -Eq '\[( |~|x|!)\]' "$file"; then
|
|
17
|
+
echo "No checkbox tracking found: $file"
|
|
18
|
+
status=1
|
|
19
|
+
fi
|
|
20
|
+
;;
|
|
21
|
+
esac
|
|
22
|
+
done < <(find .planning -type f -name '*.md' | sort)
|
|
23
|
+
|
|
24
|
+
exit "$status"
|
|
25
|
+
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
usage() {
|
|
5
|
+
echo "Usage: $0 <slug> [title] [root]" >&2
|
|
6
|
+
exit 2
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
slug="${1:-}"
|
|
10
|
+
title="${2:-$slug}"
|
|
11
|
+
root="${3:-.}"
|
|
12
|
+
[ -n "$slug" ] || usage
|
|
13
|
+
|
|
14
|
+
case "$slug" in
|
|
15
|
+
*[!a-z0-9-]*|'') echo "Slug must use lowercase letters, numbers, and hyphens." >&2; exit 2 ;;
|
|
16
|
+
esac
|
|
17
|
+
|
|
18
|
+
cd "$root"
|
|
19
|
+
mkdir -p .planning/decisions
|
|
20
|
+
|
|
21
|
+
next="$(
|
|
22
|
+
find .planning/decisions -maxdepth 1 -type f -name 'ADR-[0-9][0-9][0-9]-*.md' 2>/dev/null \
|
|
23
|
+
| sed -E 's#.*/ADR-([0-9]{3})-.*#\1#' \
|
|
24
|
+
| sort -n \
|
|
25
|
+
| tail -1
|
|
26
|
+
)"
|
|
27
|
+
if [ -z "$next" ]; then
|
|
28
|
+
number="001"
|
|
29
|
+
else
|
|
30
|
+
number="$(printf '%03d' "$((10#$next + 1))")"
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
file=".planning/decisions/ADR-${number}-${slug}.md"
|
|
34
|
+
if [ -e "$file" ]; then
|
|
35
|
+
echo "ADR already exists: $file" >&2
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
cat > "$file" <<EOF
|
|
40
|
+
# ADR-${number}: $title
|
|
41
|
+
|
|
42
|
+
Status: Proposed
|
|
43
|
+
Date: $(date +%Y-%m-%d)
|
|
44
|
+
|
|
45
|
+
## Context
|
|
46
|
+
|
|
47
|
+
TBD
|
|
48
|
+
|
|
49
|
+
## Decision
|
|
50
|
+
|
|
51
|
+
TBD
|
|
52
|
+
|
|
53
|
+
## Alternatives Considered
|
|
54
|
+
|
|
55
|
+
- [ ] TBD
|
|
56
|
+
|
|
57
|
+
## Consequences
|
|
58
|
+
|
|
59
|
+
- [ ] TBD
|
|
60
|
+
|
|
61
|
+
## Risks
|
|
62
|
+
|
|
63
|
+
- [ ] TBD
|
|
64
|
+
|
|
65
|
+
## Mitigation
|
|
66
|
+
|
|
67
|
+
- [ ] TBD
|
|
68
|
+
|
|
69
|
+
## Verification Evidence
|
|
70
|
+
|
|
71
|
+
TBD
|
|
72
|
+
EOF
|
|
73
|
+
|
|
74
|
+
echo "$file"
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
usage() {
|
|
5
|
+
echo "Usage: $0 <slug> [summary] [root]" >&2
|
|
6
|
+
exit 2
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
slug="${1:-}"
|
|
10
|
+
summary="${2:-TBD}"
|
|
11
|
+
root="${3:-.}"
|
|
12
|
+
[ -n "$slug" ] || usage
|
|
13
|
+
|
|
14
|
+
case "$slug" in
|
|
15
|
+
*[!a-z0-9-]*|'') echo "Slug must use lowercase letters, numbers, and hyphens." >&2; exit 2 ;;
|
|
16
|
+
esac
|
|
17
|
+
|
|
18
|
+
cd "$root"
|
|
19
|
+
mkdir -p .planning/bugs
|
|
20
|
+
|
|
21
|
+
next="$(
|
|
22
|
+
find .planning/bugs -maxdepth 1 -type d -name '[0-9][0-9][0-9]-*' 2>/dev/null \
|
|
23
|
+
| sed -E 's#.*/([0-9]{3})-.*#\1#' \
|
|
24
|
+
| sort -n \
|
|
25
|
+
| tail -1
|
|
26
|
+
)"
|
|
27
|
+
if [ -z "$next" ]; then
|
|
28
|
+
number="001"
|
|
29
|
+
else
|
|
30
|
+
number="$(printf '%03d' "$((10#$next + 1))")"
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
dir=".planning/bugs/${number}-${slug}"
|
|
34
|
+
if [ -e "$dir" ]; then
|
|
35
|
+
echo "Bug directory already exists: $dir" >&2
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
mkdir -p "$dir"
|
|
40
|
+
|
|
41
|
+
cat > "$dir/REPORT.md" <<EOF
|
|
42
|
+
# Bug Report: $summary
|
|
43
|
+
|
|
44
|
+
## Summary
|
|
45
|
+
|
|
46
|
+
$summary
|
|
47
|
+
|
|
48
|
+
## Expected Behavior
|
|
49
|
+
|
|
50
|
+
- [ ] TBD
|
|
51
|
+
|
|
52
|
+
## Actual Behavior
|
|
53
|
+
|
|
54
|
+
- [ ] TBD
|
|
55
|
+
|
|
56
|
+
## Reproduction Steps
|
|
57
|
+
|
|
58
|
+
- [ ] TBD
|
|
59
|
+
|
|
60
|
+
## Environment
|
|
61
|
+
|
|
62
|
+
TBD
|
|
63
|
+
EOF
|
|
64
|
+
|
|
65
|
+
cat > "$dir/ROOT_CAUSE.md" <<'EOF'
|
|
66
|
+
# Root Cause
|
|
67
|
+
|
|
68
|
+
## Evidence
|
|
69
|
+
|
|
70
|
+
- [ ] TBD
|
|
71
|
+
|
|
72
|
+
## Root Cause
|
|
73
|
+
|
|
74
|
+
TBD
|
|
75
|
+
|
|
76
|
+
## Failed Assumption
|
|
77
|
+
|
|
78
|
+
TBD
|
|
79
|
+
|
|
80
|
+
## Correct Pattern
|
|
81
|
+
|
|
82
|
+
TBD
|
|
83
|
+
EOF
|
|
84
|
+
|
|
85
|
+
cat > "$dir/PLAN.md" <<'EOF'
|
|
86
|
+
# Plan
|
|
87
|
+
|
|
88
|
+
## Files To Change
|
|
89
|
+
|
|
90
|
+
### File: `path/to/file`
|
|
91
|
+
|
|
92
|
+
Change:
|
|
93
|
+
Why:
|
|
94
|
+
Risk:
|
|
95
|
+
Test:
|
|
96
|
+
Docs impact:
|
|
97
|
+
|
|
98
|
+
## Fix Steps
|
|
99
|
+
|
|
100
|
+
- [ ] TBD
|
|
101
|
+
|
|
102
|
+
## Rollback Plan
|
|
103
|
+
|
|
104
|
+
- [ ] TBD
|
|
105
|
+
EOF
|
|
106
|
+
|
|
107
|
+
cat > "$dir/TEST_CONTRACT.md" <<'EOF'
|
|
108
|
+
# Test Contract
|
|
109
|
+
|
|
110
|
+
- [ ] Reproduction fails before fix
|
|
111
|
+
- [ ] Regression test or verification fails before fix
|
|
112
|
+
- [ ] Regression test or verification passes after fix
|
|
113
|
+
- [ ] Related edge case is covered
|
|
114
|
+
EOF
|
|
115
|
+
|
|
116
|
+
cat > "$dir/TASKS.md" <<'EOF'
|
|
117
|
+
# Tasks
|
|
118
|
+
|
|
119
|
+
- [ ] Read PITFALLS.md
|
|
120
|
+
- [ ] Read LESSONS_LEARNED.md
|
|
121
|
+
- [ ] Reproduce bug
|
|
122
|
+
- [ ] Identify root cause
|
|
123
|
+
- [ ] Write regression test or verification
|
|
124
|
+
- [ ] Fix bug
|
|
125
|
+
- [ ] Run verification
|
|
126
|
+
- [ ] Update LESSONS_LEARNED.md
|
|
127
|
+
- [ ] Update docs if behavior changed
|
|
128
|
+
- [ ] Review changed files
|
|
129
|
+
- [ ] Update STATE.md
|
|
130
|
+
- [ ] Update SPEC_CHANGELOG.md if needed
|
|
131
|
+
EOF
|
|
132
|
+
|
|
133
|
+
cat > "$dir/VERIFICATION.md" <<'EOF'
|
|
134
|
+
# Verification
|
|
135
|
+
|
|
136
|
+
- [ ] Define reproduction command
|
|
137
|
+
- [ ] Run failing verification before fix
|
|
138
|
+
- [ ] Run passing verification after fix
|
|
139
|
+
|
|
140
|
+
| Command | Result | Evidence |
|
|
141
|
+
|---|---|---|
|
|
142
|
+
| TBD | TBD | TBD |
|
|
143
|
+
EOF
|
|
144
|
+
|
|
145
|
+
cat > "$dir/REVIEW.md" <<'EOF'
|
|
146
|
+
# Review
|
|
147
|
+
|
|
148
|
+
- [ ] Changed files reviewed
|
|
149
|
+
- [ ] Regression coverage checked
|
|
150
|
+
- [ ] Docs impact checked
|
|
151
|
+
- [ ] Debug logs removed
|
|
152
|
+
|
|
153
|
+
## Findings
|
|
154
|
+
|
|
155
|
+
| Severity | File | Issue | Follow-Up |
|
|
156
|
+
|---|---|---|---|
|
|
157
|
+
| TBD | TBD | TBD | TBD |
|
|
158
|
+
EOF
|
|
159
|
+
|
|
160
|
+
echo "$dir"
|