Compatible with Concerto versions ^5.0.0. Has 21 declarations.
import id.entity.ext.e4.us.de@0.2.0.EmployerIdentificationNumber from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.DelawareFileNumber from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.RegistrationAuthorityCode from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.JurisdictionCode from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.LegalEntityIdentifier from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.EntityLegalFormCode from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.DelawareCounty from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.UsAddress from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.RegisteredOfficeAndAgent from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.DelawareCorporationKind from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.OfficerTitle from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.Incorporator from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.InitialDirector from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.InitialOfficer from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.AuthorizedStockClass from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.FiscalYearEnd from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.DayWindow from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.BylawsParameters from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.FilingStatus from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.CertificateFiling from /ext-e4-us-de@0.2.0.cto
import id.entity.ext.e4.us.de@0.2.0.DelawareCCorpExtension from /ext-e4-us-de@0.2.0.cto
/*
* E4.US.DE v0.2.0 - Delaware C-Corp formation, properly typed.
*
* Supersedes id.entity.ext.e4.us.de@0.1.0 (five loose Strings). v0.1.0 is NOT
* changed and NOT removed: published model versions are immutable and
* append-only (CLAUDE.md registry rules), and startup-de-ccorp still renders
* from it.
*
* This namespace is the CANONICAL surface for the delaware-ccorp catalog
* package. The flat render concept in that package stays a projection - it is
* not a model - and lib/project-render-data.mjs derives it from the typed
* facts declared here. TemplateMark cannot dispatch on recursive typed
* choices, which is the whole reason the split exists.
*
* Design notes (full reasoning: vault model-factory/research/
* 2026-09-22-concerto-modelling-standards.md):
* - par value is a PreciseAmount, never a Double: USD 0.00001 has no exact
* IEEE-754 representation, and authorizedShares x parValue is the Delaware
* franchise-tax assumed-par-value base.
* - addresses are typed (PostalAddress + USState + a Delaware county), not
* one unparsed String. DGCL 131(c) specifies the registered office as
* "the street, number, city, county and postal code".
* - jurisdiction is stored as "US-DE" in full: a bare "DE" means Delaware in
* the SEC EDGAR code list and Germany in ISO 3166-1.
* - the identity triple (jurisdiction, registeredAt, registeredAs) follows
* GLEIF's own pre-LEI vocabulary; here registrationAuthority + jurisdiction
* + fileNumber.
*
* Known wart, stated rather than hidden: this concept inherits E4's loose
* `RegisteredAgent registeredAgent optional` (name + address as free Strings)
* alongside the typed `registeredOffice` below. Two fields for one fact. The
* clean fix is an id.entity.ext.e4@0.2.0 that types or drops it; until then the
* projection reads `registeredOffice` and ignores the inherited field.
*
* provenance:
* source: the market-standard Delaware C-Corp startup formation set, as
* produced by Stripe Atlas; DGCL 102, 108, 131, 132, 141, 142, 211,
* 213, 222, 228, 232
* licence: Apache-2.0
*/
concerto version "^5.0.0"
namespace id.entity.ext.e4.us.de@0.2.0
import org.accordproject.address@0.2.0.{PostalAddress} from https://models.accordproject.org/address@0.2.0.cto
import org.accordproject.usa.state@0.3.0.{USState} from https://models.accordproject.org/usa/state@0.3.0.cto
import org.accordproject.money@1.0.0.{PreciseAmount} from https://models.accordproject.org/money@1.0.0.cto
import org.accordproject.contact@1.0.0.{EmailAddress} from https://models.accordproject.org/contact@1.0.0.cto
import id.entity.core@2.2.0.{FractionThreshold, DecisionRule} from https://models.entity.id/core@2.2.0.cto
import id.entity.ext.e4@0.1.0.{JurisdictionalConformityExtension} from https://models.entity.id/ext-e4@0.1.0.cto
// ---------------------------------------------------------------------------
// Scalars - one regex per identifier, declared once, reused everywhere.
//
// GOTCHA (verified 2026-09-22): a `default=` on a FIELD whose type is a scalar
// is parsed and then silently ignored - the round-tripped value is undefined.
// Scalar defaults must be declared on the scalar itself, as they are below.
// ---------------------------------------------------------------------------
/** IRS Employer Identification Number, NN-NNNNNNN (Form SS-4 / 147c letter). */
scalar EmployerIdentificationNumber extends String regex=/^[0-9]{2}-[0-9]{7}$/
/**
* Delaware Division of Corporations file number. Sequentially issued, numeric
* only, no published width spec: live GLEIF `registeredAs` values for US-DE
* entities run 7 and 8 digits, practitioner sources report up to 9. A String,
* never an Integer - leading zeros and width changes must survive.
*/
scalar DelawareFileNumber extends String regex=/^[0-9]{1,9}$/
/** GLEIF Registration Authority code - "RA" + 6 digits (RA list v1.8.1). */
scalar RegistrationAuthorityCode extends String default="RA000602" regex=/^RA[0-9]{6}$/
/** ISO 3166-2 subdivision code, e.g. "US-DE" - always with the country prefix. */
scalar JurisdictionCode extends String default="US-DE" regex=/^[A-Z]{2}-[A-Z0-9]{1,3}$/
/** ISO 17442 Legal Entity Identifier: 18 alphanumerics + 2 check digits. */
scalar LegalEntityIdentifier extends String regex=/^[A-Z0-9]{18}[0-9]{2}$/
/**
* ISO 20275 Entity Legal Form code - 4 alphanumerics. A Delaware corporation
* is "XTIQ" (ELF list v1.6, 2026-02-19). A scalar rather than an enum because
* ELF codes may begin with a digit (4FSX, 1HXP, 12N6) and a Concerto enum
* member cannot.
*/
scalar EntityLegalFormCode extends String default="XTIQ" regex=/^[A-Z0-9]{4}$/
/**
* A Delaware county. DGCL 131(c) specifies the registered-office address as
* "the street, number, city, county and postal code" - county is required by
* statute, and no external model surveyed (GLEIF, schema.org, SEC DEI,
* ISO 20022, vCard, OpenCorporates) carries a county field at all.
*/
enum DelawareCounty {
o NEW_CASTLE
o KENT
o SUSSEX
}
// ---------------------------------------------------------------------------
// Addresses - one typed shape, three roles (SUP-89 three-address discipline).
// ---------------------------------------------------------------------------
/**
* A US mailing address. WRAPS the accordproject PostalAddress (whose fields
* are all optional and whose addressRegion is a free String) rather than
* extending it - a Concerto subclass cannot make an inherited optional field
* required - and adds the two things a Delaware filing actually requires: a
* typed state and, for the registered office, a county.
*/
concept UsAddress {
o PostalAddress postalAddress
o USState state
o String postalCode regex=/^[0-9]{5}(-[0-9]{4})?$/
o DelawareCounty county optional
}
/**
* The registered office and the registered agent at it (DGCL 131, 132). One
* legal fact, not two - an agent is always "at such address" - so one concept.
* DGCL 132(b) forbids an agent operating solely through a virtual office or
* mail forwarding, so this is a physical-address fact.
*/
concept RegisteredOfficeAndAgent {
o String agentName length=[1,255]
o UsAddress office
o String agentFileNumber optional
o EmailAddress agentEmail optional
}
// ---------------------------------------------------------------------------
// Persons acting in the formation.
// ---------------------------------------------------------------------------
/**
* The six distinct Delaware incorporation forms. Orthogonal to the ELF code:
* ISO 20275 v1.6 gives Delaware exactly ONE corporate form, XTIQ
* "Corporation", so public benefit, close, non-stock and exempt corporations
* all collapse into it - even though the distinction is legally load-bearing
* (DGCL subch. XIV for close, subch. XV for public benefit).
*/
enum DelawareCorporationKind {
o GENERAL_STOCK
o STOCK_WITH_DIRECTOR_LIABILITY_LIMITATION
o CLOSE
o PUBLIC_BENEFIT
o NON_STOCK
o EXEMPT
}
enum OfficerTitle {
o CHAIR_OF_THE_BOARD
o CHIEF_EXECUTIVE_OFFICER
o PRESIDENT
o CHIEF_FINANCIAL_OFFICER
o TREASURER
o SECRETARY
o VICE_PRESIDENT
o ASSISTANT_SECRETARY
o ASSISTANT_TREASURER
}
/**
* The sole incorporator (DGCL 108). Named separately from the Constituent roll
* because the incorporator resigns on the board's appointment and is then no
* longer a constituent of anything.
*/
concept Incorporator {
o String name length=[1,255]
o UsAddress mailingAddress
o Boolean resignsOnBoardAppointment default=true
}
/** A director named in the initial action by the sole incorporator. */
concept InitialDirector {
o String name length=[1,255]
o DateTime appointedOn optional
}
/**
* An officer appointed by the initial board. Dated on both ends, following
* W3C org: `Membership` + `memberDuring` and OpenCorporates `officers[]`
* {position, start_date, end_date} - a role with a term, not a name in a list.
* schema.org's undated `member` is the pattern to avoid.
*/
concept InitialOfficer {
o String name length=[1,255]
o OfficerTitle title
o DateTime appointedOn optional
o DateTime endedOn optional
}
// ---------------------------------------------------------------------------
// Capital stock - the numbers the certificate states (DGCL 102(a)(4)).
// ---------------------------------------------------------------------------
/**
* One authorized class of stock.
*
* parValue is a PreciseAmount, not a Double: a market-standard startup par of
* $0.00001 has no exact IEEE-754 representation, and par x shares is the
* franchise-tax base. unscaledValue "1" with unit scale 5 is exact.
*/
concept AuthorizedStockClass {
o String name length=[1,64]
o Long authorizedShares range=[1,]
o PreciseAmount parValue
o Boolean voting default=true
o Boolean blankCheck default=false
}
// ---------------------------------------------------------------------------
// Bylaws - the numbers currently frozen in the prose.
// Every default below is the value the source set already fixes, so an
// instance that omits the whole block renders today's document unchanged.
// ---------------------------------------------------------------------------
enum FiscalYearEnd {
o DECEMBER_31
o JUNE_30
o AS_FIXED_BY_BOARD
}
/** A window in days, inclusive at both ends (DGCL 222: 10 to 60). */
concept DayWindow {
o Integer minDays range=[0,]
o Integer maxDays range=[0,]
}
/**
* The parameters of the bylaws: the values Delaware lets a corporation choose.
* Everything else in the fifteen articles is fixed text.
*/
concept BylawsParameters {
/* DGCL 222 - notice of a stockholders' meeting (bylaws Section 7). */
o DayWindow stockholderMeetingNotice optional
/* Window in which a properly requested special meeting must be held
(bylaws Section 6(b)). */
o DayWindow specialMeetingWindow optional
/* DGCL 213 - the record date may not precede the meeting by more than
recordDateMaxDays nor fall within recordDateMinDays (Section 12(a)). */
o Integer recordDateMaxDays default=60 range=[1,60]
o Integer recordDateMinDays default=10 range=[1,60]
/* Re-notice threshold for an adjourned meeting (Section 9). */
o Integer adjournmentRenoticeDays default=30 range=[1,]
/* Percentage of voting power that may call a special meeting (Section 6(a)). */
o Integer specialMeetingCallPercent default=50 range=[1,100]
/* DGCL 141(b) - board quorum, and the floor it may never fall below. */
o FractionThreshold boardQuorum optional
o FractionThreshold boardQuorumFloor optional
/* DGCL 141(b) - the authorized number of directors. */
o Integer minDirectors default=1 range=[1,]
o Integer maxDirectors range=[1,] optional
o Boolean directorsMustBeStockholders default=false
/* Right of first refusal on transfers - the corporation's option period
(Section 38(b)). */
o Integer transferOptionPeriodDays default=30 range=[1,]
o FiscalYearEnd fiscalYearEnd default="AS_FIXED_BY_BOARD"
/* Whether the CGCL 2115(b) quasi-California provisions are carried. */
o Boolean californiaSection2115Provisions default=true
/* Which officer roles the bylaws require to exist. */
o OfficerTitle[] requiredOfficers optional
/* Who may amend the bylaws - typed, not prose (Article XIII). */
o DecisionRule amendedBy optional
}
// ---------------------------------------------------------------------------
// The filing itself.
// ---------------------------------------------------------------------------
enum FilingStatus {
o DRAFT
o SUBSCRIBED
o FILED
o EFFECTIVE
o REJECTED
}
/**
* The certificate as filed, with the facts the Division of Corporations
* returns. Separated from the parameters above because these are facts about
* the world, not choices the founder makes.
*/
concept CertificateFiling {
o FilingStatus status default="DRAFT"
o DelawareCorporationKind corporationKind default="GENERAL_STOCK"
o DateTime subscribedOn
o DateTime filedOn optional
o DateTime effectiveOn optional
o DelawareFileNumber fileNumber optional
o EmployerIdentificationNumber ein optional
o LegalEntityIdentifier lei optional
o EntityLegalFormCode entityLegalFormCode
/*
* GLEIF Registration Authority code for the registrar of record. Delaware's
* is RA000602 ("Division of Corporations, Department of State", RA list
* v1.8.1). With `jurisdiction` and `fileNumber` this is the pre-LEI identity
* triple GLEIF itself uses.
*/
o RegistrationAuthorityCode registrationAuthority
/*
* ISO 3166-2, e.g. "US-DE". Stored in full: a bare "DE" means Delaware in
* the SEC EDGAR code list and Germany in ISO 3166-1, and the DEI taxonomy
* carries BOTH meanings in different item types.
*/
o JurisdictionCode jurisdiction
}
// ---------------------------------------------------------------------------
// The extension.
// ---------------------------------------------------------------------------
/**
* Delaware C-Corp conformity, v0.2.0. Attaches to an
* id.entity.core@2.2.0.Constitution through clause 6.2 exactly as v0.1.0 did,
* so nothing about the Core contract changes.
*
* Share economics stay in E1 (UnitClass/Holding). `authorizedStock` here is the
* CERTIFICATE'S statement of authorized capital - a legal assertion in a filed
* document, a different fact from the register's economic model. The two are
* reconciled by an explicit check in the projection, not by one silently
* standing in for the other.
*/
concept DelawareCCorpExtension extends JurisdictionalConformityExtension {
o Incorporator incorporator
o RegisteredOfficeAndAgent registeredOffice
o UsAddress principalOffice optional
o AuthorizedStockClass[] authorizedStock size=[1,]
o InitialDirector[] initialDirectors optional
o InitialOfficer[] initialOfficers optional
o BylawsParameters bylaws
o CertificateFiling filing
o String statedBusinessPurpose length=[1,2000] optional
}