feat(dashboard): add evidence-grounded operations workspace - #607
Conversation
…perations-dashboard # Conflicts: # docs/adr/README.md
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…r' into feat/evidence-operations-dashboard
61fd631
into
feat/tepp-lineage-anchor-consumer
| const [destination, setDestination] = useState<WorkspaceDestination>( | ||
| import.meta.env.MODE === "test" ? "board" : "dashboard", | ||
| ); |
There was a problem hiding this comment.
🟡 Shared post links no longer open the post
The default destination is now dashboard in production while a ?post= URL is still parsed into postToOpen. The PostList that consumes it only mounts on the board destination, and nothing switches to board when a deep-link post id is present, so the linked post never opens and the user lands on the dashboard. Previously the board was the default and deep links opened the post.
Prompt for agents
After changing the default workspace destination to "dashboard" in production, deep links of the form ?post=<id> no longer open the target post because PostList (the board) only mounts when destination==="board", and postToOpen is only consumed there. Restore the deep-link behavior: when a post id is present in the URL (or postToOpen is set), initialize/switch the destination to "board" so the PostList mounts and opens the post. Consider computing the initial destination from the presence of the ?post= parameter, or add an effect that sets destination to "board" when postToOpen becomes non-null.
Was this helpful? React with 👍 or 👎 to provide feedback.
| @media (prefers-color-scheme: dark) { | ||
| :root { | ||
| --color-dashboard-ink: #adcafc; | ||
| --color-dashboard-positive: #9bc69e; | ||
| --color-dashboard-surface: #1f2028; | ||
| } | ||
| } |
There was a problem hiding this comment.
📝 Info: Dashboard dark tokens split across App.css and tokens.css
The new dashboard tokens have light values in tokens.css, but their dark overrides sit in a separate :root dark block in App.css instead of the existing dark block in tokens.css. It works via the cascade and tokens.test.ts does not check these tokens, but it splits one token's light/dark definitions across two files.
Was this helpful? React with 👍 or 👎 to provide feedback.
| from typing import Mapping, Protocol, Sequence | ||
|
|
||
| from .http_client import chat_completion_content, post_json | ||
| from .rankweave_client import RankWeaveClient, RankingList |
There was a problem hiding this comment.
🔍 Similar-VOC module has no runtime mount
similar_voc.py and SimilarVocPanel ship with tests and Storybook but are never imported into a real route or worker, consistent with the author's stated follow-up. Confirm the tests' import of RankingList from rankweave_client resolves so the test file does not error at collection.
Was this helpful? React with 👍 or 👎 to provide feedback.
| cases = await asyncio.to_thread( | ||
| case_client.analyze, | ||
| str(row["post_title"]), | ||
| normalized.text, | ||
| context, | ||
| ) | ||
| async with pool.acquire() as conn: | ||
| await persist_operations_cases( | ||
| conn, | ||
| post_id, | ||
| raw_body, | ||
| metadata["lineageweave_post_session_id"], | ||
| cases, |
There was a problem hiding this comment.
📝 Info: Case evidence validated against normalized text, digest binds raw body
The case client receives normalized.text and parse_operations_case_response validates evidence spans against it, while persist_operations_cases stores source_body_digest(raw_body). Invalidation stays consistent, but stored evidence spans are guaranteed verbatim only in the normalized text, not the raw source body a reader opens.
Was this helpful? React with 👍 or 👎 to provide feedback.
Outcome
Adds the authenticated
/operations Dashboard and semantic operational-case persistence for claim investigation, rebid/handover, external information, and repeat-issue evidence. Counts separate visible posts from classified Events, use Event occurrence time, retain extractive source spans, and open the cited post as the next action. External information remains in the Dashboard GNB; no duplicate board is added.Ask delivery now packages cited answers for reports, alert eligibility, and future MCP resource URIs. Storybook covers dashboard and similar-VOC evidence states.
Stack
Verification
Honest boundary
No keyword classifier or arbitrary fusion weight was added. Similar-VOC semantic adjudication is implemented and Storybook-audited, but its live per-post endpoint/mount remains a follow-up before that subfeature can be claimed shipped. Authenticated production backfill/runtime evidence also remains pending.