DESIGN: SmartTimeline — Verlauf-tab redesign (past + future + off-script) #27

Open
opened 2026-05-08 21:15:12 +00:00 by mAi · 0 comments
Collaborator

What this is

Inventor design for t-paliad-169 — replace the project-page Verlauf (currently an audit-log list) with a SmartTimeline that composes past actuals + future-projected (Verfahrensablauf) + off-script events in one widget. m's vision verbatim, 2026-05-08 23:02:

Our 'Verlauf' Tab inside the case currently only holds the administrative events. There, too, I would like to filter. What took place, what we expect to take place in the future. If we know the proceeding type, there is a timeline. We adapt the Verfahrensablauf and fix dates for things when they happened. A smart Timeline. If a counterclaim is filed, that is also included. Hold it flexible — add events regardless of whether they fit the normal course.

Design doc

Filed at docs/design-smart-timeline-2026-05-08.md (739 lines) on branch mai/lagrange/smarttimeline-design-the.

Commit: https://mgit.msbls.de/m/paliad/commit/f8cc86c

View in tree: https://mgit.msbls.de/m/paliad/src/branch/mai/lagrange/smarttimeline-design-the/docs/design-smart-timeline-2026-05-08.md

Headline calls

  • Virtual view, ONE optional column. Compose at read time from paliad.deadlinespaliad.appointmentspaliad.project_events (filtered to opted-in timeline_kind) ∪ fristenrechner.Calculate projection. No new top-level table. Single migration: nullable timeline_kind text on paliad.project_events.
  • Counterclaim = sub-project. New optional FK paliad.projects.counterclaim_of. CCR gets its own project row, own case_number, own our_side (auto-flipped on creation), own SmartTimeline. Parent's SmartTimeline renders parallel right-track when a CCR child exists.
  • Date-anchoring reuses CalcOptions.AnchorOverrides (already shipped in t-paliad-131 Phase A). Click any projected row → inline date input → writes paliad.deadlines (source='anchor') or paliad.appointments (new deadline_rule_id FK) row → downstream projections reflow automatically.
  • New thin adapter ProjectionService sits one level above FristenrechnerService.Calculate. Standalone /tools/fristenrechner keeps using the calculator directly (knowledge-platform tool); SmartTimeline uses the adapter (project-scoped composition).
  • 3 new FilterBar axes (timeline_kind, timeline_status, timeline_track) + reuse of time, personal_only, deadline_event_type (riemann's t-paliad-163 stubs). Coordinates with riemann's t-paliad-170 port.
  • Per-level aggregation rule: Case (full detail + CCR track) → Patent (lanes per child case, deadline+milestone) → Litigation (lanes per child patent, milestones only) → Client (matter list default; opt-in lanes-of-litigations).
  • Off-script events first-class. "+ Eintrag" CTA opens a typed-add modal (Frist / Termin / CCR / R.30 / Schriftsatz / Eigener Meilenstein) routing to existing flows where possible; off-script writes a project_events row with timeline_kind='custom_milestone'.

Phasing — 4 sequential slices

  1. Slice 1 (skeleton): Replace Verlauf list with SmartTimeline; actuals only (no projection); + Eintrag CTA + Audit-Log toggle.
  2. Slice 2 (projection + anchor): ProjectionService calls calculator; click-to-anchor inline editor; rule_skipped audit path.
  3. Slice 3 (counterclaim sub-project): counterclaim_of FK + CCR creation route + parallel-track rendering + [Track ▼] chip.
  4. Slice 4 (parent-node aggregation): Lanes at Patent/Litigation/Client; level policy in ProjectionService.

12 open questions for m

In §11 of the design doc — confirm before slice 1 PR opens:

  1. Counterclaim sub-project vs proceeding-overlay → recommend sub-project
  2. Auto-flip our_side on counterclaim creation → yes, with override toggle
  3. New paliad.deadlines.source='anchor' value vs reuse 'manual' → new value
  4. CCR child's parent_id — sibling under patent or grandchild under case → sibling
  5. Off-script bubble-up default per event type
  6. Keep standalone /tools/fristenrechner? → yes
  7. UPC R.30 application-to-amend: sub-project or flag → flag
  8. Parent timeline: mix CCR rows or parallel right-track → parallel right-track
  9. Court-set anchor writes appointments row → yes
  10. Column name timeline_kind vs is_timeline_milestone bool → text NULL
  11. SmartTimeline as only Verlauf view (audit log = inline toggle) → yes
  12. Patent/Litigation/Client default render → lanes / lanes / matter list

Worker status

lagrange (inventor) parked. NOT pre-emptively flipping to coder. Awaiting m's go/no-go before any coder shift starts (per inventor protocol; m/mAi#142 lesson — designs must be approved before commits land).

DESIGN READY FOR REVIEW

## What this is Inventor design for `t-paliad-169` — replace the project-page Verlauf (currently an audit-log list) with a SmartTimeline that composes past actuals + future-projected (Verfahrensablauf) + off-script events in one widget. m's vision verbatim, 2026-05-08 23:02: > Our 'Verlauf' Tab inside the case currently only holds the administrative events. There, too, I would like to filter. What took place, what we expect to take place in the future. If we know the proceeding type, there is a timeline. We adapt the Verfahrensablauf and fix dates for things when they happened. A smart Timeline. If a counterclaim is filed, that is also included. Hold it flexible — add events regardless of whether they fit the normal course. ## Design doc Filed at `docs/design-smart-timeline-2026-05-08.md` (739 lines) on branch `mai/lagrange/smarttimeline-design-the`. Commit: https://mgit.msbls.de/m/paliad/commit/f8cc86c View in tree: https://mgit.msbls.de/m/paliad/src/branch/mai/lagrange/smarttimeline-design-the/docs/design-smart-timeline-2026-05-08.md ## Headline calls - **Virtual view, ONE optional column.** Compose at read time from `paliad.deadlines` ∪ `paliad.appointments` ∪ `paliad.project_events` (filtered to opted-in `timeline_kind`) ∪ `fristenrechner.Calculate` projection. No new top-level table. Single migration: nullable `timeline_kind text` on `paliad.project_events`. - **Counterclaim = sub-project.** New optional FK `paliad.projects.counterclaim_of`. CCR gets its own project row, own `case_number`, own `our_side` (auto-flipped on creation), own SmartTimeline. Parent's SmartTimeline renders parallel right-track when a CCR child exists. - **Date-anchoring reuses `CalcOptions.AnchorOverrides`** (already shipped in t-paliad-131 Phase A). Click any projected row → inline date input → writes `paliad.deadlines` (`source='anchor'`) or `paliad.appointments` (new `deadline_rule_id` FK) row → downstream projections reflow automatically. - **New thin adapter `ProjectionService`** sits one level above `FristenrechnerService.Calculate`. Standalone `/tools/fristenrechner` keeps using the calculator directly (knowledge-platform tool); SmartTimeline uses the adapter (project-scoped composition). - **3 new FilterBar axes** (`timeline_kind`, `timeline_status`, `timeline_track`) + reuse of `time`, `personal_only`, `deadline_event_type` (riemann's t-paliad-163 stubs). Coordinates with riemann's t-paliad-170 port. - **Per-level aggregation rule:** Case (full detail + CCR track) → Patent (lanes per child case, deadline+milestone) → Litigation (lanes per child patent, milestones only) → Client (matter list default; opt-in lanes-of-litigations). - **Off-script events first-class.** "+ Eintrag" CTA opens a typed-add modal (Frist / Termin / CCR / R.30 / Schriftsatz / Eigener Meilenstein) routing to existing flows where possible; off-script writes a `project_events` row with `timeline_kind='custom_milestone'`. ## Phasing — 4 sequential slices 1. **Slice 1 (skeleton):** Replace Verlauf list with SmartTimeline; actuals only (no projection); + Eintrag CTA + Audit-Log toggle. 2. **Slice 2 (projection + anchor):** `ProjectionService` calls calculator; click-to-anchor inline editor; rule_skipped audit path. 3. **Slice 3 (counterclaim sub-project):** `counterclaim_of` FK + CCR creation route + parallel-track rendering + `[Track ▼]` chip. 4. **Slice 4 (parent-node aggregation):** Lanes at Patent/Litigation/Client; level policy in `ProjectionService`. ## 12 open questions for m In §11 of the design doc — confirm before slice 1 PR opens: 1. Counterclaim sub-project vs proceeding-overlay → recommend sub-project 2. Auto-flip `our_side` on counterclaim creation → yes, with override toggle 3. New `paliad.deadlines.source='anchor'` value vs reuse `'manual'` → new value 4. CCR child's `parent_id` — sibling under patent or grandchild under case → sibling 5. Off-script bubble-up default per event type 6. Keep standalone `/tools/fristenrechner`? → yes 7. UPC R.30 application-to-amend: sub-project or flag → flag 8. Parent timeline: mix CCR rows or parallel right-track → parallel right-track 9. Court-set anchor writes `appointments` row → yes 10. Column name `timeline_kind` vs `is_timeline_milestone bool` → text NULL 11. SmartTimeline as only Verlauf view (audit log = inline toggle) → yes 12. Patent/Litigation/Client default render → lanes / lanes / matter list ## Worker status lagrange (inventor) parked. NOT pre-emptively flipping to coder. Awaiting m's go/no-go before any coder shift starts (per inventor protocol; m/mAi#142 lesson — designs must be approved before commits land). **DESIGN READY FOR REVIEW**
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: m/paliad#27
No description provided.