Cockpit configuration — the weighting model and category spine the kernel scores under. Drift fixed per Plan 15 drift ①: the canonical keys are `weights`/`presets` (every instance ships these; the prose contract's former `weightTriple`/`weightingPresets` are retired). Instance extensions narrow via allOf + $ref to this $id and add their own keys with unevaluatedProperties:false.
config.schema.json — change the schema, and this page changes.| Field | Type | Description |
|---|---|---|
_comment
|
string | Free-text authoring note; ignored by the kernel. |
title required
|
string | Cockpit title — the engagement/solution name shown in the shell header. |
subtitle
|
string | Optional one-line subtitle under the title. |
tierWeights
|
object | Default Fit weight per criterion tier — how much a criterion contributes to the Fit sum given its `tier`. Keys are the tier names; values are positive numbers. |
critical
|
number | Weight applied to tier:critical fit criteria. |
standard
|
number | Weight applied to tier:standard fit criteria. |
nice-to-have
|
number | Weight applied to tier:nice-to-have fit criteria. |
weights required
|
object | The three-axis blend — how Fit, Cost and Risk combine into the headline comparison. The active blend the cockpit opens with (a preset may override it). |
fit required
|
number | Relative weight of the Fit axis. |
cost required
|
number | Relative weight of the Cost axis. |
risk required
|
number | Relative weight of the Risk axis. |
presets required
|
array<object> | Selectable weighting stances (e.g. 'Balanced', 'Cheapest to run') — each a named override of `weights` the user can switch between. |
key required
|
string | Stable selector for the preset. |
label
|
string | Display name shown in the preset switcher. |
weights required
|
→ weightTriple | The fit/cost/risk blend this preset applies when chosen. |
fit required
|
number | Relative weight of the Fit axis. |
cost required
|
number | Relative weight of the Cost axis. |
risk required
|
number | Relative weight of the Risk axis. |
recommended
|
boolean | Marks the preset the cockpit opens on / highlights as the default stance. |
reasons
|
string | Optional consultant-authored prose rationale for this stance — rendered (escaped) by the shell only when this preset is the active recommended one. |
categories
|
array<object> | The solution categories the board groups by. Single-category instances ship one entry; the multi-category explorer (skischule) ships several, each pointing at its own solutions/matrix file. |
key required
|
string | Stable category selector. |
label required
|
string | Display name for the category tab/section. |
solutionsFile
|
string | Optional filename of the solutions file backing this category (when solutions are split per category). |
matrixFile
|
string | Optional filename of the per-category tool matrix (instances with a separate tool layer). |
scenario
|
object | Shared costing scenario the TCO/Cost axis prices every solution under (e.g. day rate, amortisation years). Shape is instance-specific beyond the common day-rate/amortisation pair; kept permissive here and pinned in an extension if needed. |
dayRate
|
number | Person-day rate used to price build/maintenance effort into money. |
amortYears
|
number | Years over which one-off costs are amortised for the TCO band. |
propertyFilters
|
array<object> | Manual property-filter toggles the decisions station offers in Tier 1 (the hand-required-capability sibling of the architecture toggles). Each entry declares ONE generic property-select filter (target:'property') the user can switch on by hand; absent/empty → the control isn't shown. Default OFF (opt-in narrowing). A toggle keeps solutions whose `prop` value is in `keys`; 'unknown'/absent is never eliminated. Multiple active toggles compose AND. Generic: deployment seeds saas/selfHost, but residency/mobile/etc. plug in the same way. |
id required
|
string | Stable toggle id (persisted in the URL as ?fp=, and the manualProps state). |
label required
|
string | Toggle caption — a CAPABILITY ('SaaS-capable', 'Self-host-capable'), not an exclusive ('Only …'): it requires support for this option, indifferent to others. |
prop required
|
string | Dotted path to the solution property compared (e.g. 'deployment.saas'); a Plan-19 entry-object is unwrapped to its scalar. |
keys required
|
array<string> | Accepted values (e.g. ['yes']) — a solution whose value is one of these passes the toggle. |
glyph
|
string | Optional icon name for the toggle. |