Backfill applies_to_target: extend merits + order rules to cover Schadensbemessung / Bucheinsicht #134
Open
opened 2026-05-26 13:32:44 +00:00 by mAi
·
1 comment
No Branch/Tag Specified
main
mai/planck/coder-b5-b6-train-share
mai/archimedes/fixer-port-engine
mai/maxwell/coder-b4-akte-mode
mai/lorenz/coder-b3-event-triggered
mai/euler/fixer-builder-add
mai/brunel/fixer-prod-500s-after-b1
mai/galileo/coder-b1-b2-mvp-train
mai/pasteur/fixer-pkg-litigationplann
mai/newton/coder-b0-scenario-db
mai/edison/inventor-prd-columnar
mai/knuth/coder-workflow-tracker
mai/atlas/inventor-extend-tools
mai/cronus/inventor-unified
mai/atlas/inventor-deadline-system
mai/atlas/inventor-followup-rules
mai/athena/consultant-deadline
mai/brunel/fixer-dark-mode-support
mai/knuth/coder-cronus-fristenrechn
mai/ritchie/coder-mig-153-proceeding
mai/atlas/inventor-proceeding
mai/cronus/inventor-fristenrechner
mai/curie/coder-mig152-clone-dedupe
mai/darwin/researcher-lexy-draft
mai/knuth/coder-dedupe-null
mai/cronus/coder-composer-slice-f
mai/cronus/coder-composer-slice-e
mai/cronus/coder-composer-slice-d
mai/curie/coder-slice-b6-url-rename
mai/curie/coder-slice-b5-go-rename
mai/cronus/coder-composer-slice-c
mai/curie/coder-slice-b4-destructive-drop
mai/cronus/coder-composer-slice-b
mai/cronus/coder-composer-slice-a
mai/cronus/inventor-prd-for
mai/knuth/coder-verfahrensablauf
mai/ritchie/coder-make-backup
mai/diesel/fixer-dark-mode-css
mai/curie/coder-slice-b3-read-cutover
mai/diesel/fixer-verfahrensablauf
mai/curie/coder-slice-b2-dual-write
mai/cronus/coder-slice-d-scenarios
mai/knuth/coder-backfill-applies
mai/hermes/gitster-verfahrensablauf
mai/cronus/coder-berufung-labels-refactor
mai/diesel/hotfix-2-mig-134-missing
mai/curie/coder-slice-b1-procedural-events
mai/cronus/coder-slice-c-upc-snapshot
mai/brunel/hotfix-rename-upc-apl
mai/cronus/coder-slice-b3-primary-party
mai/cronus/coder-slice-b2-catalog-query
mai/cronus/inventor-litigation-slice-b
mai/curie/researcher-slice-b-zero
mai/cronus/inventor-litigation
mai/artemis/gitster-remove-admin
mai/ritchie/coder-sort-post-trigger
mai/knuth/coder-conditional-label
mai/hermes/coder-verfahrensablauf
mai/brunel/rebase-121-conditional
mai/knuth/coder-conditional-rule
mai/hermes/gitster-dark-mode-fix
mai/ritchie/coder-submission-form
mai/artemis/gitster-re-surface
mai/brunel/fixer-views-any-filters
mai/cronus/coder-cicd-slice-a
mai/knuth/coder-wave-1-tier-1-rule
mai/ritchie/coder-upc-damages-add
mai/cronus/inventor-ci-cd-pre
mai/brunel/rebase-108-language
mai/hermes/gitster-admin-rules-list
mai/artemis/gitster-submission
mai/icarus/gitster-verfahrensablauf
mai/orpheus/gitster-search-input
mai/atlas/coder-event-card-choices-slice-ab
mai/hermes/gitster-date-range
mai/demeter/gitster-submission
mai/knuth/coder-hl-patents-style
mai/hermes/gitster-draft-editor
mai/atlas/inventor-per-event-card
mai/knuth/coder-deadline-rule-tier
mai/cronus/coder-procedural-events-slice-a
mai/hermes/gitster-deadline-form
mai/artemis/gitster-add-missing-i18n
mai/demeter/gitster-paliadin-chat
mai/brunel/wave0-tier0-deadline-fixes
mai/artemis/coder-docker-compose-yml
mai/icarus/coder-inbox-overhaul-slice-a
mai/atlas/coder-date-range-picker-slice-a
mai/brunel/fixer-de-inf-lg-cfi
mai/cronus/inventor-procedural
mai/hermes/gitster-event-type-modal
mai/cronus/coder-backup-mode
mai/curie/researcher-bulletproof
mai/hermes/gitster-draft-editor-focus-jump
mai/cronus/inventor-backup-mode
mai/hermes/gitster-submissions
mai/artemis/gitster-deadline-form
mai/brunel/fixer-submission-preview
mai/brunel/fixer-test-data-reset
mai/artemis/gitster-approval-withdraw
mai/demeter/gitster-events
mai/hermes/gitster-sidebar-loses
mai/hermes/gitster-browse-a
mai/brunel/fixer-submissions-demo
mai/icarus/inventor-inbox-overhaul
mai/atlas/inventor-symmetric-date
mai/artemis/gitster-demote-daten
mai/hermes/gitster-team-view-mailto
mai/knuth/coder-global-schriftsatze
mai/knuth/coder-schriftsatze
mai/ritchie/coder-author-demo-docx
mai/knuth/coder-add-schriftsatze
mai/knuth/coder-add-checklist
mai/knuth/coder-anchor-lookup-must
mai/tesla/dashboard-resize-clamp
mai/knuth/coder-demote-projekt
mai/knuth/coder-paliadin-chat
mai/knuth/coder-print-views
mai/knuth/coder-add-proceeding
mai/knuth/coder-submission
mai/ritchie/coder-extend-team-email
mai/knuth/coder-changelog-catch-up
mai/tesla/dashboard-overlap
mai/pasteur/fixercoder-dashboard
mai/newton/inventor-configurable
mai/dirac/inventorcoder-user
mai/gauss/inventorcoder-team-admin
mai/kepler/inventorcoder-project
mai/darwin/roadmap-ccr-en
mai/euler/coder-small-ux-polish
mai/darwin/fristenrechner-cleanup
mai/darwin/fixercoder-priority-bug
mai/leibniz/inventor-caldav-multi
mai/hertz/inventor-unified-modal
mai/archimedes/inventor-excel-data
mai/boltzmann/inventor-gap-tolerant
mai/copernicus/submission-slice-1
mai/fermi/interactive-session
mai/hertz/inventor-suggest-changes
mai/copernicus/inventor-submission
mai/mendel/test-strategy-slice-1
mai/mendel/inventor-test-strategy
mai/ampere/custom-views-improvements
mai/joule/mig-097-apply-huygens-s
mai/ohm/workstream-b-rename
mai/huygens/workstream-a-backfill
mai/kelvin/t-204-phase-2-proceeding
mai/bohr/ingest-t-paliad-203-rule
mai/curie/fristenrechner-gap
mai/maxwell/inbox-grey-out
mai/rutherford/slice-9-follow-up-b-re
mai/dirac/slice-9-follow-up-a
mai/bose/determinator-cascade-slice-3
mai/bose/determinator-cascade-slice-2
mai/bose/determinator-row-cascade
mai/lorenz/fristen-phase-3-slice-9
mai/curie/fristen-phase-3-slice-12
mai/planck/aichat-phase-b-paliad
mai/young/fristen-phase-3-slice-11b
mai/lorenz/fristen-phase-3-slice-11a
mai/lorenz/fristen-phase-3-slice-10
mai/lorenz/fristen-phase-3-slice-8
mai/lorenz/fristen-phase-3-slice-7
mai/lorenz/fristen-phase-3-slice-6
mai/lorenz/fristen-phase-3-slice-5
mai/lorenz/fristen-phase-3-slice-4
mai/lorenz/fristen-phase-3-slice-3
mai/lorenz/fristen-phase-3-slice-2
mai/lorenz/fristen-phase-3-slice-1
mai/pauli/fristen-phase2-design
mai/tesla/project-timeline-chart
mai/pauli/fristen-logic-audit
mai/pauli/determinator-b1-row-by
mai/noether/tools-cleanup-slice-1
mai/kelvin/inventor-tools-surface
mai/planck/paliadin-per-user-rls
mai/maxwell/bug-bundle-filterbar
mai/faraday/project-timeline-chart
mai/schroedinger/smarttimeline-slice-4
mai/bohr/smarttimeline-slice-3
mai/gauss/smarttimeline-slice-2
mai/riemann/filterbar-phase-2-slice
mai/lagrange/smarttimeline-design-the
mai/curie/researcher-determinator
mai/noether/collapse-regel-typ-on
mai/riemann/inventor-universal
mai/minkowski/project-level-our-side
mai/dirac/inventor-inline-paliadin
mai/feynman/fristenrechner
mai/minkowski/navbar-dashboard-reorg
mai/shannon/approval-rework
mai/einstein/consultant-deadline-data
mai/curie/researcher-upc-rop-audit
mai/noether/paliadin-real-claude
mai/noether/inventor-paliadin
mai/hilbert/inventor-approval-policy
mai/shannon/bug-frist-due-date
mai/fritz/bug-fristen-termine
mai/godel/inventor-projects-page
mai/fritz/bug-paliadin-chat
mai/kepler/inventor-profession-vs
mai/noether/inventor-paliadin-in-app
mai/fritz/bulk-team-email-send-to
mai/noether/inventor-local-chat-for
mai/noether/inventor-data-display
mai/fritz/bug-derived-team-members
mai/fritz/bug-sidebar-visibly
mai/noether/inventor-project
mai/shannon/bug-project-team-add
mai/cronus/inventor-dual-control
mai/fritz/bug-edit-mode-on
mai/cronus/inventor-holidays-per
mai/ritchie/phase-h-ai-deadline
No results found.
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: m/paliad#134
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
After Slice B1's Berufung unification (m/paliad#124 §18.1), the picker exposes 5 appeal targets:
m's call (2026-05-26 ~15:31): extend
applies_to_targetarrays on the existing rules so Schadensbemessung uses the merits track and Bucheinsicht uses the order track — provided this is legally correct against the actual rules we have.Legal premise (worker MUST verify before drafting the migration)
The UPC R.224 appeal procedure (2-month notice + 4-month grounds) is uniform — it doesn't vary by the kind of substantive decision being appealed. Only the anchor differs (which decision triggers the timeline).
applies_to_target=['endentscheidung']rules to['endentscheidung','schadensbemessung'].applies_to_target=['anordnung']rules to['anordnung','bucheinsicht'].Worker MUST audit the live
paliad.deadline_rulesrows forupc.apl.unifiedfirst. For each of the 16 rules currently bound to it, read therule_code/legal_source/descriptionand confirm the proposed extension fits. Surface any rule where the extension is not obvious — do NOT extend blindly.Migration scope
MAX(version)at write time) — singleUPDATE paliad.deadline_rules SET applies_to_target = applies_to_target || 'schadensbemessung'::text WHERE ...per target, with strict WHERE clauses.SELECT set_config('paliad.audit_reason', 'mig 13X: t-paliad-... — extend applies_to_target for Schadensbemessung/Bucheinsicht per m/paliad#134', true);at the top of.up.sqland.down.sql(deadline_rules audit trigger). This is one of the three traps that bit mig 134 today.applies_to_target. RAISE EXCEPTION if any unexpected row appears.array_remove(applies_to_target, '...')keyed by the same WHERE clauses.deadline_rules.updated_atwrites (table has no such column — fourth trap to avoid).Acceptance
https://paliad.de/tools/verfahrensablauf?appellant=defendant&target=schadensbemessungand?target=bucheinsichtboth render the appropriate timeline (R.224 / R.220 events).go test ./...green, including any lookup_events / Berufung tests.Anti-patterns to avoid (lessons from today's mig 134)
proceeding_types.updated_atdoesn't.set_config('paliad.audit_reason', …)— everyUPDATE paliad.deadline_rulestriggers the audit barrier.Audit: live
paliad.deadline_rulesforupc.apl.unified(proceeding_type_id=160)16 active rules — exact distribution from prod DB just now:
Merits track —
applies_to_target=['endentscheidung'](7 rules) → propose extend with'schadensbemessung'RoP.224.1.aUPC.RoP.224.1.aRoP.224.2.aUPC.RoP.224.2.aRoP.235.1UPC.RoP.235.1RoP.237UPC.RoP.237RoP.238.1UPC.RoP.238.1Legal fit (Schadensbemessung): Schadensbemessungs-Entscheidung is a substantive judgment rendered under the same R.118 framework as an Endentscheidung (R.118.4 explicitly covers damages quanta as part of the Hauptentscheidung family). The R.224 appeal timeline does not vary by which substantive R.118 decision is being appealed — only the anchor (the decision being challenged) differs. Therefore all 7 merits-track rules transfer cleanly. The two no-rule_code anchor children (hearing, decision) are part of the merits procedural flow and apply to any R.224 appeal.
Order track —
applies_to_target=['anordnung'](7 rules) → propose extend with'bucheinsicht'RoP.220.2UPC.RoP.220.2RoP.220.3UPC.RoP.220.3RoP.224.2.bUPC.RoP.224.2.bRoP.235.2UPC.RoP.235.2RoP.237UPC.RoP.237RoP.238.2UPC.RoP.238.2Legal fit (Bucheinsicht): Bucheinsicht-Anordnungen sind Anordnungen unter R.190 (Lay-open-books-Anordnung als Teil des damage-assessment-Verfahrens) bzw. R.196 (vorläufige Anordnungen). Beide sind Anordnungen im Sinne von R.220.2: appealable mit Zulassung (R.220.2 — 15 Tage) oder via diskretionäre Überprüfung (R.220.3). Der gesamte Order-Track (R.224.2.b Begründung, R.235.2 Erwiderung, R.237/238.2 Anschlussberufung) ist uniform — er hängt nicht vom Inhalt der angegriffenen Anordnung ab. Alle 7 Order-Track-Rules übertragen sich daher sauber.
Cost track —
applies_to_target=['kostenentscheidung'](2 rules) → NOT touchedRoP.221.1UPC.RoP.221.1Intentional non-action: the kostenentscheidung leave-to-appeal track is distinct from both merits and order procedures and is not part of this slice.
Ambiguous cases
None surfaced. Every endentscheidung rule is a generic R.224 merits-track step (or an anchor-child); every anordnung rule is a generic R.220/224/235/237/238 order-track step (or an anchor-child). No rule carries content that is specific to a particular type of underlying decision/order — they describe procedural steps, not substantive subject matter.
Plan
Migration 137 (next available;
MAX(version)=106inpaliad_schema_migrations, last file is136_procedural_events_additive):set_config('paliad.audit_reason', 'mig 137: t-paliad-303 — extend applies_to_target for Schadensbemessung (merits) + Bucheinsicht (order) per m/paliad#134', true)at top of both up + down.applies_to_target, RAISE EXCEPTION if any unexpected row shape appears.SET applies_to_target = applies_to_target || 'schadensbemessung'::text WHERE pt.code='upc.apl.unified' AND 'endentscheidung'=ANY(applies_to_target) AND NOT 'schadensbemessung'=ANY(applies_to_target) AND is_active=true— expect 7 rowsSET applies_to_target = applies_to_target || 'bucheinsicht'::text WHERE pt.code='upc.apl.unified' AND 'anordnung'=ANY(applies_to_target) AND NOT 'bucheinsicht'=ANY(applies_to_target) AND is_active=true— expect 7 rowsarray_remove(applies_to_target, 'schadensbemessung')/array_remove(..., 'bucheinsicht')with same WHERE.updated_atwrites (deadline_rules has the column but the migration leaves it as-is — single-purpose touch, not a metadata refresh).Test update:
internal/services/lookup_events_test.go:147(appeal_target=schadensbemessung returns empty) becomes the inverse — schadensbemessung must now return ≥1 anchor row fromupc.apl.unified. Adding a parallel bucheinsicht assertion.Proceeding with the migration.