Skip to content
SurfaceDocs
FRGet started
DocsModel reference

ModelApplicationProfiles · types

Interfaces, values and named contracts for ModelApplicationProfiles.

The following types define named objects and their relationships. Tables include inherited properties. Schema-derived types refer to their validated structures; a TypeScript declaration does not replace the compiler’s semantic checks.

ModelPresentationRole

Registered presentation role understood by the shared Surface renderer.

export type ModelPresentationRole = (typeof MODEL_PRESENTATION_ROLES)[number];
type ModelPresentationRole = "workmap.view" | "worknode.card" | "workmap.status" | "knowledge.explorer" | "account.dashboard" | "workspace.model-app" | "workspace.explorer" | "document.studio" | "knowledge.entry" | "surface.document" | "surface.canvas" | "surface.comments" | "workmap.editor" | "execution.status" | "flow.selector" | "action.confirmation";

ModelVisualTokens

Closed visual tokens selected by a Model without supplying CSS.

Field Options / expected values Description
accent "blue" | "cyan" | "green" | "orange" | "purple" | "rose" Required. Defines accent for this object. Observe the type, variants and bounds in the Options column.
density "compact" | "comfortable" Required. Defines density for this object. Observe the type, variants and bounds in the Options column.
emphasis "normal" | "subtle" | "strong" Required. Defines emphasis for this object. Observe the type, variants and bounds in the Options column.
export interface ModelVisualTokens {
  accent: 'blue' | 'cyan' | 'green' | 'orange' | 'purple' | 'rose';
  density: 'compact' | 'comfortable';
  emphasis: 'subtle' | 'normal' | 'strong';
}

ModelAppSection

One bounded section in an Account Home or Workspace application composition.

Field Options / expected values Description
key string Required. Stable semantic identifier used by references; changing it changes identity.
role "workmap.view" | "worknode.card" | "workmap.status" | "knowledge.explorer" | "account.dashboard" | "workspace.model-app" | "workspace.explorer" | "document.studio" | "knowledge.entry" | "surface.document" | "surface.canvas" | "surface.comments" | "workmap.editor" | "execution.status" | "flow.selector" | "action.confirmation" Required. Semantic role recognized by this contract; not an access grant.
projection "summary" | "editor" | "detail" | "list" Required. Defines projection for this object. Observe the type, variants and bounds in the Options column.
limit number Required. Defines limit for this object. Observe the type, variants and bounds in the Options column.
export interface ModelAppSection {
  key: string;
  role: ModelPresentationRole;
  projection: 'summary' | 'list' | 'detail' | 'editor';
  limit: number;
}

ModelAppProfile

Declarative composition resolved by the shared Model App renderer.

Field Options / expected values Description
contract "ModelAppProfile@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
workspaceRole "account-home" | "knowledge-workspace" | "work-workspace" Required. Defines workspace Role for this object. Observe the type, variants and bounds in the Options column.
presentationRole "knowledge.explorer" | "account.dashboard" | "workspace.model-app" Required. Defines presentation Role for this object. Observe the type, variants and bounds in the Options column.
sections readonly ModelAppSection[] Required. Declared sections in reading or rendering order.
viewKeys readonly string[] Required. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility.
flowBlueprintKeys readonly string[] Required. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility.
taskActionKeys readonly string[] Required. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility.
searchProjectionKeys readonly string[] Required. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility.
commentProfileKey string | undefined Optional. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility.
documentProfileKey string | undefined Optional. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility.
tokens ModelVisualTokens Required. Defines tokens for this object. Observe the type, variants and bounds in the Options column.
export interface ModelAppProfile {
  contract: 'ModelAppProfile@1';
  key: string;
  workspaceRole: 'account-home' | 'knowledge-workspace' | 'work-workspace';
  presentationRole: 'account.dashboard' | 'knowledge.explorer' | 'workspace.model-app';
  sections: readonly ModelAppSection[];
  viewKeys: readonly string[];
  flowBlueprintKeys: readonly string[];
  taskActionKeys: readonly string[];
  searchProjectionKeys: readonly string[];
  commentProfileKey?: string;
  documentProfileKey?: string;
  tokens: ModelVisualTokens;
}

FlowWorkNodeDefinition

One WorkNode in a declarative, acyclic flow blueprint.

Field Options / expected values Description
key string Required. Stable semantic identifier used by references; changing it changes identity.
surfaceDefinitionPath string Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
title string Required. Title of the object or section in the interface.
dependsOn readonly string[] Required. Prerequisite step keys; references must exist and must not create cycles.
requiredInputs readonly string[] Required. Exact Field keys read from this WorkNode Surface definition.
resultSurfaceDefinitionPath string Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
completionCriteria readonly string[] Required. Conditions establishing that work is complete.
initialFields Readonly<Record<string, string | number | boolean | readonly (string | number | boolean)[]>> Required. Defines initial Fields for this object. Observe the type, variants and bounds in the Options column.
export interface FlowWorkNodeDefinition {
  key: string;
  surfaceDefinitionPath: string;
  title: string;
  dependsOn: readonly string[];
  /** Exact Field keys read from this WorkNode Surface definition. */
  requiredInputs: readonly string[];
  resultSurfaceDefinitionPath: string;
  completionCriteria: readonly string[];
  initialFields: Readonly<
    Record<string, boolean | number | string | readonly (boolean | number | string)[]>
  >;
}

FlowHierarchyNode

Explicit hierarchy nodes distinguish structural containers from executable WorkNodes.

export type FlowHierarchyNode =
  | (FlowWorkNodeDefinition & { kind: 'worknode'; parentWorkNodeKey: string | null })
  | (Omit<FlowWorkNodeDefinition, 'resultSurfaceDefinitionPath'> & {
      kind: 'container';
      parentWorkNodeKey: string | null;
      resultSurfaceDefinitionPath: null;
    });
type FlowHierarchyNode = (FlowWorkNodeDefinition & { kind: "worknode"; parentWorkNodeKey: string | null; }) | (Omit<FlowWorkNodeDefinition, "resultSurfaceDefinitionPath"> & { kind: "container"; parentWorkNodeKey: string | null; resultSurfaceDefinitionPath: null; });

FlowBlueprint

One current declaration preserves explicit Work hierarchy and optional composed execution.

Field Options / expected values Description
contract "FlowBlueprint@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
workspaceRole "work-workspace" Required. Defines workspace Role for this object. Observe the type, variants and bounds in the Options column.
title string Required. Title of the object or section in the interface.
workNodes readonly FlowHierarchyNode[] Required. Blueprint work units with inputs, dependencies and results.
composition { contract: "FlowComposition@1"; rootWorkNodeKey: string; stateSurfaceDefinitionPath: string; subflowLinkTypePath: string | null; entryStepKey: string; inputs: { key: string; type: "number" | "boolean" | "text" | "surface-reference" | "result-reference"; provenance: "caller" | "canonical" | "derived"; minimum: number; maximum: number; }[]; contexts: { definitionPath: string; source: { kind: "input"; key: string; } | { kind: "step"; stepKey: string; } | { kind: "collection-item"; stepKey: string; }; }[]; outputs: { key: string; type: "number" | "boolean" | "text" | "surface-reference" | "result-reference"; provenance: "caller" | "canonical" | "derived"; minimum: number; maximum: number; source: { kind: "input"; key: string; } | { kind: "input-node-id"; key: string; } | { kind: "field"; definitionPath: string; fieldKey: string; } | { kind: "literal"; value: string | number | boolean | null; } | { kind: "collection-item"; } | { kind: "collection-node-id"; } | { kind: "iteration-number"; } | { kind: "step-output"; stepKey: string; outputKey: string; }; reduction: "first" | "ordered-list" | "distinct-list"; }[]; steps: ({ key: string; kind: "task"; workNodeKey: string; actionKey: string; inputs: Record<string, { kind: "input"; key: string; } | { kind: "input-node-id"; key: string; } | { kind: "field"; definitionPath: string; fieldKey: string; } | { kind: "literal"; value: string | number | boolean | null; } | { kind: "collection-item"; } | { kind: "collection-node-id"; } | { kind: "iteration-number"; } | { kind: "step-output"; stepKey: string; outputKey: string; }>; outputs: { key: string; type: "number" | "boolean" | "text" | "surface-reference" | "result-reference"; provenance: "caller" | "canonical" | "derived"; minimum: number; maximum: number; result: "outputs" | "reference" | "summary" | "decisions" | "nextSteps" | "blockers"; }[]; reservedCostUnits: number; maximumAttempts: number; } | { key: string; kind: "sequence"; steps: string[]; } | { key: string; kind: "choice"; mode: "exclusive" | "multiple"; branches: { key: string; stepKey: string; ruleKey: string; }[]; minimum: number; maximum: number; selection: "all-eligible" | "explicit"; confirmation: "required" | "not-required"; freshness: "captured" | "require-current"; join: { mode: "all"; remaining: "wait"; } | { mode: "quorum"; successes: number; remaining: "wait" | "request-cancel"; }; } | { key: string; kind: "parallel"; branches: { key: string; stepKey: string; }[]; maximumConcurrency: number; join: { mode: "all"; remaining: "wait"; } | { mode: "quorum"; successes: number; remaining: "wait" | "request-cancel"; }; } | { key: string; kind: "subflow"; blueprintKey: string; inputs: Record<string, { kind: "input"; key: string; } | { kind: "input-node-id"; key: string; } | { kind: "field"; definitionPath: string; fieldKey: string; } | { kind: "literal"; value: string | number | boolean | null; } | { kind: "collection-item"; } | { kind: "collection-node-id"; } | { kind: "iteration-number"; } | { kind: "step-output"; stepKey: string; outputKey: string; }>; } | { key: string; kind: "collection"; queryKey: string; parameters: Record<string, { kind: "input"; key: string; } | { kind: "input-node-id"; key: string; } | { kind: "field"; definitionPath: string; fieldKey: string; } | { kind: "literal"; value: string | number | boolean | null; } | { kind: "collection-item"; } | { kind: "collection-node-id"; } | { kind: "iteration-number"; } | { kind: "step-output"; stepKey: string; outputKey: string; }>; stepKey: string; maximumItems: number; maximumPages: number; maximumOutputBytes: number; maximumConcurrency: number; freshness: "captured" | "require-current"; join: { mode: "all"; remaining: "wait"; } | { mode: "quorum"; successes: number; remaining: "wait" | "request-cancel"; }; } | { key: string; kind: "iterate"; stepKey: string; stopRuleKey: string; maximumIterations: number; inputs: Record<string, { kind: "input"; key: string; } | { kind: "input-node-id"; key: string; } | { kind: "field"; definitionPath: string; fieldKey: string; } | { kind: "literal"; value: string | number | boolean | null; } | { kind: "collection-item"; } | { kind: "collection-node-id"; } | { kind: "iteration-number"; } | { kind: "step-output"; stepKey: string; outputKey: string; }>; } | { key: string; kind: "wait"; inputs: ({ key: string; minimum: number; maximum: number; type: "number" | "boolean" | "text"; provenance: "caller"; } | { key: string; minimum: number; maximum: number; type: "surface-reference" | "result-reference"; provenance: "canonical"; selector: { contract: "SurfaceFlowReferenceSelector@1"; queryKey: string; parameters: Record<string, { kind: "input"; key: string; } | { kind: "input-node-id"; key: string; } | { kind: "field"; definitionPath: string; fieldKey: string; } | { kind: "literal"; value: string | number | boolean | null; } | { kind: "collection-item"; } | { kind: "collection-node-id"; } | { kind: "iteration-number"; } | { kind: "step-output"; stepKey: string; outputKey: string; }>; }; })[]; arrival: "active-only"; ordering: "first-committed"; eventKey: string; recipient: "initiator"; timeoutMilliseconds: number; onExpiration: "fail" | "cancel"; } | { key: string; kind: "delay"; resume: { kind: "duration"; milliseconds: number; } | { kind: "instant"; at: number; }; })[]; budgets: { maximumDepth: number; maximumOccurrences: number; maximumConcurrency: number; maximumIterations: number; maximumDurationMilliseconds: number; maximumCostUnits: number; maximumStateBytes: number; }; } | null Required. Non-composed dependencies are functional declarations, not an older technical format.
export interface FlowBlueprint {
  contract: 'FlowBlueprint@1';
  key: string;
  workspaceRole: 'work-workspace';
  title: string;
  workNodes: readonly FlowHierarchyNode[];
  /** Non-composed dependencies are functional declarations, not an older technical format. */
  composition: FlowComposition | null;
}

TaskActionDefinition

Declarative Task launch contract for one compatible WorkNode definition.

Field Options / expected values Description
contract "TaskActionDefinition@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
label string Required. Human-readable label displayed in the interface.
parentSurfaceDefinitionPath string Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
taskSurfaceDefinitionPath string Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
instructionSurfaceDefinitionPath string Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
requiredInputs readonly string[] Required. Exact Field keys read from the parent Surface definition.
resultSurfaceDefinitionPath string Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
repeatability "once" | "repeatable" Required. Defines repeatability for this object. Observe the type, variants and bounds in the Options column.
idempotency "per-parent" | "per-input-set" Required. Policy identifying the same intent to prevent repeated effects.
containsLinkTypePath string | undefined Optional. Declared relation type with sources, targets and direction compatible with this traversal.
taskStateFieldKey string | undefined Optional. Key of a declared Field on the relevant type; its value type must be compatible with this use.
activeTaskStates readonly string[] | undefined Optional. Defines active Task States for this object. Observe the type, variants and bounds in the Options column.
assigneeFieldKey string | undefined Optional. Key of a declared Field on the relevant type; its value type must be compatible with this use.
dependencyLinkTypePath string | undefined Optional. Declared relation type with sources, targets and direction compatible with this traversal.
dependencyDirection "incoming" | "outgoing" | undefined Optional. Defines dependency Direction for this object. Observe the type, variants and bounds in the Options column.
dependencyStateFieldKey string | undefined Optional. Key of a declared Field on the relevant type; its value type must be compatible with this use.
dependencyCompleteStates readonly string[] | undefined Optional. Defines dependency Complete States for this object. Observe the type, variants and bounds in the Options column.
taskInputHashFieldKey string | undefined Optional. Key of a declared Field on the relevant type; its value type must be compatible with this use.
export interface TaskActionDefinition {
  contract: 'TaskActionDefinition@1';
  key: string;
  label: string;
  parentSurfaceDefinitionPath: string;
  taskSurfaceDefinitionPath: string;
  instructionSurfaceDefinitionPath: string;
  /** Exact Field keys read from the parent Surface definition. */
  requiredInputs: readonly string[];
  resultSurfaceDefinitionPath: string;
  repeatability: 'once' | 'repeatable';
  idempotency: 'per-parent' | 'per-input-set';
  containsLinkTypePath?: string;
  taskStateFieldKey?: string;
  activeTaskStates?: readonly string[];
  assigneeFieldKey?: string;
  dependencyLinkTypePath?: string;
  dependencyDirection?: 'incoming' | 'outgoing';
  dependencyStateFieldKey?: string;
  dependencyCompleteStates?: readonly string[];
  taskInputHashFieldKey?: string;
}

ModelViewKind

Registered rich view kinds rendered by the shared Surface UI engine.

export type ModelViewKind =
  'cards' | 'kanban' | 'table' | 'gantt' | 'timeline' | 'calendar' | 'graph' | 'portfolio';
type ModelViewKind = "calendar" | "cards" | "gantt" | "graph" | "kanban" | "table" | "timeline" | "portfolio";

ViewFieldMapping

One semantic field mapping consumed by a registered rich view.

Field Options / expected values Description
semantic string Required. Defines semantic for this object. Observe the type, variants and bounds in the Options column.
fieldKey string Required. Key of a Field declared on the referenced Surface definition.
export interface ViewFieldMapping {
  semantic: string;
  fieldKey: string;
}

ViewDefinition

Declarative registered view over canonical Surfaces and Links.

Field Options / expected values Description
contract "ViewDefinition@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
kind ModelViewKind Required. Selects the variant and the properties admitted in this branch.
workspaceRole "account-home" | "knowledge-workspace" | "work-workspace" Required. Defines workspace Role for this object. Observe the type, variants and bounds in the Options column.
nodeSurfaceDefinitionPaths readonly string[] Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
fieldMappings readonly ViewFieldMapping[] Required. Defines field Mappings for this object. Observe the type, variants and bounds in the Options column.
linkTypePaths readonly string[] Required. Defines link Type Paths for this object. Observe the type, variants and bounds in the Options column.
schedule { durationUnit: "millisecond" | "hour" | "day"; progressScale: "ratio" | "percent"; dependencies: { linkTypePath: string; predecessor: "source" | "target"; }[]; } | undefined Optional. Defines schedule for this object. Observe the type, variants and bounds in the Options column.
presentationRole "workmap.view" | "worknode.card" | "workmap.status" | "knowledge.explorer" | "account.dashboard" | "workspace.model-app" | "workspace.explorer" | "document.studio" | "knowledge.entry" | "surface.document" | "surface.canvas" | "surface.comments" | "workmap.editor" | "execution.status" | "flow.selector" | "action.confirmation" Required. Defines presentation Role for this object. Observe the type, variants and bounds in the Options column.
export interface ViewDefinition {
  contract: 'ViewDefinition@1';
  key: string;
  kind: ModelViewKind;
  workspaceRole: 'account-home' | 'knowledge-workspace' | 'work-workspace';
  nodeSurfaceDefinitionPaths: readonly string[];
  fieldMappings: readonly ViewFieldMapping[];
  linkTypePaths: readonly string[];
  schedule?: ModelGanttSchedule;
  presentationRole: ModelPresentationRole;
}

SearchFieldDefinition

One closed searchable Field declaration and its permitted query operations.

Field Options / expected values Description
fieldKey string Required. Key of a Field declared on the referenced Surface definition.
operators readonly ("equals" | "contains" | "before" | "after" | "less-than" | "greater-than")[] Required. Defines operators for this object. Observe the type, variants and bounds in the Options column.
filterable boolean Required. Permits filtering this property within the declared scope.
sortable boolean Required. Permits sorting this column when supported by the Query.
facetable boolean Required. Defines facetable for this object. Observe the type, variants and bounds in the Options column.
export interface SearchFieldDefinition {
  fieldKey: string;
  operators: readonly ('equals' | 'contains' | 'before' | 'after' | 'less-than' | 'greater-than')[];
  filterable: boolean;
  sortable: boolean;
  facetable: boolean;
}

SearchProjectionDefinition

Current-state search projection compiled into reconstructible indexes.

Field Options / expected values Description
contract "SearchProjectionDefinition@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
workspaceRole "account-home" | "knowledge-workspace" | "work-workspace" Required. Defines workspace Role for this object. Observe the type, variants and bounds in the Options column.
surfaceDefinitionPaths readonly string[] Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
textTargets readonly ("title" | "content" | "description")[] Required. Defines text Targets for this object. Observe the type, variants and bounds in the Options column.
fields readonly SearchFieldDefinition[] Required. Typed value definitions or selections within the enclosing context.
defaultSort readonly { target: string; direction: "ascending" | "descending"; }[] Required. Defines default Sort for this object. Observe the type, variants and bounds in the Options column.
export interface SearchProjectionDefinition {
  contract: 'SearchProjectionDefinition@1';
  key: string;
  workspaceRole: 'account-home' | 'knowledge-workspace' | 'work-workspace';
  surfaceDefinitionPaths: readonly string[];
  textTargets: readonly ('title' | 'description' | 'content')[];
  fields: readonly SearchFieldDefinition[];
  defaultSort: readonly {
    target: string;
    direction: 'ascending' | 'descending';
  }[];
}

CommentProfile

Comment graph declaration referencing Model-owned Surface and Link definitions.

Field Options / expected values Description
contract "CommentProfile@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
threadSurfaceDefinitionPath string Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
commentSurfaceDefinitionPath string Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
targetLinkTypePath string Required. Declared relation type with sources, targets and direction compatible with this traversal.
replyLinkTypePath string Required. Declared relation type with sources, targets and direction compatible with this traversal.
mentionLinkTypePath string Required. Declared relation type with sources, targets and direction compatible with this traversal.
containsLinkTypePath string | undefined Optional. Declared relation type with sources, targets and direction compatible with this traversal.
states readonly ("open" | "resolved")[] Required. Lifecycle-recognized states referenced by stable keys.
targets readonly ("selection" | "anchor" | "surface")[] Required. Defines targets for this object. Observe the type, variants and bounds in the Options column.
export interface CommentProfile {
  contract: 'CommentProfile@1';
  key: string;
  threadSurfaceDefinitionPath: string;
  commentSurfaceDefinitionPath: string;
  targetLinkTypePath: string;
  replyLinkTypePath: string;
  mentionLinkTypePath: string;
  containsLinkTypePath?: string;
  states: readonly ('open' | 'resolved')[];
  targets: readonly ('surface' | 'anchor' | 'selection')[];
}

WorkspaceProjectionTextSource

One declared text source folded into a reconstructible Workspace Portfolio projection.

export type WorkspaceProjectionTextSource =
  | { kind: 'workspace'; target: 'title' | 'description' }
  | {
      kind: 'surface';
      definitionPath: string;
      target: 'title' | 'description' | 'content';
    };
type WorkspaceProjectionTextSource = { kind: "workspace"; target: "title" | "description"; } | { kind: "surface"; definitionPath: string; target: "title" | "description" | "content"; };

WorkspaceProjectionDimension

One typed dimension materialized from canonical Workspace or Surface state.

Field Options / expected values Description
key string Required. Stable semantic identifier used by references; changing it changes identity.
type "number" | "boolean" | "text" | "date" | "datetime" Required. Defines type for this object. Observe the type, variants and bounds in the Options column.
source { kind: "workspace"; field: "createdAt" | "lifecycleState" | "modelId" | "modelRevisionId" | "title" | "updatedAt"; } | { kind: "surface-field"; definitionPath: string; fieldKey: string; aggregate: "count" | "exists" | "first" | "maximum" | "minimum"; } | { kind: "link-exists"; linkTypePath: string; direction: "incoming" | "outgoing"; } Required. Defines source for this object. Observe the type, variants and bounds in the Options column.
operators readonly ("in" | "eq" | "lt" | "lte" | "gt" | "gte" | "exists" | "between")[] Required. Defines operators for this object. Observe the type, variants and bounds in the Options column.
filterable boolean Required. Permits filtering this property within the declared scope.
sortable boolean Required. Permits sorting this column when supported by the Query.
facetable boolean Required. Defines facetable for this object. Observe the type, variants and bounds in the Options column.
groupable boolean Required. Defines groupable for this object. Observe the type, variants and bounds in the Options column.
maximumFacetValues number Required. Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema.
export interface WorkspaceProjectionDimension {
  key: string;
  type: 'boolean' | 'date' | 'datetime' | 'number' | 'text';
  source:
    | {
        kind: 'workspace';
        field:
          'createdAt' | 'lifecycleState' | 'modelId' | 'modelRevisionId' | 'title' | 'updatedAt';
      }
    | {
        kind: 'surface-field';
        definitionPath: string;
        fieldKey: string;
        aggregate: 'count' | 'exists' | 'first' | 'maximum' | 'minimum';
      }
    | {
        kind: 'link-exists';
        linkTypePath: string;
        direction: 'incoming' | 'outgoing';
      };
  operators: readonly ('eq' | 'in' | 'exists' | 'lt' | 'lte' | 'gt' | 'gte' | 'between')[];
  filterable: boolean;
  sortable: boolean;
  facetable: boolean;
  groupable: boolean;
  maximumFacetValues: number;
}

WorkspaceProjectionDefinition

Model-owned Workspace rollup projection used by Account Home Portfolio queries.

Field Options / expected values Description
contract "WorkspaceProjectionDefinition@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
workspaceRole "knowledge-workspace" | "work-workspace" Required. Defines workspace Role for this object. Observe the type, variants and bounds in the Options column.
textSources readonly WorkspaceProjectionTextSource[] Required. Defines text Sources for this object. Observe the type, variants and bounds in the Options column.
dimensions readonly WorkspaceProjectionDimension[] Required. Defines dimensions for this object. Observe the type, variants and bounds in the Options column.
defaultSort readonly { dimension: string; direction: "ascending" | "descending"; }[] Required. Defines default Sort for this object. Observe the type, variants and bounds in the Options column.
export interface WorkspaceProjectionDefinition {
  contract: 'WorkspaceProjectionDefinition@1';
  key: string;
  workspaceRole: 'knowledge-workspace' | 'work-workspace';
  textSources: readonly WorkspaceProjectionTextSource[];
  dimensions: readonly WorkspaceProjectionDimension[];
  defaultSort: readonly { dimension: string; direction: 'ascending' | 'descending' }[];
}

WorkspaceProjectionDimensionV2

Decimal dimensions retain authored format/unit and only source-defined first/minimum/maximum reductions.

export type WorkspaceProjectionDimensionV2 =
  | (WorkspaceProjectionDimensionV2Base & Pick<WorkspaceProjectionDimension, 'type' | 'source'>)
  | (WorkspaceProjectionDimensionV2Base & {
      readonly type: 'decimal';
      readonly numeric: {
        readonly precision: number;
        readonly scale: number;
        readonly unit: ManagedExactDataUnit;
      };
      readonly source: Omit<
        Extract<WorkspaceProjectionDimension['source'], { kind: 'surface-field' }>,
        'aggregate'
      > & {
        readonly aggregate: 'first' | 'maximum' | 'minimum';
      };
    });
type WorkspaceProjectionDimensionV2 = (WorkspaceProjectionDimensionV2Base & Pick<WorkspaceProjectionDimension, "type" | "source">) | (WorkspaceProjectionDimensionV2Base & { readonly type: "decimal"; readonly numeric: { readonly precision: number; readonly scale: number; readonly unit: ManagedExactDataUnit; }; readonly source: Omit<Extract<WorkspaceProjectionDimension["source"], { kind: "surface-field"; }>, "aggregate"> & { readonly aggregate: "first" | "maximum" | "minimum"; }; });

WorkspaceProjectionDefinitionV2

The new projection family keeps its original operators, capabilities and exact source coordinates.

Field Options / expected values Description
contract "WorkspaceProjectionDefinition@2" Required. Exact discriminant of this contract variant. Match the literal value shown.
dimensions readonly WorkspaceProjectionDimensionV2[] Required. Defines dimensions for this object. Observe the type, variants and bounds in the Options column.
key string Required. Stable semantic identifier used by references; changing it changes identity.
defaultSort readonly { dimension: string; direction: "ascending" | "descending"; }[] Required. Defines default Sort for this object. Observe the type, variants and bounds in the Options column.
workspaceRole "knowledge-workspace" | "work-workspace" Required. Defines workspace Role for this object. Observe the type, variants and bounds in the Options column.
textSources readonly WorkspaceProjectionTextSource[] Required. Defines text Sources for this object. Observe the type, variants and bounds in the Options column.
export interface WorkspaceProjectionDefinitionV2 extends Omit<
  WorkspaceProjectionDefinition,
  'contract' | 'dimensions'
> {
  readonly contract: 'WorkspaceProjectionDefinition@2';
  readonly dimensions: readonly WorkspaceProjectionDimensionV2[];
}

SemanticCommandOperation

Closed canonical operation selected by one Model semantic command.

export type SemanticCommandOperation =
  | { kind: 'surface.create'; surfaceDefinitionPath: string; parent: 'surface' | 'workspace' }
  | { kind: 'surface.move'; surfaceDefinitionPath: string }
  | { kind: 'link.create'; linkTypePath: string }
  | { kind: 'task.start'; taskActionKey: string };
type SemanticCommandOperation = { kind: "surface.create"; surfaceDefinitionPath: string; parent: "surface" | "workspace"; } | { kind: "surface.move"; surfaceDefinitionPath: string; } | { kind: "link.create"; linkTypePath: string; } | { kind: "task.start"; taskActionKey: string; };

SemanticCommandDefinition

Host-neutral command declaration compiled into canonical Change Set primitives.

Field Options / expected values Description
contract "SemanticCommandDefinition@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
label string Required. Human-readable label displayed in the interface.
entityLabel string Required. Defines entity Label for this object. Observe the type, variants and bounds in the Options column.
icon "record" | "link" | "add" | "move" | "play" Required. Icon from the catalog admitted for this presentation variant.
presentationRole "workmap.view" | "worknode.card" | "workmap.status" | "knowledge.explorer" | "account.dashboard" | "workspace.model-app" | "workspace.explorer" | "document.studio" | "knowledge.entry" | "surface.document" | "surface.canvas" | "surface.comments" | "workmap.editor" | "execution.status" | "flow.selector" | "action.confirmation" Required. Defines presentation Role for this object. Observe the type, variants and bounds in the Options column.
contexts readonly ("account-home" | "worknode" | "surface" | "workspace")[] Required. Defines contexts for this object. Observe the type, variants and bounds in the Options column.
requiredCapabilities readonly string[] Required. Defines required Capabilities for this object. Observe the type, variants and bounds in the Options column.
confirmation "never" | "required" Required. Requires or configures intent review before execution; does not replace permissions.
operation SemanticCommandOperation Required. Canonical operation executed after context, parameter and permission validation.
export interface SemanticCommandDefinition {
  contract: 'SemanticCommandDefinition@1';
  key: string;
  label: string;
  entityLabel: string;
  icon: 'add' | 'link' | 'move' | 'play' | 'record';
  presentationRole: ModelPresentationRole;
  contexts: readonly ('account-home' | 'surface' | 'worknode' | 'workspace')[];
  requiredCapabilities: readonly string[];
  confirmation: 'never' | 'required';
  operation: SemanticCommandOperation;
}

DocumentProfileV1

Document assembly and export policy consumed by the registered Document Studio.

Field Options / expected values Description
contract "DocumentProfile@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
sourceSurfaceDefinitionPaths readonly string[] Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
template "article" | "report" | "manuscript" | "project-brief" Required. Defines template for this object. Observe the type, variants and bounds in the Options column.
sectionPolicy "ordered" | "grouped" Required. Defines section Policy for this object. Observe the type, variants and bounds in the Options column.
exportFormats readonly ("markdown" | "docx" | "pdf")[] Required. Defines export Formats for this object. Observe the type, variants and bounds in the Options column.
export interface DocumentProfileV1 {
  contract: 'DocumentProfile@1';
  key: string;
  sourceSurfaceDefinitionPaths: readonly string[];
  template: 'article' | 'report' | 'manuscript' | 'project-brief';
  sectionPolicy: 'ordered' | 'grouped';
  exportFormats: readonly ('docx' | 'markdown' | 'pdf')[];
}

DocumentCompositionSection

One exact named-Query section with optional native historical proof coordinates.

Field Options / expected values Description
key string Required. Stable semantic identifier used by references; changing it changes identity.
parentSectionKey string | null Required. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility.
queryKey string Required. Reference to a declared Query; scope and authorization remain enforced by the data engine.
sourceParameterKey string Required. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility.
headingLevel number Required. Defines heading Level for this object. Observe the type, variants and bounds in the Options column.
orderBy readonly { fieldKey: string; direction: "ascending" | "descending"; }[] Required. Declared sort order using keys within the authorized scope.
historicalTraversal { pathIndex: number; stepIndex: number; } | null Required. Defines historical Traversal for this object. Observe the type, variants and bounds in the Options column.
export interface DocumentCompositionSection {
  key: string;
  parentSectionKey: string | null;
  queryKey: string;
  sourceParameterKey: string;
  headingLevel: number;
  orderBy: readonly { fieldKey: string; direction: 'ascending' | 'descending' }[];
  historicalTraversal: { pathIndex: number; stepIndex: number } | null;
}

DocumentProfileV2

V6-only composition; published mono-Surface profiles remain byte-stable.

Field Options / expected values Description
contract "DocumentProfile@2" Required. Exact discriminant of this contract variant. Match the literal value shown.
composition { contract: "SurfaceDocumentComposition@1"; maximumSources: number; maximumEntries: number; maximumOutputBytes: number; historicalCapturePolicyKey: string | null; sections: readonly DocumentCompositionSection[]; } Required. Declarative organization of components, sources or Spaces for the selected variant.
key string Required. Stable semantic identifier used by references; changing it changes identity.
sourceSurfaceDefinitionPaths readonly string[] Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
template "article" | "report" | "manuscript" | "project-brief" Required. Defines template for this object. Observe the type, variants and bounds in the Options column.
sectionPolicy "ordered" | "grouped" Required. Defines section Policy for this object. Observe the type, variants and bounds in the Options column.
exportFormats readonly ("markdown" | "docx" | "pdf")[] Required. Defines export Formats for this object. Observe the type, variants and bounds in the Options column.
export interface DocumentProfileV2 extends Omit<DocumentProfileV1, 'contract'> {
  contract: 'DocumentProfile@2';
  composition: {
    contract: 'SurfaceDocumentComposition@1';
    maximumSources: number;
    maximumEntries: number;
    maximumOutputBytes: number;
    historicalCapturePolicyKey: string | null;
    sections: readonly DocumentCompositionSection[];
  };
}

DocumentProfileV3

Collection format policy has its own origin and never invents a Surface subject.

Field Options / expected values Description
contract "DocumentProfile@3" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
source { kind: "collection"; destinationKey: string; queryKey: string; viewKey: string; } | { kind: "home-section"; sectionKey: string; queryKey: string; viewKey: string; } | { kind: "record-query"; recordProfileKey: string; queryBindingKey: string; viewKey: string; } | { kind: "work-query"; experienceKey: string; sectionKey: string; bindingKey: string; viewKey: string; } Required. Defines source for this object. Observe the type, variants and bounds in the Options column.
exportFormats readonly ("markdown" | "pdf")[] Required. Defines export Formats for this object. Observe the type, variants and bounds in the Options column.
budget { maximumRows: number; maximumPages: number; maximumOutputBytes: number; } Required. Defines budget for this object. Observe the type, variants and bounds in the Options column.
export interface DocumentProfileV3 {
  contract: 'DocumentProfile@3';
  key: string;
  source:
    | { kind: 'collection'; destinationKey: string; queryKey: string; viewKey: string }
    | { kind: 'home-section'; sectionKey: string; queryKey: string; viewKey: string }
    | { kind: 'record-query'; recordProfileKey: string; queryBindingKey: string; viewKey: string }
    | {
        kind: 'work-query';
        experienceKey: string;
        sectionKey: string;
        bindingKey: string;
        viewKey: string;
      };
  exportFormats: readonly ('markdown' | 'pdf')[];
  budget: { maximumRows: number; maximumPages: number; maximumOutputBytes: number };
}

DocumentProfile

Closed authoring versions of document format and composition policy.

export type DocumentProfile = DocumentProfileV1 | DocumentProfileV2 | DocumentProfileV3;

SurfaceViewKind

Closed Surface-level view kinds rendered only by application-owned renderers.

export type SurfaceViewKind =
  | 'cockpit'
  | 'editor'
  | 'structure'
  | 'flow-context'
  | 'board'
  | 'review'
  | 'history-compare'
  | 'relations'
  | 'evidence'
  | 'tasks-runs'
  | 'preview-export'
  | 'activity'
  | 'work-children';
type SurfaceViewKind = "relations" | "editor" | "review" | "activity" | "structure" | "cockpit" | "flow-context" | "board" | "history-compare" | "evidence" | "tasks-runs" | "preview-export" | "work-children";

SurfaceViewSourceDefinition

One bounded source set consumed by a registered Surface view renderer.

Field Options / expected values Description
surfaceDefinitionPaths readonly string[] Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
linkTypePaths readonly string[] Required. Defines link Type Paths for this object. Observe the type, variants and bounds in the Options column.
maximumItems number Required. Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema.
maximumDepth number Required. Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema.
export interface SurfaceViewSourceDefinition {
  surfaceDefinitionPaths: readonly string[];
  linkTypePaths: readonly string[];
  maximumItems: number;
  maximumDepth: number;
}

SurfaceViewDefinition

Child collections are named by the Model and resolved by the existing parent-scoped query.

export type SurfaceViewDefinition =
  | LegacySurfaceViewDefinition
  | (Omit<LegacySurfaceViewDefinition, 'contract' | 'kind'> & {
      contract: 'SurfaceViewDefinition@2';
      kind: 'work-children';
      childViews: readonly { key: string; label: string }[];
      defaultChildViewKey: string;
    })
  | (Omit<LegacySurfaceViewDefinition, 'contract' | 'kind' | 'commandKeys'> & {
      contract: 'SurfaceViewDefinition@3';
      kind: 'evidence';
      commandKeys: readonly [];
      evidenceSources: {
        contract: 'SurfaceConsolidationSources@1';
        profileKeys: readonly string[];
      };
    });
type SurfaceViewDefinition = LegacySurfaceViewDefinition | (Omit<LegacySurfaceViewDefinition, "contract" | "kind"> & { contract: "SurfaceViewDefinition@2"; kind: "work-children"; childViews: readonly { key: string; label: string; }[]; defaultChildViewKey: string; }) | (Omit<LegacySurfaceViewDefinition, "contract" | "kind" | "commandKeys"> & { contract: "SurfaceViewDefinition@3"; kind: "evidence"; commandKeys: readonly []; evidenceSources: { contract: "SurfaceConsolidationSources@1"; profileKeys: readonly string[]; }; });

SurfaceViewDefinitionV4

Work experience views are admitted only by Source10, never by the historical view union.

export type SurfaceViewDefinitionV4 = Omit<
  LegacySurfaceViewDefinition,
  'contract' | 'kind' | 'commandKeys'
> & {
  contract: 'SurfaceViewDefinition@4';
  kind: 'work-experience';
  experienceKey: string;
  commandKeys: readonly [];
};
type SurfaceViewDefinitionV4 = Omit<LegacySurfaceViewDefinition, "contract" | "kind" | "commandKeys"> & { contract: "SurfaceViewDefinition@4"; kind: "work-experience"; experienceKey: string; commandKeys: readonly []; };

WorkExperienceSurfaceViewDefinition

New source family selects this union explicitly; Source5–9 still use views1–3.

export type WorkExperienceSurfaceViewDefinition = SurfaceViewDefinition | SurfaceViewDefinitionV4;

SurfaceViewProfile

Ordered Surface view composition attached to exact Model Surface definitions.

Field Options / expected values Description
contract "SurfaceViewProfile@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
surfaceDefinitionPaths readonly string[] Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
defaultViewKey string Required. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility.
viewKeys readonly string[] Required. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility.
export interface SurfaceViewProfile {
  contract: 'SurfaceViewProfile@1';
  key: string;
  surfaceDefinitionPaths: readonly string[];
  defaultViewKey: string;
  viewKeys: readonly string[];
}

ActionVariantDefinition

One user-facing action variant backed by an existing canonical semantic command.

Field Options / expected values Description
key string Required. Stable semantic identifier used by references; changing it changes identity.
label string Required. Human-readable label displayed in the interface.
commandKey string Required. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility.
export interface ActionVariantDefinition {
  key: string;
  label: string;
  commandKey: string;
}

ActionGroupDefinition

Ordered business action group rendered consistently by MCP and the Surface UX.

Field Options / expected values Description
contract "ActionGroupDefinition@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
label string Required. Human-readable label displayed in the interface.
target "worknode" | "surface" | "workspace" Required. Defines target for this object. Observe the type, variants and bounds in the Options column.
variants readonly ActionVariantDefinition[] Required. Defines variants for this object. Observe the type, variants and bounds in the Options column.
export interface ActionGroupDefinition {
  contract: 'ActionGroupDefinition@1';
  key: string;
  label: string;
  target: 'surface' | 'worknode' | 'workspace';
  variants: readonly ActionVariantDefinition[];
}

DataProtectionProfile

Explicit protection and disclosure policy for Model-declared Surface definitions.

Field Options / expected values Description
contract "DataProtectionProfile@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
key string Required. Stable semantic identifier used by references; changing it changes identity.
surfaceDefinitionPaths readonly string[] Required. Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope.
classification "confidential" | "internal" | "public" Required. Sensitivity class used to apply disclosure policies.
search "allowed" | "denied" Required. Search policy or configuration according to the enclosing context.
aiDisclosure "allowed" | "denied" Required. Policy governing content exposure to AI context.
export "allowed" | "denied" Required. Export policy for affected content.
export interface DataProtectionProfile {
  contract: 'DataProtectionProfile@1';
  key: string;
  surfaceDefinitionPaths: readonly string[];
  classification: 'confidential' | 'internal' | 'public';
  search: 'allowed' | 'denied';
  aiDisclosure: 'allowed' | 'denied';
  export: 'allowed' | 'denied';
}

ProductVocabulary

Product terms shared verbatim by the UX, MCP tools, and System Knowledge.

Field Options / expected values Description
contract "ProductVocabulary@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
controlCenter string Required. Defines control Center for this object. Observe the type, variants and bounds in the Options column.
overview string Required. Defines overview for this object. Observe the type, variants and bounds in the Options column.
actionRequired string Required. Defines action Required for this object. Observe the type, variants and bounds in the Options column.
portfolio string Required. Defines portfolio for this object. Observe the type, variants and bounds in the Options column.
inbox string Required. Defines inbox for this object. Observe the type, variants and bounds in the Options column.
activity string Required. Defines activity for this object. Observe the type, variants and bounds in the Options column.
settings string Required. Fields presented in the record settings form.
marketplace string Required. Public information presenting the app in the catalog.
workspace string Required. Defines workspace for this object. Observe the type, variants and bounds in the Options column.
surface string Required. Defines surface for this object. Observe the type, variants and bounds in the Options column.
export interface ProductVocabulary {
  contract: 'ProductVocabulary@1';
  controlCenter: string;
  overview: string;
  actionRequired: string;
  portfolio: string;
  inbox: string;
  activity: string;
  settings: string;
  marketplace: string;
  workspace: string;
  surface: string;
}

MarketplaceListingDefinition

Public catalogue metadata published with an immutable Model Revision.

Field Options / expected values Description
contract "MarketplaceListingDefinition@1" Required. Exact discriminant of this contract variant. Match the literal value shown.
slug string Required. Defines slug for this object. Observe the type, variants and bounds in the Options column.
title string Required. Title of the object or section in the interface.
summary string Required. Defines summary for this object. Observe the type, variants and bounds in the Options column.
publisher string Required. Defines publisher for this object. Observe the type, variants and bounds in the Options column.
category "knowledge" | "project" | "writing" | "universal" Required. Defines category for this object. Observe the type, variants and bounds in the Options column.
tags readonly string[] Required. Classification or display configuration for admitted tags.
visibility "public" | "included" Required. Determines presentation visibility or category using this variant’s values.
export interface MarketplaceListingDefinition {
  contract: 'MarketplaceListingDefinition@1';
  slug: string;
  title: string;
  summary: string;
  publisher: string;
  category: 'knowledge' | 'project' | 'writing' | 'universal';
  tags: readonly string[];
  visibility: 'included' | 'public';
}

All references

Applied examples : Assemble a coherent definition

The Form and record profile reference the same company, status and notes Fields.

Configuration

Fragment placed in forms[]. Properties and accepted values.

{
  "contract": "WorkspaceForm@2",
  "key": "new-client",
  "label": "New client",
  "actionKey": "create-client",
  "targetDefinitionPath": "workspace/clients/surface/client",
  "mode": "create",
  "fields": [
    {
      "contract": "WorkspaceFormControl@2",
      "repeatable": false,
      "key": "company",
      "label": "Company",
      "input": "text",
      "binding": {
        "kind": "field",
        "fieldKey": "company"
      },
      "required": true,
      "ruleKeys": [],
      "options": []
    },
    {
      "contract": "WorkspaceFormControl@2",
      "repeatable": false,
      "key": "status",
      "label": "Status",
      "input": "choice",
      "binding": {
        "kind": "field",
        "fieldKey": "status"
      },
      "required": true,
      "ruleKeys": [],
      "options": [
        "prospect",
        "active"
      ]
    }
  ],
  "ruleKeys": []
}

Variation and connection

Fragment placed in presentation.recordProfiles[]. Properties and accepted values.

{
  "key": "client",
  "definitionPaths": [
    "workspace/clients/surface/client"
  ],
  "editActionKey": "edit-client",
  "identity": {
    "title": {
      "kind": "field",
      "fieldPath": "fields/company"
    },
    "avatar": {
      "kind": "initials",
      "maximumLetters": 2
    },
    "subtitle": {
      "kind": "field",
      "fieldPath": "fields/status"
    }
  },
  "valueLabels": [
    {
      "fieldPath": "fields/status",
      "values": [
        {
          "value": "prospect",
          "label": "Prospect"
        },
        {
          "value": "active",
          "label": "Active"
        }
      ]
    }
  ],
  "card": {
    "summary": {
      "kind": "field",
      "fieldPath": "fields/notes"
    },
    "tags": {
      "namespace": "user",
      "maximumVisible": 3
    },
    "metricKeys": [],
    "openLabel": "Open client"
  },
  "queryBindings": [],
  "metrics": [],
  "detail": {
    "primaryActionKey": null,
    "creationActionKeys": [],
    "actionKeys": [],
    "sections": [
      {
        "kind": "fields",
        "key": "follow-up",
        "label": "Client follow-up",
        "fieldPaths": [
          "fields/notes",
          "fields/status"
        ]
      }
    ],
    "settings": {
      "fieldPaths": [
        "fields/email"
      ]
    },
    "tags": {
      "namespace": "user",
      "maximumVisible": 3
    },
    "relatedGroups": [],
    "primaryActionLabel": null
  }
}

UI layout example

The illustrative layout below places this configuration in the Clients/Quotes app. Insert each fragment at the stated location, with Field, Query and Action references matching the Model declarations.

  1. Clients · Data
  2. References · Knowledge
  3. Preparation · Work
  4. Quotes · Product
ILLUSTRATIVE LAYOUTClients / Quotes app
SurfaceClients / North StudioExample
ModelApplicationProfiles · typesAssemble a coherent definition
Clients
01Clients · Data

Records and reference information

02References · Knowledge

Pricing, procedure and sources

03Preparation · Work

Steps, decisions and results

04Quotes · Product

Durable deliverable and revisions

Search for a concept, field or action.Esc