Skip to content

fix(ask): find related source evidence automatically - #688

Merged
seonghobae merged 38 commits into
feat/dashboard-case-metricsfrom
fix/ask-auto-source-composer
Aug 26, 2026
Merged

fix(ask): find related source evidence automatically#688
seonghobae merged 38 commits into
feat/dashboard-case-metricsfrom
fix/ask-auto-source-composer

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Summary

  • expand the existing authorized Ask evidence window through exact persisted project membership
  • keep unsupported facts in automatic retry and re-analysis instead of asking readers to attach originals
  • repair the Ask composer layout with semantic form submission and an independent live status
  • replace internal implementation notes in Dashboard copy with next-action language

Evidence

  • uv run pytest -q tests/test_post_chat_ingestion.py tests/test_post_content_worker.py (27 passed)
  • corepack pnpm exec vitest run src/components/OperationsDashboard.test.tsx --maxWorkers=1 (12 passed)
  • corepack pnpm exec vitest run src/App.test.tsx --maxWorkers=1 -t "renders safe Ask Agent evidence under each cited post" (1 passed, 95 skipped)
  • corepack pnpm lint

Stacked on #640. No source names or production identifiers are included.


Open in Devin Review

@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: edaa94cd-a4ba-4aec-a3c1-079309ba75fa

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

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

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

Codex added 3 commits August 26, 2026 12:18
…to HEAD

# Conflicts:
#	frontend/src/components/OperationsDashboard.stories.tsx
#	frontend/src/components/OperationsDashboard.test.tsx
#	frontend/src/components/OperationsDashboard.tsx
devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

Codex added 18 commits August 26, 2026 12:58
@seonghobae
seonghobae merged commit b597b01 into feat/dashboard-case-metrics Aug 26, 2026
1 of 4 checks passed

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Devin Review found 3 new potential issues.

Open in Devin Review

Comment on lines +188 to +195
where missing.post_id = any($1::uuid[])
and job.status_code = $2
and nullif(btrim(post.post_body), '') is not null
order by post.post_id
""",
[UUID(sibling_id) for sibling_id in sibling_ids],
SUCCEEDED,
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📝 Info: Re-analysis only reaches siblings with missing facts

The SUCCEEDED reclaim check in _claim_job still tests only source_body_sha256, not the new analysis_input_sha256, so a completed post never self-reclaims on a stale evidence window. Re-analysis depends entirely on _requeue_project_missing_case_jobs, which requeues only siblings that still carry missing facts. A completed sibling whose facts are all present is never re-analyzed when new project evidence arrives.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines 96 to 98
"--agents",
str(agents_path),
"--auto-discover-model-agents",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔍 Orchestrator start no longer tolerates model-discovery failures

start.py drops --allow-discovery-failures while chat agents still carry blank models expanded via --auto-discover-model-agents. If gateway /v1/models discovery fails, the orchestrator now fails to start instead of continuing, taking the whole LLM/Vision/embedding boundary down. This is coupled to the pinned-commit bump and is not documented in ADR 0083.

(Refers to this code)

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +124 to +143
def operations_analysis_input_sha256(
sources: tuple[OperationsEvidenceSource, ...], context: str
) -> str:
"""Digest the exact ordered source window and context sent for analysis."""
payload = {
"context": context,
"sources": [
{
"post_id": source.post_id,
"title": source.title,
"input_sha256": source.input_sha256,
}
for source in sources
],
}
encoded = json.dumps(
payload, ensure_ascii=False, separators=(",", ":"), sort_keys=True
).encode("utf-8")
return hashlib.sha256(encoded).hexdigest()

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📝 Info: Input fingerprint omits source clock and axis

operations_analysis_input_sha256 digests context and each source's post_id, title, and text digest, but not observed_at or time_axis_code. Milestones bind their instant to observed_at, so a source whose clock changes while text/title/id stay identical produces the same fingerprint and does not invalidate reuse.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant