enforce Red/Green TDD in CEO base prompt for all products
This commit is contained in:
parent
ec83af5e1f
commit
977df2180f
4 changed files with 71 additions and 1 deletions
|
|
@ -69,3 +69,10 @@
|
||||||
- **Fix:** Staggered initial `lastRestartTime` per browser + one-at-a-time restart guard in `acquirePage()`
|
- **Fix:** Staggered initial `lastRestartTime` per browser + one-at-a-time restart guard in `acquirePage()`
|
||||||
- **Deployed to staging:** Yes (commit e49c4073). Verified playground returns 200.
|
- **Deployed to staging:** Yes (commit e49c4073). Verified playground returns 200.
|
||||||
- **Production:** Awaiting investor approval for v* tag
|
- **Production:** Awaiting investor approval for v* tag
|
||||||
|
|
||||||
|
### BUG-011: No URL length limit (HIGH) — FIXED (staging)
|
||||||
|
- **Found:** Session 17 QA
|
||||||
|
- **Impact:** Extremely long URLs could waste server resources
|
||||||
|
- **Fix:** Added 2048 character URL length limit in SSRF validation (returns 400)
|
||||||
|
- **Deployed to staging:** Yes (commit 5ec8c92). Verified: 2100-char URL returns 400, normal URL returns 200.
|
||||||
|
- **Production:** Awaiting investor approval for v* tag
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,35 @@
|
||||||
# SnapAPI Session Log
|
# SnapAPI Session Log
|
||||||
|
|
||||||
|
## Session 18 — 2026-02-24 11:00 UTC (QA + BUG-011 Fix)
|
||||||
|
|
||||||
|
**Goal:** Production QA, fix bugs found.
|
||||||
|
|
||||||
|
### What Was Done
|
||||||
|
|
||||||
|
1. **Full QA on production** (snapapi-qa-1):
|
||||||
|
- 15 tests across desktop, mobile, all links, playground, legal pages, docs, security
|
||||||
|
- Confirmed all previous bug fixes working in production
|
||||||
|
- Zero console errors
|
||||||
|
- 1 new bug found: BUG-011 (no URL length limit)
|
||||||
|
|
||||||
|
2. **Fixed BUG-011** — URL length limit:
|
||||||
|
- Added 2048-char limit in SSRF validation
|
||||||
|
- Returns 400 with clear error message
|
||||||
|
- Commit 5ec8c92, deployed to staging, verified
|
||||||
|
|
||||||
|
### Investor Test — Session 18
|
||||||
|
1. Trust? **Yes** — QA confirmed core flows work
|
||||||
|
2. Data loss on crash? **No**
|
||||||
|
3. Free tier abuse? **Low** — 5/hr IP limit + watermark + now URL length limit
|
||||||
|
4. Key recovery? **Not yet** (needs Stripe portal)
|
||||||
|
5. Website features work? **Yes** — QA verified all 15 test areas
|
||||||
|
|
||||||
|
### QA Summary
|
||||||
|
- 15 tests passed, 1 new bug found and fixed (staging)
|
||||||
|
- Overall: CONDITIONALLY READY (pending prod deploy of accumulated fixes)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Session 17 — 2026-02-24 08:00 UTC (GET Endpoint + Response Caching)
|
## Session 17 — 2026-02-24 08:00 UTC (GET Endpoint + Response Caching)
|
||||||
|
|
||||||
**Goal:** Add competitive features — GET endpoint for image embedding, response caching.
|
**Goal:** Add competitive features — GET endpoint for image embedding, response caching.
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,6 @@
|
||||||
"priceId": "price_1T2XHpRtlDv9c8GoThHfd8kS"
|
"priceId": "price_1T2XHpRtlDv9c8GoThHfd8kS"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lastSession": "2026-02-24T08:00:00Z",
|
"lastSession": "2026-02-24T11:00:00Z",
|
||||||
"codeLocation": "Forgejo repo openclawd/SnapAPI. Clone: git clone forgejo-snapapi:openclawd/SnapAPI.git"
|
"codeLocation": "Forgejo repo openclawd/SnapAPI. Clone: git clone forgejo-snapapi:openclawd/SnapAPI.git"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,36 @@ Every frontend change must maintain or improve accessibility:
|
||||||
|
|
||||||
**Documentation ships with the feature.** If you build it but don't document it, it's not done.
|
**Documentation ships with the feature.** If you build it but don't document it, it's not done.
|
||||||
|
|
||||||
|
## Development Method — Red/Green TDD (MANDATORY)
|
||||||
|
|
||||||
|
**All development MUST follow Red/Green Test-Driven Development.** No exceptions, no shortcuts.
|
||||||
|
|
||||||
|
### The Cycle
|
||||||
|
1. **RED** — Write a failing test FIRST that describes the desired behavior
|
||||||
|
2. **GREEN** — Write the minimum code to make the test pass
|
||||||
|
3. **REFACTOR** — Clean up while keeping tests green
|
||||||
|
4. Repeat
|
||||||
|
|
||||||
|
### Rules
|
||||||
|
- **No production code without a failing test first.** If there's no test, it doesn't get built.
|
||||||
|
- **Tests must actually fail before writing implementation.** Don't write tests after the fact — that's not TDD.
|
||||||
|
- **Sub-agents must follow TDD too.** Include this requirement in every dev brief. If a sub-agent delivers code without tests, reject the work.
|
||||||
|
- **Bug fixes start with a test.** Write a test that reproduces the bug (RED), then fix it (GREEN).
|
||||||
|
- **QA agents verify test coverage** as part of their review.
|
||||||
|
|
||||||
|
### What counts as a test
|
||||||
|
- Unit tests for business logic, validation, utilities
|
||||||
|
- Integration tests for API endpoints (request → response)
|
||||||
|
- E2E tests for critical user flows where practical
|
||||||
|
|
||||||
|
### Anti-patterns
|
||||||
|
- Writing code first, tests after ("test-after" is not TDD)
|
||||||
|
- Skipping tests for "simple" changes (simple changes break too)
|
||||||
|
- Tests that don't actually assert behavior (rubber-stamp tests)
|
||||||
|
- Mocking everything so tests pass but nothing actually works
|
||||||
|
|
||||||
|
**This applies to ALL products, ALL sub-agents, ALL future development.**
|
||||||
|
|
||||||
## What "Done" Means
|
## What "Done" Means
|
||||||
|
|
||||||
1. Works end-to-end for the user
|
1. Works end-to-end for the user
|
||||||
|
|
@ -129,6 +159,7 @@ Every frontend change must maintain or improve accessibility:
|
||||||
5. QA verified on live site
|
5. QA verified on live site
|
||||||
6. A paying customer would not be confused
|
6. A paying customer would not be confused
|
||||||
7. **Documented** — developer docs, user docs, or both as appropriate
|
7. **Documented** — developer docs, user docs, or both as appropriate
|
||||||
|
8. **Tests exist and pass** — written before the implementation (TDD)
|
||||||
|
|
||||||
## Verification — MANDATORY
|
## Verification — MANDATORY
|
||||||
|
|
||||||
|
|
@ -158,4 +189,6 @@ Every frontend change must maintain or improve accessibility:
|
||||||
- **Deploying infrastructure that is explicitly marked as managed externally**
|
- **Deploying infrastructure that is explicitly marked as managed externally**
|
||||||
- **Featuring constraints instead of value** — only advertise what customers gain, never what limits them. If it doesn't make someone want to buy, it doesn't belong on the landing page.
|
- **Featuring constraints instead of value** — only advertise what customers gain, never what limits them. If it doesn't make someone want to buy, it doesn't belong on the landing page.
|
||||||
- **Skipping interactive QA on the website** — every session that touches the frontend must test ALL interactive elements (buttons, links, accordions, modals, forms)
|
- **Skipping interactive QA on the website** — every session that touches the frontend must test ALL interactive elements (buttons, links, accordions, modals, forms)
|
||||||
|
- **Shipping code without tests** — if it's not tested, it's not done
|
||||||
|
- **Accepting sub-agent work that skipped TDD** — send it back
|
||||||
- **Shipping without full link audit** — every QA pass must crawl ALL internal links (nav, footer, legal pages, CTAs) and verify none return 404. A broken link on a live site is inexcusable.
|
- **Shipping without full link audit** — every QA pass must crawl ALL internal links (nav, footer, legal pages, CTAs) and verify none return 404. A broken link on a live site is inexcusable.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue