mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-11 17:56:37 +08:00
165 lines
4.0 KiB
Markdown
165 lines
4.0 KiB
Markdown
# Ship workflow — `autoresearch ship`
|
|
|
|
Run a pre-flight checklist before shipping — tests, types, lint, bundle size,
|
|
security basics, and a final autoresearch pass on anything that fails.
|
|
|
|
The ship workflow is not just a checklist. It runs an autoresearch loop on
|
|
each failing gate until it passes, then re-checks. You don't ship broken.
|
|
You ship when everything is green.
|
|
|
|
---
|
|
|
|
## Invocation
|
|
|
|
```
|
|
autoresearch ship
|
|
```
|
|
|
|
Optional flags:
|
|
```
|
|
autoresearch ship --fast # skip slow checks (lighthouse, e2e)
|
|
autoresearch ship --loop N # max N autoresearch iterations per gate (default: 20)
|
|
autoresearch ship --dry-run # report status without fixing anything
|
|
```
|
|
|
|
---
|
|
|
|
## The ship checklist
|
|
|
|
The workflow runs these gates in order. Each gate that fails triggers an
|
|
autoresearch sub-loop to fix it before moving to the next gate.
|
|
|
|
### Gate 1 — Tests pass
|
|
|
|
```bash
|
|
npm test # Node.js
|
|
pytest # Python
|
|
go test ./... # Go
|
|
cargo test # Rust
|
|
```
|
|
|
|
If tests fail → autoresearch loop on `src/**/*.ts` (or equivalent) with
|
|
metric: failing test count (lower is better), max 20 iterations.
|
|
|
|
### Gate 2 — No type errors
|
|
|
|
```bash
|
|
npx tsc --noEmit # TypeScript
|
|
mypy src/ # Python
|
|
```
|
|
|
|
If errors found → autoresearch loop on `src/**/*.ts` with
|
|
metric: error count (lower is better), max 20 iterations.
|
|
|
|
### Gate 3 — No lint errors
|
|
|
|
```bash
|
|
npx eslint src/ # JavaScript/TypeScript
|
|
ruff check src/ # Python
|
|
golangci-lint run # Go
|
|
```
|
|
|
|
If errors found → autoresearch loop with metric: lint error count (lower is better).
|
|
Auto-fixable errors are fixed first (`--fix` flag), then the loop handles the rest.
|
|
|
|
### Gate 4 — Bundle size (if applicable)
|
|
|
|
Only runs for frontend projects (detected: `next.config.*`, `vite.config.*`,
|
|
`webpack.config.*`).
|
|
|
|
```bash
|
|
npm run build 2>&1 | grep "First Load JS"
|
|
```
|
|
|
|
Threshold: warn if > 300KB, block if > 500KB (configurable via `.autoresearch.yml`).
|
|
|
|
If over threshold → autoresearch loop on `src/**/*.tsx, src/**/*.ts` with
|
|
metric: bundle size in KB (lower is better), max 20 iterations.
|
|
|
|
### Gate 5 — No hardcoded secrets
|
|
|
|
```bash
|
|
git diff HEAD~1 --diff-filter=A | grep -iE "(api_key|secret|password|token)\s*=\s*['\"][^'\"]{8,}"
|
|
```
|
|
|
|
If secrets found → do NOT autoresearch. Flag for human review. Block ship.
|
|
|
|
### Gate 6 — Dependency audit
|
|
|
|
```bash
|
|
npm audit --audit-level=high # Node.js
|
|
pip-audit # Python
|
|
```
|
|
|
|
If critical vulnerabilities found → autoresearch loop to update affected
|
|
dependencies, max 10 iterations.
|
|
|
|
---
|
|
|
|
## Ship report
|
|
|
|
After all gates pass, print:
|
|
|
|
```
|
|
=== Ship report ===
|
|
Tests: ✓ PASS (247 passing)
|
|
Types: ✓ PASS (0 errors)
|
|
Lint: ✓ PASS (0 errors)
|
|
Bundle: ✓ PASS (187KB)
|
|
Secrets: ✓ PASS (none detected)
|
|
Deps: ✓ PASS (0 high/critical)
|
|
|
|
Autoresearch loops run: <N>
|
|
Total improvements: <M> iterations kept
|
|
|
|
Ready to ship. Run: git push && <your deploy command>
|
|
===
|
|
```
|
|
|
|
If any gate is still failing after the max iterations:
|
|
|
|
```
|
|
=== Ship report ===
|
|
Tests: ✓ PASS
|
|
Types: ✗ FAIL (3 errors remaining after 20 iterations)
|
|
→ manual fix required: src/auth/session.ts:47
|
|
|
|
Ship BLOCKED. Fix the above before shipping.
|
|
===
|
|
```
|
|
|
|
---
|
|
|
|
## Web research post-check
|
|
|
|
After all gates pass, use `WebSearch` to check:
|
|
|
|
```
|
|
WebSearch: [your framework] [version] known issues [current year]
|
|
WebSearch: [your main dependencies] security advisory [current year]
|
|
```
|
|
|
|
If any critical advisories surface that the dependency audit missed,
|
|
flag them before shipping. This is a final sanity check that goes beyond
|
|
what local tools can detect.
|
|
|
|
---
|
|
|
|
## Configuration via `.autoresearch.yml`
|
|
|
|
Create this file in your project root to customise ship behaviour:
|
|
|
|
```yaml
|
|
ship:
|
|
bundle_warn_kb: 300
|
|
bundle_block_kb: 500
|
|
max_iterations_per_gate: 20
|
|
skip_gates:
|
|
- lighthouse # skip if no local server available
|
|
extra_gates:
|
|
- name: "E2E tests"
|
|
command: "npx playwright test"
|
|
metric: "failing tests (lower is better)"
|
|
max_iterations: 10
|
|
```
|