RequiemOS Contract Management · Walkthrough 2026-05-27
Walkthrough

A Contract’s Life
at Kearney

One at-need contract followed from GPL to reconciliation. Package selection, removable toggles, à la carte, the discount, an amendment, and the close gate.

The Henderson family. A standard cremation. The contract is built at arrangement on Monday, amended on Tuesday after prep discovers a pacemaker, and closed on the following Monday once services rendered are reconciled against what was actually delivered.

Artefact
Kearney’s GPL
The regulated price list. One per tenant, composed of packages, with line items shared across packages by stable identity.
Family
The Hendersons
Three generations with Kearney. Arrange Monday morning, return Monday next to receive the urn.
Director
Sophie
Builds the contract, applies the multi-generational discount, escalates to David for approval.
Approver
David
Senior director. Approves discounts that exceed Kearney’s 15% threshold.
Owner
Margaret
Doesn’t build contracts. Reviews the discount activity report at month-end.

One GPL. A collection of packages. Line items with stable identity across them.

Standard Cremation

Package · package_type: standard
Basic services of director & staff $1,895.00
Local transfer of remains $425.00
Refrigeration (per day, first 3 days) $0.00
Cremation container (alternative) $185.00
Urn — Standard removable $295.00
Crematory fee $385.00
Memorial coordination (1 hr) $165.00
Package price $3,350.00

Same line items, à la carte

From the catalogue · unit_price
Basic services of director & staff $2,150.00
Local transfer of remains $485.00
Refrigeration (per day) $55.00
Cremation container $225.00
Urn — Standard $345.00
Crematory fee $425.00
Memorial coordination (hr) $195.00
Per ADR-017 (Proposed), line items are tenant-scoped with stable identity — “Local transfer of remains” is the same gpl_line_items row whether it appears here in Standard, in a Trade package, or à la carte. The price differs by context: gpl_package_line_items.included_price is the authoritative price for items inside a package, gpl_line_items.unit_price is the à la carte price. Cross-package reporting (“how often did Kearney bill Local Transfer this quarter?”) is a single GROUP BY gpl_line_item_id.

Sophie builds the contract while the family sits across the table.

Module · gpl_package_selection
Tableau A

The package is selected.

Sophie picks Standard Cremation from the package list filtered by disposition type. The platform materialises seven line items at source_type = package_base, each carrying a snapshot of its package-context price from gpl_package_line_items.included_price.

Sophie · selecting from packages
Contract draft · v.0 DRAFT
·Basic services of director & staff package_base1,895.00
·Local transfer of remains package_base425.00
·Refrigeration package_base0.00
·Cremation container package_base185.00
·Urn — Standard package_base295.00
·Crematory fee package_base385.00
·Memorial coordination package_base165.00
Package subtotal3,350.00
Tableau B

The Hendersons already own an urn.

Sophie toggles “Urn — Standard” off. The platform writes a new line at source_type = package_removed with a negative line_total. The original package_base row stays in place, visible with strikethrough.

Both rows persist so the audit trail records both what the package included and what the family opted out of. The snapshot-pricing rule on contract line items is what carries the original package-context price forward even if the catalogue changes later.

Sophie · toggling a removable item
Contract draft · v.0 DRAFT
·Basic services of director & staff1,895.00
·Local transfer of remains425.00
·Refrigeration0.00
·Cremation container185.00
Urn — Standard package_removed−295.00
·Crematory fee385.00
·Memorial coordination165.00
Package subtotal3,055.00
Tableau C

Two additions outside the package.

The family wants a death-notice placement and a second hour of memorial coordination. Both land as source_type = ala_carte, snapshot-priced from the gpl_line_items.unit_price catalogue. The package discount, when it lands, will not touch these — à la carte is outside the package.

Sophie · adding à la carte
Contract draft · v.0 DRAFT
·Basic services of director & staff1,895.00
·Local transfer of remains425.00
·Refrigeration0.00
·Cremation container185.00
Urn — Standard−295.00
·Crematory fee385.00
·Memorial coordination165.00
Package subtotal3,055.00
+Death notice — local paper ala_carte285.00
+Memorial coordination, additional hour ala_carte195.00
À la carte subtotal480.00
Tableau D

A 20% discount, requiring approval.

The Hendersons are a three-generation Kearney family. Sophie enters a 20% discount with a captured reason. Because 20% meets Kearney’s discount_approval_threshold_percent of 15%, the platform refuses to save until an approver is recorded. Sophie taps David; he countersigns from his desk.

The discount is a structured property of case_contracts, not a line item. It applies only to the package portion. The à la carte items above are untouched.

Sophie applies · David approves
Contract draft · v.0 DRAFT
Package subtotal3,055.00
%Package discount — 20%−611.00
Package after discount2,444.00
À la carte subtotal480.00
Captured on case_contracts package_discount_percent: 20 · package_discount_reason: “Multi-generational customer — three generations with Kearney.” · package_discount_approved_by_id: David Chen (above 15% threshold)
Tableau E

The totals compute, in order.

Per the contract’s fixed computation order: package subtotal, then package discount, then à la carte subtotal, then a manual tax entry by the director, then the contract total. Each total is recomputed on every change.

Automated PST and GST is Phase 2. At MVP, the director enters tax as a single number.

Sophie · entering tax
Contract draft · v.0 READY TO SIGN
Package subtotal3,055.00
%Package discount — 20%−611.00
À la carte subtotal480.00
Subtotal2,924.00
Tax (PST + GST)351.00
Contract total$3,275.00
Tableau F

The family signs.

The signing surface generates the contract PDF from the structured rows. The Hendersons sign through DocuSign on the tablet in the arrangement room. The envelope returns; the signed PDF lands in S3 through the existing Storage:: service; case_contracts.status flips to signed; signed_at, signed_by_id, and case_document_id are written.

The contract_execution document_gate module’s precondition (status = 'signed' and contract_total > 0) is satisfied. The workflow can proceed.

The Hendersons sign · DocuSign envelope returns
Contract · v.1 SIGNED
Contract total$3,275.00
signed_atMon · 11:42
signed_by_idMartha Henderson (executor)
case_document_idcase_doc_4f8a…
current_version1

Prep discovers a pacemaker the family didn’t know about.

Module · medical_device_check
Tableau G

An incidental added after signing.

Rob, the licensed embalmer, examines the remains and discovers a pacemaker not in the intake records. The medical_device_check module records the removal as required before cremation. The device removal itself is service delivery; the resulting fee is a contract concern.

Sophie creates an amendment with amendment_category = mandatory_discovery, version 1, with a captured reason. One new line item is added at source_type = incidental_post_signing for $150. The amendment’s net dollar impact — amendment_total — is $168 with tax.

Rob discovers · Sophie amends
Amendment · v.2 PENDING RE-SIGN
+Pacemaker removal & disposal incidental_post_signing150.00
·Tax adjustment18.00
amendment_total168.00
New contract total$3,443.00
amendment_categorymandatory_discovery
reason“Pacemaker discovered during prep”
requires_resignatureTRUE
Why re-sign. Kearney’s resignature_threshold_amount is $100, resignature_threshold_percent is 5%, whichever is greater. $168 exceeds the $100 floor. The amendment flags requires_resignature = TRUE; case closure is now blocked on the re-signature. Per §6.10, the category does not gate this — the dollar impact does. A small mandatory_discovery below threshold would not require re-sign; a large discretionary above threshold would.
Tableau H

The Hendersons re-sign — for the amendment only.

The signing surface routes a one-page amendment-only document via DocuSign. Martha countersigns from her phone over coffee. resigned_at, resigned_by_id, and resigned_case_document_id are recorded on the amendment row. case_contracts.status remains amended; the re-signature blocker on case closure lifts.

The amendment row itself is immutable. Any correction will be a new amendment with category correction referencing this one — supersession, per §6.9.

Martha Henderson re-signs · case closure unblocked
Amendment · v.2 RE-SIGNED
Contract total$3,443.00
resigned_atTue · 14:08
resigned_by_idMartha Henderson
case_contracts.statusamended
current_version2

Three unreconciled services. The director resolves each one.

After disposition completes and asset_terminal_check passes, the service_contract_reconciliation module activates. The platform pulls every case_services_rendered row with reconciled_contract_line_item_id IS NULL. Three rows remain unreconciled. Per ADR-016 Rule 5, this is Contract Management reading Layer 4 across an aggregate boundary.

Service rendered Source Resolution
Pacemaker removal
module_completion
medical_device_check completed Tue 09:30
Match to existing line item.
Already covered by the Tuesday amendment. reconciled_contract_line_item_id set to the incidental line. No contract change.
After-hours family meeting — 1.5 hours
manual_director_entry
Recorded by Sophie Thu evening, never quoted
Add as amendment.
Opens a v.3 amendment with amendment_category = reconciliation. New line at source_type = incidental_post_signing for $245. Below re-sign threshold; Sophie signs off internally.
Florist vendor coordination — 30 min
manual_director_entry
Sophie’s note — “should have been in the quote”
Mark as no-charge.
Director judgment: comped due to quoting error. Captured note explains why. The package discount is unaffected — no-charge is a per-service reconciliation outcome, not a discount mechanism.
service_contract_reconciliation completes when zero case_services_rendered rows for this case remain at reconciled_contract_line_item_id IS NULL. The case_close module’s precondition is satisfied. The case closes.
  1. The GPL is queryable and effective-dated. Every price on the Henderson contract traces to a specific row — gpl_package_line_items.included_price for package context, gpl_line_items.unit_price for à la carte — at the date the contract was created. A regulator asking “what was the disclosed price for memorial coordination on this date?” has a deterministic answer.
  2. The signed PDF is the legal attestation. The structured rows are the source of truth. The PDF is in S3 with a tamper-evidence hash. The case_contract_line_items rows are what answer business questions like “every case this quarter that included a death-notice placement” without opening a single PDF.
  3. Amendments are routine, categorised, and threshold-gated for re-signature. Five categories — discretionary, mandatory_discovery, correction, reconciliation, discount_adjustment. Version-numbered per contract. Whether the family must re-sign is determined by dollar impact against the tenant threshold, not by category.
  4. Reconciliation closes the revenue-leakage gap. Layer 4 (case_services_rendered) records what was delivered — automatically from modules, manually from directors. At close, every row resolves: matched to an existing line, added as an amendment, or marked no-charge with a captured reason. The case cannot close until every service is accounted for.

Scope of this walkthrough

This is at-need. Pre-need uses the same GPL, the same package selection, and the same line-item shape, with three differences: it references a Person directly (no Case yet), pricing is locked at signing rather than current-on-arrangement-day, and activation at need-time produces a new at-need contract via the conversion service per ADR-016 Boundary Rule 3. Late attachment — the family producing a pre-need at the arrangement meeting — triggers identical conversion mechanics. See pre-need-contracts-prd.md.

The signing surface that produces the DocuSign envelopes, the priority chain for cremation authorisation (BC: spouse → adult child → parent → sibling → executor), and the five locked document_gate modules live in documents-and-signing-prd.md. The GPL structural model lives in ADR-017 (Proposed). The four-layer audit architecture — including Layer 4 services rendered — lives in ADR-014. The aggregate boundaries are set in ADR-016.