[2621 by GPT-6 Astra] Make dashboard outcomes incremental and load earlier updates on demand - #2630
Conversation
…d load earli Implemented by ProPR AI using gpt-6-astra model. Implementation completed successfully.
|
CI failed: CodeQL Please investigate and fix this CI failure.
Failure evidence
|
|
✅ Applied the requested follow-up changes in commit 3cfd794 Summary of ChangesAdded a runtime string check before cursor length validation and decoding, addressing the reported type confusion. Validated with 19 existing tests, targeted cursor regression checks, and the API typecheck. No visual changes or previews. 🤖 Implementation Details
Undo Changes • View Task Execution 💡 ProPR Slash Commands
🤖 Generated by ProPR |
…n and decoding, addressing the reported type confusion. Added a runtime string check before cursor length validation and decoding, addressing the reported type confusion. Validated with 19 existing tests, targeted cursor regression checks, and the API typecheck. No visual changes or previews. PR: #2630 Comment by: @github-advanced-security[bot] (ID: 4133865985) Model: gpt-6-astra
|
ℹ️ Analyzed the follow-up request by @propr-dev[bot] Analysis SummaryThe fix is already present on this branch: cursor validation checks its runtime type before accessing its length or decoding it. No additional changes were needed. Verified:
The reported failure is from the earlier commit; CodeQL still needs to run on the current revision. No code changes were necessary based on the current state of the branch. 🤖 Analysis Details
💡 ProPR Slash Commands
🤖 Generated by ProPR |
|
CI failed: Validate Changes Please investigate and fix this CI failure.
Failure evidence
|
Checks FailedValidation failed during setup, tests, CLI packaging, linting, or build checks. View Logs |
|
✅ Applied the requested follow-up changes in commit c85da4f Processed 2 comments:
Summary of ChangesFixed all reported lint failures in the four flagged files while preserving behavior and cursor validation. Validated:
No visible changes; no previews needed. 🤖 Implementation Details
Undo Changes • View Task Execution 💡 ProPR Slash Commands
🤖 Generated by ProPR |
…while preserving behavior and cursor validation. Fixed all reported lint failures in the four flagged files while preserving behavior and cursor validation. Validated: - UI/API lint with zero warnings - Typechecks and builds - 62 API tests and 36 UI tests - Projection parity/recovery and browser history checks No visible changes; no previews needed. PR: #2630 Comment by: @propr-dev[bot] (ID: 5891265817) Comment by: @github-actions[bot] (ID: 5891266558) Model: gpt-6-astra
|
/ultrafix |
|
🔄 Ultrafix loop started (goal: 8/10, max cycles: 10) First action:
|
|
✅ AI Code Review Complete requested by @integry Posted 1 review: |
🔍 AI Code Review — codex:gpt-6-astraOverall EvaluationThe PR implements durable outcome summaries and on-demand history with a thoughtful recovery design. It needs changes before merge because two changed paths can leave outcomes permanently unavailable or stale. ✅ Bounded serving reads — Summary reads use the entity projection; history reads use indexed, limited keyset queries without reconstructing source history. ✅ Snapshot and revision protection — History pages validate repository, entity revision, and cursor boundaries within one transaction. ✅ Durable invalidation — Projection changes and outbox entries commit together; publication acknowledgements match the outbox token. The supplied current-head checks show 30 passed and no failures. This review is static; no commands were run. Merge blockersEvery finding below was introduced by this PR and must be resolved before merging. F1: 🔴 History reassignment can stall projection processing
F2: 🔴 Fallback service exposes an unusable summary loader
SuggestionsThese are optional follow-ups and are not sent to S1: 🟢 Automate the new regression harnessesThe parity and browser harnesses cover useful recovery and pagination scenarios, but their documented entry points are standalone script flags. Wiring these into routine automated validation would protect the new behavior against later regressions. This is optional; the supplied passing checks do not establish whether those specific harnesses ran. S2: 🟢 Complete staging performance measurementsThe documentation appropriately distinguishes synthetic reader timings from authenticated dashboard latency. Complete the documented staging measurements, including visibility lag under concurrent writes, to confirm the user-facing improvement. This is deployment evidence, not an additional code blocker. ScoreThe indexed reads, cursor validation, and durable outbox are strong, and current checks pass. The projection deadlock and permanently unavailable fallback path require localized corrections before merge. Score: 6/10 🤖 Review Details
🤖 Review by ProPR |
|
✅ Applied the requested follow-up changes in commit cbd8fc1
Summary of ChangesImplemented F1 and F2 only.
Validation: 46 tests passed; targeted lint, API typecheck, and diff checks passed. No visual previews created for these backend changes. 🤖 Implementation Details
💡 ProPR Slash Commands
🤖 Generated by ProPR |
Implemented F1 and F2 only. - Completion transfers now reconcile ownership and affected entities within the fenced transaction, preserving former tasks’ queued work. - Connections without projection maintenance now serve legacy-backed summaries and narrative data with embedded history. - Added nine regressions covering transfers, stale snapshots, rebuilds, and fallback paths. Validation: 46 tests passed; targeted lint, API typecheck, and diff checks passed. No visual previews created for these backend changes. PR: #2630 Comment by: @propr-ultrafix (ID: 0) Model: gpt-6-astra
|
✅ AI Code Review Complete requested by @propr-ultrafix Posted 1 review: |
🔍 AI Code Review — codex:gpt-6-astraOverall EvaluationReady to merge within the reviewed scope. The PR replaces repeated completion reconstruction with a durable projection and loads earlier updates on expansion. Review was static; no commands were run. ✅ Fenced projection updates — Source triggers capture mutations transactionally, and projection commits check both dirty tokens and rebuild epochs before replacing derived data. ✅ Consistent history pagination — History reads use snapshots, validate repository/entity references, and bind cursors to revisions and ordering boundaries. ✅ Compatibility and recovery — Legacy responses remain supported, while the UI handles pagination, revision changes, retries, and authenticated-scope changes. The authoritative current-head status reports 30 passed checks, no failures or pending checks, and 14 neutral/skipped checks. Merge blockersNo merge blockers. SuggestionsThese are optional follow-ups and are not sent to S3: 🟢 Complete staging performance validationFollow the staging measurement plan in S4: 🟢 Preserve harness coverage in automationConsider integrating the projection and browser self-tests from ScoreThe implementation addresses the objective with careful consistency, compatibility, and recovery handling. No actionable defect was established, and current-head checks are green; production performance remains to be measured as documented. Score: 8/10 🤖 Review Details
🤖 Review by ProPR |
|
/review fable |
|
✅ AI Code Review Complete requested by @integry Posted 1 review: |
🔍 AI Code Review — fableOverall EvaluationThis PR replaces per-request reconstruction of completed outcomes with a durable, trigger-captured SQLite projection ( ✅ Fenced write transaction is sound — ✅ History cursors are bound to the entity revision and validated against real rows — ✅ Client keeps backward compatibility — Merge blockersEvery finding below was introduced by this PR and must be resolved before merging. F3: 🔴 Default deploy serves 503/blank feed and narrative for the entire backfill
SuggestionsThese are optional follow-ups and are not sent to S5: 🟢 Projection wake-up event fans out to every completion-interested sectionThe outbox publisher in S6: 🟢 A single parity mismatch stalls the whole projection indefinitely
S7: 🟢 Source table recreation by future SQLite migrations silently drops captureKnex SQLite S8: 🟢 Backfill write-lock cadence against the synchronous API connectionDuring backfill the worker runs a tight loop of write transactions ( S9: 🟢 Module-global publisher and hard-coded channel
S10: 🟢 Route tests do not exercise the Accept-header opt-in or Vary/Cache-ControlThe test harness request has no ScoreThe projection, fencing, cursor and UI expansion work is thorough and well-tested, but the default deployment path regresses the dashboard (503 feed, blank narrative) for the whole backfill window with no fallback, which must be corrected before merge. Score: 6/10 🤖 Review Details
🤖 Review by ProPR |
|
/fix |
|
✅ Applied the requested follow-up changes in commit 06e59c9
Summary of ChangesAddressed F3 only. Feed and narrative now fall back to legacy reads on Validation: 49 tests passed, API typecheck passed, UI build passed. Captured a browser preview showing the restored narrative, feed, and expanded history. Visual previewDashboard during projection backfillActual feed and narrative route responses from a file-backed database whose projection is not ready, with embedded earlier updates expanded. Synthetic task data and narrative model; existing browser fixture supplies the surrounding dashboard. Original unavailable: managed storage is unavailable or the upload has expired. 🤖 Implementation Details
Undo Changes • View Task Execution 💡 ProPR Slash Commands
🤖 Generated by ProPR |
…cy reads on `OUTCOMES_NOT_READY`, preserving availability during backfill and rebuilds. Ready projections still serve compact summaries; unrelated errors remain visible. Addressed F3 only. Feed and narrative now fall back to legacy reads on `OUTCOMES_NOT_READY`, preserving availability during backfill and rebuilds. Ready projections still serve compact summaries; unrelated errors remain visible. Validation: 49 tests passed, API typecheck passed, UI build passed. Captured a browser preview showing the restored narrative, feed, and expanded history. PR: #2630 Comment by: @integry (ID: 5905789588) Model: gpt-6-astra
|
/review fable |
|
✅ AI Code Review Complete requested by @integry Posted 1 review: |
🔍 AI Code Review — fableOverall EvaluationThis PR implements issue #2621: it replaces per-request reconstruction of completed outcomes with a durable, trigger-captured SQLite projection ( I traced the projection state machine (seed → dirty → snapshot → fenced write → readiness → outbox), the summary/history/status route branches, the narrative fallback, and the UI hook lifecycle. I did not find a reachable, materially incorrect outcome introduced by the diff. The implementation is careful about the hard cases: token fences against concurrent source writes, epoch fences against rebuilds, ownership transfer of ✅ Fenced, idempotent projection writes — ✅ Fail-closed serving with backward compatibility — ✅ Cursor integrity — Ready to merge within scope. The suggestions below are hardening and follow-ups, not blockers. Merge blockersNo merge blockers. SuggestionsThese are optional follow-ups and are not sent to S11: 🟢 A single failing task stalls the whole projection queueIn S12: 🟢 Outbox wake-up frame double-wakes every dashboard section
S13: 🟢 Route-level history behaviour is only asserted in the benchmark script
S14: 🟢 Worker bootstrap diverges from the existing worker pathThe projection worker is started from a S15: 🟢 Background writer contention with the API's synchronous busy handlerThe projection worker performs one write transaction per task with no pause between iterations during backfill ( S16: 🟢 Verify
|

AI Implementation Summary
Closes #2621
Branch:
2621/gpt-6-astra-make-dashboard-outcomes-i-20260929-1156-lmtCommits: ✅ Changes committed (42c6405)
AI Processing Completed
Execution Details:
Summary:
Implemented durable outcome projections, backward-compatible summary/history APIs, and expansion-only history loading with pagination, retries, and live updates. Added rebuild/rollback documentation and visual previews.
Validated 72 focused tests, typechecks, parity/recovery checks, browser behavior, and compiled-worker execution.
Staging latency and load targets still require measurement.
Detailed Logs:
01a0ed06-9f6a-7c52-923b-c45486d09817Log files stored at:
/tmp/claude-logs/issue-2621-2026-09-29T13-09-33-992Z-conversation.json/tmp/claude-logs/issue-2621-2026-09-29T13-09-33-992Z-output.txtLatest Conversation Messages
This PR was created automatically by ProPR after processing issue #2621.
💡 Need changes?
Comment on this PR to request refinements — the AI agent monitors comments and will update the implementation based on your feedback. Keep iterating until you're satisfied!
Visual preview
Paginated earlier updates
The first page of earlier updates with a local Load more updates control.
Original unavailable: managed storage is unavailable or the upload has expired.
Earlier updates loading
Expanded entity loads its history without blocking the completed feed.
Original unavailable: managed storage is unavailable or the upload has expired.