Files
paliad/docs/proposals/orphan-concepts-2026-05-15.md
mAi d027b0874c docs(t-paliad-196): orphan-concept seed proposals (Fristen Phase 3 Slice 12, draft)
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.
2026-05-15 17:47:30 +02:00

37 KiB
Raw Blame History

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 <proceeding_short>.<action> 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.

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.


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).

-- 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).