@nlaprell/shipit 1.0.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/.cursor/commands/create_intent_from_issue.md +28 -0
- package/.cursor/commands/create_pr.md +28 -0
- package/.cursor/commands/dashboard.md +39 -0
- package/.cursor/commands/deploy.md +152 -0
- package/.cursor/commands/drift_check.md +36 -0
- package/.cursor/commands/fix.md +39 -0
- package/.cursor/commands/generate_release_plan.md +31 -0
- package/.cursor/commands/generate_roadmap.md +38 -0
- package/.cursor/commands/help.md +37 -0
- package/.cursor/commands/init_project.md +26 -0
- package/.cursor/commands/kill.md +72 -0
- package/.cursor/commands/new_intent.md +68 -0
- package/.cursor/commands/pr.md +77 -0
- package/.cursor/commands/revert-plan.md +58 -0
- package/.cursor/commands/risk.md +64 -0
- package/.cursor/commands/rollback.md +43 -0
- package/.cursor/commands/scope_project.md +53 -0
- package/.cursor/commands/ship.md +345 -0
- package/.cursor/commands/status.md +71 -0
- package/.cursor/commands/suggest.md +44 -0
- package/.cursor/commands/test_shipit.md +197 -0
- package/.cursor/commands/verify.md +50 -0
- package/.cursor/rules/architect.mdc +84 -0
- package/.cursor/rules/assumption-extractor.mdc +95 -0
- package/.cursor/rules/docs.mdc +66 -0
- package/.cursor/rules/implementer.mdc +112 -0
- package/.cursor/rules/pm.mdc +136 -0
- package/.cursor/rules/qa.mdc +97 -0
- package/.cursor/rules/security.mdc +90 -0
- package/.cursor/rules/steward.mdc +99 -0
- package/.cursor/rules/test-runner.mdc +196 -0
- package/AGENTS.md +121 -0
- package/README.md +264 -0
- package/_system/architecture/CANON.md +159 -0
- package/_system/architecture/invariants.yml +87 -0
- package/_system/architecture/project-schema.json +98 -0
- package/_system/architecture/workflow-state-layout.md +68 -0
- package/_system/artifacts/SYSTEM_STATE.md +43 -0
- package/_system/artifacts/confidence-calibration.json +16 -0
- package/_system/artifacts/dependencies.md +46 -0
- package/_system/artifacts/framework-files-manifest.json +179 -0
- package/_system/artifacts/usage.json +1 -0
- package/_system/behaviors/DO_RELEASE.md +371 -0
- package/_system/behaviors/DO_RELEASE_AI.md +329 -0
- package/_system/behaviors/PREPARE_RELEASE.md +373 -0
- package/_system/behaviors/PREPARE_RELEASE_AI.md +234 -0
- package/_system/behaviors/WORK_ROOT_PLATFORM_ISSUES.md +140 -0
- package/_system/behaviors/WORK_TEST_PLAN_ISSUES.md +380 -0
- package/_system/do-not-repeat/abandoned-designs.md +18 -0
- package/_system/do-not-repeat/bad-patterns.md +19 -0
- package/_system/do-not-repeat/failed-experiments.md +18 -0
- package/_system/do-not-repeat/rejected-libraries.md +19 -0
- package/_system/drift/baselines.md +49 -0
- package/_system/drift/metrics.md +33 -0
- package/_system/golden-data/.gitkeep +0 -0
- package/_system/golden-data/README.md +47 -0
- package/_system/reports/mutation/mutation.html +492 -0
- package/_system/security/audit-allowlist.json +4 -0
- package/bin/create-shipit-app +29 -0
- package/bin/shipit +183 -0
- package/cli/src/commands/check.js +82 -0
- package/cli/src/commands/create.js +195 -0
- package/cli/src/commands/init.js +267 -0
- package/cli/src/commands/upgrade.js +196 -0
- package/cli/src/utils/config.js +27 -0
- package/cli/src/utils/file-copy.js +144 -0
- package/cli/src/utils/gitignore-merge.js +44 -0
- package/cli/src/utils/manifest.js +105 -0
- package/cli/src/utils/package-json-merge.js +163 -0
- package/cli/src/utils/project-json-merge.js +57 -0
- package/cli/src/utils/prompts.js +30 -0
- package/cli/src/utils/stack-detection.js +56 -0
- package/cli/src/utils/stack-files.js +364 -0
- package/cli/src/utils/upgrade-backup.js +159 -0
- package/cli/src/utils/version.js +64 -0
- package/dashboard-app/README.md +73 -0
- package/dashboard-app/eslint.config.js +23 -0
- package/dashboard-app/index.html +13 -0
- package/dashboard-app/package.json +30 -0
- package/dashboard-app/pnpm-lock.yaml +2721 -0
- package/dashboard-app/public/dashboard.json +66 -0
- package/dashboard-app/public/vite.svg +1 -0
- package/dashboard-app/src/App.css +141 -0
- package/dashboard-app/src/App.tsx +155 -0
- package/dashboard-app/src/assets/react.svg +1 -0
- package/dashboard-app/src/index.css +68 -0
- package/dashboard-app/src/main.tsx +10 -0
- package/dashboard-app/tsconfig.app.json +28 -0
- package/dashboard-app/tsconfig.json +4 -0
- package/dashboard-app/tsconfig.node.json +26 -0
- package/dashboard-app/vite.config.ts +7 -0
- package/package.json +116 -0
- package/scripts/README.md +70 -0
- package/scripts/audit-check.sh +125 -0
- package/scripts/calibration-report.sh +198 -0
- package/scripts/check-readiness.sh +155 -0
- package/scripts/collect-metrics.sh +116 -0
- package/scripts/command-manifest.yml +131 -0
- package/scripts/create-test-plan-issue.sh +110 -0
- package/scripts/dashboard-start.sh +16 -0
- package/scripts/deploy.sh +170 -0
- package/scripts/drift-check.sh +93 -0
- package/scripts/execute-rollback.sh +177 -0
- package/scripts/export-dashboard-json.js +208 -0
- package/scripts/fix-intents.sh +239 -0
- package/scripts/generate-dashboard.sh +136 -0
- package/scripts/generate-docs.sh +279 -0
- package/scripts/generate-project-context.sh +142 -0
- package/scripts/generate-release-plan.sh +443 -0
- package/scripts/generate-roadmap.sh +189 -0
- package/scripts/generate-system-state.sh +95 -0
- package/scripts/gh/create-intent-from-issue.sh +82 -0
- package/scripts/gh/create-issue-from-intent.sh +59 -0
- package/scripts/gh/create-pr.sh +41 -0
- package/scripts/gh/link-issue.sh +44 -0
- package/scripts/gh/on-ship-update-issue.sh +42 -0
- package/scripts/headless/README.md +8 -0
- package/scripts/headless/call-llm.js +109 -0
- package/scripts/headless/run-phase.sh +99 -0
- package/scripts/help.sh +271 -0
- package/scripts/init-project.sh +976 -0
- package/scripts/kill-intent.sh +125 -0
- package/scripts/lib/common.sh +29 -0
- package/scripts/lib/intent.sh +61 -0
- package/scripts/lib/progress.sh +57 -0
- package/scripts/lib/suggest-next.sh +131 -0
- package/scripts/lib/validate-intents.sh +240 -0
- package/scripts/lib/verify-outputs.sh +55 -0
- package/scripts/lib/workflow_state.sh +201 -0
- package/scripts/new-intent.sh +271 -0
- package/scripts/publish-npm.sh +28 -0
- package/scripts/scope-project.sh +380 -0
- package/scripts/setup-worktrees.sh +125 -0
- package/scripts/status.sh +278 -0
- package/scripts/suggest.sh +173 -0
- package/scripts/test-headless.sh +47 -0
- package/scripts/test-shipit.sh +52 -0
- package/scripts/test-workflow-state.sh +49 -0
- package/scripts/usage-report.sh +47 -0
- package/scripts/usage.sh +58 -0
- package/scripts/validate-cursor.sh +151 -0
- package/scripts/validate-project.sh +71 -0
- package/scripts/validate-vscode.sh +146 -0
- package/scripts/verify.sh +153 -0
- package/scripts/workflow-orchestrator.sh +97 -0
- package/scripts/workflow-templates/01_analysis.md.tpl +25 -0
- package/scripts/workflow-templates/02_plan.md.tpl +30 -0
- package/scripts/workflow-templates/03_implementation.md.tpl +25 -0
- package/scripts/workflow-templates/04_verification.md.tpl +29 -0
- package/scripts/workflow-templates/05_release_notes.md.tpl +16 -0
- package/scripts/workflow-templates/05_verification_legacy.md.tpl +6 -0
- package/scripts/workflow-templates/active.md.tpl +18 -0
- package/scripts/workflow-templates/phases.yml +39 -0
- package/stryker.conf.json +8 -0
- package/work/intent/templates/api-endpoint.md +124 -0
- package/work/intent/templates/bugfix.md +116 -0
- package/work/intent/templates/frontend-feature.md +115 -0
- package/work/intent/templates/generic.md +122 -0
- package/work/intent/templates/infra-change.md +121 -0
- package/work/intent/templates/refactor.md +116 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Root Platform Issue Workflow
|
|
2
|
+
|
|
3
|
+
**Purpose:** Define a consistent, high-quality workflow for resolving root platform issues.
|
|
4
|
+
|
|
5
|
+
**When to use:** Any time you are working a platform issue from GitHub Issues.
|
|
6
|
+
|
|
7
|
+
## Agent Execution Rule
|
|
8
|
+
|
|
9
|
+
**You must execute the entire workflow yourself.** Do not stop early to "give the user directions" or "let them do the next step." For each step:
|
|
10
|
+
|
|
11
|
+
- **Do it:** Run the commands, create the PR, post the resolution comment, close the issue, add the review comment. Use `gh`, `git`, and your tools.
|
|
12
|
+
- **Only hand off** when the workflow explicitly requires a human (e.g. "Wait for merge approval" or "stop and request approval").
|
|
13
|
+
|
|
14
|
+
If you cannot complete a step (e.g. no `gh` auth, no merge permission), say so and do everything up to that point—do not hand off steps you _can_ do (push, PR create, issue close, PR comment) by telling the user to do them.
|
|
15
|
+
|
|
16
|
+
**Anti-pattern:** Ending with "Next: push the branch and open a PR" or "You can now merge" when you have not yet pushed, created the PR, or posted the resolution comment. That is drift; complete the steps instead.
|
|
17
|
+
|
|
18
|
+
## Scope and Safety
|
|
19
|
+
|
|
20
|
+
- This behavior applies to the root platform repo (not downstream project repos).
|
|
21
|
+
- **All issues are tracked on GitHub** (not in local files).
|
|
22
|
+
- Read issues from GitHub using MCP tools or GitHub API.
|
|
23
|
+
- After resolving an issue, add a resolution comment and close it on GitHub.
|
|
24
|
+
- If the issue cannot be resolved without changing scope or requirements, stop and report.
|
|
25
|
+
- Update `README.md` if the fix adds or changes user-facing behavior, commands, or workflows.
|
|
26
|
+
|
|
27
|
+
**Note:** As of 2026-01-28, all issues are tracked on GitHub. The previous file-based tracking in `tests/ISSUES.md` is deprecated. See `behaviors/WORK_TEST_PLAN_ISSUES.md` for issue creation rules.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Workflow
|
|
32
|
+
|
|
33
|
+
### Step 1: Validate the Implementation
|
|
34
|
+
|
|
35
|
+
**Objective:** Confirm the current implementation and issue description still match reality.
|
|
36
|
+
|
|
37
|
+
**Actions:**
|
|
38
|
+
|
|
39
|
+
1. Ensure the current workspace is clean before starting work.
|
|
40
|
+
2. Switch to main branch and ensure it's up to date: `git checkout main && git pull origin main`
|
|
41
|
+
3. Create a new branch for the issue from main: `git checkout -b issue-XXX-description` (where XXX is the GitHub issue number)
|
|
42
|
+
4. Push the branch: `git push -u origin issue-XXX-description`
|
|
43
|
+
5. Read the GitHub issue using MCP tools (e.g., `mcp_github-mcp_get_issue`) or GitHub API.
|
|
44
|
+
6. Verify the described behavior is still reproducible or still missing.
|
|
45
|
+
7. If the issue description is outdated or incorrect:
|
|
46
|
+
- Add a comment to the GitHub issue with corrected findings before proceeding.
|
|
47
|
+
- If the issue is no longer valid, add a resolution comment explaining why and close the issue.
|
|
48
|
+
|
|
49
|
+
**Stop gate:** If the issue is invalid or not reproducible, do not implement changes.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### Step 2: Work the Issue
|
|
54
|
+
|
|
55
|
+
**Objective:** Implement the fix or missing functionality.
|
|
56
|
+
|
|
57
|
+
**Actions:**
|
|
58
|
+
|
|
59
|
+
1. Identify the smallest set of files required to change.
|
|
60
|
+
2. Implement the fix.
|
|
61
|
+
3. Avoid bloat: no unrelated refactors or feature additions.
|
|
62
|
+
4. Run the narrowest verification that proves the fix.
|
|
63
|
+
5. Commit any new changes made during validation.
|
|
64
|
+
|
|
65
|
+
**Stop gate:** If the fix requires new scope, stop and request approval.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
### Step 3: Quality Review
|
|
70
|
+
|
|
71
|
+
**Objective:** Ensure the solution is correct, minimal, and safe.
|
|
72
|
+
|
|
73
|
+
**Actions:**
|
|
74
|
+
|
|
75
|
+
1. Re-read the changed files for logic errors or regressions.
|
|
76
|
+
2. Check for unnecessary complexity or duplication.
|
|
77
|
+
3. Confirm the fix aligns with existing patterns and scripts.
|
|
78
|
+
4. Verify no unrelated files were modified.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### Step 4: Update Issue Records
|
|
83
|
+
|
|
84
|
+
**Objective:** Record resolution and close the GitHub issue.
|
|
85
|
+
|
|
86
|
+
**Actions:**
|
|
87
|
+
|
|
88
|
+
1. Add a resolution comment to the GitHub issue using `tests/ISSUE_RESOLUTION_COMMENT_TEMPLATE.md`:
|
|
89
|
+
- **Resolution:** How the issue was resolved, what was changed
|
|
90
|
+
- **Validation:** How the fix was validated, tests run, verification steps
|
|
91
|
+
- **Date Resolved:** YYYY-MM-DD
|
|
92
|
+
2. Close the GitHub issue using MCP tools (e.g., `mcp_github-mcp_update_issue` with `state: "closed"`).
|
|
93
|
+
3. Update `README.md` if the change affects user-facing docs.
|
|
94
|
+
4. Commit the final changes when the work is finished.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### Step 5: Submit PR and Review Cycle
|
|
99
|
+
|
|
100
|
+
**Objective:** Submit PR and iterate until it's ready to merge.
|
|
101
|
+
|
|
102
|
+
**Actions (you perform these; do not hand off to the user):**
|
|
103
|
+
|
|
104
|
+
1. Summarize changes and validation performed.
|
|
105
|
+
2. Report the final status (resolved/blocked/invalid).
|
|
106
|
+
3. Reference the GitHub issue number in the PR description (e.g., "Resolves #123").
|
|
107
|
+
4. **Submit the PR yourself:** `git push -u origin <branch>` then `gh pr create` (or equivalent). Do not tell the user to "open a PR" or "push and create a PR."
|
|
108
|
+
5. **Review the PR yourself** and add comments with findings:
|
|
109
|
+
- Check for bloat, rabbit holes, or unnecessary complexity
|
|
110
|
+
- Verify all requirements are met
|
|
111
|
+
- Check for unrelated changes
|
|
112
|
+
- Verify code quality and consistency
|
|
113
|
+
6. **If PR is not ready to merge:**
|
|
114
|
+
- Resolve all identified issues
|
|
115
|
+
- Commit the fixes: `git commit -m "Fix: [description of fixes]"`
|
|
116
|
+
- Push the changes: `git push`
|
|
117
|
+
- Add a comment to the PR summarizing the fixes
|
|
118
|
+
- **Review the PR again** and add comments with findings
|
|
119
|
+
- **Repeat** the review/fix cycle until the PR is ready to merge
|
|
120
|
+
7. **If PR is ready to merge:**
|
|
121
|
+
- Confirm in a PR comment that it's ready.
|
|
122
|
+
- If you can merge (e.g. `gh pr merge` works), merge the PR. Otherwise, the only handoff is: the user merges when ready.
|
|
123
|
+
8. **After the PR is merged** (by you or the user): Switch back to `main` and pull so the workspace is clean for the next task: `git checkout main && git pull origin main`.
|
|
124
|
+
|
|
125
|
+
**Review Criteria:**
|
|
126
|
+
|
|
127
|
+
- No bloat or unnecessary complexity
|
|
128
|
+
- No rabbit holes (scope creep)
|
|
129
|
+
- All requirements met
|
|
130
|
+
- No unrelated changes
|
|
131
|
+
- Code quality and consistency verified
|
|
132
|
+
- Issue tracking updated correctly
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Validation Guidance
|
|
137
|
+
|
|
138
|
+
- Prefer targeted checks over full suites when safe.
|
|
139
|
+
- If there is any uncertainty, run full checks: `pnpm test`, `pnpm lint`, `pnpm typecheck`.
|
|
140
|
+
- Capture the commands run and their outcomes in the issue resolution notes.
|
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
# Test Plan Issue Management
|
|
2
|
+
|
|
3
|
+
**Purpose:** Define consistent rules for creating, tracking, and archiving issues discovered during test plan execution using GitHub Issues.
|
|
4
|
+
|
|
5
|
+
**When to use:** Any time you are executing test plan steps from `tests/TEST_PLAN.md` and encounter failures, missing functionality, or unexpected behavior.
|
|
6
|
+
|
|
7
|
+
## Quick Reference: Templates
|
|
8
|
+
|
|
9
|
+
- **Issue body:** Use `tests/ISSUE_TEMPLATE.md` (GitHub issue body)
|
|
10
|
+
- **Research Notes:** Use `tests/ISSUE_RESEARCH_TEMPLATE.md` (GitHub issue body)
|
|
11
|
+
- **Resolution Comments:** Use `tests/ISSUE_RESOLUTION_COMMENT_TEMPLATE.md` (GitHub issue comment)
|
|
12
|
+
- **Issue Title:** Brief descriptive title (e.g., "Missing golden-data directory")
|
|
13
|
+
|
|
14
|
+
Always create issues on GitHub using the templates. Issues are tracked on GitHub, not in local files.
|
|
15
|
+
|
|
16
|
+
## Scope and Safety
|
|
17
|
+
|
|
18
|
+
- This behavior applies to issues discovered during test plan execution.
|
|
19
|
+
- **All issues are created on GitHub** in the repository where the test is running.
|
|
20
|
+
- Root platform issues: Create in root platform repository (e.g., `NJLaPrell/ShipIt`).
|
|
21
|
+
- Test project issues: Create in test project repository (if it has its own repo) or root platform repository.
|
|
22
|
+
- After resolving an issue, close it on GitHub with a resolution comment.
|
|
23
|
+
|
|
24
|
+
**Note:** This workflow replaces the previous file-based issue tracking in `tests/ISSUES.md`. `tests/ISSUES.md` is for **test run logs only**; issues live on GitHub.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Preflight (Must Pass Before Creating Issues)
|
|
29
|
+
|
|
30
|
+
Before creating any issues, verify `gh` is available and authenticated:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
gh --version
|
|
34
|
+
gh auth status
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If authentication is missing/expired, **STOP** and treat it as a **blocking** test-plan failure (you cannot correctly record issues).
|
|
38
|
+
|
|
39
|
+
## Repo Resolution (Where to File the Issue)
|
|
40
|
+
|
|
41
|
+
### Determine the current repo
|
|
42
|
+
|
|
43
|
+
From the workspace where the failure occurred:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
gh repo view --json nameWithOwner -q .nameWithOwner
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
If this fails (e.g., not a git repo, no remote), fall back to the **root platform repo** (usually `NJLaPrell/ShipIt`) and note the limitation in the issue body.
|
|
50
|
+
|
|
51
|
+
### Decision rule
|
|
52
|
+
|
|
53
|
+
- **Root platform issue → file in root platform repo**
|
|
54
|
+
- Missing/broken framework scripts or commands
|
|
55
|
+
- Incorrect framework behaviors/docs/templates
|
|
56
|
+
- CI/lint/test configuration in the framework
|
|
57
|
+
- Anything that would affect _any_ initialized project
|
|
58
|
+
|
|
59
|
+
- **Test project issue → file in test project repo (only if it exists as a real repo), otherwise root platform repo**
|
|
60
|
+
- Failures caused by test-project-specific content or changes _after_ initialization
|
|
61
|
+
- If the test project is just a folder created under `./projects/` (no separate remote), file in the root platform repo and label it as test-project surfaced
|
|
62
|
+
|
|
63
|
+
Rule of thumb: if fixing it requires changing the framework repo → file in the framework repo.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## When to Create an Issue
|
|
68
|
+
|
|
69
|
+
Create a GitHub issue when:
|
|
70
|
+
|
|
71
|
+
1. **Test step fails** (expected behavior doesn't match actual)
|
|
72
|
+
2. **Missing functionality** (expected feature/script/file doesn't exist)
|
|
73
|
+
3. **Unexpected behavior** (system behaves differently than documented)
|
|
74
|
+
4. **Tooling missing** (required scripts, configs, or dependencies are absent)
|
|
75
|
+
5. **Configuration errors** (invalid or missing configuration causes failures)
|
|
76
|
+
|
|
77
|
+
**Do NOT create issues for:**
|
|
78
|
+
|
|
79
|
+
- Expected failures (tests that are supposed to fail initially)
|
|
80
|
+
- User errors (incorrect input, wrong commands)
|
|
81
|
+
- Transient failures (network issues, temporary outages)
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Creating GitHub Issues
|
|
86
|
+
|
|
87
|
+
### Issue Creation Process
|
|
88
|
+
|
|
89
|
+
1. **Prepare the issue:**
|
|
90
|
+
- Read the appropriate template (`tests/ISSUE_TEMPLATE.md` or `tests/ISSUE_RESEARCH_TEMPLATE.md`)
|
|
91
|
+
- Fill in all fields with specific, actionable information
|
|
92
|
+
- Remove placeholder text and brackets
|
|
93
|
+
|
|
94
|
+
2. **Create the issue on GitHub:**
|
|
95
|
+
- Use the GitHub CLI (`gh`) to create the issue
|
|
96
|
+
- **Title:** Brief descriptive title (e.g., "Missing golden-data directory")
|
|
97
|
+
- **Body:** Use the filled-out template content
|
|
98
|
+
- **Labels:** Add appropriate labels (labels must exist before use):
|
|
99
|
+
- Severity: `severity:low`, `severity:medium`, `severity:high`
|
|
100
|
+
- Type: `test-plan-issue`, `research-note` (if applicable)
|
|
101
|
+
- Step: `step:12-1`, `step:UX`, etc. (if applicable)
|
|
102
|
+
- **Repository:** Create in the appropriate repository (root platform or test project)
|
|
103
|
+
- **Label Creation:** Labels must be created via GitHub UI before they can be used. GitHub MCP tools and API cannot create labels—they can only add existing labels to issues. If a label doesn't exist:
|
|
104
|
+
1. Go to the repository on GitHub
|
|
105
|
+
2. Navigate to Issues → Labels
|
|
106
|
+
3. Create the label with the exact name (e.g., `severity:low`, `test-plan-issue`)
|
|
107
|
+
4. Then use the label when creating the issue
|
|
108
|
+
|
|
109
|
+
3. **Reference the issue:**
|
|
110
|
+
- Use GitHub issue number (e.g., `#123`) in test run summaries
|
|
111
|
+
- Link to the issue in documentation
|
|
112
|
+
|
|
113
|
+
### Issue Format
|
|
114
|
+
|
|
115
|
+
**Use the template:** `tests/ISSUE_TEMPLATE.md`
|
|
116
|
+
|
|
117
|
+
The template provides the GitHub issue body format. Fill in:
|
|
118
|
+
|
|
119
|
+
- **Severity:** low | medium | high
|
|
120
|
+
- **Step:** Test step number or phase name
|
|
121
|
+
- **First Seen:** Date when issue was discovered
|
|
122
|
+
- **Expected:** What should happen
|
|
123
|
+
- **Actual:** What actually happened
|
|
124
|
+
- **Error:** Error message or description
|
|
125
|
+
- **Implementation:** Action items
|
|
126
|
+
|
|
127
|
+
### Severity Levels
|
|
128
|
+
|
|
129
|
+
- **high:** Blocks test execution or core functionality
|
|
130
|
+
- **medium:** Affects functionality but workarounds exist
|
|
131
|
+
- **low:** Minor issues, missing nice-to-haves, UX improvements
|
|
132
|
+
|
|
133
|
+
### Issue Numbering
|
|
134
|
+
|
|
135
|
+
- GitHub automatically assigns sequential issue numbers (#1, #2, #3, etc.)
|
|
136
|
+
- Reference issues by their GitHub number (e.g., `#123`)
|
|
137
|
+
- No manual numbering required
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Issue Categorization
|
|
142
|
+
|
|
143
|
+
### Active Issues
|
|
144
|
+
|
|
145
|
+
Create regular GitHub issues when:
|
|
146
|
+
|
|
147
|
+
- They need to be resolved
|
|
148
|
+
- They block or affect test execution
|
|
149
|
+
- They represent missing functionality
|
|
150
|
+
|
|
151
|
+
Use `tests/ISSUE_TEMPLATE.md` for the body.
|
|
152
|
+
|
|
153
|
+
### Research Notes
|
|
154
|
+
|
|
155
|
+
Create GitHub issues with `research-note` label when:
|
|
156
|
+
|
|
157
|
+
- They require research before implementation
|
|
158
|
+
- They are deferred for future work
|
|
159
|
+
- They need architectural decisions
|
|
160
|
+
- They are low priority but worth documenting
|
|
161
|
+
|
|
162
|
+
Use `tests/ISSUE_RESEARCH_TEMPLATE.md` for the body and add `research-note` label.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Test Run Recording
|
|
167
|
+
|
|
168
|
+
### Test Runs (run logs only)
|
|
169
|
+
|
|
170
|
+
`tests/ISSUES.md` must contain **only the latest run**. Prior runs are archived in `tests/ISSUES_HISTORIC.md`.
|
|
171
|
+
|
|
172
|
+
**When recording a new run:**
|
|
173
|
+
|
|
174
|
+
1. Append all existing run blocks from `tests/ISSUES.md` to `tests/ISSUES_HISTORIC.md` (under `## Historic Test Runs`).
|
|
175
|
+
2. Write `tests/ISSUES.md` with header, Counting Conventions, and only the new run block.
|
|
176
|
+
|
|
177
|
+
Format for each run block:
|
|
178
|
+
|
|
179
|
+
```markdown
|
|
180
|
+
## Test Runs
|
|
181
|
+
|
|
182
|
+
### Run: YYYY-MM-DDTHH:MM:SSZ (root-project | test-project)
|
|
183
|
+
|
|
184
|
+
**Steps Total:** [number]
|
|
185
|
+
**Steps Executed:** [number]
|
|
186
|
+
**Steps Skipped:** [number]
|
|
187
|
+
**Steps Passed:** [number]
|
|
188
|
+
**Steps Failed:** [number]
|
|
189
|
+
**Blocking Issues:** [number]
|
|
190
|
+
**Result:** ✅ PASS | ❌ FAIL
|
|
191
|
+
|
|
192
|
+
#### Summary
|
|
193
|
+
|
|
194
|
+
| Step | Name | Status | Severity | Notes |
|
|
195
|
+
| ---- | --------- | ----------------- | -------- | ----- |
|
|
196
|
+
| X-Y | Step name | ✅ PASS / ❌ FAIL | severity | Notes |
|
|
197
|
+
|
|
198
|
+
#### Issues Found This Run
|
|
199
|
+
|
|
200
|
+
- **#123:** [Title] ([severity]) - **RESOLVED** / **ACTIVE**
|
|
201
|
+
- **#124:** [Title] ([severity]) - **RESOLVED** / **ACTIVE**
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Note:** Issues are tracked on GitHub. Only reference GitHub issue numbers here.
|
|
205
|
+
|
|
206
|
+
Definitions:
|
|
207
|
+
|
|
208
|
+
- **Steps Total**: Total steps in the test plan section being run (including those that may be skipped due to blocking failures).
|
|
209
|
+
- **Steps Executed**: Count of steps with status **✅ PASS** or **❌ FAIL** (exclude **⏭️ SKIP**).
|
|
210
|
+
- **Steps Skipped**: Count of steps with status **⏭️ SKIP**.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Archiving Issues
|
|
215
|
+
|
|
216
|
+
### When to Close an Issue
|
|
217
|
+
|
|
218
|
+
Close a GitHub issue when:
|
|
219
|
+
|
|
220
|
+
- It has been resolved
|
|
221
|
+
- It is no longer valid (e.g., requirements changed)
|
|
222
|
+
- It was a false positive
|
|
223
|
+
|
|
224
|
+
### Closing Process
|
|
225
|
+
|
|
226
|
+
1. **Verify the fix:**
|
|
227
|
+
- Confirm the issue is resolved
|
|
228
|
+
- Run verification steps
|
|
229
|
+
- Document validation results
|
|
230
|
+
|
|
231
|
+
2. **Add resolution comment:**
|
|
232
|
+
- Add a comment to the GitHub issue with:
|
|
233
|
+
- **Resolution:** How the issue was resolved, what was changed
|
|
234
|
+
- **Validation:** How the fix was validated, tests run, verification steps
|
|
235
|
+
- **Date Resolved:** YYYY-MM-DD
|
|
236
|
+
|
|
237
|
+
3. **Close the issue:**
|
|
238
|
+
- Close the GitHub issue
|
|
239
|
+
- Add appropriate labels if needed (e.g., `resolved`, `fixed`)
|
|
240
|
+
|
|
241
|
+
4. **Update test run summary:**
|
|
242
|
+
- Mark issue as **RESOLVED** in "Issues Found This Run" section
|
|
243
|
+
- Update with GitHub issue number and link
|
|
244
|
+
|
|
245
|
+
### Resolution Comment Format
|
|
246
|
+
|
|
247
|
+
**Use the template:** `tests/ISSUE_RESOLUTION_COMMENT_TEMPLATE.md`
|
|
248
|
+
|
|
249
|
+
Copy the template and fill in:
|
|
250
|
+
|
|
251
|
+
- Fill in "Resolution" with specific details about what was changed
|
|
252
|
+
- Fill in "Validation" with specific verification steps and test results
|
|
253
|
+
- Add the date resolved
|
|
254
|
+
- Remove any placeholder text or brackets
|
|
255
|
+
|
|
256
|
+
See `tests/ISSUE_RESOLUTION_COMMENT_TEMPLATE.md` for the complete template.
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Location Rules
|
|
261
|
+
|
|
262
|
+
### Root Platform vs Test Project
|
|
263
|
+
|
|
264
|
+
- **Root platform issues:** Create in root platform repository
|
|
265
|
+
- Missing framework scripts
|
|
266
|
+
- Framework bugs
|
|
267
|
+
- Missing framework files/configs
|
|
268
|
+
- CI/CD issues
|
|
269
|
+
- Documentation issues
|
|
270
|
+
|
|
271
|
+
- **Test project issues:** Create in test project repository (if it has its own repo) or root platform repository
|
|
272
|
+
- Project-specific test failures
|
|
273
|
+
- Project configuration issues
|
|
274
|
+
- Project-specific missing functionality
|
|
275
|
+
|
|
276
|
+
**Rule of thumb:** If the issue affects the framework itself → root platform repo. If it affects only the test project → test project repo (or root if no separate repo).
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Workflow
|
|
281
|
+
|
|
282
|
+
### During Test Execution
|
|
283
|
+
|
|
284
|
+
1. **When a step fails:**
|
|
285
|
+
- Record the failure in the test run summary table (in `tests/ISSUES.md`)
|
|
286
|
+
- Create a GitHub issue if it's a new issue (use `tests/ISSUE_TEMPLATE.md`)
|
|
287
|
+
- Reference the GitHub issue number in "Issues Found This Run" section
|
|
288
|
+
|
|
289
|
+
2. **When discovering missing functionality:**
|
|
290
|
+
- Create a GitHub issue immediately (use `tests/ISSUE_TEMPLATE.md` or `tests/ISSUE_RESEARCH_TEMPLATE.md`)
|
|
291
|
+
- Add appropriate labels (severity, type, step)
|
|
292
|
+
- Reference the issue number in test run summary
|
|
293
|
+
|
|
294
|
+
3. **At end of test run:**
|
|
295
|
+
- Update "Latest Test Run" section in `tests/ISSUES.md` with summary
|
|
296
|
+
- List all GitHub issues found in "Issues Found This Run" (with issue numbers)
|
|
297
|
+
- Update overall validation status if applicable
|
|
298
|
+
|
|
299
|
+
### After Issue Resolution
|
|
300
|
+
|
|
301
|
+
1. Add resolution comment to the GitHub issue
|
|
302
|
+
2. Close the GitHub issue
|
|
303
|
+
3. Update test run summary in `tests/ISSUES.md` to mark issue as **RESOLVED**
|
|
304
|
+
4. Update with link to closed issue
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## Examples
|
|
309
|
+
|
|
310
|
+
The following examples show filled-out templates. Always start from the templates:
|
|
311
|
+
|
|
312
|
+
- Active issues: Use `tests/ISSUE_TEMPLATE.md`
|
|
313
|
+
- Research notes: Use `tests/ISSUE_RESEARCH_TEMPLATE.md`
|
|
314
|
+
|
|
315
|
+
### Example: Active Issue (GitHub Issue #123)
|
|
316
|
+
|
|
317
|
+
**Title:** Missing golden-data directory
|
|
318
|
+
|
|
319
|
+
**Body (from ISSUE_TEMPLATE.md):**
|
|
320
|
+
|
|
321
|
+
```markdown
|
|
322
|
+
**Severity:** low
|
|
323
|
+
**Step:** UX
|
|
324
|
+
**First Seen:** 2026-01-27
|
|
325
|
+
|
|
326
|
+
## Expected
|
|
327
|
+
|
|
328
|
+
`golden-data/` directory exists per plan
|
|
329
|
+
|
|
330
|
+
## Actual
|
|
331
|
+
|
|
332
|
+
Directory does not exist
|
|
333
|
+
|
|
334
|
+
## Error
|
|
335
|
+
|
|
336
|
+
Replay validation test data cannot be stored
|
|
337
|
+
|
|
338
|
+
## Implementation
|
|
339
|
+
|
|
340
|
+
- Add `golden-data/.gitkeep` to track directory
|
|
341
|
+
- Create `golden-data/README.md` with format documentation
|
|
342
|
+
- Update `scripts/init-project.sh` to create directory
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
**Labels:** `severity:low`, `test-plan-issue`, `step:UX`
|
|
346
|
+
|
|
347
|
+
### Example: Research Note (GitHub Issue #124)
|
|
348
|
+
|
|
349
|
+
**Title:** Intent subfolders missing
|
|
350
|
+
|
|
351
|
+
**Body (from ISSUE_RESEARCH_TEMPLATE.md):**
|
|
352
|
+
|
|
353
|
+
```markdown
|
|
354
|
+
**Type:** Research Note
|
|
355
|
+
**Priority:** low
|
|
356
|
+
|
|
357
|
+
## Best Approach
|
|
358
|
+
|
|
359
|
+
- Create `intent/features/`, `intent/bugs/`, `intent/tech-debt/` subdirectories
|
|
360
|
+
- Update all scripts to read intents recursively
|
|
361
|
+
|
|
362
|
+
## Integration Points
|
|
363
|
+
|
|
364
|
+
- `scripts/new-intent.sh` - write to subfolders
|
|
365
|
+
- `scripts/generate-release-plan.sh` - read recursively
|
|
366
|
+
- `scripts/generate-roadmap.sh` - read recursively
|
|
367
|
+
- `scripts/init-project.sh` - create subfolders
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
**Labels:** `research-note`, `severity:low`, `test-plan-issue`
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## Validation
|
|
375
|
+
|
|
376
|
+
- All issues must be created on GitHub (not in local files)
|
|
377
|
+
- All issues must have clear "Expected" vs "Actual" descriptions
|
|
378
|
+
- Severity must be assigned (low/medium/high) and added as label
|
|
379
|
+
- Issues must be referenced by GitHub issue number in test run summaries
|
|
380
|
+
- Closed issues must have resolution comments with validation details
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Abandoned Designs
|
|
2
|
+
|
|
3
|
+
This ledger records design approaches that were considered but rejected. **Do not rediscover these.**
|
|
4
|
+
|
|
5
|
+
## Format
|
|
6
|
+
|
|
7
|
+
Each entry should include:
|
|
8
|
+
|
|
9
|
+
- **Design:** Brief description
|
|
10
|
+
- **Why abandoned:** Reason for rejection
|
|
11
|
+
- **Date:** When it was abandoned
|
|
12
|
+
- **Intent ID:** Related intent (if any)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Entries
|
|
17
|
+
|
|
18
|
+
(No entries yet. Add entries as designs are abandoned.)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Bad Patterns
|
|
2
|
+
|
|
3
|
+
This ledger records code patterns, architectural approaches, or practices that have been identified as problematic. **Do not repeat these patterns.**
|
|
4
|
+
|
|
5
|
+
## Format
|
|
6
|
+
|
|
7
|
+
Each entry should include:
|
|
8
|
+
|
|
9
|
+
- **Pattern:** Brief description of the pattern
|
|
10
|
+
- **Why it's bad:** Problems it causes
|
|
11
|
+
- **Date:** When it was identified
|
|
12
|
+
- **Intent ID:** Related intent (if any)
|
|
13
|
+
- **Alternative:** Better approach (if known)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Entries
|
|
18
|
+
|
|
19
|
+
(No entries yet. Add entries as bad patterns are identified.)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Failed Experiments
|
|
2
|
+
|
|
3
|
+
This ledger records experiments that were tried but failed. **Do not repeat these.**
|
|
4
|
+
|
|
5
|
+
## Format
|
|
6
|
+
|
|
7
|
+
Each entry should include:
|
|
8
|
+
|
|
9
|
+
- **Experiment:** What was tried
|
|
10
|
+
- **Why it failed:** Root cause
|
|
11
|
+
- **Date:** When it failed
|
|
12
|
+
- **Intent ID:** Related intent (if any)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Entries
|
|
17
|
+
|
|
18
|
+
(No entries yet. Add entries as experiments fail.)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Rejected Libraries
|
|
2
|
+
|
|
3
|
+
This ledger records libraries, frameworks, or tools that were evaluated but rejected. **Do not reconsider these without new information.**
|
|
4
|
+
|
|
5
|
+
## Format
|
|
6
|
+
|
|
7
|
+
Each entry should include:
|
|
8
|
+
|
|
9
|
+
- **Library:** Name and version (if applicable)
|
|
10
|
+
- **Why rejected:** Reason for rejection (performance, licensing, maintenance, etc.)
|
|
11
|
+
- **Date:** When it was rejected
|
|
12
|
+
- **Intent ID:** Related intent (if any)
|
|
13
|
+
- **Alternatives:** Better options (if known)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Entries
|
|
18
|
+
|
|
19
|
+
(No entries yet. Add entries as libraries are rejected.)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Drift Baselines
|
|
2
|
+
|
|
3
|
+
Initial thresholds for drift detection. Update these as the system matures.
|
|
4
|
+
|
|
5
|
+
## Baseline Metrics (Initial)
|
|
6
|
+
|
|
7
|
+
| Metric | Baseline | Threshold | Action if Exceeded |
|
|
8
|
+
| ------------------------- | ---------- | ---------- | ------------------ |
|
|
9
|
+
| **Avg PR size** | < 10 files | > 15 files | Flag for review |
|
|
10
|
+
| **Test-to-code ratio** | > 0.5 | < 0.3 | Block merge |
|
|
11
|
+
| **Dependency count** | < 50 deps | > 100 deps | Review for bloat |
|
|
12
|
+
| **New files w/o intents** | 0 | > 5 | Flag for review |
|
|
13
|
+
| **CI time-to-green** | < 5 min | > 15 min | Investigate |
|
|
14
|
+
|
|
15
|
+
## Drift Indicators
|
|
16
|
+
|
|
17
|
+
### Vocabulary Drift
|
|
18
|
+
|
|
19
|
+
- New terms introduced without documentation
|
|
20
|
+
- Terms used inconsistently across codebase
|
|
21
|
+
- **Detection:** Grep for new domain terms, check consistency
|
|
22
|
+
|
|
23
|
+
### Dependency Graph Entropy
|
|
24
|
+
|
|
25
|
+
- Circular dependencies introduced
|
|
26
|
+
- Import depth increases
|
|
27
|
+
- **Detection:** ESLint `import/no-cycle`, custom depth checker
|
|
28
|
+
|
|
29
|
+
### Test Coverage Drift
|
|
30
|
+
|
|
31
|
+
- New code without tests
|
|
32
|
+
- Test-to-code ratio decreases
|
|
33
|
+
- **Detection:** Coverage reports, ratio calculation
|
|
34
|
+
|
|
35
|
+
### Architecture Drift
|
|
36
|
+
|
|
37
|
+
- Violations of CANON.md
|
|
38
|
+
- New patterns without ADRs
|
|
39
|
+
- **Detection:** ESLint rules, manual review
|
|
40
|
+
|
|
41
|
+
## Review Schedule
|
|
42
|
+
|
|
43
|
+
- **Weekly:** Automated drift check (CI)
|
|
44
|
+
- **Monthly:** Human review of drift metrics
|
|
45
|
+
- **Quarterly:** Baseline recalibration
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
_Last updated: 2026-01-12_
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Drift Metrics Report
|
|
2
|
+
|
|
3
|
+
Generated: 2026-02-04T22:05:43Z
|
|
4
|
+
|
|
5
|
+
## PR Size Trend
|
|
6
|
+
|
|
7
|
+
Avg files changed: 8.625
|
|
8
|
+
|
|
9
|
+
## Test-to-Code Ratio
|
|
10
|
+
|
|
11
|
+
Test lines: 177
|
|
12
|
+
Code lines: 38
|
|
13
|
+
Ratio: 4.65
|
|
14
|
+
|
|
15
|
+
## Dependency Growth
|
|
16
|
+
|
|
17
|
+
Dependencies: 0
|
|
18
|
+
DevDependencies: 14
|
|
19
|
+
|
|
20
|
+
## Untracked New Concepts
|
|
21
|
+
|
|
22
|
+
\_system/architecture/CANON.md
|
|
23
|
+
\_system/drift/metrics.md
|
|
24
|
+
docs/DIRECTORY_STRUCTURE.md
|
|
25
|
+
experimental/README.md
|
|
26
|
+
projects/README.md
|
|
27
|
+
scripts/README.md
|
|
28
|
+
tests/README.md
|
|
29
|
+
work/workflow-state/README.md
|
|
30
|
+
|
|
31
|
+
## CI Performance
|
|
32
|
+
|
|
33
|
+
(Manually update from CI dashboard)
|
|
File without changes
|