/** * Founder-separation companion memo. * * Every `--memo` attempt against a founder template used to fail as * "employment-only" (legal-explainer#2572), so a user filling a founder * separation package got the documents and nothing that recorded WHICH source * records the package leaned on, WHICH branch of each optional provision was * taken, WHAT was still unresolved, or WHICH approvals the package still * needed. This module produces that companion. * * Two rules govern what this memo may say. * * 1. It is operational information, never legal advice. It reuses the same * `../memo/advice-language.js` guard the employment memo established, and * asserts on the finished artifact that no prescriptive phrasing survived. * * 2. It reports only what the fill values and the template metadata actually * establish. OpenAgreements never receives the RSPA, the CIIAA, the charter, * the stock ledger, or a certificate image — a founder fill supplies figures * ABOUT those records, not the records. So a share count in the values is * recorded as ASSERTED and listed as unresolved until reconciled against the * original; the memo never claims a vesting schedule reconciles. That * restraint is the point: a package whose unvested-share figure cannot be * derived from anything supplied is exactly what an unresolved-facts section * exists to surface. */ import { type TemplateMetadata } from '../metadata.js'; export type FounderMemoFormat = 'json' | 'markdown' | 'both'; export type FounderUnresolvedSeverity = 'low' | 'medium' | 'high'; export type FounderApprovalStatus = 'recorded_in_values' | 'not_recorded' | 'depends_on_records_not_supplied'; export interface FounderSourceDocument { id: string; label: string; /** Field whose value cites the record, when the citation came from a field. */ cited_by_field?: string; /** The citation text exactly as the fill supplied it. */ cited_as?: string; /** Always false: a fill supplies facts about these records, never the records. */ supplied_to_this_tool: false; dependency_note: string; } export interface FounderBranchDecision { id: string; field: string; selected: string; available_options: string[]; options_not_selected: string[]; consequence: string; /** Other templates in the package that read the same field and must agree. */ must_match_in?: string[]; } export interface FounderUnresolvedFact { id: string; severity: FounderUnresolvedSeverity; summary: string; evidence_fields: string[]; follow_up_question: string; } export interface FounderApproval { id: string; approval: string; status: FounderApprovalStatus; evidence_fields: string[]; note: string; } export interface FounderMemoCounselEscalation { escalation_recommended: boolean; reason: string; high_severity_ids: string[]; /** Approvals whose authority rests on records this tool never received. */ outstanding_approval_dependency_ids: string[]; guidance: string; follow_up_questions: string[]; } export interface FounderMemo { memo_version: string; generated_at: string; template_id: string; matter_family: 'founder-separation'; document_name: string; disclaimer: string; source_documents: FounderSourceDocument[]; branch_decisions: FounderBranchDecision[]; unresolved_facts: FounderUnresolvedFact[]; approvals: FounderApproval[]; counsel_escalation: FounderMemoCounselEscalation; } export interface GenerateFounderMemoOptions { templateId: string; templateMetadata: TemplateMetadata; values: Record; generatedAt?: string; } export declare const FOUNDER_MEMO_DISCLAIMER = "This founder separation memo provides operational information about template fields, the records those fields cite, and the branch choices taken in this fill. It is not legal advice, does not recommend legal strategy, and does not predict legal outcomes. Consult a licensed attorney for legal advice."; /** * Templates the founder memo has an authored approval profile for. A founder * template that ships without one still produces a memo, but without the * approval section the family exists to provide — so * `integration-tests/memo-families.test.ts` asserts this covers every installed * founder template, and a new one fails the gate until its profile is written. */ export declare function founderTemplateIdsWithApprovalProfile(): string[]; export declare function isFounderTemplateId(templateId: string): boolean; export declare function generateFounderMemo(options: GenerateFounderMemoOptions): FounderMemo; export declare function renderFounderMemoMarkdown(memo: FounderMemo): string; //# sourceMappingURL=memo.d.ts.map