Repository navigation
feat(dashboard): add cloud-native monitoring guide and restructure Dream run detail - #2557
happy-v587 wants to merge 28 commits into
Conversation
|
UI 改动效果说明:#2371 (comment) |
8763cdd to
0c96d99
Compare
237dcbf to
567669e
Compare
hidb4ai
left a comment
There was a problem hiding this comment.
Two Dashboard regressions reproduced against this commit with persisted SQLite data: the public Source reader crashes on missing save-time metadata, and Source rows attribute a sibling input's output to the wrong input. Details are inline.
3cf5ef1 to
d8dde9b
Compare
abed9ba to
75c3911
Compare
hidb4ai
left a comment
There was a problem hiding this comment.
Re-reviewed 75c3911e25364c093820477fe721361a0c5575c8: the four reported Dashboard issues are fixed in the exercised read and navigation paths.
The merge gate is still red: cindy-package fails test_standalone_cindy_hooks_recall_capture_and_isolate_sessions[gateway] because the second session returns allow instead of rewrite; CI result fails consequently. The same test passes locally at this head using the pinned Cindy 0.1.115 gateway source and a real TCP/SQLite Server, so I have not established that this is a PR regression. Please investigate or rerun the failed job and obtain a green required CI result before merging.
hireview001
left a comment
There was a problem hiding this comment.
- Resolve merge conflicts with the target branch.
75c3911 to
448320c
Compare
|
Addressed the outstanding gate items at
Inline review threads from the previous rounds are all resolved; the remaining blocker is a fresh approval plus the required checks finishing on the new head. |
|
All required checks are green on What changed since the last review:
Merge state: The remaining blocker is the outstanding |
hidb4ai
left a comment
There was a problem hiding this comment.
One current-head regression remains in feedback editing: saving a change to another field clears the existing reason from the latest feedback. Reproduction and required behavior are inline.
test(desktop): qualify rebased dashboard contract on SQLite fix(dashboard): align rebased runtime and template checks fix(dashboard): separate nav groups with a rule fix(dashboard): read counts as singular when the count is one Add singular label variants and a small plural helper so a one-item overview no longer reads as "1 inputs", "1 records" or "1 failed runs". fix(dashboard): give the sidebar a consistent two-level type scale Section labels and the ungrouped home entry now share one top-level size and weight, and grouped items sit one indent step below them, so a group heading can no longer read as a disabled child. fix(dashboard): keep section headings above their nav items The left navigation rendered group labels at 11.2px while item labels used 14px, so the first level read smaller than the second. Section headings now use 15px semibold and keep the secondary color for separation. fix(dashboard): correct cross-scope usage and stale backlog Count exact revision preparations across scopes only after authorizing the preparation and its complete read set. Keep old unresolved inputs visible outside the reporting window, and show incomplete scans without declaring an empty queue. Update bilingual documentation and generated contracts, and restore the two Ruff complexity checks. Focused, adjacent regression and contract suites pass. Full make check remains blocked by four existing type diagnostics in unchanged files. feat: expose memory processing outcomes, reasons and usage Persist one Atomic Memory Source-window attempt in the same transaction as the domain commit — status, stage, bounded error code, reconciliation decisions with explanations, published results and retained artifacts — and expose per-Source, per-revision, per-Scope and window-summary reads. The Dashboard opens on an outcome overview: unresolved failures, completed inputs, delivered context, explicit adoption, an input-to-adoption funnel, and a needs-attention list. Waiting inputs are derived from the journal cursor so a stalled queue cannot look healthy. Memory detail reports the period's preparation count and last use, and a maintenance script reconciles recorded results with stored artifacts. Migrations: server_resources 1.4.1.007 (processing records) and 1.4.1.008 (context usage).
…eam run detail Add a static cloud-native monitoring page under observation navigation covering managed Docker Compose deployment, Server telemetry settings, Grafana/Phoenix access, read-only verification and external platform connections. The page keeps Dashboard authentication, requires no Scope or running monitoring stack, and performs no deployment actions. Split the Dream run detail into its own component and present Input, Processing, and Output in reading order. Input shows up to 20 authorized exact Artifact previews with identity and source references collapsed by default; the processing stage retains recorded status, reason, error, timestamps and attempt count; output links to the recorded candidate or states that no new output was recorded. Unfinished tasks keep polling. Unselected sibling inputs no longer leak into the detail view. Tighten the processing detail type scale so nested sections inherit one consistent size, and update bilingual documentation and labels.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
The upgrade regression rewound pc_schema_revision to v1_5_0_003 but only dropped the table introduced by v1_5_0_004. Once v1_5_0_005 and v1_5_0_006 were registered, their tables and indexes stayed installed and replaying the chain failed with "index ix_pc_memory_processing_started already exists". Derive the tables to drop from the pending revision chain so the reconstructed layout stays a faithful older schema as migrations are added. Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
The rebase onto master merged master's OpenAPI changes into this branch, so the Desktop HTTP contract digest no longer matched any bundled qualification record and the bundled business-profile check failed. Record sqlite-dashboard-74082534-v1 from an actual built-wheel run: all four SQLite modes passed against commit 7408253 with the normal ConnectionManager and no ci-fixtures, and all 816 packaged runtime files match the recorded Git source bytes. Co-Authored-By: Claude Code <noreply@anthropic.com>
404e8bd to
bd54aff
Compare
|
Rebased onto the current The branch had drifted 13 commits behind and Resolution:
Merging master changed the HTTP contract digest, so the previously qualified record no longer matched and
The only remaining blocker is the outstanding |
The feedback editor rendered an empty textarea even when the record already carried a reason, so changing only adoption submitted an empty reason and the latest feedback lost its explanation while the historical row stayed intact. Prefill the editor from the saved reason. An explicit clear still submits an empty value, and a regression covers editing adoption without clearing the reason. Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Fixed in The feedback editor's textarea had no value, so the form always submitted an empty The editor now prefills from the saved reason. An explicit clear still submits an empty value, so clearing remains possible. Regression: The review thread is resolved. The full CI suite is running on the new head. |
The unsuccessful-inputs count covers every attempt that is neither started nor succeeded, but its links asked only for `failed`. A Source whose only unsuccessful attempt was cancelled or conflicted therefore opened an empty list. The attempts list now accepts a repeated `status` parameter and the links request all three counted statuses. Home raises that alert from all recorded history, yet its detail link inherited Home's selected period and hid attempts older than it. The summary API now accepts an explicit `all_time=true`, Home's links carry the matching all-history selection, and the Processing page offers the same option beside its bounded periods. Both directions are covered by a regression that records a recent and a month-old cancelled attempt: the windowed link must show only the recent one and Home's link must show both. Co-Authored-By: Claude Code <noreply@anthropic.com>
The failure-navigation fix added a repeated `status` filter and an explicit `all_time` summary window, so the OpenAPI digest changed and no bundled profile matched it. Regenerate the Desktop operation tables and TypeScript contract, then qualify all thirteen declared operations against a real built-wheel Server. The new record was produced by an actual four-mode SQLite run on macOS 26.5.2 arm64 with Python 3.14.7 and Rust 1.95.0, and all 816 packaged runtime files match the recorded commit bytes. The previous record keeps its own digest and evidence. Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Both P2 threads are addressed in 1. The alert and its destination now count the same statuses.
2. Home's all-history alert opens an all-history range.
Regression coverage: 🤖 Generated with Claude Code |
The persistence review digest covers every file under src/powercontext/builtin/persistence, so accepting a repeated status in the processing read requires an updated declaration. Record that the filter is query-only: no table, column, index, revision, migration resource or stored payload changes. Co-Authored-By: Claude Code <noreply@anthropic.com>
The summary operation gained an explicit all_time query parameter, so the committed DSH, OpenCode and Cindy bundles were stale against the generated operation table. Rebuild them from the regenerated source; the only change in each bundle is the added query parameter. Co-Authored-By: Claude Code <noreply@anthropic.com>
launchd enforces a 10s minimum respawn interval even when the job declares ThrottleInterval 1. Three failing attempts plus the token removal that follows the last one therefore need about 20s, so the existing 20s deadline left no margin and failed when the runner was slow. Keep the same predicate and give it a deadline that covers the documented throttle. Co-Authored-By: Claude Code <noreply@anthropic.com>
Which issue or RFC does this PR close?
Closes #.
Rationale for this change
The Dashboard previously exposed Dream runs as a card grid without a readable task narrative, and offered no entry point for operators who need to wire up the cloud-native monitoring stack. This PR makes Dream task detail follow the actual execution order (Input → Processing → Output) and adds a static cloud-native monitoring guide so telemetry setup is documented where operators already work.
What changes are included in this PR?
dream-run-detail.html) and now follows Input, Processing, and Output in reading order. Input shows up to 20 authorized exact Artifact previews with identity and source references collapsed by default; the processing stage retains the recorded status, reason, error, timestamps and attempt count; output links to the recorded candidate or states explicitly that no new output was recorded. Unfinished tasks keep polling, and unselected sibling inputs no longer leak into the detail view.observability) covers managed Docker Compose deployment, Server telemetry settings, Grafana/Phoenix access, read-only verification and external platform connections, with bilingual (en/zh) content. The page keeps Dashboard authentication, requires no Scope or running monitoring stack, and performs no deployment actions.docs/en/development/dashboard.md,docs/zh/development/dashboard.md, and both label files gain the new sections and strings.Are there any user-facing changes?
How was this change tested?
uv run pytest tests/test_dashboard_processing.py tests/test_dashboard_observation.py tests/test_dashboard_observability_guide.py -q— 47 passed.AI usage statement
Implemented and validated with OpenCode (GLM model); code and tests were authored with AI assistance and reviewed by the human author.