feat: add readable task references while keeping GUID identity #75

Merged
morten-olsen merged 3 commits from feat/c6975e1a-task-references into main 2026-10-21 14:02:15 +02:00
Owner

Summary

Tasks gain readable references without changing permanent GUID identity:

organization key + organization-wide number → HOME-142 · project context
current reference + authorized organization → GUID → existing task operations

Migration 039 deterministically numbers all existing rows (including deleted tasks) by creation time then GUID; SQLite triggers and a unique index allocate new numbers without reuse. Owners can change the key in General settings; old references are not aliases. App display/copy/search, related-task UI, CLI lookup, replica refresh, API docs, GLOSSARY.md and narrow project AGENTS.md follow this distinction. See migration/rollout runbook.

Evidence

  • Existing GUID/API/CLI/link and relationship flows retained. Fixtures cover migration up/down, ordering ties, deleted rows, concurrent creation, project/key changes, owner validation, and user/role organization isolation.
  • Phone and desktop reference flows exercise display, clipboard, search/open, validation and replica refresh. Screenshots and final check results are recorded on task c6975e1a. Native Android clipboard/keyboard/accessibility need a device or emulator and remain unverified.
  • Push 528 is green. PR 529 passes quality: 894 tests / 132 files, plus type-check, lint, dependency and format gates. PR 529 is fully green, including docs, deploy-tools, server image and agent image; both images were built without publishing.
  • The two reference browser flows and 10 existing task-page scenarios pass (phone/desktop). The unchanged role-template scenario selects a hidden prior-screen label; follow-up 64634b33 records that existing selector issue. Native Android follow-up: 079bc87b.
  • Final diff at acd3120: 55 files, +910/-69, including 106 generated API lines. Commits: core allocation/identity; app/CLI consumers; corrected undirected-link test assertion. The full changed-file/line-count list and screenshots are attached to task c6975e1a.

Merge danger

Door: one-way. Production startup applies migration 039 automatically. A release/tag is separately irreversible. Implementation approval does not approve either. Main's draftsman workflow creates/updates a draft release, so obtain Morten's approval for that effect before merging too.

Blast radius: app. Adds task/organization fields and local replica version 4, preserving queued mutations. No exposure, RBAC, credentials or other workloads change.

Rollback and verification

  • Roll back: a rollback build must retain migration 039 registration; old binaries may reject an unknown executed migration. Do not reset published numbers/counters. Production database rollback/restore requires approval.
  • Verify after rollout: approved pre-migration snapshot; green release/deploy pipelines; Forgejo mirror; expected ArgoCD revision and server/agent digests; live replicas; existing GUID links/relationships and current reference lookup/display. No production migration or release is authorized yet.
  • Reviewers: Security Engineer for the new organization-scoped lookup surface, metadata-free misses, and owner-only mutable key. Software Engineer retains implementation and rollout.
## Summary Tasks gain readable references without changing permanent GUID identity: ```text organization key + organization-wide number → HOME-142 · project context current reference + authorized organization → GUID → existing task operations ``` Migration 039 deterministically numbers all existing rows (including deleted tasks) by creation time then GUID; SQLite triggers and a unique index allocate new numbers without reuse. Owners can change the key in General settings; old references are not aliases. App display/copy/search, related-task UI, CLI lookup, replica refresh, API docs, GLOSSARY.md and narrow project AGENTS.md follow this distinction. See [migration/rollout runbook](https://code.olsen.cloud/ai/mission-control/src/branch/feat/c6975e1a-task-references/docs/runbooks/task-references.md). ## Evidence - Existing GUID/API/CLI/link and relationship flows retained. Fixtures cover migration up/down, ordering ties, deleted rows, concurrent creation, project/key changes, owner validation, and user/role organization isolation. - Phone and desktop reference flows exercise display, clipboard, search/open, validation and replica refresh. Screenshots and final check results are recorded on task c6975e1a. Native Android clipboard/keyboard/accessibility need a device or emulator and remain unverified. - Push [528](https://woodpecker.olsen.cloud/repos/32/pipeline/528) is green. PR [529](https://woodpecker.olsen.cloud/repos/32/pipeline/529) passes quality: **894 tests / 132 files**, plus type-check, lint, dependency and format gates. PR **529 is fully green**, including docs, deploy-tools, server image and agent image; both images were built without publishing. - The two reference browser flows and 10 existing task-page scenarios pass (phone/desktop). The unchanged role-template scenario selects a hidden prior-screen label; follow-up **64634b33** records that existing selector issue. Native Android follow-up: **079bc87b**. - Final diff at **acd3120**: **55 files, +910/-69**, including 106 generated API lines. Commits: core allocation/identity; app/CLI consumers; corrected undirected-link test assertion. The full changed-file/line-count list and screenshots are attached to task c6975e1a. ## Merge danger **Door:** one-way. Production startup applies migration 039 automatically. A release/tag is separately irreversible. Implementation approval does not approve either. Main's draftsman workflow creates/updates a draft release, so obtain Morten's approval for that effect before merging too. **Blast radius:** app. Adds task/organization fields and local replica version 4, preserving queued mutations. No exposure, RBAC, credentials or other workloads change. ## Rollback and verification - **Roll back:** a rollback build must retain migration 039 registration; old binaries may reject an unknown executed migration. Do not reset published numbers/counters. Production database rollback/restore requires approval. - **Verify after rollout:** approved pre-migration snapshot; green release/deploy pipelines; Forgejo mirror; expected ArgoCD revision and server/agent digests; live replicas; existing GUID links/relationships and current reference lookup/display. No production migration or release is authorized yet. - **Reviewers:** Security Engineer for the new organization-scoped lookup surface, metadata-free misses, and owner-only mutable key. Software Engineer retains implementation and rollout.
feat(task): display and resolve references in the app and CLI
Some checks failed
ci/woodpecker/push/docs Pipeline is pending
ci/woodpecker/pr/docs Pipeline is pending
ci/woodpecker/pr/image Pipeline is pending
ci/woodpecker/push/deploy-tools Pipeline was successful
ci/woodpecker/pr/deploy-tools Pipeline was successful
ci/woodpecker/manual/docs Pipeline is pending
ci/woodpecker/manual/image Pipeline is pending
ci/woodpecker/manual/deploy-tools Pipeline was successful
ci/woodpecker/push/quality Pipeline was canceled
ci/woodpecker/pr/quality Pipeline was canceled
ci/woodpecker/pr/image-agent Pipeline was canceled
ci/woodpecker/manual/renovate Pipeline was canceled
ci/woodpecker/manual/quality Pipeline was canceled
ci/woodpecker/manual/image-agent Pipeline was canceled
869c21f49a
test(task): allow canonical endpoint order for related links
Some checks are pending
ci/woodpecker/manual/docs Pipeline is pending
ci/woodpecker/manual/image Pipeline is pending
ci/woodpecker/push/deploy-tools Pipeline was successful
ci/woodpecker/pr/deploy-tools Pipeline was successful
ci/woodpecker/manual/deploy-tools Pipeline was successful
ci/woodpecker/pr/image-agent Pipeline was successful
ci/woodpecker/manual/image-agent Pipeline was successful
ci/woodpecker/manual/renovate Pipeline was successful
ci/woodpecker/push/quality Pipeline was successful
ci/woodpecker/pr/quality Pipeline was successful
ci/woodpecker/manual/quality Pipeline was successful
ci/woodpecker/push/docs Pipeline was successful
ci/woodpecker/pr/docs Pipeline was successful
ci/woodpecker/pr/image Pipeline was successful
acd312065d
morten-olsen left a comment

Security review of acd312065d against origin/main and parent task c6975e1a. Standards: 0 blocking, 0 non-blocking findings. Checked authenticated route, AccessContext user/role organization isolation, live organization/task/project predicates, uniform Task not found misses, bounded reference syntax and safe integer parsing, parameterized SQL, owner-only normalized key update, and diff for secrets/exposure/privilege changes. No new infrastructure access or secret handling. Spec: 0 blocking, 0 non-blocking findings. GUIDs remain identity in migration, relationships, app routes/replica and CLI operations; references are mutable display/lookup values. Allocation/backfill includes deleted rows and retains high-water counters; old keys are not aliases. Evidence: Forgejo statuses for this exact SHA show all five ci/woodpecker/pr/* contexts successful in pipeline 529. Local targeted vitest rerun unavailable (dependencies absent); Woodpecker CLI unconfigured, so full 894-test result relies on owner evidence plus verified quality success status. Read-only kubectl deployment observation: prod/mission-control still 0.52.0, one ready replica; new endpoint is not live-tested. After separately approved rollout, verify authorized/foreign user and role lookup, deleted/missing responses, owner key changes, existing GUID links and relationships. Follow docs/runbooks/task-references.md: current backup and explicit production migration/release approval required; rollback must retain migration registration and must not reset exposed numbers. No merge/deploy performed. Findings per axis: Standards 0 (worst: none); Spec 0 (worst: none).

Security review of acd312065d4fcc150d9245caf1656232f9b4470d against origin/main and parent task c6975e1a. Standards: 0 blocking, 0 non-blocking findings. Checked authenticated route, AccessContext user/role organization isolation, live organization/task/project predicates, uniform Task not found misses, bounded reference syntax and safe integer parsing, parameterized SQL, owner-only normalized key update, and diff for secrets/exposure/privilege changes. No new infrastructure access or secret handling. Spec: 0 blocking, 0 non-blocking findings. GUIDs remain identity in migration, relationships, app routes/replica and CLI operations; references are mutable display/lookup values. Allocation/backfill includes deleted rows and retains high-water counters; old keys are not aliases. Evidence: Forgejo statuses for this exact SHA show all five ci/woodpecker/pr/* contexts successful in pipeline 529. Local targeted vitest rerun unavailable (dependencies absent); Woodpecker CLI unconfigured, so full 894-test result relies on owner evidence plus verified quality success status. Read-only kubectl deployment observation: prod/mission-control still 0.52.0, one ready replica; new endpoint is not live-tested. After separately approved rollout, verify authorized/foreign user and role lookup, deleted/missing responses, owner key changes, existing GUID links and relationships. Follow docs/runbooks/task-references.md: current backup and explicit production migration/release approval required; rollback must retain migration registration and must not reset exposed numbers. No merge/deploy performed. Findings per axis: Standards 0 (worst: none); Spec 0 (worst: none).
morten-olsen changed title from WIP: feat: add readable task references while keeping GUID identity to feat: add readable task references while keeping GUID identity 2026-10-21 14:02:14 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ai/mission-control!75
No description provided.