We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tbrennem-source/sf-permits-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
# CHECKCHAT-53B — Sprint 53B Close
**Date:** 2026-02-24
**Sprint:** 53B — Land What's Built (verification sprint)
---
## 1. VERIFY
- [x] RELAY gate: 5 QA agents ran (30 checks total: 29 PASS, 0 FAIL, 1 SKIP)
- [x] pytest: 1705 passed, 20 skipped, 0 failures
- [x] No regressions introduced (pre-existing test skips unchanged)
- [x] All migrations verified on prod via MCP queries
## 2. DOCUMENT
- [x] CHANGELOG.md updated with Sprint 53B entry
- [x] SPRINT-53B-REPORT.md written with full diagnostic, migration, fix, and QA details
- [x] DIAGNOSTIC-53B.md written with pre-flight state assessment
## 3. CAPTURE
- [x] 3 scenarios appended to scenarios-pending-review.md:
- Stale addenda data triggers morning brief warning
- Nightly cron failure triggers Telegram alert
- Signal pipeline runs on prod via nightly cron
- [x] QA results in qa-results/53b-*/ directories (5 result files + screenshots)
## 4. SHIP
- [x] Merged 3 fix agent branches to main (FIX-BRIEF, FIX-STALENESS, FIX-CRON)
- [x] Pushed to main → Railway auto-deploy succeeded
- [x] Both prod and staging healthy after deploy
## 5. PREP NEXT
**Follow-up tasks:**
- Signal pipeline Postgres compatibility: `src/signals/pipeline.py` uses DuckDB-style `conn.execute()` with `?` placeholders — will fail on prod Postgres when `/cron/signals` runs. Needs psycopg2 cursor pattern.
- Stuck cron job cleanup: log_id 14 (and possibly others) stuck in "running" state since 2026-02-22. Need a cleanup endpoint or manual UPDATE.
- test-login role support: Staging test-login always returns admin. Add role parameter support for non-admin testing.
- cron_log schema extension: `duration_seconds` and `records_processed` columns referenced in sprint spec but no migration exists.
- CRON_SECRET investigation: Railway CLI returns a value that doesn't authenticate against prod endpoints. GitHub Actions secret works. Verify they match and update if needed.
## 6. BLOCKED ITEMS REPORT
### BLOCKED: cron_log duration_seconds / records_processed columns
- **What failed:** Sprint spec expects these columns on cron_log, but no migration script exists
- **What was tried:** Checked run_prod_migrations.py registry — column not included; searched codebase for ADD COLUMN migration — not found
- **Why blocked:** No DDL to add these columns exists. Would need to create a new migration.
- **Recommended next step:** Create `scripts/add_cron_log_columns.sql` with `ALTER TABLE cron_log ADD COLUMN IF NOT EXISTS duration_seconds FLOAT; ALTER TABLE cron_log ADD COLUMN IF NOT EXISTS records_processed INTEGER;` and add to migration registry.
### BLOCKED: Signal pipeline Postgres compatibility
- **What failed:** `src/signals/pipeline.py` uses `conn.execute(sql, params)` with `?` placeholders — DuckDB pattern that will fail on psycopg2
- **What was tried:** Identified in diagnostic, noted for follow-up. Not fixed in this sprint (verification only, minimal code changes).
- **Why blocked:** Fixing requires refactoring pipeline.py to use cursor-based execution with `%s` placeholders, or a connection adapter. Out of scope for verification sprint.
- **Recommended next step:** Refactor `run_signal_pipeline()` to detect backend and use appropriate cursor/placeholder pattern. Test with prod DB.
---
## Sprint Close Gate Assessment
- [x] All migrations verified on prod (signal tables, cost tables)
- [x] Cron endpoints configured (/cron/signals, /cron/velocity-refresh in nightly workflow)
- [x] Addenda data freshness confirmed (1 day old)
- [x] Observability fixes deployed (brief email, staleness check, Telegram alert)
- [x] prodRelay PASSED on prod (QA-PROD-PUBLIC 5/5, QA-PROD-ADMIN 6/6, QA-SAFETY 4/4)
- [x] Staging verified (QA-STAGING 5/5 + 1 SKIP)
- [x] Safety checks PASSED (no test-login on prod, no staging banner on prod)
- [x] **PUSH** — no HOLD required
---
## DeskRelay HANDOFF — Stage 2
Visual checks for DeskCC. Screenshots from QA agents available in qa-results/53b-*/:
1. **/admin/pipeline on prod** — Verify health check cards render, cron history table visible
- Screenshot: qa-results/53b-prod/admin/01-pipeline-health.png
- PASS criteria: 4 health check cards visible, at least 5 cron history rows
2. **/admin/costs on prod** — Verify cost chart area, kill switch panel
- Note: Requires admin auth — may need manual login
- PASS criteria: Page renders without errors, chart container visible
3. **/admin/ops on prod** — Verify all 6 tabs load
- Note: Requires admin auth
- PASS criteria: Each tab shows content or "no data" message, no blank/broken tabs
4. **Landing page on prod mobile** — No overflow, search usable
- Screenshot: qa-results/53b-mobile/prod-homepage.png
- PASS criteria: No horizontal scrollbar, search input visible and tappable
5. **/search?q=75+Robin+Hood+Dr on prod** — Intel panel, severity badges
- Screenshot: qa-results/53b-prod/public/03-search-results.png
- PASS criteria: Results visible with permit data
6. **Staging banner on staging** — Yellow, visible
- Screenshot: qa-results/53b-staging/02-homepage-staging.png
- PASS criteria: Yellow/orange banner at top with "STAGING" text
7. **No staging banner on prod** — Confirmed absent
- Screenshot: qa-results/53b-safety/01-no-staging-banner.png
- PASS criteria: No banner, no "staging" text visible