-- | Korean Civil Act (민법) — Type-Level Stratified Deontic Encoding
--
-- = Coverage Summary
--
-- == 총칙 (General Provisions)
--
-- @
-- Module              Articles   Act Type              Layers                              Pattern
-- ──────────────────  ─────────  ────────────────────  ──────────────────────────────────  ─────────────────────────
-- Persons             §5         MinorAct              '[Proviso, Base]                    단서 override
-- Acts                §103-110   JuristicAct           '[SpecialRule, Proviso, Base]       3-layer stack
--                     §108       ShamAct               '[Proviso, Base]                    제3자 보호 (proviso)
--                     §109       MistakeAct            '[Proviso, Base]                    중과실 방어 (proviso)
--                     §110       FraudAct              '[Proviso, Base]                    제3자 사기 (proviso)
-- Agency              §114,§118  AuthAgencyAct         '[Proviso, Base]                    자기계약 금지
--                     §125-132   UnauthAgencyAct       '[ApparentAuth, Ratification, Base] 표현대리·추인
-- Rescission          §146       RescissionAct         '[Base]                             제척기간 (3년\/10년, §157 역산)
-- AgencyRemedies     §134-135   AgencyWithdrawalAct   '[CounterpartyKnowledge, Base]       상대방 악의 면책
--                               AgentLiabilityAct     '[Proviso, Base]                     대리인 면책
-- Invalidity         §137-139   PartialInvalidityAct  '[Conversion, HypotheticalIntent, Base] 일부무효·전환·추인
-- Cancellation       §141-145   CancellableAct        '[ConstructiveRatification, GeneralRatification, Base] wrapper pattern
-- ConditionalAct     §147-152   ConditionalAct        '[BadFaithCondition, IllegalCondition, Base] 정지\/해제조건·시기\/종기
-- @
--
-- == 물권법 (Property Law)
--
-- @
-- Module              Articles   Act Type              Layers                              Pattern
-- ──────────────────  ─────────  ────────────────────  ──────────────────────────────────  ─────────────────────────
-- Possession          §197,§200  PossessionAct         '[Rebuttal, Presumption]            반증에 의한 추정 번복
-- PropertyTransfer    §186-188   PropertyTransferAct   '[FormException, Base]              등기\/인도 + §187 예외
-- CoOwnership         §264       CoOwnershipAct        '[Base]                             전원 동의 (∀ quantification)
-- AcqPrescription     §245       AcqPrescriptionAct    '[ShortPrescription, Base]          20년\/10년 (§157 역산)
-- @
--
-- == 채권 총론 (General Obligations)
--
-- @
-- Module              Articles   Act Type              Layers                              Pattern
-- ──────────────────  ─────────  ────────────────────  ──────────────────────────────────  ─────────────────────────
-- Prescription        §162-174   PrescriptionAct       '[Interruption, Expiration]         시효만료 + 중단 (§157 역산)
-- DefaultObligation   §387-390   DefaultAct            '[CreditorDefense, Base]            이행지체·불능 + 채권자과실
-- @
--
-- == 채권 각론 (Specific Obligations)
--
-- @
-- Module              Articles   Act Type              Layers                              Pattern
-- ──────────────────  ─────────  ────────────────────  ──────────────────────────────────  ─────────────────────────
-- SaleWarranty        §580-582   WarrantyAct           '[BuyerKnowledge, Base]             하자담보 + 매수인 악의 면책
-- Lease               §618-640   LeaseAct              '[RenewalRight, Base]               묵시적 갱신 + 2기 연체 해지
-- @
--
-- == 불법행위 (Torts)
--
-- @
-- Module              Articles   Act Type              Layers                              Pattern
-- ──────────────────  ─────────  ────────────────────  ──────────────────────────────────  ─────────────────────────
-- Tort                §750,§396  TortAct               '[ContributoryNeg, Base]            4요건 + 과실상계
-- @
--
-- = Defeasibility Patterns Used
--
-- * __단서 override__ — Proviso layer overrides Base when exception applies (§5①)
-- * __3-layer stack__ — SpecialRule > Proviso > Base for graduated defeasibility (§103-107)
-- * __Rebuttable presumption__ — Presumption (default Valid) + Rebuttal override; absence = delegation (§197)
-- * __Lex specialis__ — FormException overrides general formality rule (§187 vs §186)
-- * __Temporal reasoning__ — 'Day' dates with 'addGregorianYearsClip' per §157 역산 (§146, §162, §245)
-- * __Universal quantification__ — @all@ over owners list in instance body (§264)
-- * __Verdict-conditional override__ — override fires only when @verdict prev == Void@ (§390, §396, §580②)
-- * __Multi-condition override__ — conjunction of several facts required (§639 묵시적 갱신)
-- * __Wrapper pattern__ — CancellableAct takes prior Verdict as input, applies meta-rules (§141-§145)
-- * __Deemed fulfillment__ — bad faith re-evaluates condition state via recursive query (§150)
--
-- = Fact Type Strategy
--
-- * @Set CivilFact@ — for boolean\/flag-based facts (§5, §103-110, §114-132, §186-188, §197-200)
-- * Domain records — stored in @DMap DomainKey Identity@ (from @dependent-map@),
--   keyed by 'DomainKey' GADT: 'PrescriptionFacts', 'RescissionFacts',
--   'AcqPrescFacts', 'DefaultFacts', 'WarrantyFacts', 'LeaseFacts', 'CoOwnershipFacts', 'TortFacts',
--   'PartialInvalidityFacts', 'CancellationFacts', 'ConditionalFacts'
--
-- = Test Coverage
--
-- 203 tests across unit tests (per-module), case studies (multi-issue disputes),
-- and real-case tests (based on 대법원 판례).
--
module Deontic.Civil
  ( -- * Re-exports
    module Deontic.Civil.Types
  , module Deontic.Civil.Persons
  , module Deontic.Civil.Acts
  , module Deontic.Civil.Agency
  , module Deontic.Civil.CoOwnership
  , module Deontic.Civil.Possession
  , module Deontic.Civil.Prescription
  , module Deontic.Civil.Tort
  , module Deontic.Civil.Rescission
  , module Deontic.Civil.PropertyTransfer
  , module Deontic.Civil.AcquisitivePrescription
  , module Deontic.Civil.DefaultObligation
  , module Deontic.Civil.SaleWarranty
  , module Deontic.Civil.Lease
  , module Deontic.Civil.AgencyRemedies
  , module Deontic.Civil.Invalidity
  , module Deontic.Civil.Cancellation
  , module Deontic.Civil.ConditionalAct
  , module Deontic.Civil.Render
  , module Deontic.Civil.Evaluate
  ) where

import Deontic.Civil.Types
import Deontic.Civil.Persons ()
import Deontic.Civil.Acts ()
import Deontic.Civil.Agency ()
import Deontic.Civil.CoOwnership ()
import Deontic.Civil.Possession ()
import Deontic.Civil.Prescription ()
import Deontic.Civil.Tort ()
import Deontic.Civil.Rescission ()
import Deontic.Civil.PropertyTransfer ()
import Deontic.Civil.AcquisitivePrescription ()
import Deontic.Civil.DefaultObligation ()
import Deontic.Civil.SaleWarranty ()
import Deontic.Civil.Lease ()
import Deontic.Civil.AgencyRemedies ()
import Deontic.Civil.Invalidity ()
import Deontic.Civil.Cancellation ()
import Deontic.Civil.ConditionalAct ()
import Deontic.Civil.Render
import Deontic.Civil.Evaluate