Skip to content

fix(ui): resolve SQLite manager keys across dashboard and daily report (#1671) - #1681

Merged
stranske merged 1 commit into
mainfrom
cursor/issue-1671-sqlite-manager-keys
Sep 15, 2026
Merged

stranske merged 1 commit into
mainfrom
cursor/issue-1671-sqlite-manager-keys

Conversation

@stranske

Copy link
Copy Markdown
Owner

Summary

  • Route dashboard manager selector and QC stale-manager queries through resolve_manager_id_column, aliasing to manager_id in result frames.
  • Fix daily-report fallback diff, news, and activism joins to use the resolved managers primary-key column on SQLite while preserving Postgres behavior.

Closes #1671

Test plan

  • pytest tests/test_dashboard.py tests/test_daily_report_views.py -q — PASS (full suites)
  • Parametrized id/manager_id key-matrix tests for dashboard QC summary and daily-report fallback paths
  • Deliberate-break gate: hardcoded m.manager_id join restored briefly → test_daily_report_fallback_queries_resolve_manager_primary_key[id] FAILED → reverted

… daily report

Use resolve_manager_id_column for manager selectors, QC summaries, and daily-report
fallback joins so databases seeded with managers.id behave the same as manager_id.

Co-authored-by: Cursor <cursoragent@cursor.com>
Copilot AI lite review requested due to automatic review settings September 15, 2026 06:30
@coderabbitai

coderabbitai Bot commented Sep 15, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 27 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available. Your 64 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Essentials

Run ID: a929bdb3-b372-4972-96ef-40f76423722e

📥 Commits

Reviewing files that changed from the base of the PR and between ef57762 and d05b0b3.

📒 Files selected for processing (4)
  • tests/test_daily_report_views.py
  • tests/test_dashboard.py
  • ui/daily_report.py
  • ui/dashboard.py

Comment @coderabbitai help to get the list of available commands.

@stranske stranske added agent:cursor Assign to Cursor agent (cursor-agent CLI) agents:keepalive Enable keepalive monitoring on PR autofix Let bots format/lint automatically labels Sep 15, 2026
@stranske
stranske deployed to agent-standard September 15, 2026 06:31 — with GitHub Actions Active

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No unresolved review issues were identified.

Pull request overview

Fixes SQLite manager-key compatibility across dashboard and daily-report queries while preserving PostgreSQL behavior.

Changes:

  • Resolve manager primary-key columns consistently.
  • Update dashboard and daily-report joins.
  • Add parametrized coverage for both key schemas.
File summaries
File Description
ui/dashboard.py Resolves manager keys for selectors and QC summaries.
ui/daily_report.py Applies resolved keys to report joins.
tests/test_dashboard.py Tests both SQLite key schemas.
tests/test_daily_report_views.py Tests fallback queries across both schemas.
Review details
  • Files reviewed: 4/4 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@stranske stranske added the agent:retry Add to trigger agent retry after rate limit or pause label Sep 15, 2026
@stranske
stranske deployed to agent-standard September 15, 2026 06:42 — with GitHub Actions Active
@github-actions

github-actions Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Runner dispatch state for cursor on PR #1681. Do not edit.

@stranske-keepalive

stranske-keepalive Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

🤖 Keepalive Loop Status

PR #1681 | Agent: Cursor | Iteration 0/12

Current State

Metric Value
Iteration progress [----------] 0/12
Action run (agent-run-failed-repeat)
Agent status ❌ AGENT FAILED
Gate success
Tasks 3/5 complete
Timeout 45 min (default)
Timeout usage 0m elapsed (2%, 45m remaining)
Keepalive ✅ enabled
Autofix ❌ disabled

Last Cursor Run

Result Value
Status ❌ AGENT FAILED
Reason agent-run-failed-repeat
Exit code unknown
Failures 4/3 before pause

To retry immediately:

  • Add the agent:retry label to this PR

Or wait for the next successful Gate run to automatically retry.

Cursor output:

Missing Cursor auth: set the CURSOR_API_KEY secret

🔍 Failure Classification

| Error type | infrastructure |
| Error category | auth |
| Suggested recovery | Verify credentials, token scopes, and permissions for the repository. |

⚠️ Failure Tracking

| Consecutive failures | 4/3 |
| Reason | agent-run-failed |

🔎 Paused – Independent Authority Challenge Required

The keepalive loop found a possible access boundary. Automation must verify it before asking a human.

To resume:

  1. Reproduce the access failure from current state and verify the exact unavailable permission or secret
  2. Record a concrete next action and responsible automation worker
  3. Use needs-human only after an independent review proves a real authority boundary
  4. Re-run Gate or apply the automation retry path

Or manually edit this comment to reset failure: {} in the state below.

@stranske-keepalive

stranske-keepalive Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor
Keepalive Work Log (click to expand)
# Time (UTC) Agent Action Result Files Tasks Progress Commit Gate
0 2026-09-15 06:43:49 Cursor run (agent-run-failed) retry failure 0 3/5
0 2026-09-15 06:47:18 Cursor wait (gate-pending-transient) skipped 0 3/5
0 2026-09-15 07:35:04 Cursor run (agent-run-failed) failure 0 3/5 success
0 2026-09-15 08:39:34 Cursor run (agent-run-failed) failure 0 3/5 success
0 2026-09-15 09:37:18 Cursor run (agent-run-failed-repeat) failure 0 3/5 success
0 2026-09-15 10:32:39 Cursor run (agent-run-failed-repeat) failure 0 3/5 success

@stranske-keepalive stranske-keepalive Bot added the agent:needs-attention Agent needs human review or intervention label Sep 15, 2026
@stranske stranske removed the agent:needs-attention Agent needs human review or intervention label Sep 15, 2026
@agents-workflows-bot agents-workflows-bot Bot added the agent:needs-attention Agent needs human review or intervention label Sep 15, 2026
@stranske stranske removed the agent:needs-attention Agent needs human review or intervention label Sep 15, 2026
@stranske-keepalive stranske-keepalive Bot added the agent:needs-attention Agent needs human review or intervention label Sep 15, 2026
@stranske stranske removed the agent:needs-attention Agent needs human review or intervention label Sep 15, 2026
@stranske-keepalive stranske-keepalive Bot added the agent:needs-attention Agent needs human review or intervention label Sep 15, 2026
@stranske stranske removed the agent:needs-attention Agent needs human review or intervention label Sep 15, 2026
@stranske
stranske merged commit 85b6b52 into main Sep 15, 2026
394 of 408 checks passed
@stranske
stranske deleted the cursor/issue-1671-sqlite-manager-keys branch September 15, 2026 11:00
@stranske stranske added the verify:compare Runs verifier comparison mode after merge label Sep 15, 2026
@stranske
stranske deployed to agent-standard September 15, 2026 11:01 — with GitHub Actions Active
@github-actions

Copy link
Copy Markdown
Contributor

Provider Comparison Report

Provider Summary

Provider Model Verdict Confidence Summary
openai gpt-5.6-terra PASS 90% The targeted implementation satisfies the issue requirements: dashboard manager selection and stale-manager QC queries resolve the managers primary-key column and preserve the expected manager_id...
anthropic claude-sonnet-5 CONCERNS 62% The PR appears to implement the intended fix — routing SQLite manager-key resolution through resolve_manager_id_column in ui/dashboard.py and ui/daily_report.py, with corresponding parametrized id/...
📋 Full Provider Details (click to expand)

openai

  • Model: gpt-5.6-terra
  • Verdict: PASS
  • Confidence: 90%
  • Scores:
    • Correctness: 9.0/10
    • Completeness: 9.0/10
    • Quality: 8.0/10
    • Testing: 9.0/10
    • Risks: 8.0/10
  • Summary: The targeted implementation satisfies the issue requirements: dashboard manager selection and stale-manager QC queries resolve the managers primary-key column and preserve the expected manager_id result alias, while daily-report fallback, news, and activism joins use the resolved manager key rather than hardcoded m.manager_id. The accompanying dashboard and daily-report tests add id-versus-manager_id key-matrix coverage for the required fallback and record types, including stale filings, news, and activism. The implementation preserves existing consumer-facing field names and expected database-dialect behavior. Code is small, readable, and uses the shared resolver as requested.
  • Concerns:
    • The PR includes substantial unrelated changes beyond the stated SQLite manager-key UI fix, increasing review surface and regression risk, though the targeted dashboard and daily-report changes appear correctly scoped.
    • Resolved column names are interpolated into SQL, which is appropriate for schema-derived identifiers but relies on resolve_manager_id_column returning only trusted, valid identifiers.

anthropic

  • Model: claude-sonnet-5
  • Verdict: CONCERNS
  • Confidence: 62%
  • Scores:
    • Correctness: 6.0/10
    • Completeness: 6.0/10
    • Quality: 6.0/10
    • Testing: 7.0/10
    • Risks: 5.0/10
  • Summary: The PR appears to implement the intended fix — routing SQLite manager-key resolution through resolve_manager_id_column in ui/dashboard.py and ui/daily_report.py, with corresponding parametrized id/manager_id matrix tests added to test_dashboard.py and test_daily_report_views.py, consistent with the acceptance criteria. However, the merged diff bundles substantial unrelated changes (alert delivery semantics, embeddings, EDGAR flow, a new document_managers migration, UI auth/cookie changes) that go well beyond the stated PR scope, making it difficult to cleanly assess whether the core fix is isolated and safe. More importantly, CI on the merge commit shows a 'Postgres chain integration' test failure, which per verification policy floors the verdict at CONCERNS even though other checks (including the dashboard/daily-report specific gate) passed. Until the Postgres failure is understood and confirmed unrelated to the shipped changes (particularly the new migration and alert integration code), this cannot be marked PASS.
  • Concerns:
    • CI gate: 'Postgres chain integration' job failed on the merge commit (ci.yml run), which per policy floors the verdict at CONCERNS regardless of code review outcome.
    • The diff includes a large amount of seemingly unrelated changes (alerts/db.py, alerts/dispatch.py, embeddings.py, etl/edgar_flow.py, alembic/versions/022_document_managers.py, api/search.py, docker-compose.yml, .env.example UI_COOKIE_KEY, etc.) that are not described in the PR's stated scope (SQLite manager key resolution in ui/dashboard.py and ui/daily_report.py). This makes it hard to confirm the PR is scoped correctly and increases the risk that the Postgres integration failure originates from one of these unrelated changes (e.g., the new document_managers migration or alert delivery changes) rather than the core fix.
    • The core fix files (ui/dashboard.py +7/-2, ui/daily_report.py +7/-4) are small and plausible for routing through resolve_manager_id_column, but the full diff for these files was truncated in the provided context, so exact correctness (aliasing to manager_id, dialect-specific placeholders preserved) could not be fully verified from the excerpt.
    • New migration 022_document_managers.py introduces a new table and backfill INSERT with ON CONFLICT DO NOTHING; if this or related alert/embeddings changes are implicated in the Postgres chain integration failure, it represents a real functional regression that must be resolved before this can be considered a clean PASS.
    • Given the acceptance criteria explicitly call for a deliberate-break gate test that was reportedly performed and reverted, but this cannot be independently verified from the diff alone (test file changes shown appear plausible: test_daily_report_views.py +72 lines, test_dashboard.py +23 lines).

Agreement

  • No clear areas of agreement.

Disagreement

Dimension openai anthropic
Verdict PASS CONCERNS
Correctness 9.0/10 6.0/10
Completeness 9.0/10 6.0/10
Quality 8.0/10 6.0/10
Testing 9.0/10 7.0/10
Risks 8.0/10 5.0/10

Unique Insights

  • openai: The PR includes substantial unrelated changes beyond the stated SQLite manager-key UI fix, increasing review surface and regression risk, though the targeted dashboard and daily-report changes appear correctly scoped.; Resolved column names are interpolated into SQL, which is appropriate for schema-derived identifiers but relies on resolve_manager_id_column returning only trusted, valid identifiers.
  • anthropic: CI gate: 'Postgres chain integration' job failed on the merge commit (ci.yml run), which per policy floors the verdict at CONCERNS regardless of code review outcome.; The diff includes a large amount of seemingly unrelated changes (alerts/db.py, alerts/dispatch.py, embeddings.py, etl/edgar_flow.py, alembic/versions/022_document_managers.py, api/search.py, docker-compose.yml, .env.example UI_COOKIE_KEY, etc.) that are not described in the PR's stated scope (SQLite manager key resolution in ui/dashboard.py and ui/daily_report.py). This makes it hard to confirm the PR is scoped correctly and increases the risk that the Postgres integration failure originates from one of these unrelated changes (e.g., the new document_managers migration or alert delivery changes) rather than the core fix.; The core fix files (ui/dashboard.py +7/-2, ui/daily_report.py +7/-4) are small and plausible for routing through resolve_manager_id_column, but the full diff for these files was truncated in the provided context, so exact correctness (aliasing to manager_id, dialect-specific placeholders preserved) could not be fully verified from the excerpt.; New migration 022_document_managers.py introduces a new table and backfill INSERT with ON CONFLICT DO NOTHING; if this or related alert/embeddings changes are implicated in the Postgres chain integration failure, it represents a real functional regression that must be resolved before this can be considered a clean PASS.; Given the acceptance criteria explicitly call for a deliberate-break gate test that was reportedly performed and reverted, but this cannot be independently verified from the diff alone (test file changes shown appear plausible: test_daily_report_views.py +72 lines, test_dashboard.py +23 lines).

🔍 LangSmith Traces

@github-actions

Copy link
Copy Markdown
Contributor

Workflow state fingerprint for Agents Verifier. Do not edit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:cursor Assign to Cursor agent (cursor-agent CLI) agent:retry Add to trigger agent retry after rate limit or pause agents:keepalive Enable keepalive monitoring on PR autofix Let bots format/lint automatically verify:compare Runs verifier comparison mode after merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Resolve SQLite manager keys across dashboard and daily report queries

2 participants