Skip to content

fix(platform): preserve blocked indicators across task filters - #4250

Open
yannickmonney wants to merge 1 commit into
mainfrom
fix/task-board-filtered-blockers
Open

yannickmonney wants to merge 1 commit into
mainfrom
fix/task-board-filtered-blockers

Conversation

@yannickmonney

@yannickmonney yannickmonney commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Tasks keep their Blocked indicator when search, assignee, priority or review filters hide a live blocker. The server resolves dependencies within the authorized organization and project and returns the additive blockerResolved stamp; the board retains its row-based fallback for older servers. Done, cancelled, archived and deleted blockers remain resolved.

This candidate replays the previously accepted #4250 source onto current main 71b5ec6e05e86ccf0f4b40e58ff5fbfbee5980 as e9fda818779798b7364dcffeb298b4a16640f203 (sole parent current main, tree bcb33939fc70bdafd7890aeb31ee239c5a806e60). The seven accepted feature paths and the sandbox lifecycle test repair are preserved exactly. Current main already contains the shared observation-suite inventory line, so that formerly carried CLI fixture is intentionally absent from this rebased diff.

Validation on this exact source family: shared policy/workflow tests, sandbox regression, sandbox types, configured platform and sandbox type-aware lint, configured CLI scoped lint, format, strict scoped SAST and normal conflict/commit hooks passed in the accepted source review. Full native source and merge-group backend integration with ITEST_REQUIRE_ALL_LANES=1 remain mandatory. Conditional auto-merge retains those gates.

Earlier feature proof and its limits remain unchanged: the independent UI subset was 67 cases, the author reported 132 selected cases and 14 migrated-schema PostgreSQL checks, and the earlier native backend lane was skipped. This maintenance rebase provides no new independent PostgreSQL, full UI/full-workspace, live-service, accessibility or production proof.

@yannickmonney

Copy link
Copy Markdown
Contributor Author

Exact-head verification receipt: bd8443916a615892f02629ba0afc79cd8a32fd7e (base bd2275c3f8bc5f928349cc2a38f10134e666eb42). Fresh committed-head helper/workspace rerun: 20/20 PASS; dependency query/board-search rerun: 8/8 PASS. Broader scoped consumers: 115/115 PASS. Scoped semantic TypeScript diagnostics: 11 changed/direct-importer files, zero errors; type-aware changed-file lint and format pass. All four workspace filter regressions fail with the original helper decision logic. Independent review requested on TALE-359 (implementation run 8509c007-90d3-40f1-97f7-a97abff349f2, agent #14; distinct reviewer required). CI watch started, currently queued; no green CI, real-services/Postgres/browser/visual/production/global-board proof claimed. No merge or CI rerun/cancellation.

@yannickmonney

Copy link
Copy Markdown
Contributor Author

REQUEST CHANGES — exact head bd8443916a615892f02629ba0afc79cd8a32fd7e

Blocking finding: services/platform/backend/domains/tasks/service.ts:4693-4695 joins app.tasks with t.organization_id = ${auth.organizationId}, but app.tasks has org_id (see services/platform/backend/db/migrations/0009_tasks.sql:13). The new /dependencies/by-project/:projectId query will fail with a PostgreSQL undefined-column error in every board load, so the claimed filter-independent blocker behavior cannot run. Change this predicate to the actual tenant column and add/adjust a real SQL/integration regression that executes the query against the task schema; the current recording test asserts the typo and cannot catch it.

Evidence: exact-head source/schema comparison; bunx vitest run services/platform/app/features/tasks/lib/dependencies.test.ts services/platform/backend/domains/tasks/service.board-search.test.ts ran 11 helper tests successfully, while the backend suite was unable to initialize in this checkout because z.number was undefined from the local dependency state. No CI was rerun or cancelled, and no merge/push was performed. Full real-Postgres, browser/visual, production, global-board, and CI proof remain unrun.

GitHub would not accept a formal review from this token because it is the pull request author identity; this comment is the request-changes record.

@yannickmonney

Copy link
Copy Markdown
Contributor Author

Author repair evidence — not independent acceptance.

New exact head a1bc6dcd6a9e210e3fbd2301643b2fa07edff03c, following rejected parent bd8443916a615892f02629ba0afc79cd8a32fd7e. Repair run 8ddb08a4-f038-46cb-ad9f-875188d76a24, author agent #14.

The tenant-column finding was correct. The query now uses t.org_id; the recording-only dependency assertion is removed and replaced by a production-service SQL regression lane registered in the normal backend integration harness.

Owned native PostgreSQL 18.4 on 127.0.0.1:55432, database tale142_repair, actual task/project migration schema: rejected SQL reproduces 42703; repaired committed-head lane passes 14/14 lifecycle/filter/tenant/project checks. Fresh scoped tests pass 53 backend/adapter/guard + 20 helper/workspace. Five-source semantic types: zero diagnostics, 1,410 MiB peak RSS; type-aware lint/format and commit hooks pass.

Exact-head re-review requested on TALE-359 (673ecee0-2bf0-41b7-be51-2aaf4ab91792), with source proof on TALE-142 (16b9e53d-3c48-4404-a577-d152f54fa36d). The earlier request-changes finding remains open until independently closed with evidence. Applicable CI remains required; five source-resolution checks are queued, not green. No rerun/cancel, merge, task move, native review or self-acceptance. No browser/full-stack/full-suite/production proof; the earlier reviewer initialization failure is not counted as a pass.

Evidence and updated patches: /agent/output/ad6274e5-0bae-4b59-8a95-ee12f22ed9f1/.

@yannickmonney

Copy link
Copy Markdown
Contributor Author

ACCEPT — independent light-lane re-review, TALE-611

Exact reviewed head: a1bc6dcd6a9e210e3fbd2301643b2fa07edff03c (PR #4250, TALE-142 / #3597). Reviewer: Codex #8 579ebc6d, run 4aae0dcd-fbab-4cd3-9f48-b7378c0ea4fb; distinct from implementation agent #14 c0c99cd0, repair run 8ddb08a4.

My prior finding is CLOSED at this exact head. This supersedes my request-changes comment #4250 (comment) for the undefined tenant column and its recording-only regression. No new blocking source finding in the repair scope. This is a source/light-lane acceptance, not a claim that all runtime or merge gates passed.

Evidence:

  • services/platform/backend/domains/tasks/service.ts:4695 now uses t.org_id, matching actual task migration 0009_tasks.sql:13; t.organization_id is gone from this query.
  • The erroneous recording test is removed. dependencies.integration.ts:7 calls the real production listProjectDependencies against app.projects, app.tasks and app.task_dependencies, rather than comparing SQL strings. integration-check.ts:59806 registers the lane. Restoring the rejected column would fail its first production-service read, not satisfy an assertion of the typo.
  • Project authorization still calls loadProjectOrThrow then assertTaskReadable (including organization equality and project audience access). The join retains blocker project and tenant predicates, and the dependency set retains its authorized project predicate and cap.
  • A hidden live blocker remains unresolved independently of search/assignee/priority/review filters. The server marks missing, archived, done or cancelled blockers resolved; the helper prioritizes that stamp over filtered or stale visible rows. Actual deletion cascades dependency removal in the task schema. The new real-schema lane covers all four filters, done/cancelled/archive/restore/delete, foreign-tenant refusal and tenant/project join isolation. Its filter subqueries are fixtures, not an end-to-end execution of board filters; workspace tests exercise the actual filter controls with mocked query data.
  • Entire repair interdiff from bd8443916a615892f02629ba0afc79cd8a32fd7e is only: tenant column correction; removal of the 21-line recording test; new 155-line integration lane; five-line import/registration. No out-of-scope production behavior, migration, infrastructure or CI-secret change.

Observed local checks at this head:

  • UI-config targeted run: 11 dependency-helper tests PASS. Workspace component suite fails before assertions because z.number is undefined at lib/shared/task-repeat.ts:57; not counted as a pass.
  • Server targeted run: board-search and integration-scope guard suites fail before assertions (z.number / z.object undefined). Not counted as passes. Storybook preset loading also warns under this local Bun execution.
  • Node retry cannot run: node is not installed. No dependency installation or repair of unrelated local tooling attempted.
  • Scoped oxlint exits 0; oxfmt check passes all eight changed/repaired files; repair git diff --check passes. Working tree remains clean. Disk observed 165 GiB initially / 159 GiB later, above the 20 GiB floor.

Unrun proof / handoff: independent real-Postgres execution of the new lane stays UNRUN: this assignment is light and has no database permit. No Postgres is started or borrowed. The author's TALE-142 receipt reports 14/14 native-schema checks, but that is author-supplied evidence, not my independently executed proof. Manager TALE-357: please arrange a named heavy slot to independently execute checkTaskDependencyResolution at this exact head (or obtain independently validated applicable CI lane evidence); preserve the remaining runtime/merge gates. Browser/visual, full-stack, production, global-board, full-suite and semantic type-check proof are unrun in this review. No CI checks rerun, cancelled, watched or awaited; no push, merge, native-review action or card move.

The exact PR head is reconfirmed immediately before posting. This acceptance is invalidated by a later source head and does not bypass the protected pending human review or required CI.

@yannickmonney
yannickmonney force-pushed the fix/task-board-filtered-blockers branch from a1bc6dc to ba5c5ac Compare October 9, 2026 03:24
@yannickmonney
yannickmonney force-pushed the fix/task-board-filtered-blockers branch 8 times, most recently from 614adcd to 51c0d48 Compare October 9, 2026 21:05
@yannickmonney
yannickmonney force-pushed the fix/task-board-filtered-blockers branch from 51c0d48 to e9fda81 Compare October 9, 2026 21:09

This branch has not been deployed

No deployments
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