From d027b0874cca036dd7c46e4de283eccad2e16ba8 Mon Sep 17 00:00:00 2001 From: mAi Date: Fri, 15 May 2026 17:47:30 +0200 Subject: [PATCH] docs(t-paliad-196): orphan-concept seed proposals (Fristen Phase 3 Slice 12, draft) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 5 live orphans (not 9 — discrepancy flagged), 7 linkage-only UPDATEs and 12 net-new rule drafts. Sources cited; 12 FLAGs for m's review before /admin/rules ingest. --- docs/proposals/orphan-concepts-2026-05-15.md | 577 +++++++++++++++++++ 1 file changed, 577 insertions(+) create mode 100644 docs/proposals/orphan-concepts-2026-05-15.md diff --git a/docs/proposals/orphan-concepts-2026-05-15.md b/docs/proposals/orphan-concepts-2026-05-15.md new file mode 100644 index 0000000..5573c1f --- /dev/null +++ b/docs/proposals/orphan-concepts-2026-05-15.md @@ -0,0 +1,577 @@ +# Orphan Concept Seed Proposals — Fristen Phase 3 Slice 12 (t-paliad-196) + +**Date:** 2026-05-15 +**Author:** curie (researcher) +**Status:** DRAFT — for m's review, not yet ingested via `/admin/rules` +**Branch:** `mai/curie/fristen-phase-3-slice-12` +**Source audit:** `docs/audit-fristen-logic-2026-05-13.md` § 3.4 + § 7.9 (pauli) + +--- + +## 0. Read-this-first — orphan count discrepancy + +m's task description (and pauli's audit dated 2026-05-13) cited **nine** orphan concepts with `rule_count=0`. Today's live `paliad` DB shows **five**: + +| # | Slug | Party | Category | +|---|------|-------|----------| +| 1 | `wiedereinsetzung` | both | submission | +| 2 | `schriftsatznachreichung` | both | submission | +| 3 | `versaeumnisurteil-einspruch` | defendant | submission | +| 4 | `weiterbehandlung` | claimant | submission | +| 5 | `counterclaim-for-revocation` | defendant | submission | + +Four of the audit's nine were almost certainly seeded between 2026-05-13 and 2026-05-15 by Slice 10 (migration 090, fuzzy backfill) and the Slice-11 admin rule-editor work. `notice-of-defence-intention` is one of them: today's `DE_INF` corpus contains `de_inf.anzeige` (Anzeige der Verteidigungsbereitschaft, ZPO §276.1) linked to its own concept, which removes it from the orphan list. + +**FLAG (count discrepancy):** I drafted proposals for the **5** remaining orphans, not 9. m should confirm whether the other 4 audit-named concepts were intentionally seeded or whether something else is going on before treating this as "done". + +### 0.1 A second, more important framing problem + +The orphan query `deadline_concepts.id NOT IN (SELECT concept_id FROM deadline_rules)` counts only **direct** `concept_id` linkages on `paliad.deadline_rules`. But the schema has two alternate rooting columns: `proceeding_type_id` (Pipeline A) and `trigger_event_id` (Pipeline C). The Pipeline-C migration (Slice 4, m/paliad#…) imported 77 event-rooted rules from `paliad.event_deadlines` but left their `concept_id` **NULL** on the unified `deadline_rules` table — even when the source trigger event had a matching `concept_id` slug already set on `paliad.trigger_events`. + +Concretely, the following rules **already exist** in `paliad.deadline_rules` but lack `concept_id`: + +| Rule name | `trigger_event_id` | Trigger event code | Owning concept (via `trigger_events.concept_id` slug) | +|---|---|---|---| +| Wiedereinsetzungsantrag (§ 123 PatG) | 200 | `wegfall_hindernisses_de_patg` | `wiedereinsetzung` | +| Wiedereinsetzungsantrag (§ 233 ZPO) | 201 | `wegfall_hindernisses_de_zpo` | `wiedereinsetzung` | +| Wiedereinsetzungsantrag (Art. 122 EPÜ) | 202 | `wegfall_hindernisses_eu_epc` | `wiedereinsetzung` | +| Wiedereinsetzungsantrag (DPMA) | 203 | `wegfall_hindernisses_dpma` | `wiedereinsetzung` | +| Einspruch gegen Versäumnisurteil (§ 339 ZPO) | 204 | `zustellung_versaeumnisurteil` | `versaeumnisurteil-einspruch` | +| Schriftsatznachreichung (§ 296a ZPO) | 205 | `ende_muendl_verhandlung` | `schriftsatznachreichung` | +| Weiterbehandlungsantrag (Art. 121 EPÜ) | 206 | `mitteilung_rechtsverlust_eu` | `weiterbehandlung` | +| *(none yet)* | 207 | `wegfall_hindernisses_upc` | `wiedereinsetzung` | + +**Net effect:** four of the five "orphan" concepts already have at least one workable rule — it is just disconnected from the concept by a NULL `concept_id`. The genuine coverage gap is much smaller than "5 concepts × ~5 rules each = 25 rules to draft". Practical Phase-3-Slice-12 work splits into: + +- **Track A (linkage, no legal review needed):** `UPDATE paliad.deadline_rules SET concept_id = … WHERE trigger_event_id IN (200,201,202,203,204,205,206)`. 7 rows, zero new legal substance. See § 6 of this doc. +- **Track B (new rule drafts, this doc's main body):** UPC R.320 Wiedereinsetzung (`trigger_event_id=207` truly has no rule yet), proceeding-rooted variants for the four jurisdictions where having a rule under the UPC_INF / DE_INF / EPA_OPP / DPMA_OPP umbrella makes the cascade complete, plus the schema-correct way to resolve `counterclaim-for-revocation` (which is intentionally encoded as flag-gated UPC_INF rules and probably should not get fresh rules at all). + +**FLAG (audit framing):** I recommend the orphan KPI be redefined as "concepts where NO rule references the concept, **directly via `deadline_rules.concept_id` OR transitively via `deadline_rules.trigger_event_id → trigger_events.concept_id`**". Until that happens, the orphan list will keep over-reporting work that has already been done in another column. The Phase 2 design (`docs/design-fristen-phase2-2026-05-15.md` § 3 Step C) anticipates dropping the `paliad.trigger_events` table entirely in Slice 9 and copying `concept_id` onto `deadline_rules` at that point — once that migration runs, the discrepancy resolves itself. + +### 0.2 Convention notes + +- Rule **code** column (`paliad.deadline_rules.code`) uses `.` for proceeding-rooted rules (e.g. `inf.sod`, `de_inf.berufung`). For event-rooted rules `code` is NULL today; I follow that pattern. +- **Anchor semantics** (audit § 4): `parent_id NULL + duration_value=0` = root anchor / court-set absolute. `parent_id NULL + duration_value>0 + trigger_event_id` = event-rooted, anchored to the trigger event's date. `parent_id NOT NULL` = chained off another rule. +- **Priority values** (post-Slice-3): `mandatory` | `recommended` | `optional` | `informational`. Wiedereinsetzung-class rules are conceptually `optional` for the user (they may decide not to file), but the legal-source side is mandatory once invoked. I tag them `optional` with the legal source making the obligation conditional — m to confirm. +- **`is_court_set`** is true when the deadline date is set by court order rather than computed from a statutory period. For Schriftsatznachreichung this is the relevant case; for Wiedereinsetzung/Weiterbehandlung it's false (statutory period). +- **`legal_source`** uses the existing convention seen on live rules (`UPC.RoP.29.a`, `DE.ZPO.234.1`, `EU.EPC-R.135.1`, `EU.EPÜ.99.1`). + +--- + +## 1. Concept: `wiedereinsetzung` (Wiedereinsetzung in den vorigen Stand) + +**Concept ID:** `00b737bf-58a6-4f41-9650-ac3f2e7079e8` +**Party:** both · **Category:** submission +**Linked event_categories (cascade leaves):** +- `cms-eingang.gericht.rechtsverlust-epa` (Mitteilung über Rechtsverlust, EPA) +- `frist-verpasst.de-patg` (DE Patentverfahren, PatG §123) +- `frist-verpasst.de-zpo` (DE Zivilverfahren, ZPO §233) +- `frist-verpasst.dpma` (DPMA, PatG §123) +- `frist-verpasst.epa` (EPA, Art. 122 EPÜ) +- `frist-verpasst.upc` (UPC, R.320 RoP) + +**Existing trigger-event-rooted rules:** trigger events 200/201/202/203 already have rules in `paliad.deadline_rules` (DE PatG, DE ZPO, EPC, DPMA respectively). Only te 207 (UPC R.320) has no rule yet. See § 6 for the linkage UPDATE that brings the existing four into the concept's rule list. + +**Drafts below:** + +### Rule 1.1 — UPC R.320 Wiedereinsetzungsantrag + +- **Rule code:** `upc.wiedereinsetzung` *(proceeding-rooted) ORalt. NULL code + `trigger_event_id=207` (event-rooted, matches pattern of te 200-206 rules)* +- **Proceeding type:** UPC_INF (id=8) — primary. Also relevant for UPC_REV (9), UPC_PI (10), UPC_APP (11), UPC_DAMAGES (17), UPC_DISCOVERY (18), UPC_COST_APPEAL (19), UPC_APP_ORDERS (20). **FLAG:** Wiedereinsetzung applies across the full UPC corpus; m to decide whether to (a) seed one event-rooted rule referencing te 207 — pattern matches the existing four jurisdictions — or (b) seed seven proceeding-rooted clones. Recommend (a): cleaner, mirrors the pattern already set for DE/EPC/DPMA, and Slice 9's table-drop migration in Phase 2 will canonicalise it. +- **Name (DE):** Wiedereinsetzungsantrag (R. 320 RoP UPC) +- **Name (EN):** Application for re-establishment of rights (UPC R.320 RoP) +- **Party:** both (claimant or defendant, whoever missed) +- **Anchor:** `trigger_event_id = 207` (`wegfall_hindernisses_upc`) +- **Duration:** 2, months +- **Timing:** after +- **Priority:** optional *(filing is at the party's discretion — see § 0.2)* +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `UPC.RoP.320.1` +- **Notes:** UPC R.320.1 sets a 2-month window from removal of the cause of non-compliance, capped by an absolute 1-year limit from expiry of the missed period (see Rule 1.2 below). The omitted act must be completed within the same 2-month window (R.320.2). Court fee per R.150(1)(p). UI may want to show the 1-year backstop as a sibling "Achtung" line; that is a renderer decision, not a separate rule. + +### Rule 1.2 — UPC R.320 — 1-Jahres-Ausschlussfrist (informational) + +- **Rule code:** `upc.wiedereinsetzung.cutoff` (or trigger-rooted with a sibling `sequence_order` after Rule 1.1) +- **Proceeding type:** same as Rule 1.1 +- **Name (DE):** Absolute Ausschlussfrist Wiedereinsetzung (1 Jahr) +- **Name (EN):** Absolute cut-off for re-establishment (1 year) +- **Party:** both +- **Anchor:** the **missed** deadline's date — not `wegfall_hindernisses_upc`. **FLAG:** Today's `trigger_events` model can't express "anchor = the missed deadline" because the trigger fires on removal of cause, not on the missed deadline. Either (a) add a new trigger event `frist_versaeumt_upc` and root this rule there, or (b) make this an `informational` UI-only rule rendered by the renderer next to Rule 1.1 with no real anchor. Recommend (b) for now; (a) is a Phase-3 schema follow-up. +- **Duration:** 12, months +- **Timing:** after +- **Priority:** informational +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `UPC.RoP.320.1` (second half: "but at the latest within one year of the expiry of the unobserved time limit") +- **Notes:** Cosmetically important — practitioners forget the cut-off. Keep as informational rendering until the schema supports two-anchor rules. + +### Rule 1.3 — EPC Art. 122 / R.136 Wiedereinsetzungsantrag (EPA) + +- **Rule code:** *(event-rooted; NULL `code`, matches existing pattern for te 200-203)* +- **Proceeding type:** NULL (or EPA_OPP=14 / EPA_APP=15 / EP_GRANT=16 if proceeding-rooted) +- **Name (DE):** Wiedereinsetzungsantrag (Art. 122 EPÜ) +- **Name (EN):** Petition for re-establishment of rights (EPC Art.122) +- **Party:** both +- **Anchor:** `trigger_event_id = 202` (`wegfall_hindernisses_eu_epc`) +- **Duration:** 2, months +- **Timing:** after +- **Priority:** optional +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `EU.EPC-R.136.1` +- **Notes:** **DUPLICATE of existing rule** `23c6f445-4ed2-4ade-8ea0-c4ab6b364bb6` — already in `deadline_rules`, just missing `concept_id`. See § 6 linkage UPDATE; do not double-seed. + +### Rule 1.4 — EPC R.136 — 1-Jahres-Ausschlussfrist + +- **Rule code:** as Rule 1.2 pattern +- **Name (DE):** Absolute Ausschlussfrist Wiedereinsetzung EPA (1 Jahr) +- **Name (EN):** Absolute cut-off for re-establishment, EPC (1 year) +- **Party:** both +- **Anchor:** missed-deadline date (same FLAG as Rule 1.2 — schema follow-up) +- **Duration:** 12, months +- **Timing:** after +- **Priority:** informational +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `EU.EPC-R.136.1` (second sentence) +- **Notes:** R.136(1) third sentence carves out a special **2-month** cut-off for restoration of priority (Art. 87(1) in conjunction with R.136(1)). m may want a separate rule 1.4b for that priority variant; flagging rather than auto-resolving. + +### Rule 1.5 — DE PatG §123 Wiedereinsetzungsantrag (DPMA + national) + +- **Rule code:** event-rooted, te=200 (PatG) and te=203 (DPMA) +- **Name (DE):** Wiedereinsetzungsantrag (§ 123 PatG) +- **Name (EN):** Petition for re-establishment of rights (PatG §123) +- **Party:** both +- **Anchor:** `trigger_event_id = 200` (`wegfall_hindernisses_de_patg`) — for general DE PatG context — AND `trigger_event_id = 203` (`wegfall_hindernisses_dpma`) — for DPMA-specific context. +- **Duration:** 2, months +- **Timing:** after +- **Priority:** optional +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `DE.PatG.123.2` +- **Notes:** **DUPLICATE of existing rules** `c24d494c-…` (te 200) and `b588fa64-…` (te 203). Linkage only — see § 6. + +### Rule 1.6 — DE PatG §123 — 1-Jahres-Ausschlussfrist + +- **Rule code:** as 1.2/1.4 pattern (informational) +- **Name (DE):** Absolute Ausschlussfrist Wiedereinsetzung PatG (1 Jahr) +- **Name (EN):** Absolute cut-off for re-establishment, PatG (1 year) +- **Party:** both +- **Anchor:** missed-deadline date (schema FLAG as 1.2) +- **Duration:** 12, months +- **Timing:** after +- **Priority:** informational +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `DE.PatG.123.2` (Satz 4) +- **Notes:** PatG §123(2) Satz 4: "Innerhalb eines Jahres nach Ablauf der versäumten Frist ist keine Wiedereinsetzung mehr möglich." Same as PatG also for DPMA proceedings. + +### Rule 1.7 — DE ZPO §233 Wiedereinsetzungsantrag (Notfrist, 2 Wochen) + +- **Rule code:** event-rooted, te=201 +- **Name (DE):** Wiedereinsetzungsantrag — Notfrist (§ 234 Abs. 1 S. 1 ZPO) +- **Name (EN):** Petition for re-establishment of rights — Notfrist (ZPO §234(1) sentence 1) +- **Party:** both +- **Anchor:** `trigger_event_id = 201` (`wegfall_hindernisses_de_zpo`) +- **Duration:** 2, weeks +- **Timing:** after +- **Priority:** optional +- **is_court_set:** false +- **condition_expr:** NULL — but see Rule 1.8 for the 1-month variant. +- **Legal source:** `DE.ZPO.234.1` +- **Notes:** **DUPLICATE of existing rule** `d40d9be7-…` — linkage only. ZPO §234(1) sentence 1: 2 weeks for Notfristen (Berufungsfrist, Revisionsfrist, Beschwerdefrist, etc.). + +### Rule 1.8 — DE ZPO §234(1)2 Wiedereinsetzungsantrag (Begründungsfrist, 1 Monat) + +- **Rule code:** event-rooted, te=201, sibling to 1.7 +- **Name (DE):** Wiedereinsetzungsantrag — Begründungsfrist (§ 234 Abs. 1 S. 2 ZPO) +- **Name (EN):** Petition for re-establishment — appeal/revision grounds period (ZPO §234(1) sentence 2) +- **Party:** both +- **Anchor:** `trigger_event_id = 201` (`wegfall_hindernisses_de_zpo`) +- **Duration:** 1, months +- **Timing:** after +- **Priority:** optional +- **is_court_set:** false +- **condition_expr:** **FLAG** — needs a flag like `{"flag":"begruendungsfrist"}` or similar to distinguish from Rule 1.7 because today's data model can't differentiate "the missed deadline was a Berufungsbegründungsfrist" without an explicit flag from the caller. m to decide whether to add a flag or leave the rule as "informational alternative" rendered alongside 1.7. +- **Legal source:** `DE.ZPO.234.1` +- **Notes:** ZPO §234(1) Satz 2: "Die Frist beträgt einen Monat, wenn die Partei verhindert war, die Frist zur Begründung der Berufung, der Revision, der Nichtzulassungsbeschwerde oder der Rechtsbeschwerde oder die Frist des § 234 Abs. 3 einzuhalten." + +### Rule 1.9 — DE ZPO §234(3) — 1-Jahres-Ausschlussfrist + +- **Rule code:** informational sibling +- **Name (DE):** Absolute Ausschlussfrist Wiedereinsetzung ZPO (1 Jahr) +- **Name (EN):** Absolute cut-off for re-establishment, ZPO (1 year) +- **Party:** both +- **Anchor:** missed-deadline date (schema FLAG as 1.2) +- **Duration:** 12, months +- **Timing:** after +- **Priority:** informational +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `DE.ZPO.234.3` +- **Notes:** "Nach Ablauf eines Jahres, von dem Ende der versäumten Frist an gerechnet, kann die Wiedereinsetzung nicht mehr beantragt … werden." + +**Summary for `wiedereinsetzung`:** four of the five linked event categories (DE PatG, DE ZPO, EPC, DPMA) already have **existing rules** that just need `concept_id` set — see § 6. The genuinely new substance is **Rule 1.1** (UPC R.320, te 207), plus a set of informational 1-year cut-off rules (1.2/1.4/1.6/1.9), plus the optional ZPO §234(1) sentence-2 variant (1.8). Six new rules in total, one duplicate-flagged, four pure linkages. **FLAG:** UPC fee for Wiedereinsetzung (R.150(1)(p)) is not modelled as a rule — should it appear as a sibling informational rule with the fee amount? Today's model doesn't carry money, so probably no, but worth m's call. + +--- + +## 2. Concept: `schriftsatznachreichung` (Schriftsatznachreichung, § 296a ZPO) + +**Concept ID:** `b7a3cb3e-ef7e-47a1-8067-be0fe35a4235` +**Party:** both · **Category:** submission +**Linked event_categories:** +- `cms-eingang.gericht.ladung` (Ladung zur mündlichen Verhandlung) +- `muendl-verhandlung.gehalten` (Soeben gehalten / heute) +- `muendl-verhandlung.geladen` (Geladen — wann findet sie statt?) + +**Existing rules:** te 205 (`ende_muendl_verhandlung`) already has rule `3c36f149-…` (3 weeks). Linkage only — see § 6. + +### Rule 2.1 — DE ZPO §296a Schriftsatznachreichungsfrist + +- **Rule code:** event-rooted, te=205 +- **Proceeding type:** NULL (event-rooted) — primarily DE_INF/DE_NULL/OLG/BGH context but cross-cutting via the trigger event. +- **Name (DE):** Schriftsatznachreichung (§ 296a ZPO) +- **Name (EN):** Subsequent written submission (ZPO §296a) +- **Party:** both +- **Anchor:** `trigger_event_id = 205` (`ende_muendl_verhandlung`) +- **Duration:** 3, weeks +- **Timing:** after +- **Priority:** optional *(only available if court grants Schriftsatznachreichungsfrist; otherwise §296a bars new attack/defence means)* +- **is_court_set:** **true** — the deadline date is set by the court order granting the Schriftsatznachreichungsfrist, not by the statute itself. ZPO §296a permits the court to set it; typical practice is 2-3 weeks but the court fixes the exact date. +- **condition_expr:** NULL +- **Legal source:** `DE.ZPO.296a` +- **Notes:** **DUPLICATE of existing rule** — linkage only. **FLAG:** the existing rule sets `is_court_set=false` and a fixed 3-week duration. Strictly, the court sets the date, so `is_court_set=true` is more accurate; the 3-week duration is a typical-case estimate. m to decide whether to update the existing rule or leave the heuristic as-is and document the deviation. + +### Rule 2.2 — Schriftsatznachreichung — Beschränkung auf in der Verhandlung erörterte Punkte (informational) + +- **Rule code:** informational sibling +- **Name (DE):** Beschränkung der Schriftsatznachreichung (nur Bezug auf Verhandlungspunkte) +- **Name (EN):** Schriftsatznachreichung scope limit (only matters raised at the hearing) +- **Party:** both +- **Anchor:** same as 2.1 +- **Duration:** 0 +- **Timing:** after +- **Priority:** informational +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `DE.ZPO.296a` +- **Notes:** Reminds the user that a Schriftsatznachreichung is limited to matters raised at the oral hearing — new attack/defence means are barred under §296a. Useful for the cascade card; not a calendar deadline. + +### Rule 2.3 — Schriftsatznachreichung — UPC equivalent? (open question) + +**FLAG:** UPC RoP has no direct §296a analogue. Post-hearing submissions in UPC proceedings are limited and require court leave (general practice; see R.117). I am intentionally **not** drafting a UPC rule under this concept and recommend m confirm the concept stays DE-only. If the cascade exposes the concept under a UPC entry, that is a cascade taxonomy bug, not a rule gap. + +**Summary:** 2 substantive rules (1 duplicate-flagged, 1 informational). Concept is essentially solved by linkage + 1 informational sibling. + +--- + +## 3. Concept: `versaeumnisurteil-einspruch` (Einspruch gegen Versäumnisurteil, § 339 ZPO) + +**Concept ID:** `9f809d1d-ea06-4aa5-80d0-6feaa33b464e` +**Party:** defendant · **Category:** submission +**Linked event_categories:** +- `beschluss-entscheidung.versaeumnisurteil` (Versäumnisurteil DE) +- `cms-eingang.gericht.endentscheidung.versaeumnisurteil` (Versäumnisurteil DE) + +**Existing rules:** te 204 (`zustellung_versaeumnisurteil`) already has rule `20254f4e-…` (2 weeks). Linkage only — see § 6. + +### Rule 3.1 — DE ZPO §339(1) Einspruchsfrist (Inland-Zustellung, 2 Wochen) + +- **Rule code:** event-rooted, te=204 +- **Name (DE):** Einspruch gegen Versäumnisurteil (§ 339 Abs. 1 ZPO) +- **Name (EN):** Objection to default judgment, domestic service (ZPO §339(1)) +- **Party:** defendant +- **Anchor:** `trigger_event_id = 204` (`zustellung_versaeumnisurteil`) +- **Duration:** 2, weeks +- **Timing:** after +- **Priority:** mandatory *(if defence wants to undo default; otherwise judgment becomes final)* +- **is_court_set:** false +- **condition_expr:** NULL — but see Rule 3.2 for the international-service variant. +- **Legal source:** `DE.ZPO.339.1` +- **Notes:** **DUPLICATE of existing rule** — linkage only. ZPO §339(1) sentence 1: 2-week Notfrist from Zustellung. §339(1) sentence 2 reserves longer periods for cases under §339(2) and §234(2). + +### Rule 3.2 — DE ZPO §339(2) Einspruchsfrist (Auslands-Zustellung, ≥ 1 Monat) + +- **Rule code:** event-rooted, te=204, sibling +- **Name (DE):** Einspruch gegen Versäumnisurteil — Auslandszustellung (§ 339 Abs. 2 ZPO) +- **Name (EN):** Objection to default judgment — service abroad (ZPO §339(2)) +- **Party:** defendant +- **Anchor:** `trigger_event_id = 204` +- **Duration:** 1, months +- **Timing:** after +- **Priority:** mandatory +- **is_court_set:** **true** — §339(2) sentence 2 says the court sets the period in the order; "at least one month" is the statutory floor. +- **condition_expr:** **FLAG** — needs a flag like `{"flag":"auslandszustellung"}` to distinguish from Rule 3.1. m to decide flag naming. +- **Legal source:** `DE.ZPO.339.2` +- **Notes:** ZPO §339(2): "Bei einer Zustellung im Ausland nach § 183 Abs. 1 Nr. 1 wird die Einspruchsfrist auf mindestens einen Monat festgesetzt." + +### Rule 3.3 — DE ZPO §340 Inhalt der Einspruchsschrift (informational) + +- **Rule code:** informational sibling +- **Name (DE):** Inhalt der Einspruchsschrift (§ 340 ZPO) +- **Name (EN):** Required contents of the objection (ZPO §340) +- **Party:** defendant +- **Anchor:** same as Rule 3.1 +- **Duration:** 0 +- **Timing:** after +- **Priority:** informational +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `DE.ZPO.340` +- **Notes:** Reminds the user that the Einspruchsschrift must contain the designation of the judgment, the declaration of objection, and the parties' applications. Not a calendar deadline. + +### Rule 3.4 — Rechtsfolge Einspruch (informational) + +- **Rule code:** informational sibling +- **Name (DE):** Rechtsfolge des zulässigen Einspruchs (§ 342 ZPO) +- **Name (EN):** Effect of admissible objection (ZPO §342) +- **Party:** defendant +- **Anchor:** same as Rule 3.1 +- **Duration:** 0 +- **Timing:** after +- **Priority:** informational +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `DE.ZPO.342` +- **Notes:** Tells the user that an admissible Einspruch puts the case back in the state pre-default. Useful as a cascade-card pill; not a deadline. + +**Summary:** 4 rules, 1 duplicate-flagged, 1 needing a condition flag, 2 informational. + +--- + +## 4. Concept: `weiterbehandlung` (Weiterbehandlung, Art. 121 EPÜ) + +**Concept ID:** `5a58f14c-3042-48e9-87fd-c94b62d13662` +**Party:** claimant · **Category:** submission +**Linked event_categories:** +- `cms-eingang.gericht.rechtsverlust-epa` (Mitteilung über Rechtsverlust, EPA) +- `frist-verpasst.epa` (EPA, Art. 122 EPÜ) + +**Existing rules:** te 206 (`mitteilung_rechtsverlust_eu`) already has rule `f1099cf6-…` (2 months). Linkage only — see § 6. + +### Rule 4.1 — EPC Art. 121 / R.135 Weiterbehandlungsantrag + +- **Rule code:** event-rooted, te=206 +- **Name (DE):** Weiterbehandlungsantrag (Art. 121 EPÜ) +- **Name (EN):** Request for further processing (Art.121 EPC) +- **Party:** claimant *(applicant during prosecution)* +- **Anchor:** `trigger_event_id = 206` (`mitteilung_rechtsverlust_eu`) +- **Duration:** 2, months +- **Timing:** after +- **Priority:** optional *(applicant's choice; preferred over Wiedereinsetzung when available because cheaper and no fault analysis)* +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `EU.EPC-R.135.1` +- **Notes:** **DUPLICATE of existing rule** — linkage only. R.135(1): 2 months from notification of loss of rights. Missed act must be completed; Weiterbehandlungsgebühr payable per R.135(1) third sentence. + +### Rule 4.2 — Weiterbehandlung Ausschlüsse (informational) + +- **Rule code:** informational sibling +- **Name (DE):** Ausschlüsse Weiterbehandlung (R.135(2) EPÜ) +- **Name (EN):** Further-processing exclusions (EPC R.135(2)) +- **Party:** claimant +- **Anchor:** same as Rule 4.1 +- **Duration:** 0 +- **Timing:** after +- **Priority:** informational +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `EU.EPC-R.135.2` +- **Notes:** R.135(2): Weiterbehandlung not available for the priority period (Art. 87(1)), the period under Art. 112a(4), the periods for filing of opposition and appeal (Art. 99(1), 108), and various R.6/R.36(1)(a)/R.51(2)/R.158/R.27(3) periods. Cascade-card pill so the user knows when to fall back to Wiedereinsetzung instead. **FLAG:** could be modeled per excluded period as a fine-grained `condition_expr`-gated set; that is overkill for now — informational siblings are enough. + +### Rule 4.3 — Weiterbehandlungsgebühr (informational) + +- **Rule code:** informational sibling +- **Name (DE):** Weiterbehandlungsgebühr fällig +- **Name (EN):** Further-processing fee due +- **Party:** claimant +- **Anchor:** same as Rule 4.1 +- **Duration:** 2, months +- **Timing:** after +- **Priority:** informational +- **is_court_set:** false +- **condition_expr:** NULL +- **Legal source:** `EU.EPC-R.135.1` (third sentence) +- **Notes:** Fee per Art. 2(1) item 12 of the EPA fee schedule. Mirrors the missed-act window — both must be completed in the same 2-month window for the request to be effective. + +**Summary:** 3 rules, 1 duplicate-flagged, 2 informational. + +--- + +## 5. Concept: `counterclaim-for-revocation` (Nichtigkeitswiderklage, UPC R.25) + +**Concept ID:** `52134900-2bcf-4810-9de3-0b0681c79dd7` +**Party:** defendant · **Category:** submission +**Linked event_category:** +- `ich-moechte-einreichen.widerklage.nichtigkeit-upc` (Nichtigkeitswiderklage UPC R.25) + +**Existing rules:** UPC R.25 / RoP 25-32 are **already encoded** in `UPC_INF` (proceeding_type_id=8) as flag-gated rules using `condition_expr.flag = "with_ccr"`: + +| Rule code | Name | Duration | condition_expr | concept_slug today | +|---|---|---|---|---| +| `inf.def_to_ccr` | Erwiderung auf Nichtigkeitswiderklage | 2 months | `{"flag":"with_ccr"}` | `defence-to-counterclaim-for-revocation` | +| `inf.reply` (with_ccr variant) | Replik | 2 months | `{"flag":"with_ccr"}` | `reply-to-defence` | +| `inf.reply_def_ccr` | Replik auf Erwiderung zur Nichtigkeitswiderklage | 2 months | `{"flag":"with_ccr"}` | (not yet checked) | +| `inf.rejoin` (with_ccr) | Duplik | 1 month | `{"flag":"with_ccr"}` | `rejoinder` | +| `inf.rejoin_reply_ccr` | Duplik auf Replik | 1 month | `{"flag":"with_ccr"}` | (not yet checked) | +| `inf.def_to_amend` | Erwiderung auf Patentänderungsantrag | 2 months | `{"op":"and","args":[{"flag":"with_ccr"},{"flag":"with_amend"}]}` | `defence-to-application-to-amend` | +| `inf.app_to_amend` | Antrag auf Patentänderung | 2 months | `{"op":"and","args":[{"flag":"with_ccr"},{"flag":"with_amend"}]}` | **NULL** (orphan column) | +| `inf.reply_def_amd` | Replik auf Erwiderung zum Patentänderungsantrag | 1 month | same | `reply-to-defence-to-application-to-amend` (or similar) | +| `inf.rejoin_amd` | Duplik auf Replik zum Patentänderungsantrag | 1 month | same | `rejoinder-on-amend` (or similar) | + +**The CCR itself** — the act of filing the Nichtigkeitswiderklage — is part of `inf.sod` (Statement of Defence) when `with_ccr=true`. The 3-month SoD period from R.23 doubles as the CCR-filing period from R.25. + +### Proposal 5.1 — Do **not** seed new rules under this concept. + +The concept models a logical artifact ("Nichtigkeitswiderklage") that is, in the data model, an attribute of the SoD rather than a separate timed event. Seeding new rules under `counterclaim-for-revocation.concept_id` would either: + +- (a) Duplicate the existing `inf.sod` / `inf.def_to_ccr` / etc. rules — wasteful, fragile (two sources of truth for the same legal period). +- (b) Add a synthetic "filing CCR" rule with the same 3-month period as `inf.sod` — redundant once `inf.sod`'s `concept_id` is set correctly. + +### Proposal 5.2 — Link existing UPC_INF rules to this concept (linkage only). + +Specifically: + +| Rule | Current `concept_id` link | Proposed action | +|---|---|---| +| `inf.sod` (UPC_INF) | `statement-of-defence` (presumably) | Leave as-is — SoD's primary concept is "Statement of Defence". | +| `inf.app_to_amend` (UPC_INF, with_ccr+with_amend) | NULL | **Link to `counterclaim-for-revocation`** — this is the genuine "CCR-derived deadline" that has no concept today. | + +**FLAG:** Whether the cascade entry `ich-moechte-einreichen.widerklage.nichtigkeit-upc` should resolve to the SoD itself or to a CCR-card-with-derivative-deadlines is a UX question m needs to decide. My read: when a user clicks "I want to file Nichtigkeitswiderklage", they want to see the SoD deadline (because that's when the CCR is due — same period as SoD) plus the consequential deadlines (Defence to CCR, Replik, Duplik, Patent amendment etc.). A cleaner data-model fix is to add a junction `paliad.concept_rules` (many-to-many) so a rule can belong to multiple concepts (e.g. `inf.sod` ∈ {`statement-of-defence`, `counterclaim-for-revocation`}). That's a Phase 3+ schema add and outside Slice 12's scope. + +### Proposal 5.3 — Alternative: event-rooted CCR rule. + +Trigger event 1 (`statement_of_defence_which_includes_a_counterclaim_for_revocation`) exists but lacks `concept_id` text. Setting `paliad.trigger_events.concept_id = 'counterclaim-for-revocation'` on te 1 and seeding 1-3 event-rooted rules that fire from te 1 (Defence to CCR within 2 months, Reply within 2 months, etc.) would give the cascade card concrete deadlines without duplicating the SoD-tree rules. This is the pattern the audit § 3.4 description hints at. + +**Recommendation:** Proposal 5.2 + 5.3 combined. m to confirm. Until decided, I'm **not** drafting fresh rules for this concept — it's a data-model question disguised as a coverage gap. + +--- + +## 6. Track A — Linkage-only UPDATEs (no legal review needed) + +The following `paliad.deadline_rules` rows already exist; they only need `concept_id` pointed at the right concept. These are the lowest-risk part of Slice 12 and can be applied via the admin UI as no-op edits (or as a one-off migration if m prefers). + +```sql +-- DRAFT — do not run blindly; the admin UI route (PATCH /api/admin/rules/{id}) is the preferred path. + +-- Wiedereinsetzung (DE PatG) +UPDATE paliad.deadline_rules +SET concept_id = '00b737bf-58a6-4f41-9650-ac3f2e7079e8' +WHERE id = 'c24d494c-0da1-4f01-aa74-0f37f99fe1ae'; + +-- Wiedereinsetzung (DE ZPO) +UPDATE paliad.deadline_rules +SET concept_id = '00b737bf-58a6-4f41-9650-ac3f2e7079e8' +WHERE id = 'd40d9be7-e1b6-451c-bee2-6eaee2307ec5'; + +-- Wiedereinsetzung (EPC) +UPDATE paliad.deadline_rules +SET concept_id = '00b737bf-58a6-4f41-9650-ac3f2e7079e8' +WHERE id = '23c6f445-4ed2-4ade-8ea0-c4ab6b364bb6'; + +-- Wiedereinsetzung (DPMA) +UPDATE paliad.deadline_rules +SET concept_id = '00b737bf-58a6-4f41-9650-ac3f2e7079e8' +WHERE id = 'b588fa64-a727-4cfb-a45d-69a835a3b05a'; + +-- Versäumnisurteil-Einspruch (ZPO §339) +UPDATE paliad.deadline_rules +SET concept_id = '9f809d1d-ea06-4aa5-80d0-6feaa33b464e' +WHERE id = '20254f4e-d213-4cf6-8f5f-1d9d36eeb6ac'; + +-- Schriftsatznachreichung (ZPO §296a) +UPDATE paliad.deadline_rules +SET concept_id = 'b7a3cb3e-ef7e-47a1-8067-be0fe35a4235' +WHERE id = '3c36f149-3a81-456e-aac1-d4d18bfcb16b'; + +-- Weiterbehandlung (EPC Art.121) +UPDATE paliad.deadline_rules +SET concept_id = '5a58f14c-3042-48e9-87fd-c94b62d13662' +WHERE id = 'f1099cf6-4c87-430e-b1c5-488bd44cb143'; +``` + +After these 7 rows update, `counterclaim-for-revocation` is the only remaining concept with `direct rule_count = 0`, and that is by design (see § 5). + +--- + +## 7. Track B — Genuinely new rule drafts + +Pure-new (not in DB today), to be added through `/admin/rules`: + +| # | Concept | Rule | Status | +|---|---|---|---| +| 1.1 | `wiedereinsetzung` | UPC R.320 Wiedereinsetzungsantrag (te 207) | NEW | +| 1.2 | `wiedereinsetzung` | UPC R.320 1-Jahres-Ausschlussfrist | NEW, schema FLAG | +| 1.4 | `wiedereinsetzung` | EPC R.136 1-Jahres-Ausschlussfrist | NEW, schema FLAG | +| 1.6 | `wiedereinsetzung` | DE PatG §123 1-Jahres-Ausschlussfrist | NEW, schema FLAG | +| 1.8 | `wiedereinsetzung` | DE ZPO §234(1)2 — 1-Monat Begründungsfrist | NEW, condition_expr FLAG | +| 1.9 | `wiedereinsetzung` | DE ZPO §234(3) 1-Jahres-Ausschlussfrist | NEW, schema FLAG | +| 2.2 | `schriftsatznachreichung` | §296a-Beschränkung (informational) | NEW | +| 3.2 | `versaeumnisurteil-einspruch` | ZPO §339(2) Auslandszustellung 1 Monat | NEW, condition_expr FLAG | +| 3.3 | `versaeumnisurteil-einspruch` | ZPO §340 Inhalt der Einspruchsschrift (info) | NEW | +| 3.4 | `versaeumnisurteil-einspruch` | ZPO §342 Rechtsfolge (info) | NEW | +| 4.2 | `weiterbehandlung` | R.135(2) Ausschlüsse (info) | NEW | +| 4.3 | `weiterbehandlung` | Weiterbehandlungsgebühr (info) | NEW | +| 5.x | `counterclaim-for-revocation` | (none — see § 5 proposal) | — | + +**Total new rule drafts: 12.** That is well under the "50 rule drafts" estimate in the task brief, because the linkage path covers the bulk of what looked like missing coverage. **FLAG:** if m wants me to draft additional UPC R.320 jurisdiction-specific variants (UPC_REV, UPC_PI, UPC_APP, UPC_DAMAGES, UPC_DISCOVERY) as separate proceeding-rooted rules instead of one shared event-rooted rule (Rule 1.1), that adds ~6-7 more drafts. + +--- + +## 8. Open questions / FLAGs index + +For convenience, all `**FLAG**`-marked items in one place. m's decision is needed on each before /admin/rules ingest of the corresponding rule. + +| ID | Section | Question | +|---|---|---| +| F1 | § 0 | Count discrepancy: 9 vs 5 — confirm the other 4 audit-named orphans were intentionally resolved, not lost. | +| F2 | § 0 | Redefine the orphan KPI to also count `trigger_event_id → trigger_events.concept_id`, so the count reflects actual UX coverage. | +| F3 | § 1.1 | UPC R.320: one event-rooted rule (te 207) vs seven proceeding-rooted clones (UPC_INF/UPC_REV/UPC_PI/UPC_APP/UPC_DAMAGES/UPC_DISCOVERY/UPC_APP_ORDERS). | +| F4 | § 1.2, 1.4, 1.6, 1.9 | 1-year cut-off rules have no clean anchor in the current schema; informational rendering vs new `frist_versaeumt_*` trigger event. | +| F5 | § 1.4 | EPC R.136(1) third sentence: priority-restoration 2-month cut-off — separate rule? | +| F6 | § 1.8 | ZPO §234(1) sentence 2 (Begründungsfrist) — flag-gated or informational sibling? | +| F7 | § 1.x | UPC Wiedereinsetzungs-Gebühr (R.150(1)(p)) — surface as informational rule or out of scope? | +| F8 | § 2.1 | Schriftsatznachreichung existing rule has `is_court_set=false`; strictly it's court-set. Update the row or leave the heuristic in place? | +| F9 | § 2.3 | Confirm `schriftsatznachreichung` is DE-only — cascade should not expose it under UPC entries. | +| F10 | § 3.2 | ZPO §339(2) Auslandszustellung — flag name for `condition_expr` (e.g. `auslandszustellung`). | +| F11 | § 5 | `counterclaim-for-revocation` — link existing UPC_INF rules (proposal 5.2) vs event-rooted CCR rule under te 1 (proposal 5.3) vs both. | +| F12 | § 5 | Many-to-many concept↔rule junction (`paliad.concept_rules`) as a Phase 3+ schema add. | + +--- + +## 9. Sources cited + +| Citation key | Reference | +|---|---| +| `UPC.RoP.320.1` | UPC Rules of Procedure, Rule 320(1) — Application for re-establishment of rights, time limits | +| `UPC.RoP.320.2` | UPC RoP Rule 320(2) — Completion of omitted act | +| `UPC.RoP.150.1.p` | UPC RoP Rule 150(1)(p) — Re-establishment fee | +| `UPC.RoP.25` | UPC RoP Rule 25 — Lodging of Counterclaim for Revocation | +| `UPC.RoP.23.1` | UPC RoP Rule 23(1) — Statement of Defence period (existing rule reference) | +| `EU.EPC-R.136.1` | EPC Implementing Regulations Rule 136(1) | +| `EU.EPC-R.136.2` | EPC Implementing Regulations Rule 136(2) — Exclusions | +| `EU.EPC-R.135.1` | EPC Implementing Regulations Rule 135(1) — Further processing | +| `EU.EPC-R.135.2` | EPC Implementing Regulations Rule 135(2) — Exclusions | +| `EU.EPÜ.122` | European Patent Convention Article 122 | +| `EU.EPÜ.121` | European Patent Convention Article 121 | +| `DE.PatG.123.2` | German Patent Act §123(2) — Wiedereinsetzung | +| `DE.ZPO.233` | German ZPO §233 — Wiedereinsetzung in den vorigen Stand | +| `DE.ZPO.234.1` | German ZPO §234(1) — Antragsfrist (2 Wochen / 1 Monat) | +| `DE.ZPO.234.3` | German ZPO §234(3) — 1-year cut-off | +| `DE.ZPO.296a` | German ZPO §296a — Schriftsatznachreichung | +| `DE.ZPO.339.1` | German ZPO §339(1) — Einspruchsfrist 2 Wochen | +| `DE.ZPO.339.2` | German ZPO §339(2) — Einspruchsfrist Auslandszustellung | +| `DE.ZPO.340` | German ZPO §340 — Inhalt der Einspruchsschrift | +| `DE.ZPO.342` | German ZPO §342 — Rechtsfolge des zulässigen Einspruchs | + +--- + +## 10. What's next (if m approves) + +1. **Track A first** (low risk): apply the 7 linkage UPDATEs from § 6 via `/admin/rules` PATCH. Cascade UX immediately recovers for 4 of 5 concepts. +2. **Track B legal-review pass:** m or HLC lawyer signs off on the 12 new drafts in § 7 — adjust durations / phrasings as needed. +3. **Ingest Track B** via `/admin/rules` POST, one rule at a time. Each new rule goes into `lifecycle_state='draft'` first; m promotes to `published` after spot-checking via the calculator preview endpoint (Slice 11a). +4. **Schema follow-ups** (FLAGs F2, F4, F12) deferred to Phase 3 follow-up tickets — not in Slice 12 scope. + +**Estimated rule count after Slice 12 land:** Track A linkage = 7 connections, Track B new rules = 12 drafts → total `paliad.deadline_rules` row count grows from 249 to **261**; orphan-concept count drops from 5 to **1** (only `counterclaim-for-revocation`, which is by design — see § 5).