481359ddb2
Co-authored-by: Kandev Agent <agent@kandev.dev> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.9 KiB
2.9 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec | |
|---|---|---|---|---|---|---|---|
| 05-remove-visibility | Remove workspace visibility | done | 4 |
|
plan.md | ../../specs/workspaces/requirements/org-units.md |
Task 05: Remove Workspace Visibility
Outcome
The mechanism the tree replaced is gone. There is one reach model in the schema, the API, the interface, and the documentation.
In scope
- Dropping
workspaces.visibilityand the organization default-visibility setting. - Removing
POST /api/v1/workspaces/visibility/bulkand thevisibilityfield from workspace DTOs and payloads. - Removing the visibility control, its store state, and its copy from the interface, including locale entries that become orphans.
- Removing visibility from
docs/public/team-access.mdand from the coverage manifest.
Out of scope
- New public documentation for units, order 06.
Requirements
REQ-WORKSPACES-ORG-UNITS-004.
Acceptance criterion: AC-WORKSPACES-ORG-UNITS-004.1, in that the resolver has
one input path after this order.
System design
Organization units, section Purpose and boundaries.
Implementation acceptance
- No
visibilitysymbol remains in backend schema, services, handlers, or frontend state for workspaces. - Every suite passes with the column absent.
pnpm run i18n:checkreports no orphaned visibility copy.
Verification
cd apps/backend && go test ./... && make lint
cd ../web && pnpm run typecheck && pnpm run lint && pnpm test && pnpm run i18n:check
rg -n 'workspace.*visibility|default_workspace_visibility' apps/ docs/public || true
Likely files
apps/backend/internal/task/repository/sqlite/apps/backend/internal/task/dto/dto.goapps/web/components/settings/workspaces/docs/public/team-access.md,docs/public/coverage.json
Results
Done. workspaces.visibility, the organization default-visibility setting, its
bulk endpoint, the service surface, the DTO field, the store state and the
settings control are gone. There is one reach model in the schema, the API, the
interface and the documentation.
Two defects surfaced while removing it, both found by driving the running instance rather than by a test:
- The workspace
UPDATEstatement is hand-written and never carriedunit_id, so a move returned the new placement and persisted nothing. Pinned byTestUpdateWorkspacePersistsUnitPlacement. - The human-assignee reach check still asked only about a direct membership row, so it refused a colleague who plainly reached the board through the tree. Its refusal was also mapped to 500 on the task route rather than 400.
RED/GREEN:
- RED: dropping
unit_idfrom the update statement failsTestUpdateWorkspacePersistsUnitPlacement. - GREEN:
go test ./internal/...239 packages, 0 failures;make lint0 issues. - GREEN: typecheck, eslint, i18n:check across the web app.