Skip to content

fix(projects): surface empty linked tasks#889

Open
seonghobae wants to merge 1 commit into
developfrom
codex/visual-gap-round3
Open

fix(projects): surface empty linked tasks#889
seonghobae wants to merge 1 commit into
developfrom
codex/visual-gap-round3

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Summary

  • replace the Projects linked-task blank message with an accessible source-backed empty state
  • add direct actions to open the task board or find related evidence when no linked tasks exist
  • cover the sparse WebDAV-project/no-task response path

Verification

  • npx -y pnpm@11.5.3 --dir frontend test src/app/projects/page.test.tsx
  • npx -y pnpm@11.5.3 --dir frontend lint src/components/ProjectsLayout.tsx src/app/projects/page.test.tsx
  • npx -y pnpm@11.5.3 --dir frontend typecheck
  • Playwright browser check against http://127.0.0.1:3003/projects with mocked sparse project/task APIs

Copilot AI review requested due to automatic review settings July 1, 2026 06:54
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

PR governance metadata gate is not ready for ad6dc35099c773a04561a6b0387c2cdd4ec8f68a:

  • Review decision is CHANGES_REQUESTED; address requested changes before merge.
  • Required check metadata could not be read: no required checks reported on the 'codex/visual-gap-round3' branch.

Copilot AI 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.

Pull request overview

This PR improves the Projects “linked tasks” section by replacing the previous blank message with a richer, source-backed empty state that includes direct navigation actions, and adds a Vitest case to cover the sparse WebDAV-project/no-task response path.

Changes:

  • Replaced the linked-tasks empty message with a more descriptive empty-state block and CTAs to Tasks/Search.
  • Added a Projects page test that exercises the “project exists but no linked tasks” scenario and asserts the empty-state UI.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
frontend/src/components/ProjectsLayout.tsx Updates the linked-tasks empty state UI, including status messaging and navigation actions.
frontend/src/app/projects/page.test.tsx Adds a Vitest case covering the no-linked-tasks scenario and asserting the new empty state content/actions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread frontend/src/components/ProjectsLayout.tsx Outdated
Comment thread frontend/src/app/projects/page.test.tsx
@seonghobae seonghobae force-pushed the codex/visual-gap-round3 branch from 0ca59c6 to 555eebe Compare July 1, 2026 06:59
@opencode-agent

opencode-agent Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: ad6dc35099c773a04561a6b0387c2cdd4ec8f68a
  • Workflow run: 28507998409
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

Pull request overview

OpenCode exhausted the configured model pool without a usable current-head review conclusion. This is not approval evidence, so the PR is blocked until a source-backed review can establish approval sufficiency or identify concrete fixes.

Findings

1. HIGH frontend/src/app/projects/page.test.tsx:1 - OpenCode could not establish approval sufficiency

  • Problem: every configured model path failed to produce a usable current-head control block.
  • Root cause: model execution, timeout, export, normalization, or approval-gate validation did not complete after exponential retry across the configured model pool.
  • Impact: approving from deterministic check state alone would miss PR-intent mismatches, missing files, edge-case bugs, robustness gaps, UX/DX regressions, security issues, and CodeGraph-backed base/head flow changes.
  • Fix: rerun OpenCode after model availability recovers, or update the PR with the missing files, tests, docs, generated artifacts, and verification evidence needed for a source-backed review conclusion.
  • Regression test: keep the approval gate posting REQUEST_CHANGES, not APPROVE or check-only failure, when no model produces a valid current-head review.

Summary

  • Result: REQUEST_CHANGES
  • Reason: coverage-evidence passed and peer GitHub Checks completed without failures, but no model produced a valid review control block.
  • Deterministic evidence checked but not used for approval: current-head changed-file evidence (frontend/src/app/projects/page.test.tsx, frontend/src/components/ProjectsLayout.tsx); coverage-evidence result success; peer checks from statusCheckRollup excluding this OpenCode check.
  • Model outcome: model_pool=exhausted; selected_model=none.
  • Head SHA: ad6dc35099c773a04561a6b0387c2cdd4ec8f68a
  • Workflow run: 28507998409
  • Workflow attempt: 1

No PR approval was posted because model-output failure is not evidence that the PR has no blockers.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Frontend (2 files)"]
  S1 --> I1["browser runtime and bundle"]
  I1 --> R1["Review risk: Frontend (2 files)"]
  R1 --> V1["frontend tests"]
Loading

@github-actions github-actions Bot 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.

Pull request overview

OpenCode reviewed the current-head evidence but found unresolved reviewer or review-agent threads before approval.

Findings

1. HIGH .github/workflows/opencode-review.yml:1 - Unresolved reviewer thread blocks automated approval

  • Problem: OpenCode reached an APPROVE control result, but the approval step found unresolved, non-outdated human or review-agent thread evidence on the current pull request.
  • Root cause: Reviewer and review-agent feedback can arrive after bounded model evidence is prepared, so the approval step must re-query GitHub immediately before publishing an approval.
  • Fix: Address or resolve the listed reviewer thread(s), then re-run OpenCode on the current head.
  • Regression test: Keep the approval gate querying reviewThreads(first: 100) after model output and before create_pull_review APPROVE, including bot review agents other than OpenCode itself.

Review thread evidence

Latest unresolved reviewer thread evidence

frontend/src/app/projects/page.test.tsx line 208

  • Latest reviewer comment: @copilot-pull-request-reviewer at 2026-07-01T06:57:35Z

  • Comment URL: #889 (comment)

  • Comment excerpt: This test stubs globals via 'vi.stubGlobal(...)', but the suite cleanup only calls 'vi.restoreAllMocks()', which does not reliably undo 'stubGlobal'. In this repo, other page tests use 'vi.unstubAllGlobals()' for isolation (e.g., 'frontend/src/app/tasks/page.test.tsx:47-54', 'frontend/src/app/calendar/page.test.tsx:69-76'). Since this new test is currently the last one in the file, leaving 'fetch' stubbed can leak into later test files running in the same worker.

  • Result: REQUEST_CHANGES

  • Reason: unresolved reviewer or review-agent thread(s) were present before approval.

  • Head SHA: 555eebe46ee6845d78964385aa6f20d1ccb46858

  • Workflow run: 28499613877

  • Workflow attempt: 1

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Frontend (2 files)"]
  S1 --> I1["browser runtime and bundle"]
  I1 --> R1["Review risk: Frontend (2 files)"]
  R1 --> V1["frontend tests"]
Loading

@seonghobae seonghobae force-pushed the codex/visual-gap-round3 branch from 555eebe to ad6dc35 Compare July 1, 2026 07:54

@opencode-agent opencode-agent Bot 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.

Pull request overview

OpenCode exhausted the configured model pool without a usable current-head review conclusion. This is not approval evidence, so the PR is blocked until a source-backed review can establish approval sufficiency or identify concrete fixes.

Findings

1. HIGH frontend/src/app/projects/page.test.tsx:1 - OpenCode could not establish approval sufficiency

  • Problem: every configured model path failed to produce a usable current-head control block.
  • Root cause: model execution, timeout, export, normalization, or approval-gate validation did not complete after exponential retry across the configured model pool.
  • Impact: approving from deterministic check state alone would miss PR-intent mismatches, missing files, edge-case bugs, robustness gaps, UX/DX regressions, security issues, and CodeGraph-backed base/head flow changes.
  • Fix: rerun OpenCode after model availability recovers, or update the PR with the missing files, tests, docs, generated artifacts, and verification evidence needed for a source-backed review conclusion.
  • Regression test: keep the approval gate posting REQUEST_CHANGES, not APPROVE or check-only failure, when no model produces a valid current-head review.

Summary

  • Result: REQUEST_CHANGES
  • Reason: coverage-evidence passed and peer GitHub Checks completed without failures, but no model produced a valid review control block.
  • Deterministic evidence checked but not used for approval: current-head changed-file evidence (frontend/src/app/projects/page.test.tsx, frontend/src/components/ProjectsLayout.tsx); coverage-evidence result success; peer checks from statusCheckRollup excluding this OpenCode check.
  • Model outcome: model_pool=exhausted; selected_model=none.
  • Head SHA: ad6dc35099c773a04561a6b0387c2cdd4ec8f68a
  • Workflow run: 28503481147
  • Workflow attempt: 1

No PR approval was posted because model-output failure is not evidence that the PR has no blockers.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Frontend (2 files)"]
  S1 --> I1["browser runtime and bundle"]
  I1 --> R1["Review risk: Frontend (2 files)"]
  R1 --> V1["frontend tests"]
Loading

container?.remove();
container = null;
vi.restoreAllMocks();
vi.unstubAllGlobals();

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.

HIGH OpenCode could not establish approval sufficiency

  • Problem: the model pool exhausted without a valid current-head review control block, so this changed line cannot be approved from deterministic check state alone.
  • Impact: PR-intent mismatches, missing files, robustness bugs, UX/DX regressions, and CodeGraph-backed flow changes could be missed.
  • Fix: rerun OpenCode after model availability recovers, or add the missing source/test/docs/generated verification evidence needed for a source-backed approval.
  • Verification: rerun the OpenCode Review workflow and confirm it emits APPROVE or source-backed REQUEST_CHANGES for this head SHA.

@opencode-agent opencode-agent Bot 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.

Pull request overview

OpenCode exhausted the configured model pool without a usable current-head review conclusion. This is not approval evidence, so the PR is blocked until a source-backed review can establish approval sufficiency or identify concrete fixes.

Findings

1. HIGH frontend/src/app/projects/page.test.tsx:1 - OpenCode could not establish approval sufficiency

  • Problem: every configured model path failed to produce a usable current-head control block.
  • Root cause: model execution, timeout, export, normalization, or approval-gate validation did not complete after exponential retry across the configured model pool.
  • Impact: approving from deterministic check state alone would miss PR-intent mismatches, missing files, edge-case bugs, robustness gaps, UX/DX regressions, security issues, and CodeGraph-backed base/head flow changes.
  • Fix: rerun OpenCode after model availability recovers, or update the PR with the missing files, tests, docs, generated artifacts, and verification evidence needed for a source-backed review conclusion.
  • Regression test: keep the approval gate posting REQUEST_CHANGES, not APPROVE or check-only failure, when no model produces a valid current-head review.

Summary

  • Result: REQUEST_CHANGES
  • Reason: coverage-evidence passed and peer GitHub Checks completed without failures, but no model produced a valid review control block.
  • Deterministic evidence checked but not used for approval: current-head changed-file evidence (frontend/src/app/projects/page.test.tsx, frontend/src/components/ProjectsLayout.tsx); coverage-evidence result success; peer checks from statusCheckRollup excluding this OpenCode check.
  • Model outcome: model_pool=exhausted; selected_model=none.
  • Head SHA: ad6dc35099c773a04561a6b0387c2cdd4ec8f68a
  • Workflow run: 28507563319
  • Workflow attempt: 1

No PR approval was posted because model-output failure is not evidence that the PR has no blockers.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Frontend (2 files)"]
  S1 --> I1["browser runtime and bundle"]
  I1 --> R1["Review risk: Frontend (2 files)"]
  R1 --> V1["frontend tests"]
Loading

container?.remove();
container = null;
vi.restoreAllMocks();
vi.unstubAllGlobals();

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.

HIGH OpenCode could not establish approval sufficiency

  • Problem: the model pool exhausted without a valid current-head review control block, so this changed line cannot be approved from deterministic check state alone.
  • Impact: PR-intent mismatches, missing files, robustness bugs, UX/DX regressions, and CodeGraph-backed flow changes could be missed.
  • Fix: rerun OpenCode after model availability recovers, or add the missing source/test/docs/generated verification evidence needed for a source-backed approval.
  • Verification: rerun the OpenCode Review workflow and confirm it emits APPROVE or source-backed REQUEST_CHANGES for this head SHA.

@opencode-agent opencode-agent Bot 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.

Pull request overview

OpenCode exhausted the configured model pool without a usable current-head review conclusion. This is not approval evidence, so the PR is blocked until a source-backed review can establish approval sufficiency or identify concrete fixes.

Findings

1. HIGH frontend/src/app/projects/page.test.tsx:1 - OpenCode could not establish approval sufficiency

  • Problem: every configured model path failed to produce a usable current-head control block.
  • Root cause: model execution, timeout, export, normalization, or approval-gate validation did not complete after exponential retry across the configured model pool.
  • Impact: approving from deterministic check state alone would miss PR-intent mismatches, missing files, edge-case bugs, robustness gaps, UX/DX regressions, security issues, and CodeGraph-backed base/head flow changes.
  • Fix: rerun OpenCode after model availability recovers, or update the PR with the missing files, tests, docs, generated artifacts, and verification evidence needed for a source-backed review conclusion.
  • Regression test: keep the approval gate posting REQUEST_CHANGES, not APPROVE or check-only failure, when no model produces a valid current-head review.

Summary

  • Result: REQUEST_CHANGES
  • Reason: coverage-evidence passed and peer GitHub Checks completed without failures, but no model produced a valid review control block.
  • Deterministic evidence checked but not used for approval: current-head changed-file evidence (frontend/src/app/projects/page.test.tsx, frontend/src/components/ProjectsLayout.tsx); coverage-evidence result success; peer checks from statusCheckRollup excluding this OpenCode check.
  • Model outcome: model_pool=exhausted; selected_model=none.
  • Head SHA: ad6dc35099c773a04561a6b0387c2cdd4ec8f68a
  • Workflow run: 28507998409
  • Workflow attempt: 1

No PR approval was posted because model-output failure is not evidence that the PR has no blockers.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Frontend (2 files)"]
  S1 --> I1["browser runtime and bundle"]
  I1 --> R1["Review risk: Frontend (2 files)"]
  R1 --> V1["frontend tests"]
Loading

container?.remove();
container = null;
vi.restoreAllMocks();
vi.unstubAllGlobals();

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.

HIGH OpenCode could not establish approval sufficiency

  • Problem: the model pool exhausted without a valid current-head review control block, so this changed line cannot be approved from deterministic check state alone.
  • Impact: PR-intent mismatches, missing files, robustness bugs, UX/DX regressions, and CodeGraph-backed flow changes could be missed.
  • Fix: rerun OpenCode after model availability recovers, or add the missing source/test/docs/generated verification evidence needed for a source-backed approval.
  • Verification: rerun the OpenCode Review workflow and confirm it emits APPROVE or source-backed REQUEST_CHANGES for this head SHA.

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.

2 participants