S1 (a1): feature-promise audit — no claim survives unverified
PROMISE-AUDIT.md: every /pricing claim → verified/built/reworded. BUILT (was vapor): alt line ladder + edge ranking (same-features regrade at shifted lines, Desk-gated at the API), quarter-Kelly (engine quantile P(win) x real captured odds — either missing → no sizing), free-tier kill-condition locked previews. FIXED (was false): analyst 15/day cap vs the Founder 'Unlimited reads' promise → analyst unlimited; every '40+ factors' claim (real count: 22 named features) reworded truthfully in 7 files. VERIFIED: cascade alerts (real, wired), phi correlation, leg history, cross-book comparison, WC soccer, real-time feed. Locked by tests/unit/promiseAudit.test.js. Jest now ignores .claude/worktrees (parallel agents' suites no longer leak into runs). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -61,16 +61,18 @@ describe('scanLimit middleware', () => {
|
||||
expect(lastHeaders['X-Scans-Limit']).toBe('3');
|
||||
});
|
||||
|
||||
test('analyst tier gets 15 scans/day', () => {
|
||||
// Session 62 (A1-S1) — analyst is UNLIMITED now (the Founder card promises
|
||||
// "Unlimited reads"; the 15/day cap made the pricing page false).
|
||||
test('analyst tier is unlimited (Founder promise)', () => {
|
||||
const next = jest.fn();
|
||||
let blockedAt = null;
|
||||
for (let i = 0; i < 16; i += 1) {
|
||||
for (let i = 0; i < 30; i += 1) {
|
||||
const { req, res } = mockReqRes({ tier: 'analyst', userId: 'u-analyst' });
|
||||
mw(req, res, next);
|
||||
if (res.statusCode === 429 && blockedAt == null) blockedAt = i;
|
||||
}
|
||||
expect(blockedAt).toBe(15);
|
||||
expect(next).toHaveBeenCalledTimes(15);
|
||||
expect(blockedAt).toBeNull();
|
||||
expect(next).toHaveBeenCalledTimes(30);
|
||||
});
|
||||
|
||||
test('desk tier is unlimited — never blocks', () => {
|
||||
|
||||
Reference in New Issue
Block a user