Govern Specv0.1
Spec v0.1 — draft

Canonical Slot Vocabulary

The canonical-slot vocabulary is the IDP-/SoR-neutral namespace Govern uses to refer to fields on legal-domain entities. A slot key like matter.responsible_attorney names what the value means without committing to any particular system-of-record’s column name, field ID, or wire format.

This document is the published taxonomy. It is the contract between skill authors, connector authors, external auditors, and firm admins.

Capability tiers

TierDescription
observation-onlyRead access only. No writes. Used for evidence-gathering and matter-context resolution.
mediated-writeWrites gated by Govern policy. Default tier for entity mutations.
mediated-write-financialMediated-write plus explicit per-firm grant for financial-truth slots.

Status legend

Matter slots (35)

The unit of legal work. Has a responsible attorney, a client, and a billing relationship.

SlotStatusTierDescription
matter.nameactivemediated-writeMatter display name (typically matter number + style)
matter.matter_numberactivemediated-writeFirm-assigned human-readable matter identifier (e.g., 2026-0142)
matter.matter_hash_numbercatalogmediated-writeSoR-assigned accession code (the SoR-internal short ID)
matter.clientactivemediated-writeLookup to the matter's client contact
matter.statusactivemediated-writeOpen / closed / on-hold / etc. — values controlled by firm picklist
matter.practice_areaactivemediated-writePractice-area picklist (litigation, transactional, IP, …)
matter.responsible_attorneyactivemediated-writeLookup to the user record of the attorney who owns the matter
matter.billing_partnercatalogmediated-writeLookup to the partner who signs off on bills
matter.paralegalcatalogmediated-writeLookup to the assigned paralegal
matter.associatecatalogmediated-writeLookup to the assigned associate
matter.admincatalogmediated-writeLookup to the matter administrator
matter.other_staffcatalogmediated-writeMulti-lookup for additional staff
matter.matter_open_dateactivemediated-writeDate the matter was opened
matter.matter_close_dateactivemediated-writeDate the matter was closed (null while open)
matter.claim_numbercatalogmediated-writeInsurance claim number (insurance-defense practice)
matter.claim_representativecatalogmediated-writeInsurance claim rep contact
matter.client_matter_idcatalogmediated-writeClient's internal matter ID for cross-reference
matter.state_codeactivemediated-writeTwo-letter state/jurisdiction code
matter.referral_sourcecatalogmediated-writeLookup to the referring contact
matter.referral_source_textcatalogmediated-writeFree-text referral source when no contact is linked
matter.referral_typecatalogmediated-writeReferral category (web, peer, prior client, …)
matter.primary_emailcatalogmediated-writePrimary email for matter correspondence
matter.phonecatalogmediated-writePrimary phone
matter.bill_to_email_address_scatalogmediated-write-financialBill-to email override(s)
matter.bill_to_contact_namecatalogmediated-write-financialBill-to contact name override
matter.bill_to_addresscatalogmediated-write-financialBill-to address override
matter.trust_balancecatalogobservation-onlyRead-only trust account balance. Writing direct trust ledgers is out of scope for v1.
matter.last_billcatalogobservation-onlyDate of most recent issued bill
matter.last_paymentcatalogobservation-onlyDate of most recent payment received
matter.lifetime_fees_receivedcatalogobservation-onlyComputed lifetime fees received
matter.detailed_descriptionactivemediated-writeFull matter description
matter.short_descriptionactivemediated-writeShort summary
matter.quick_notesactivemediated-writeInline notes field
matter.conflict_checkcatalogmediated-writeConflict-check status / outcome
matter.calendar_toolset_refcatalogmediated-writeCalendar/court-rules integration toolset reference

Contact slots (25)

Includes both client contacts and non-client parties (opposing counsel, witnesses, etc.).

SlotStatusTierDescription
contact.nameactivemediated-writeDisplay name
contact.first_nameactivemediated-writeGiven name
contact.last_nameactivemediated-writeFamily name
contact.middle_nameactivemediated-writeMiddle name
contact.prefixcatalogmediated-writeSalutation prefix (Dr., Mr., …)
contact.suffixcatalogmediated-writeSuffix (Jr., III, Esq., …)
contact.titleactivemediated-writeJob title
contact.companyactivemediated-writeCompany name
contact.is_clientactivemediated-writeBool — is this contact a current client?
contact.contact_typeactivemediated-writeType picklist (client, opposing party, witness, …)
contact.contact_statusactivemediated-writeStatus picklist (active, inactive, …)
contact.primary_emailactivemediated-writePrimary email
contact.alternate_emailactivemediated-writeSecondary email
contact.work_phoneactivemediated-writeWork phone
contact.mobile_phoneactivemediated-writeMobile phone
contact.home_phoneactivemediated-writeHome phone
contact.business_addressactivemediated-writeBusiness address
contact.home_addressactivemediated-writeHome address
contact.date_of_birthcatalogmediated-writeDOB (PII; redacted in audit feed by default)
contact.social_seccatalogmediated-writeSSN (PII; redacted in audit feed by default)
contact.bill_to_email_address_scatalogmediated-write-financialBill-to email override(s)
contact.accounting_external_idcatalogobservation-onlyExternal accounting-system row ID
contact.accounting_realmcatalogobservation-onlyExternal accounting-system realm/tenant
contact.accounting_sync_tokencatalogobservation-onlyExternal accounting sync token
contact.accounting_last_syncedcatalogobservation-onlyExternal accounting last-synced timestamp

PNC slots (19)

Prospective New Client — pre-engagement intake record. Becomes a contact + matter at conversion. Other systems call this a “lead” or “prospect”; the pnc. prefix is a candidate for rename to lead. in v2 once a non-CB connector concretely needs it.

SlotStatusTierDescription
pnc.nameactivemediated-writeDisplay name
pnc.first_nameactivemediated-writeGiven name
pnc.last_nameactivemediated-writeFamily name
pnc.companyactivemediated-writeCompany
pnc.primary_emailactivemediated-writePrimary email
pnc.work_phoneactivemediated-writeWork phone
pnc.sourceactivemediated-writeSource picklist (referral, web, walk-in, …)
pnc.statusactivemediated-writeStatus picklist (new, contacted, qualified, …)
pnc.descriptionactivemediated-writeFull intake description
pnc.intake_notesactivemediated-writeIntake notes
pnc.responsible_attorneycatalogmediated-writeLookup to assigned attorney
pnc.practice_areascatalogmediated-writeMulti-picklist of relevant practice areas
pnc.conflict_checkcatalogmediated-writeConflict-check status
pnc.conflict_statuscatalogmediated-writeConflict-check outcome
pnc.expense_budgetcatalogmediated-write-financialAnticipated matter expense budget
pnc.mattercatalogobservation-onlyLookup to converted matter (post-conversion)
pnc.contactcatalogobservation-onlyLookup to converted contact (post-conversion)
pnc.referral_directioncatalogobservation-onlyReferral direction (sent / received)
pnc.consultation_completecatalogobservation-onlyBool — consultation activity complete

Billing-entry slots (27)

Time entries, hard-cost expenses, and AI-spend pass-throughs. Write slots require mediated-write-financial; a small number of post-issuance fields are observation-only. These are catalog-only for v1 — the billing-entry write tools reference field IDs directly today. They migrate to slot-resolved writes in Workstream A.2.

SlotStatusTierDescription
billing_entry.namecatalogmediated-write-financialDisplay name
billing_entry.descriptioncatalogmediated-write-financialBill narrative
billing_entry.mattercatalogmediated-write-financialLookup to matter
billing_entry.billing_codecatalogmediated-write-financialLookup to billing code (UTBMS task code, AI-vendor code, …)
billing_entry.timekeepercatalogmediated-write-financialLookup to timekeeper
billing_entry.entry_datecatalogmediated-write-financialService date
billing_entry.billable_hourscatalogmediated-write-financialHours billed (time entries)
billing_entry.billable_ratecatalogmediated-write-financialRate at which hours are billed
billing_entry.billable_valuecatalogmediated-write-financialComputed billable amount
billing_entry.actual_hourscatalogmediated-write-financialHours worked (may differ from billable)
billing_entry.total_amountcatalogmediated-write-financialTotal amount (post-tax / post-discount)
billing_entry.is_non_billablecatalogmediated-write-financialBool — flag as non-billable
billing_entry.hide_from_billcatalogmediated-write-financialBool — hide from rendered bill
billing_entry.notescatalogmediated-write-financialInternal notes
billing_entry.typecatalogmediated-write-financialEntry type discriminator (time / expense / flat)
billing_entry.accountcatalogmediated-write-financialGL account
billing_entry.payeecatalogmediated-write-financialLookup to payee (for hard-cost expenses)
billing_entry.vendorcatalogmediated-write-financialLookup to vendor record
billing_entry.secondary_billing_codecatalogmediated-write-financialSecondary billing-code lookup
billing_entry.write_down_valuecatalogmediated-write-financialWrite-down amount (negative adjustment)
billing_entry.split_billing_percentagecatalogmediated-write-financialSplit-billing percentage
billing_entry.time_discountcatalogmediated-write-financialTime-entry discount amount
billing_entry.time_flagcatalogmediated-write-financialTime-entry flag column
billing_entry.billcatalogobservation-onlyLookup to issued bill (post-issuance audit only)
billing_entry.accounting_external_idcatalogobservation-onlyExternal accounting-system row ID
billing_entry.accounting_realmcatalogobservation-onlyExternal accounting realm/tenant
billing_entry.accounting_sync_tokencatalogobservation-onlyExternal accounting sync token

Override semantics

The slot resolver runs in priority order:

  1. Per-firm override in the firm’s canonical-slot table (set via /admin/fields/slots or the divergence-detection wizard).
  2. Connector catalog default — the connector’s own CATALOG_DEFAULTS map.

A connector that does not support a slot declares null. Tools attempting to read or write a null slot receive a structured slot_unavailable error from the policy engine, not a runtime adapter failure.

How this vocabulary evolves

core.* slot keys are append-only after v1.0. Renames require a major version bump. To propose a new slot, open a PR adding a row to the appropriate entity table with catalog status. Mark active only when at least one v1 write tool references it.