Skip to main content

Variable: SetupFrameworkAnswersV2

const SetupFrameworkAnswersV2: TObject<{ name: TWith<TString, { description: "The framework's title."; }>; primaryDocument: TObject<{ administeringAuthority: TOptional<TObject<{ contact: TWith<TString, { description: "Its address: a role mailbox such as `trust-office@`, never a person's."; }>; delegatedRole: TWith<TString, { description: "What the governing authority has delegated to it."; }>; did: TOptional<TWith<TString, { description: "Its DID. Optional in the schema because it is minted after the first draft; publishing a version 2 framework requires it (T2b)."; }>>; jurisdiction: TWith<TString, { description: "Where it is constituted: ISO 3166-1 alpha-2, with an optional subdivision."; }>; legalName: TWith<TString, { description: "Its full legal name, as registered in its jurisdiction."; }>; lei: TOptional<TWith<TString, { description: "Its Legal Entity Identifier, where it has one."; }>>; name: TWith<TString, { description: "The institution, as a reader names it."; }>; website: TOptional<TWith<TString, { description: "The framework's website, with every document in HTML and PDF."; }>>; }>>; controlledDocuments: TArray<TObject<{ category: TWith<TUnsafe<"glossary" | "risk-assessment" | "trust-assurance" | "governance-requirements" | "business-requirements" | "technical-requirements" | "information-trust-requirements" | "inclusion-equitability-accessibility" | "legal-agreements">, { description: "Which of the Metamodel's nine categories it belongs to."; }>; description: TOptional<TString>; digest: TWith<TString, { description: "SHA-256 of the bytes served at `uri`, so a reader can tell it is this version."; }>; id: TWith<TString, { description: "The document within the schedule, the same across its versions and languages. What other sections cite."; }>; language: TWith<TString, { description: "The language it is written in."; }>; title: TWith<TString, { description: "Its title, in its own language."; }>; uri: TWith<TString, { description: "Where this version is served."; }>; version: TInteger; }>>; extensions: TUnion<[TObject<{ allowed: TLiteral<false>; paragraphs: TOptional<TArray<TString>>; }>, TObject<{ activation: TWith<TString, { description: `How an extension framework is ${(...)}.`; }>; allowed: TLiteral<true>; approval: TWith<TString, { description: `How an extension framework is ${(...)}.`; }>; deactivation: TWith<TString, { description: `How an extension framework is ${(...)}.`; }>; notification: TWith<TString, { description: `How an extension framework is ${(...)}.`; }>; paragraphs: TOptional<TArray<TString>>; registration: TWith<TString, { description: `How an extension framework is ${(...)}.`; }>; }>]>; generalRequirements: TArray<TObject<{ id: TWith<TString, { description: `The ${string}'s name, stable across versions so that a decision or another section can cite it.`; }>; statement: TWith<TString, { description: "The requirement, opening with its RFC 2119 keyword."; }>; topic: TUnsafe<"other" | "responsible-use" | "regulatory-compliance" | "code-of-conduct">; }>>; governingAuthority: TObject<{ contact: TWith<TString, { description: "Its address: a role mailbox such as `trust-office@`, never a person's."; }>; jurisdiction: TWith<TString, { description: "Where it is constituted: ISO 3166-1 alpha-2, with an optional subdivision."; }>; legalName: TWith<TString, { description: "Its full legal name, as registered in its jurisdiction."; }>; lei: TOptional<TWith<TString, { description: "Its Legal Entity Identifier, where it has one."; }>>; name: TWith<TString, { description: "The institution, as a reader names it."; }>; website: TOptional<TWith<TString, { description: "The framework's website, with every document in HTML and PDF."; }>>; }>; introduction: TObject<{ acknowledgements: TOptional<TArray<TString>>; metamodelVersion: TWith<TUnsafe<"1.0">, { description: "The ToIP Governance Metamodel version the document follows. Only `1.0` exists."; }>; paragraphs: TWith<TArray<TString>, { description: "The background: why the framework exists and where it sits in the ToIP stack."; }>; references: TOptional<TArray<TObject<{ title: TWith<..., ...>; uri: TWith<..., ...>; }>>>; }>; localization: TObject<{ languages: TArray<TString>; translationPolicy: TOptional<TArray<TString>>; translations: TOptional<TArray<TObject<{ digest: TWith<..., ...>; language: TString; uri: TString; }>>>; }>; objectives: TArray<TObject<{ id: TWith<TString, { description: `The ${string}'s name, stable across versions so that a decision or another section can cite it.`; }>; statement: TString; }>>; principles: TArray<TObject<{ id: TWith<TString, { description: `The ${string}'s name, stable across versions so that a decision or another section can cite it.`; }>; statement: TString; }>>; purpose: TWith<TString, { description: "Section 1.6: what the framework is for, in one paragraph."; }>; revisions: TObject<{ procedure: TWith<TArray<TString>, { description: "How a revision is drafted, reviewed and approved, and how each version gets its DID URL. A published version is never edited; a change is the next version."; }>; publicReviewDays: TOptional<TInteger>; }>; scope: TObject<{ governedArtifacts: TOptional<TArray<TString>>; interactions: TOptional<TArray<TString>>; outOfScope: TOptional<TArray<TString>>; stakeholders: TOptional<TArray<TString>>; }>; terminology: TObject<{ glossaryDocuments: TArray<TString>; paragraphs: TOptional<TArray<TString>>; requirementKeywords: TWith<TLiteral<"bcp14">, { description: "The keyword convention: BCP 14 (RFC 2119 with RFC 8174), so a keyword is one only when capitalised. A constant, because the schema enforces it on every requirement; the field is what makes the document say so."; }>; toipGlossary: TWith<TString, { description: "The ToIP Governance Requirements Glossary the framework adopts."; }>; }>; }>; roles: TArray<TObject<{ admissionCriteria: TArray<TObject<{ enforcedBy: TUnsafe<"pipeline" | "metadata-policy" | "trust-mark" | "audit">; id: TWith<TString, { description: `The ${(...)}'s name, stable across versions so that a decision or another section can cite it.`; }>; statement: TWith<TString, { description: "What an applicant must satisfy, opening with its RFC 2119 keyword."; }>; }>>; code: TWith<TString, { description: "The role as the platform names it, such as `TRUST_ANCHOR_ADMIN`. An identifier, never prose."; }>; name: TWith<TString, { description: "The role as a person reads it."; }>; }>>; schemaVersion: TWith<TLiteral<2>, { description: "Which shape of the framework this is: `2`. Not the document's version, which is `version`. A version 1 document has no such field."; }>; version: TInteger; }>

Defined in: packages/contracts/src/setup-answers.ts:177

The authored part of a version 2 governance framework (55 section 5.3; slice 3, the ruling on the engine's order after T2c, rule 5): GovernanceFrameworkV2 without what the engine supplies. That is the same three fields version 1's authored part leaves out (the contacts, the dispute route and the statement lifetimes, which are the answers' own), plus primaryDocument.governingAuthority.did.

Why the DID is never in the answer file. The framework's DID is the anchor's own did:webvh, and its SCID is self-certifying: nobody can know it before the identifier's log has its first entry, which the identifiers step writes. So the engine fills it in from that step's reply before it canonicalises the framework, and the file stays the same on every run and on both paths (the wizard's and the unattended runner's), which is what keeps a second apply byte-identical. A document that named a DID would be a second home for a fact the deployment already holds.

Selected by schemaVersion: 2, as version 2 itself is. Not what the wizard proposes: its proposal stays version 1 (DW21, item 19), and the editor for this shape is authoring's (G2). An answer file reaches it by being written for it.