fix(projects): surface empty linked tasks#889
Conversation
|
PR governance metadata gate is not ready for
|
There was a problem hiding this comment.
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.
0ca59c6 to
555eebe
Compare
OpenCode Review Overview
Pull request overviewOpenCode 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. Findings1. HIGH frontend/src/app/projects/page.test.tsx:1 - OpenCode could not establish approval sufficiency
Summary
No PR approval was posted because model-output failure is not evidence that the PR has no blockers. Changed-File Evidence Mapflowchart 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"]
|
There was a problem hiding this comment.
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"]
555eebe to
ad6dc35
Compare
There was a problem hiding this comment.
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"]
| container?.remove(); | ||
| container = null; | ||
| vi.restoreAllMocks(); | ||
| vi.unstubAllGlobals(); |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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"]
| container?.remove(); | ||
| container = null; | ||
| vi.restoreAllMocks(); | ||
| vi.unstubAllGlobals(); |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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"]
| container?.remove(); | ||
| container = null; | ||
| vi.restoreAllMocks(); | ||
| vi.unstubAllGlobals(); |
There was a problem hiding this comment.
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.
Summary
Verification
npx -y pnpm@11.5.3 --dir frontend test src/app/projects/page.test.tsxnpx -y pnpm@11.5.3 --dir frontend lint src/components/ProjectsLayout.tsx src/app/projects/page.test.tsxnpx -y pnpm@11.5.3 --dir frontend typecheckhttp://127.0.0.1:3003/projectswith mocked sparse project/task APIs