ai-project-maintainer 0.4.0 → 0.4.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/README.md +16 -6
- package/ai-project-maintainer/agents/openai.yaml +6 -6
- package/ai-project-maintainer/references/ci-guardrails.md +55 -55
- package/ai-project-maintainer/references/database.md +60 -60
- package/ai-project-maintainer/references/electron-desktop.md +43 -43
- package/ai-project-maintainer/references/incident-response.md +52 -52
- package/ai-project-maintainer/references/security.md +48 -48
- package/ai-project-maintainer/references/tool-router.md +53 -53
- package/ai-project-maintainer/scripts/bootstrap-local-tools.ps1 +109 -109
- package/ai-project-maintainer/scripts/ci-smoke-gate.mjs +26 -26
- package/ai-project-maintainer/scripts/init-project.mjs +30 -18
- package/ai-project-maintainer/scripts/lib/check-registry.mjs +10 -9
- package/ai-project-maintainer/scripts/lib/checks.mjs +22 -10
- package/ai-project-maintainer/scripts/lib/command-runner.mjs +17 -3
- package/ai-project-maintainer/scripts/lib/policy.mjs +6 -4
- package/ai-project-maintainer/scripts/lib/report.mjs +56 -32
- package/assets/demo-90s-storyboard.svg +98 -0
- package/assets/demo-90s.gif +0 -0
- package/assets/social-preview.png +0 -0
- package/assets/social-preview.svg +55 -0
- package/docs/DEMO.md +68 -61
- package/docs/DEMO.zh-CN.md +75 -69
- package/docs/GITHUB-LAUNCH-CHECKLIST.md +11 -11
- package/docs/POLICY-AND-EXCEPTIONS.zh-CN.md +1 -1
- package/docs/PROMOTION.md +49 -21
- package/docs/SECURITY-WORKFLOW.md +61 -59
- package/docs/UPGRADE-ROADMAP.zh-CN.md +58 -58
- package/docs/demo-output/90-second-demo.html +187 -0
- package/docs/demo-output/before-after-case.md +91 -0
- package/docs/demo-output/security-report.md +62 -61
- package/docs/superpowers/plans/2026-06-29-ci-dogfooding.md +200 -200
- package/examples/demo-ai-app/.ai-maintainer/business-flows.yml +14 -14
- package/examples/demo-ai-app/.ai-maintainer/db-migration-policy.yml +6 -6
- package/examples/demo-ai-app/.ai-maintainer/evidence-sources.yml +18 -18
- package/examples/demo-ai-app/.ai-maintainer/exceptions.yml +1 -1
- package/examples/demo-ai-app/.ai-maintainer/incident-runbook.md +11 -11
- package/examples/demo-ai-app/.ai-maintainer/observability-checklist.yml +7 -7
- package/examples/demo-ai-app/.ai-maintainer/policy.yml +27 -27
- package/examples/demo-ai-app/.ai-maintainer/project-profile.yml +15 -15
- package/examples/demo-ai-app/.ai-maintainer/release-checklist.yml +7 -7
- package/examples/demo-ai-app/.ai-maintainer/risk-policy.yml +5 -5
- package/examples/demo-ai-app/.ai-maintainer/threat-model.md +18 -18
- package/examples/demo-ai-app/README.md +38 -38
- package/examples/demo-ai-app/package-lock.json +15 -15
- package/examples/demo-ai-app/package.json +16 -16
- package/examples/demo-ai-app/scripts/build.mjs +18 -18
- package/examples/demo-ai-app/scripts/create-before-state.mjs +86 -86
- package/examples/demo-ai-app/scripts/run-demo-gate.mjs +95 -95
- package/examples/demo-ai-app/src/order-risk.js +28 -28
- package/examples/demo-ai-app/test/order-risk.test.mjs +24 -24
- package/package.json +2 -1
|
@@ -1,64 +1,65 @@
|
|
|
1
|
-
# Local Security Gate:
|
|
2
|
-
|
|
3
|
-
Root: `examples/demo-ai-app`
|
|
4
|
-
Mode: strict=true, release=true, production=true
|
|
5
|
-
Open Source Maintenance Score: 75/100 (B)
|
|
6
|
-
|
|
7
|
-
## Blocking Checks
|
|
8
|
-
|
|
9
|
-
- None
|
|
10
|
-
|
|
11
|
-
## Warnings
|
|
12
|
-
|
|
13
|
-
- production audit: Production release approval: GAP. Production deployment exists without approval evidence.
|
|
14
|
-
- production audit: Error monitoring: GAP. Error monitoring evidence is missing.
|
|
15
|
-
- production audit: Production logs: GAP. Production logs evidence is missing.
|
|
16
|
-
- production audit: Production metrics: GAP. Production metrics evidence is missing.
|
|
17
|
-
- production audit: Production alerts: GAP. Production alerts evidence is missing.
|
|
18
|
-
|
|
19
|
-
## Coverage Gaps
|
|
20
|
-
|
|
21
|
-
- Production release approval: use GitHub Environments or document the approval gate.
|
|
22
|
-
- Error monitoring: declare Sentry, OpenTelemetry, or another error source.
|
|
23
|
-
- Production logs: declare log evidence before relying on production recovery.
|
|
24
|
-
- Production metrics: declare release and service health metrics.
|
|
25
|
-
- Production alerts: declare alert routing before release.
|
|
26
|
-
|
|
27
|
-
## Production Audit
|
|
28
|
-
|
|
29
|
-
Project Type: node
|
|
30
|
-
Database: false
|
|
31
|
-
CI: true
|
|
32
|
-
|
|
33
|
-
### Plan
|
|
34
|
-
|
|
35
|
-
- PASS Production audit intake: project profile and evidence templates are present.
|
|
36
|
-
- PASS Critical business flows: 2 critical flows declared.
|
|
37
|
-
- PASS Business flow tests: 2 test references declared.
|
|
38
|
-
- N/A Electron security review: no Electron surface detected.
|
|
39
|
-
- PASS CI security review: CI workflow evidence detected.
|
|
40
|
-
- GAP Production release approval: production deployment exists without approval evidence.
|
|
41
|
-
- GAP Error monitoring: error monitoring evidence is missing.
|
|
42
|
-
- GAP Production logs: production logs evidence is missing.
|
|
43
|
-
- GAP Production metrics: production metrics evidence is missing.
|
|
44
|
-
- GAP Production alerts: production alerts evidence is missing.
|
|
45
|
-
- N/A Database migration review: no database surface detected or declared.
|
|
46
|
-
|
|
47
|
-
## Checks Run
|
|
48
|
-
|
|
49
|
-
- package test: pass
|
|
50
|
-
- release build: pass
|
|
51
|
-
- npm production audit: pass
|
|
52
|
-
- gitleaks secret scan: pass
|
|
53
|
-
- trivy filesystem scan: pass
|
|
54
|
-
- osv-scanner dependency scan: pass
|
|
55
|
-
- semgrep static scan: pass
|
|
56
|
-
- syft SBOM: pass
|
|
57
|
-
- grype vulnerability scan: pass
|
|
58
|
-
- OpenSSF Scorecard: pass
|
|
59
|
-
- production audit evidence checks: GAP items reported but not blocking by default
|
|
60
|
-
|
|
1
|
+
# Local Security Gate: PASS_WITH_GAPS
|
|
2
|
+
|
|
3
|
+
Root: `examples/demo-ai-app`
|
|
4
|
+
Mode: strict=true, release=true, production=true
|
|
5
|
+
Open Source Maintenance Score: 75/100 (B)
|
|
6
|
+
|
|
7
|
+
## Blocking Checks
|
|
8
|
+
|
|
9
|
+
- None
|
|
10
|
+
|
|
11
|
+
## Warnings
|
|
12
|
+
|
|
13
|
+
- production audit: Production release approval: GAP. Production deployment exists without approval evidence.
|
|
14
|
+
- production audit: Error monitoring: GAP. Error monitoring evidence is missing.
|
|
15
|
+
- production audit: Production logs: GAP. Production logs evidence is missing.
|
|
16
|
+
- production audit: Production metrics: GAP. Production metrics evidence is missing.
|
|
17
|
+
- production audit: Production alerts: GAP. Production alerts evidence is missing.
|
|
18
|
+
|
|
19
|
+
## Coverage Gaps
|
|
20
|
+
|
|
21
|
+
- Production release approval: use GitHub Environments or document the approval gate.
|
|
22
|
+
- Error monitoring: declare Sentry, OpenTelemetry, or another error source.
|
|
23
|
+
- Production logs: declare log evidence before relying on production recovery.
|
|
24
|
+
- Production metrics: declare release and service health metrics.
|
|
25
|
+
- Production alerts: declare alert routing before release.
|
|
26
|
+
|
|
27
|
+
## Production Audit
|
|
28
|
+
|
|
29
|
+
Project Type: node
|
|
30
|
+
Database: false
|
|
31
|
+
CI: true
|
|
32
|
+
|
|
33
|
+
### Plan
|
|
34
|
+
|
|
35
|
+
- PASS Production audit intake: project profile and evidence templates are present.
|
|
36
|
+
- PASS Critical business flows: 2 critical flows declared.
|
|
37
|
+
- PASS Business flow tests: 2 test references declared.
|
|
38
|
+
- N/A Electron security review: no Electron surface detected.
|
|
39
|
+
- PASS CI security review: CI workflow evidence detected.
|
|
40
|
+
- GAP Production release approval: production deployment exists without approval evidence.
|
|
41
|
+
- GAP Error monitoring: error monitoring evidence is missing.
|
|
42
|
+
- GAP Production logs: production logs evidence is missing.
|
|
43
|
+
- GAP Production metrics: production metrics evidence is missing.
|
|
44
|
+
- GAP Production alerts: production alerts evidence is missing.
|
|
45
|
+
- N/A Database migration review: no database surface detected or declared.
|
|
46
|
+
|
|
47
|
+
## Checks Run
|
|
48
|
+
|
|
49
|
+
- package test: pass
|
|
50
|
+
- release build: pass
|
|
51
|
+
- npm production audit: pass
|
|
52
|
+
- gitleaks secret scan: pass
|
|
53
|
+
- trivy filesystem scan: pass
|
|
54
|
+
- osv-scanner dependency scan: pass
|
|
55
|
+
- semgrep static scan: pass
|
|
56
|
+
- syft SBOM: pass
|
|
57
|
+
- grype vulnerability scan: pass
|
|
58
|
+
- OpenSSF Scorecard: pass
|
|
59
|
+
- production audit evidence checks: GAP items reported but not blocking by default
|
|
60
|
+
|
|
61
61
|
## Next Step
|
|
62
62
|
|
|
63
|
-
-
|
|
63
|
+
- No blocking checks failed, but release-readiness gaps remain.
|
|
64
|
+
- Add real release approval, monitoring, logs, metrics, and alerts evidence, or explicitly accept those gaps before release.
|
|
64
65
|
- Rerun `gate --production --strict --release`.
|
|
@@ -1,200 +1,200 @@
|
|
|
1
|
-
# CI Dogfooding Implementation Plan
|
|
2
|
-
|
|
3
|
-
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
4
|
-
|
|
5
|
-
**Goal:** Add a real GitHub Actions CI gate so the repository dogfoods its own tests, syntax checks, package validation, and local safety gate.
|
|
6
|
-
|
|
7
|
-
**Architecture:** Use a single GitHub Actions workflow at `.github/workflows/ci.yml` that runs on pushes and pull requests to `main`. Keep the first version account-free and deterministic: install npm dependencies with `npm ci`, run Node tests and syntax checks, validate npm package contents, run `doctor` without Trivy DB as a non-blocking tool probe, and run a local gate smoke test that generates reports while treating external scanners as unavailable on day one.
|
|
8
|
-
|
|
9
|
-
**Tech Stack:** GitHub Actions, Node.js 20 and 22, npm, existing Node scripts in `ai-project-maintainer/scripts`.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
### Task 1: Add GitHub Actions CI Workflow
|
|
14
|
-
|
|
15
|
-
**Files:**
|
|
16
|
-
- Create: `.github/workflows/ci.yml`
|
|
17
|
-
- Create: `ai-project-maintainer/scripts/ci-smoke-gate.mjs`
|
|
18
|
-
|
|
19
|
-
- [ ] **Step 1: Create the workflow file**
|
|
20
|
-
|
|
21
|
-
Use this workflow content:
|
|
22
|
-
|
|
23
|
-
```yaml
|
|
24
|
-
name: CI
|
|
25
|
-
|
|
26
|
-
on:
|
|
27
|
-
push:
|
|
28
|
-
branches:
|
|
29
|
-
- main
|
|
30
|
-
pull_request:
|
|
31
|
-
branches:
|
|
32
|
-
- main
|
|
33
|
-
workflow_dispatch:
|
|
34
|
-
|
|
35
|
-
permissions:
|
|
36
|
-
contents: read
|
|
37
|
-
|
|
38
|
-
jobs:
|
|
39
|
-
test:
|
|
40
|
-
name: Node ${{ matrix.node-version }}
|
|
41
|
-
runs-on: ubuntu-latest
|
|
42
|
-
strategy:
|
|
43
|
-
fail-fast: false
|
|
44
|
-
matrix:
|
|
45
|
-
node-version:
|
|
46
|
-
- 20
|
|
47
|
-
- 22
|
|
48
|
-
|
|
49
|
-
steps:
|
|
50
|
-
- name: Check out repository
|
|
51
|
-
uses: actions/checkout@v4
|
|
52
|
-
|
|
53
|
-
- name: Set up Node.js
|
|
54
|
-
uses: actions/setup-node@v4
|
|
55
|
-
with:
|
|
56
|
-
node-version: ${{ matrix.node-version }}
|
|
57
|
-
cache: npm
|
|
58
|
-
|
|
59
|
-
- name: Install dependencies
|
|
60
|
-
run: npm ci
|
|
61
|
-
|
|
62
|
-
- name: Run tests
|
|
63
|
-
run: npm test
|
|
64
|
-
|
|
65
|
-
- name: Check script syntax
|
|
66
|
-
run: npm run check
|
|
67
|
-
|
|
68
|
-
- name: Validate package contents
|
|
69
|
-
run: npm pack --dry-run
|
|
70
|
-
|
|
71
|
-
- name: Probe local tool availability
|
|
72
|
-
continue-on-error: true
|
|
73
|
-
run: node ai-project-maintainer/scripts/doctor.mjs --no-trivy-db
|
|
74
|
-
|
|
75
|
-
- name: Run local gate smoke test
|
|
76
|
-
run: node ai-project-maintainer/scripts/ci-smoke-gate.mjs . reports/security-report.json
|
|
77
|
-
|
|
78
|
-
- name: Upload gate reports
|
|
79
|
-
if: always()
|
|
80
|
-
uses: actions/upload-artifact@v4
|
|
81
|
-
with:
|
|
82
|
-
name: security-reports-node-${{ matrix.node-version }}
|
|
83
|
-
path: reports/
|
|
84
|
-
if-no-files-found: ignore
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
- [ ] **Step 2: Validate workflow can be parsed as YAML**
|
|
88
|
-
|
|
89
|
-
Run:
|
|
90
|
-
|
|
91
|
-
```powershell
|
|
92
|
-
node -e "import('yaml').then(({parse})=>{const fs=require('node:fs'); parse(fs.readFileSync('.github/workflows/ci.yml','utf8')); console.log('workflow yaml ok')})"
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Expected: `workflow yaml ok`
|
|
96
|
-
|
|
97
|
-
### Task 2: Update README Trust Signals
|
|
98
|
-
|
|
99
|
-
**Files:**
|
|
100
|
-
- Modify: `README.md`
|
|
101
|
-
|
|
102
|
-
- [ ] **Step 1: Replace the static CI badge**
|
|
103
|
-
|
|
104
|
-
Replace:
|
|
105
|
-
|
|
106
|
-
```markdown
|
|
107
|
-

|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
With:
|
|
111
|
-
|
|
112
|
-
```markdown
|
|
113
|
-
[](https://github.com/xixifusi1213-gif/ai-project-maintainer/actions/workflows/ci.yml)
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
- [ ] **Step 2: Fix the README demo link separator**
|
|
117
|
-
|
|
118
|
-
Replace the corrupted link separator line with:
|
|
119
|
-
|
|
120
|
-
```markdown
|
|
121
|
-
[See the demo](docs/DEMO.md) · [中文演示](docs/DEMO.zh-CN.md) · [Production audit docs](docs/PRODUCTION-AUDIT.zh-CN.md)
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### Task 3: Verify Locally
|
|
125
|
-
|
|
126
|
-
**Files:**
|
|
127
|
-
- No additional files.
|
|
128
|
-
|
|
129
|
-
- [ ] **Step 1: Run tests**
|
|
130
|
-
|
|
131
|
-
Run:
|
|
132
|
-
|
|
133
|
-
```powershell
|
|
134
|
-
npm test
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
Expected: all tests pass.
|
|
138
|
-
|
|
139
|
-
- [ ] **Step 2: Run syntax checks**
|
|
140
|
-
|
|
141
|
-
Run:
|
|
142
|
-
|
|
143
|
-
```powershell
|
|
144
|
-
npm run check
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Expected: syntax check passes.
|
|
148
|
-
|
|
149
|
-
- [ ] **Step 3: Validate package contents**
|
|
150
|
-
|
|
151
|
-
Run:
|
|
152
|
-
|
|
153
|
-
```powershell
|
|
154
|
-
npm pack --dry-run
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Expected: npm reports package `ai-project-maintainer@0.3.0` without errors.
|
|
158
|
-
|
|
159
|
-
- [ ] **Step 4: Run CI-equivalent local checks**
|
|
160
|
-
|
|
161
|
-
Run:
|
|
162
|
-
|
|
163
|
-
```powershell
|
|
164
|
-
node ai-project-maintainer/scripts/doctor.mjs --no-trivy-db
|
|
165
|
-
node ai-project-maintainer/scripts/ci-smoke-gate.mjs . reports/security-report.json
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Expected: commands exit successfully and reports are generated.
|
|
169
|
-
|
|
170
|
-
### Task 4: Publish
|
|
171
|
-
|
|
172
|
-
**Files:**
|
|
173
|
-
- Commit: `.github/workflows/ci.yml`, `README.md`, `ai-project-maintainer/scripts/ci-smoke-gate.mjs`, `docs/superpowers/plans/2026-06-29-ci-dogfooding.md`
|
|
174
|
-
|
|
175
|
-
- [ ] **Step 1: Commit changes**
|
|
176
|
-
|
|
177
|
-
Run:
|
|
178
|
-
|
|
179
|
-
```powershell
|
|
180
|
-
git add .github/workflows/ci.yml README.md ai-project-maintainer/scripts/ci-smoke-gate.mjs docs/superpowers/plans/2026-06-29-ci-dogfooding.md
|
|
181
|
-
git commit -m "Add CI dogfooding workflow"
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
- [ ] **Step 2: Push to GitHub**
|
|
185
|
-
|
|
186
|
-
Run:
|
|
187
|
-
|
|
188
|
-
```powershell
|
|
189
|
-
git push origin HEAD:main
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
- [ ] **Step 3: Check workflow registration**
|
|
193
|
-
|
|
194
|
-
Run:
|
|
195
|
-
|
|
196
|
-
```powershell
|
|
197
|
-
gh workflow list --repo xixifusi1213-gif/ai-project-maintainer
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
Expected: workflow list includes `CI`.
|
|
1
|
+
# CI Dogfooding Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
4
|
+
|
|
5
|
+
**Goal:** Add a real GitHub Actions CI gate so the repository dogfoods its own tests, syntax checks, package validation, and local safety gate.
|
|
6
|
+
|
|
7
|
+
**Architecture:** Use a single GitHub Actions workflow at `.github/workflows/ci.yml` that runs on pushes and pull requests to `main`. Keep the first version account-free and deterministic: install npm dependencies with `npm ci`, run Node tests and syntax checks, validate npm package contents, run `doctor` without Trivy DB as a non-blocking tool probe, and run a local gate smoke test that generates reports while treating external scanners as unavailable on day one.
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** GitHub Actions, Node.js 20 and 22, npm, existing Node scripts in `ai-project-maintainer/scripts`.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
### Task 1: Add GitHub Actions CI Workflow
|
|
14
|
+
|
|
15
|
+
**Files:**
|
|
16
|
+
- Create: `.github/workflows/ci.yml`
|
|
17
|
+
- Create: `ai-project-maintainer/scripts/ci-smoke-gate.mjs`
|
|
18
|
+
|
|
19
|
+
- [ ] **Step 1: Create the workflow file**
|
|
20
|
+
|
|
21
|
+
Use this workflow content:
|
|
22
|
+
|
|
23
|
+
```yaml
|
|
24
|
+
name: CI
|
|
25
|
+
|
|
26
|
+
on:
|
|
27
|
+
push:
|
|
28
|
+
branches:
|
|
29
|
+
- main
|
|
30
|
+
pull_request:
|
|
31
|
+
branches:
|
|
32
|
+
- main
|
|
33
|
+
workflow_dispatch:
|
|
34
|
+
|
|
35
|
+
permissions:
|
|
36
|
+
contents: read
|
|
37
|
+
|
|
38
|
+
jobs:
|
|
39
|
+
test:
|
|
40
|
+
name: Node ${{ matrix.node-version }}
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
strategy:
|
|
43
|
+
fail-fast: false
|
|
44
|
+
matrix:
|
|
45
|
+
node-version:
|
|
46
|
+
- 20
|
|
47
|
+
- 22
|
|
48
|
+
|
|
49
|
+
steps:
|
|
50
|
+
- name: Check out repository
|
|
51
|
+
uses: actions/checkout@v4
|
|
52
|
+
|
|
53
|
+
- name: Set up Node.js
|
|
54
|
+
uses: actions/setup-node@v4
|
|
55
|
+
with:
|
|
56
|
+
node-version: ${{ matrix.node-version }}
|
|
57
|
+
cache: npm
|
|
58
|
+
|
|
59
|
+
- name: Install dependencies
|
|
60
|
+
run: npm ci
|
|
61
|
+
|
|
62
|
+
- name: Run tests
|
|
63
|
+
run: npm test
|
|
64
|
+
|
|
65
|
+
- name: Check script syntax
|
|
66
|
+
run: npm run check
|
|
67
|
+
|
|
68
|
+
- name: Validate package contents
|
|
69
|
+
run: npm pack --dry-run
|
|
70
|
+
|
|
71
|
+
- name: Probe local tool availability
|
|
72
|
+
continue-on-error: true
|
|
73
|
+
run: node ai-project-maintainer/scripts/doctor.mjs --no-trivy-db
|
|
74
|
+
|
|
75
|
+
- name: Run local gate smoke test
|
|
76
|
+
run: node ai-project-maintainer/scripts/ci-smoke-gate.mjs . reports/security-report.json
|
|
77
|
+
|
|
78
|
+
- name: Upload gate reports
|
|
79
|
+
if: always()
|
|
80
|
+
uses: actions/upload-artifact@v4
|
|
81
|
+
with:
|
|
82
|
+
name: security-reports-node-${{ matrix.node-version }}
|
|
83
|
+
path: reports/
|
|
84
|
+
if-no-files-found: ignore
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
- [ ] **Step 2: Validate workflow can be parsed as YAML**
|
|
88
|
+
|
|
89
|
+
Run:
|
|
90
|
+
|
|
91
|
+
```powershell
|
|
92
|
+
node -e "import('yaml').then(({parse})=>{const fs=require('node:fs'); parse(fs.readFileSync('.github/workflows/ci.yml','utf8')); console.log('workflow yaml ok')})"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Expected: `workflow yaml ok`
|
|
96
|
+
|
|
97
|
+
### Task 2: Update README Trust Signals
|
|
98
|
+
|
|
99
|
+
**Files:**
|
|
100
|
+
- Modify: `README.md`
|
|
101
|
+
|
|
102
|
+
- [ ] **Step 1: Replace the static CI badge**
|
|
103
|
+
|
|
104
|
+
Replace:
|
|
105
|
+
|
|
106
|
+
```markdown
|
|
107
|
+

|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
With:
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
[](https://github.com/xixifusi1213-gif/ai-project-maintainer/actions/workflows/ci.yml)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- [ ] **Step 2: Fix the README demo link separator**
|
|
117
|
+
|
|
118
|
+
Replace the corrupted link separator line with:
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
[See the demo](docs/DEMO.md) · [中文演示](docs/DEMO.zh-CN.md) · [Production audit docs](docs/PRODUCTION-AUDIT.zh-CN.md)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Task 3: Verify Locally
|
|
125
|
+
|
|
126
|
+
**Files:**
|
|
127
|
+
- No additional files.
|
|
128
|
+
|
|
129
|
+
- [ ] **Step 1: Run tests**
|
|
130
|
+
|
|
131
|
+
Run:
|
|
132
|
+
|
|
133
|
+
```powershell
|
|
134
|
+
npm test
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Expected: all tests pass.
|
|
138
|
+
|
|
139
|
+
- [ ] **Step 2: Run syntax checks**
|
|
140
|
+
|
|
141
|
+
Run:
|
|
142
|
+
|
|
143
|
+
```powershell
|
|
144
|
+
npm run check
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Expected: syntax check passes.
|
|
148
|
+
|
|
149
|
+
- [ ] **Step 3: Validate package contents**
|
|
150
|
+
|
|
151
|
+
Run:
|
|
152
|
+
|
|
153
|
+
```powershell
|
|
154
|
+
npm pack --dry-run
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Expected: npm reports package `ai-project-maintainer@0.3.0` without errors.
|
|
158
|
+
|
|
159
|
+
- [ ] **Step 4: Run CI-equivalent local checks**
|
|
160
|
+
|
|
161
|
+
Run:
|
|
162
|
+
|
|
163
|
+
```powershell
|
|
164
|
+
node ai-project-maintainer/scripts/doctor.mjs --no-trivy-db
|
|
165
|
+
node ai-project-maintainer/scripts/ci-smoke-gate.mjs . reports/security-report.json
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Expected: commands exit successfully and reports are generated.
|
|
169
|
+
|
|
170
|
+
### Task 4: Publish
|
|
171
|
+
|
|
172
|
+
**Files:**
|
|
173
|
+
- Commit: `.github/workflows/ci.yml`, `README.md`, `ai-project-maintainer/scripts/ci-smoke-gate.mjs`, `docs/superpowers/plans/2026-06-29-ci-dogfooding.md`
|
|
174
|
+
|
|
175
|
+
- [ ] **Step 1: Commit changes**
|
|
176
|
+
|
|
177
|
+
Run:
|
|
178
|
+
|
|
179
|
+
```powershell
|
|
180
|
+
git add .github/workflows/ci.yml README.md ai-project-maintainer/scripts/ci-smoke-gate.mjs docs/superpowers/plans/2026-06-29-ci-dogfooding.md
|
|
181
|
+
git commit -m "Add CI dogfooding workflow"
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
- [ ] **Step 2: Push to GitHub**
|
|
185
|
+
|
|
186
|
+
Run:
|
|
187
|
+
|
|
188
|
+
```powershell
|
|
189
|
+
git push origin HEAD:main
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
- [ ] **Step 3: Check workflow registration**
|
|
193
|
+
|
|
194
|
+
Run:
|
|
195
|
+
|
|
196
|
+
```powershell
|
|
197
|
+
gh workflow list --repo xixifusi1213-gif/ai-project-maintainer
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Expected: workflow list includes `CI`.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
schema_version: 1
|
|
2
|
-
business_flows:
|
|
3
|
-
- id: "checkout-quote"
|
|
4
|
-
name: "Customer checkout quote"
|
|
5
|
-
criticality: "high"
|
|
6
|
-
expected_behavior: "A customer-visible total must include the selected shipping cost exactly once."
|
|
7
|
-
tests:
|
|
8
|
-
- "test/order-risk.test.mjs"
|
|
9
|
-
- id: "order-release"
|
|
10
|
-
name: "Paid order release"
|
|
11
|
-
criticality: "high"
|
|
12
|
-
expected_behavior: "An order can be released only when payment, stock, and risk checks all pass."
|
|
13
|
-
tests:
|
|
14
|
-
- "test/order-risk.test.mjs"
|
|
1
|
+
schema_version: 1
|
|
2
|
+
business_flows:
|
|
3
|
+
- id: "checkout-quote"
|
|
4
|
+
name: "Customer checkout quote"
|
|
5
|
+
criticality: "high"
|
|
6
|
+
expected_behavior: "A customer-visible total must include the selected shipping cost exactly once."
|
|
7
|
+
tests:
|
|
8
|
+
- "test/order-risk.test.mjs"
|
|
9
|
+
- id: "order-release"
|
|
10
|
+
name: "Paid order release"
|
|
11
|
+
criticality: "high"
|
|
12
|
+
expected_behavior: "An order can be released only when payment, stock, and risk checks all pass."
|
|
13
|
+
tests:
|
|
14
|
+
- "test/order-risk.test.mjs"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
schema_version: 1
|
|
2
|
-
database:
|
|
3
|
-
changes_use_migrations: false
|
|
4
|
-
destructive_changes_require_review: true
|
|
5
|
-
backup_before_production_migration: false
|
|
6
|
-
rollback_or_forward_fix_required: false
|
|
1
|
+
schema_version: 1
|
|
2
|
+
database:
|
|
3
|
+
changes_use_migrations: false
|
|
4
|
+
destructive_changes_require_review: true
|
|
5
|
+
backup_before_production_migration: false
|
|
6
|
+
rollback_or_forward_fix_required: false
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
schema_version: 1
|
|
2
|
-
evidence:
|
|
3
|
-
github_actions: "present"
|
|
4
|
-
deployment:
|
|
5
|
-
provider: "demo"
|
|
6
|
-
has_staging: true
|
|
7
|
-
has_production: true
|
|
8
|
-
production_requires_approval: false
|
|
9
|
-
observability:
|
|
10
|
-
errors: "none"
|
|
11
|
-
logs: "none"
|
|
12
|
-
metrics: "none"
|
|
13
|
-
alerts: "none"
|
|
14
|
-
database:
|
|
15
|
-
migrations: "none"
|
|
16
|
-
review_tool: "none"
|
|
17
|
-
backup_policy: "none"
|
|
18
|
-
rollback_plan: "none"
|
|
1
|
+
schema_version: 1
|
|
2
|
+
evidence:
|
|
3
|
+
github_actions: "present"
|
|
4
|
+
deployment:
|
|
5
|
+
provider: "demo"
|
|
6
|
+
has_staging: true
|
|
7
|
+
has_production: true
|
|
8
|
+
production_requires_approval: false
|
|
9
|
+
observability:
|
|
10
|
+
errors: "none"
|
|
11
|
+
logs: "none"
|
|
12
|
+
metrics: "none"
|
|
13
|
+
alerts: "none"
|
|
14
|
+
database:
|
|
15
|
+
migrations: "none"
|
|
16
|
+
review_tool: "none"
|
|
17
|
+
backup_policy: "none"
|
|
18
|
+
rollback_plan: "none"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
exceptions: []
|
|
1
|
+
exceptions: []
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# Incident Runbook
|
|
2
|
-
|
|
3
|
-
## First Response
|
|
4
|
-
|
|
5
|
-
- Stop new releases.
|
|
6
|
-
- Check checkout quote and order release tests.
|
|
7
|
-
- Decide whether to rollback the latest release.
|
|
8
|
-
|
|
9
|
-
## Missing Evidence
|
|
10
|
-
|
|
11
|
-
- Production monitoring is intentionally missing in the demo so the audit report shows GAP items.
|
|
1
|
+
# Incident Runbook
|
|
2
|
+
|
|
3
|
+
## First Response
|
|
4
|
+
|
|
5
|
+
- Stop new releases.
|
|
6
|
+
- Check checkout quote and order release tests.
|
|
7
|
+
- Decide whether to rollback the latest release.
|
|
8
|
+
|
|
9
|
+
## Missing Evidence
|
|
10
|
+
|
|
11
|
+
- Production monitoring is intentionally missing in the demo so the audit report shows GAP items.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
schema_version: 1
|
|
2
|
-
observability:
|
|
3
|
-
error_monitoring: false
|
|
4
|
-
structured_logs: false
|
|
5
|
-
metrics: false
|
|
6
|
-
alerts: false
|
|
7
|
-
release_tracking: false
|
|
1
|
+
schema_version: 1
|
|
2
|
+
observability:
|
|
3
|
+
error_monitoring: false
|
|
4
|
+
structured_logs: false
|
|
5
|
+
metrics: false
|
|
6
|
+
alerts: false
|
|
7
|
+
release_tracking: false
|