docs(t-paliad-139): design lock — m signed off on all 19 §6 recommendations

m's go/no-go pass at 2026-05-06 15:58: "I agree with all your recommendations
- go." All 19 questions in §6 lock as the recommended answers verbatim.

§0 status flipped from READY-FOR-REVIEW to LOCKED. New "Locked m decisions
on §6" subsection captures the highlights inline so future readers don't
have to scan the whole table to know what's pinned.

§13 end-of-design line updated to reflect the lock.

Implementation phasing (§7) unchanged:
- Phase 1: bug fix on the 3 narrow service methods (no schema, ~400 LoC,
  ships standalone, closes the user-visible /projects/{id} "Keine Fristen"
  bug).
- Phase 2: migration 055 (partner_unit_members.unit_role,
  project_partner_units, extended can_see_project()) + DerivationService +
  frontend Team-tab subsections + /admin/partner-units unit_role tagging
  + project /settings/team Partner Units section. Independent of t-138.
- Phase 3: approval extension — canApprove + inbox SQL widening for
  derived_peer decision_kind. Gates on cronus's t-138 (currently on
  mai/cronus/inventor-dual-control @ b3401ec) landing on main.

Inventor parked. Awaiting head's coder-shift assignment.
This commit is contained in:
m
2026-05-06 15:59:37 +02:00
parent 6c41550945
commit 2247c0707d

View File

@@ -4,7 +4,7 @@
**Date:** 2026-05-06
**Task:** t-paliad-139 (Gitea m/paliad#4)
**Branch:** `mai/noether/inventor-project`
**Status:** DESIGN READY FOR REVIEW. Awaiting m go/no-go before any coder shift.
**Status:** LOCKED 2026-05-06 — m signed off on all 19 §6 recommendations. Ready for coder shift on head's assignment.
---
@@ -25,9 +25,23 @@ Three coordinated sub-designs in one doc, scoped tight per the locked constraint
- **Derivation honesty:** derived members are annotated in project team overviews, never silently granted access.
- **paliad-only scope.**
### Decisions still open for m (19 questions consolidated in §6)
### Locked m decisions on §6 (2026-05-06, design pass)
The issue lists 19 design questions. This doc proposes a recommended answer for each, but the locked decisions list expands only after m signs off. Section §6 is the round-up table for the design pass.
m signed off on **all 19 recommendations** in §6 verbatim. Implementation may proceed on head's assignment without further design Q&A. Highlights of the locks (full table is §6):
- **Aggregate-by-default** with "nur direkt" toggle on /events, /deadlines, /appointments, and the four /projects/{id} sections (Q1, Q4, Q5, Q16).
- **Sidebar dual counts** `(direct + descendants)` (Q2).
- **Dashboard / CalDAV / email reminders unchanged** — visibility-scope already correct (Q3, Q7, Q8).
- **Search subtree-default in project context, global otherwise** (Q6).
- **Unit-level derivation** (Q11) — pair-level rejected; new `partner_unit_members.unit_role` + `project_partner_units` junction.
- **Compute-on-read** derivation via extended `can_see_project()` (Q11b) — no materialised state, no drift.
- **Sectioned Team-tab rendering** with explicit "Abgeleitet (Partner Unit)" subsection + per-row source label (Q13).
- **Derived membership cascades visibility down** via existing path-walk (Q14).
- **Retroactive churn on current state, immutable history** (Q15).
- **No automatic policy inheritance** from parent projects (Q10) — keep cronus's t-138 stance, harden with "Eltern-Politik (zur Information)" panel.
- **Derived authority is opt-in** per (project, unit) via `derive_grants_authority` flag (Q12) — `decision_kind` extends with `derived_peer` for honest audit.
- **Attribution chip** on every aggregated row showing the descendant project (Q19).
- **No depth bound, no materialised counts in v1** (Q17, Q18) — revisit if real telemetry says so.
### Out of scope
@@ -841,9 +855,9 @@ Recommended phasing (§7) reflects this option.
---
## 6. Open questions for m — proposed answers consolidated
## 6. Locked answers (m, 2026-05-06)
Reformulating the issue's 19 questions, with this design's recommendation. m signs off; design locks.
m signed off on all 19 recommendations verbatim. Implementation proceeds on these answers.
### Surface-by-surface aggregation policy (Q1Q8, Q16Q19)
@@ -998,4 +1012,4 @@ Phase 3 waits on t-138 landing. If t-138 takes weeks to merge for any reason, Ph
- [x] Implementation phasing 7)
- [x] Trade-offs 8)
**Inventor stays parked.** Design committed. Awaiting m's go/no-go on the open answers in §6 before any coder shift starts. No `/mai-coder` self-load. Phase 1 (bug fix) can ship standalone if m wants the user-visible bug closed before the rest is signed off.
**Inventor stays parked.** Design LOCKED 2026-05-06 m signed off on all 19 §6 recommendations. Awaiting head's coder-shift assignment. No `/mai-coder` self-load.