[Feature] Add accountable campaign work assignments #89

Closed
opened 2026-07-31 01:22:06 +02:00 by zemion · 3 comments
Owner

Split from Campaign #24.

Outcome

Assign campaign work to governed principals without conflating work assignment, campaign ownership, and authorization.

Acceptance criteria

  • Assignments use typed account, group, or organization-function references and preserve a human-readable snapshot plus current resolution state.
  • Each assignment has a bounded purpose, status, optional due date, assigner, assignee, and campaign/sub-object reference.
  • Assignment never grants campaign access implicitly; inaccessible assignments are rejected or explained through Policy provenance.
  • Reassignment, completion, cancellation, and unavailable/deactivated assignees retain history and emit durable events.
  • Notifications are emitted through the optional capability, and a Tasks provider may mirror work without becoming a required Campaign dependency.
  • Campaign ownership transfer remains governed by its separate two-party protocol.
> Split from [Campaign #24](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/issues/24). ## Outcome Assign campaign work to governed principals without conflating work assignment, campaign ownership, and authorization. ## Acceptance criteria - Assignments use typed account, group, or organization-function references and preserve a human-readable snapshot plus current resolution state. - Each assignment has a bounded purpose, status, optional due date, assigner, assignee, and campaign/sub-object reference. - Assignment never grants campaign access implicitly; inaccessible assignments are rejected or explained through Policy provenance. - Reassignment, completion, cancellation, and unavailable/deactivated assignees retain history and emit durable events. - Notifications are emitted through the optional capability, and a Tasks provider may mirror work without becoming a required Campaign dependency. - Campaign ownership transfer remains governed by its separate two-party protocol.
zemion added this to the Milestone 10 - Collaboration And Advanced Governance milestone 2026-07-31 01:22:06 +02:00
Author
Owner

This is the assignment slice split from Campaign #24.

<!-- codex-routing-2026-07-31:campaign-24-assignments --> This is the assignment slice split from [Campaign #24](https://git.add-ideas.de/GovOPlaN/govoplan-campaign/issues/24).
zemion added
status
in-progress
and removed
status
ready
labels 2026-08-22 00:27:01 +02:00
Author
Owner

Implementation started. I am building this as a Campaign-owned accountable assignment record with immutable lifecycle events. Assignment will be authorization-neutral: every endpoint still requires Campaign access, new assignees must already resolve to an authorized account/group/function incumbent, and later deactivation or vacancy is retained as unavailable evidence. Notifications and Tasks mirroring will use optional Core capabilities and cannot block the Campaign transaction.

Implementation started. I am building this as a Campaign-owned accountable assignment record with immutable lifecycle events. Assignment will be authorization-neutral: every endpoint still requires Campaign access, new assignees must already resolve to an authorized account/group/function incumbent, and later deactivation or vacancy is retained as unavailable evidence. Notifications and Tasks mirroring will use optional Core capabilities and cannot block the Campaign transaction.
Author
Owner

Implemented and published the accountable Campaign work-assignment slice.

Release evidence:

  • Campaign 2630498 plus runtime-surface correction 4f52f01, released as v0.1.22.
  • Core integration 8eeea96 plus manifest-discovery contract synchronization 137c7c0, released as v0.1.27.
  • Workspace composition/check synchronization ff9fa37.

Delivered:

  • Typed account, group, and organization-function assignees with snapshots and resolution states.
  • Purpose/status/due date/assigner/campaign-subobject scope, optimistic revisions, cursor lists, durable append-only history, reassignment, completion, cancellation, and unavailable/restored-principal reconciliation.
  • Parent Campaign authorization remains mandatory; assignment never grants access or changes ownership. Rejections expose structured Policy provenance.
  • Optional Notifications delivery and Tasks projection are failure-isolated and do not become hard Campaign dependencies or authorization sources.
  • Separate semantic Campaign Work page built from shared layout, action-bar, form, dialog, status, and alert primitives.
  • Audit, access provenance, DSAR coverage, roles, migration, manifest-driven user/admin documentation, and runtime ViewSurface declaration.

Verification:

  • Campaign backend: 439 tests passed (26 subtests); focused assignment subset: 54 passed.
  • Campaign WebUI: all 14 structural/type scripts passed, including test:campaign-work.
  • Campaign manifest registry 68/68, DSAR coverage, Ruff, strict platform inventory, shared layout/primitive/foundation contracts all passed.
  • Core production build passed bundle budgets.
  • Full workspace tools/checks/check-focused.sh passed, including 59 module permutations, full-product budgets, 8 Playwright conformance tests, and the Campaign work structural test.
  • Workspace release/version metadata: 25 passed.

All Campaign, Core, and workspace branches are clean and synchronized with origin/main.

Implemented and published the accountable Campaign work-assignment slice. Release evidence: - Campaign `2630498` plus runtime-surface correction `4f52f01`, released as `v0.1.22`. - Core integration `8eeea96` plus manifest-discovery contract synchronization `137c7c0`, released as `v0.1.27`. - Workspace composition/check synchronization `ff9fa37`. Delivered: - Typed account, group, and organization-function assignees with snapshots and resolution states. - Purpose/status/due date/assigner/campaign-subobject scope, optimistic revisions, cursor lists, durable append-only history, reassignment, completion, cancellation, and unavailable/restored-principal reconciliation. - Parent Campaign authorization remains mandatory; assignment never grants access or changes ownership. Rejections expose structured Policy provenance. - Optional Notifications delivery and Tasks projection are failure-isolated and do not become hard Campaign dependencies or authorization sources. - Separate semantic Campaign Work page built from shared layout, action-bar, form, dialog, status, and alert primitives. - Audit, access provenance, DSAR coverage, roles, migration, manifest-driven user/admin documentation, and runtime ViewSurface declaration. Verification: - Campaign backend: 439 tests passed (26 subtests); focused assignment subset: 54 passed. - Campaign WebUI: all 14 structural/type scripts passed, including `test:campaign-work`. - Campaign manifest registry 68/68, DSAR coverage, Ruff, strict platform inventory, shared layout/primitive/foundation contracts all passed. - Core production build passed bundle budgets. - Full workspace `tools/checks/check-focused.sh` passed, including 59 module permutations, full-product budgets, 8 Playwright conformance tests, and the Campaign work structural test. - Workspace release/version metadata: 25 passed. All Campaign, Core, and workspace branches are clean and synchronized with `origin/main`.
zemion removed the
status
in-progress
label 2026-08-22 01:33:36 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-campaign#89