Decisions — memory of raised findings and Seb’s verdicts
One line per finding:- <date> · <category> · <doc page> · <one-line claim> · status: raised|accepted|rejected|fixed · <issue/PR url>
The issue-verifier reads this to never re-raise a rejected finding.
- 2026-08-06 · WRONG · message-recording.mdx · Settings section is “Logs” not “Message recording” · status: fixed (PR #46 merged) · https://github.com/mnfst/docs/issues/45 (finding 1)
- 2026-08-06 · WRONG · message-recording.mdx + reference/telemetry.mdx · “older harnesses keep their setting” · status: fixed (PR #46 merged) · https://github.com/mnfst/docs/issues/45 (finding 2)
- 2026-08-06 · OBSOLETE · message-recording.mdx + observability.mdx · navigation is now Requests → attempts · status: fixed (PR #46 merged) · https://github.com/mnfst/docs/issues/45 (finding 3)
- 2026-08-06 · MISSING-CASE · self-hosted.mdx + message-recording.mdx · pre-July installs need an upgrade step · status: fixed (PR #46 merged) · https://github.com/mnfst/docs/issues/45 (finding 4)
- 2026-08-06 · IMAGE · message-recording.mdx · screenshot of Settings → Logs · status: fixed (image shipped 2026-08-07) · https://github.com/mnfst/docs/issues/45 (finding 5)
- 2026-08-06 · IMAGE · message-recording.mdx · screenshot of the request window · status: fixed (image shipped 2026-08-07) · https://github.com/mnfst/docs/issues/45 (finding 6)
- 2026-08-06 · findings 1-4 applied in https://github.com/mnfst/docs/pull/46 (awaiting review); findings 5-6 await Seb’s screenshots.
- 2026-08-07 · WRONG/MISSING-CASE · deploy/heroku.mdx · “one required value” but app.json now marks 4 REQUEST_RECORDING_S3_* required · status: raised · https://github.com/mnfst/docs/issues/48 (finding 1)
- 2026-08-07 · MISSING-CASE · deploy/digitalocean.mdx · template sets STORAGE=s3 but page never asks for a Space + S3 creds · status: raised · https://github.com/mnfst/docs/issues/48 (finding 2)
- 2026-08-07 · MISSING-CASE · deploy/koyeb.mdx · stale deploy link deploys without S3 → logs lost · status: raised · https://github.com/mnfst/docs/issues/48 (finding 3)
- 2026-08-07 · WRONG · deploy/render.mdx · recordings now persist on a mounted 1GB disk (paid Starter, no sleep); doc says ephemeral/needs S3 · status: raised · https://github.com/mnfst/docs/issues/48 (finding 4)
- 2026-08-07 · WRONG · deploy/fly.mdx · deploy.sh auto-provisions Tigris S3; doc says attach a volume · status: raised · https://github.com/mnfst/docs/issues/48 (finding 5)
- 2026-08-07 · WRONG · request-logs.mdx · blanket “Render/Fly/Heroku/Koyeb ephemeral, wire S3 yourself” no longer true · status: raised · https://github.com/mnfst/docs/issues/48 (finding 6)
- 2026-08-07 · MISSING-CASE · deploy/easypanel.mdx · manual-deploy env block omits the recordings volume the template mounts · status: raised · https://github.com/mnfst/docs/issues/48 (finding 7)
- 2026-08-07 · WRONG · reference/environment-variables.mdx · DB_POOL_MAX/AUTH_DB_POOL_MAX defaults are 10/5, doc says 30/10 · status: raised · https://github.com/mnfst/docs/issues/48 (finding 8)
- 2026-08-07 · MISSING-CASE · deploy/aws.mdx · retained S3 recording bucket provisioned; teardown/creation undocumented · status: raised · https://github.com/mnfst/docs/issues/48 (finding 9)
- 2026-08-07 · INTERNAL-LEAK · reference/environment-variables.mdx · lines 32 & 36 name an internal gateway-tester tool + its internal hostname (the *_CORS_ORIGINS var carries the codename) · status: raised · https://github.com/mnfst/docs/issues/48 (finding 10)
- 2026-08-07 · OPEN QUESTION (not a finding, kept out of the public issue) · deploy/railway.mdx + request-logs.mdx · README claims Railway provisions S3-compatible recording storage, but railway.toml has no REQUEST_RECORDING_*/volume/S3 — ask Seb whether Railway auto-provisions; if yes, both pages need the Fly-style correction.
- 2026-08-07 · OBSOLETE · introduction.mdx · card still says “Message recording” (+5 leftover mentions elsewhere) · status: accepted (option 1) → PR #50 · https://github.com/mnfst/docs/issues/49 (finding 1)
- 2026-08-07 · WRONG · self-hosted.mdx · “first account becomes the admin” vs the setup screen · status: accepted (option 1, user-as-actor wording) → PR #50 · https://github.com/mnfst/docs/issues/49 (finding 2)
- 2026-08-07 · WRONG · self-hosted.mdx · “unknown model falls back to routing” vs M302 · status: accepted (option 1, live-reproduced) → PR #50 · https://github.com/mnfst/docs/issues/49 (finding 3)
- 2026-08-07 · WRONG · self-hosted.mdx · fresh-install table gives M100 the definition of M101 · status: accepted (option 1, live-reproduced) → PR #50 · https://github.com/mnfst/docs/issues/49 (finding 4)
- 2026-08-07 · INTERNAL-LEAK · deploy/aws,render,easypanel,koyeb · the instance-mode env var (named in the deploy guides) absent from the reference · status: accepted (final: documented in the reference with its user-facing surface only — the coherence rule forbids the halfway state where guides use a variable the reference doesn’t define) → PR #50 · https://github.com/mnfst/docs/issues/49 (finding 5)
- 2026-08-07 · MISSING-CASE · introduction.mdx · free plan quota (10k/month) stated nowhere outside the M204 error page · status: accepted (option 1) → PR #50 · https://github.com/mnfst/docs/issues/49 (finding 6)
- 2026-08-08 · SCOPED RUN (autofix, cron, autonomous, no human) · pages autofix.mdx + errors.mdx · window: full feature surface (PRs #2379→#2694) · CLEAN — 0 findings, no issue filed. Auditor + fresh-eyes verifier both re-verified every falsifiable claim against code: repairable statuses 400,404,422; synthetic-M302 heal (#2569) gone → forward-to-provider 404 (#2639) matches autofix.mdx:30; before-fallback/one-retry; streaming before-first-byte; toggle defaults ON-cloud/OFF-selfhosted with the nullable-reset migration (pre-existing agents inherit, not force-flipped) matching the user-visible “keeps its state”; consent self-hosted-only on any enable path; guardrails 3-failures/30s/one-success; env table (5 vars, defaults, 256 KB drop, AUTOFIX_URL is a constant not a var); dashboard cards. No internal-name leak (Phoenix/Peacock/Doctor/autofix.manifest.build absent). All 4 images present. lastAuditedAt stamped 2026-08-08; lastAuditedPr untouched (scoped run).
- 2026-08-09 · SCOPED RUN (llm gateway: routing, tiers, fallbacks · cron rotation, autonomous, no human) · page llm-gateway.mdx · window: last 30 days + full current routing/gateway code path · 5 findings filed as issue #53; lastAuditedPr untouched (scoped run), topic stamped 2026-08-09. Categories: WRONG ×3, MISSING-CASE ×1, IMAGE ×1.
- 2026-08-09 · WRONG · llm-gateway.mdx:87 · “/v1/messages always routes through tiers” false — a concrete model ID is a direct route on all three endpoints (proxy.service.ts:899-916) · status: raised · https://github.com/mnfst/docs/issues/53 (finding 1)
- 2026-08-09 · WRONG · llm-gateway.mdx:97,138,6 · invented “424 exception” to fallback + “exhaustion returns 424” false — trigger is literally >=400 no exception, exhaustion preserves the PRIMARY model’s real status and signals via X-Manifest-Fallback-Exhausted + body code fallback_exhausted (fallback-status-codes.ts:1-3, proxy.service.ts:1258-1265, proxy-response-handler.ts:403-410) · status: raised · https://github.com/mnfst/docs/issues/53 (finding 2)
- 2026-08-09 · WRONG · llm-gateway.mdx:142 · “M200 hard-limit block returns HTTP 429” false — delivered as an HTTP 200 friendly assistant stub (proxy-friendly-response.ts:115-119); 429 is M201/202/203, 402 is M204 · status: raised · https://github.com/mnfst/docs/issues/53 (finding 3)
- 2026-08-09 · MISSING-CASE (low severity, honest leave-as-is option) · llm-gateway.mdx:89 · “any unlisted model ID → M302” is a false universal — an uncatalogued-but-connected model is forwarded to the provider (#2639, proxy.service.ts:981-1049); harm is missed capability, not failure. NOT a re-raise of decisions.md self-hosted.mdx M302 line (different claim, different page) · status: raised · https://github.com/mnfst/docs/issues/53 (finding 4)
- 2026-08-09 · IMAGE · llm-gateway.mdx:114-124 · Fallback Configuration steps describe the Routing page drag-to-reorder flow in prose only; screenshot of a tier + ordered fallback list missing · status: raised · https://github.com/mnfst/docs/issues/53 (finding 5)
- 2026-08-10 · SCOPED RUN (observability: requests page, analytics · cron rotation, autonomous, no human) · page observability.mdx · window: observability feature surface, ~45 days (PRs incl. #2374/#2456/#2485/#2502/#2508/#2535/#2609/#2642/#2666) · 4 findings filed as issue #54; lastAuditedPr untouched (scoped run), topic stamped 2026-08-10. Categories: WRONG ×2, MISSING-CASE ×1, IMAGE ×1. Full loop ran (platform-engineer truth → docs-auditor cross-check → issue-verifier fresh-eyes). Auditor cleared two near-findings: local/custom cost shows as $0 in aggregates (spirit-correct, mechanism is NULL not literal 0 — user-visible truth holds, leave-as-is), and the four-card dashboard map (fair conceptual grouping, “error rates” served by the shipped Success rate). No cross-page backlog items surfaced (env-vars reference already carries the EMAIL_* rows, coherence holds).
- 2026-08-10 · WRONG · observability.mdx:98 · self-hosted “Configure a provider on the Limits page: Resend/Mailgun/SendGrid … then save” is false — the in-app email-provider form is unmounted dead code (EmailProviderSetup has zero JSX usages; Limits.tsx:213 renders only read-only CloudEmailInfo); the EMAIL_* env vars (send-email.ts:30-59) are the ONLY self-hosted path · status: raised · https://github.com/mnfst/docs/issues/54 (finding 1)
- 2026-08-10 · WRONG · observability.mdx:67,79 · limit-rule “Action | Email you, block further requests, or both” implies selectable block-only; UI always emails and block is an optional toggle (LimitRuleModal.tsx:25 actionValue notify|both, no block-only emitted) · status: raised · https://github.com/mnfst/docs/issues/54 (finding 2)
- 2026-08-10 · MISSING-CASE (low severity, honest leave-as-is option) · observability.mdx:32-34 · Free cloud plan is clamped to 7d of dashboard history; 30/90/365d ranges are Pro (Overview.tsx:50 PRO_RANGES, :193 clamp, plan-range-lock.ts:27-28) and the page is silent · status: raised · https://github.com/mnfst/docs/issues/54 (finding 3)
- 2026-08-10 · IMAGE · observability.mdx:29-44 · “The dashboard” four-card section has no screenshot; one Overview-tab shot (KPI tiles + spend-over-time chart) under the card grid · status: raised · https://github.com/mnfst/docs/issues/54 (finding 4)
- 2026-08-08 · FULL RUN (cron, autonomous, no human) · window: PRs #2698→#2701 (only #2701 merged; #2698-2700 never merged) · CLEAN — 0 findings, no issue filed. #2701 “route Bedrock GPT-5 responses correctly” is a pure internal proxy buildPath fix: Bedrock GPT-5-family models now forward to /openai/v1/responses instead of /v1/responses (provider-endpoints.ts:83-96,208), other Bedrock OpenAI models stay on /v1/responses. No user-facing surface — no setting, model-catalog entry, setup step, or error string; it removes a formerly-broken request-failure mode transparently. Three agents concurred: platform-engineer (internal-only), docs-auditor (only providers/api-key-providers.mdx mentions Bedrock, no obsolete claim, no leak, reference/api.mdx’s /v1/responses is the PUBLIC client endpoint not the internal Bedrock upstream), issue-verifier as fresh-eyes adversary (SILENCE CONFIRMED). No leak strings in docs (mantle/api.aws/sol/terra/luna codenames: 0 hits). Coherence GREEN. lastAuditedPr advanced 2697→2701.