Three Functions

three-functions.md · 18900 B · source sha256 146d208208b8

A semantic function-color system: a small, identity-free vocabulary of three role colors — legislative, executive, judicial — that marks which invariant structural function an element performs. Defined in three-functions.css; rendered visual key in three-functions.html.

It is a specialized, opt-in foundation primitive — for surfaces that encode a separation of functions in an apparatus (e.g. a method diagram whose parts author a rule, realize candidates under it, and select and close against it). It is not general UI color, and the static diagram scaffolds (patterns/diagram-static-H/ / -V/ / -SEQ/ / -FLOW/) do not use it.

Sibling to Spectral State, not a profile under it. Spectral State (and its Evidence State profile) encodes the state of an element — the condition it is in. Three Functions encodes the function an element performs — an invariant structural role, not a state. Modeling it as a Spectral State profile would reproduce the category error the architecture exists to prevent: function is a different axis from state.

semantic color
├── state
│   ├── Spectral State
│   ├── Evidence State // profile under Spectral State
│   └── Review State // profile under Spectral State
│
└── function / role
    └── Three Functions
        legislative · executive · judicial

Not a palette expansion. The three role values are existing ASK values — two emphasis accents (magenta, cyan) plus the neutral white / lavender-ASK identity value. This primitive is a new semantic binding over the closed palette, not a new hue.

Status: v0.2 // semantic generation. Authorized by ASK source-of-intent (2026-07-12; source-role correction 2026-09-11). Landed public consumption is recorded in CONSUMERS.md, which remains the record of what consumers have actually landed. The bounded-generativity worked example below shows how the upstream admissibility rule applies. It does not make this repo the owner of a consumer's concrete element binding, and it is not a claim about what any consumer has landed. A landed consumption record is not, by itself, a portability, usability, or generality verdict. v0.2 changes which elements qualify for legislative, not how the role renders once assigned — no role token, palette binding, selector, cascade or resolved value changes. The role list is fixed at three and the role-to-palette mappings are unchanged and remain the portable part; the admissible population of legislative is what this generation revises. v0.1 held that coloring the source-of-intent apex legislative would collapse source of intent into the legislative function; v0.2 corrects that.

on this page

The three roles

Role Function it marks ASK mapping
Role--function-legislative Function it marksadopts or authorizes the governing standard, or carries it into operative scope through a grammar, brief, rule, or grant; the grant produces the aperture ASK mapping--ask-emphasis-magenta · #FF00FF
Role--function-executive Function it marksrealizes candidates under the rule; does not author it and does not judge the result ASK mappingtheme-neutral — #FFFFFF light · lavender-ASK #D4C6E1 dark
Role--function-judicial Function it marksevaluates candidates against the standard, selects one, ratifies, and closes ASK mapping--ask-emphasis-cyan · #00BEFF

These are the three classical separation-of-powers functions read as color: who makes the rule, who executes under it, who judges against it. They are structural functions, invariant for an element — not states it passes through.

What performs the legislative function, and what sits around it

legislative is one function, and more than one kind of thing stands near it. Some of those things perform it; the rest sit outside it and take no role color. The role color does not draw this line, so the surface must.

source-of-intent / normative-apex ROLE     constitutive legislative source — it adopts or
                                           authorizes the governing standard
grammar · brief · rule · grant             delegated legislative apparatus, WHERE IT CARRIES THE
                                           GOVERNING STANDARD INTO OPERATIVE SCOPE
artifact of intent                         classified by WHAT IT DOES: legislative where it acts
                                           as the grammar, brief, rule or grant — NOT legislative
                                           merely because it carries intent
─────────────────────────────────────────  ──────────────────────────────────────────────────────
standing intent                            adopted normative content. NO function color merely
                                           because it is normative content
passive storage · citation · routing ·     neutral carriage
  relay · preservation
aperture                                   bounded permission PRODUCED BY the grant — a neutral
                                           quantity, not apparatus
aperture dimension · iris geometry         neutral representation of that quantity

The entries above the divider identify things that perform the legislative function under the stated conditions. The entries below do not, and none takes --function-legislative.

The grant and the aperture are two objects. The grant is apparatus and may be legislative; the aperture is the permission the grant produces, and coloring a quantity would make it look like role-bearing apparatus.

The role is not the actor. Classifying a role within a function makes neither the role identical to the function nor the person or institution occupying it exhausted by that function. The same actor may occupy a legislative role and a judicial one without collapsing either, so this contract does not say that an occupying actor is legislative only.

Constitutive and delegated legislation share one identity. Both take --function-legislative. Hierarchy between them is carried by topology, labels and geometry — never by a second magenta, an opacity rank, or a fourth role.

The executive is deliberately hue-less

executive carries no emphasis hue. Its neutrality is the signal: execution fills the aperture but neither originates the norm nor closes the judgment. In light it is white (#FFFFFF); on the dark ink field pure white is too hot, so it resolves to lavender-ASK (#D4C6E1), the dark-mode neutral foreground value. legislative (magenta) and judicial (cyan) are the two hot points; the executive neutral reads by contrast between them.

Conceptual anchor // the Montesquieu spine

Three Functions renders the separation between rule-making, execution, and judgment as semantic role color — the classical separation of powers (Montesquieu) read onto a surface. "Three Functions" names the reusable vocabulary; "the Montesquieu spine" names its conceptual lineage. The lineage is what makes the mapping mean something — it is why legislative, executive, and judicial are the roles and why they are distinct — but the primitive is named for what it does, so it stays legible beside the literal Spectral State / Evidence State and portable to any surface that instantiates the same rule → execution → judgment separation.

The abstraction is domain-general but not role-agnostic. Its three roles are fixed. A future three-part model does not reuse these tokens merely because it also has three parts — Three Functions is the separation-of-powers triptych specifically, not a generic palette for arbitrary triads.

Per-theme resolution

legislative executive judicial
Light (on lavender) legislativemagenta #FF00FF executivewhite #FFFFFF judicialcyan #00BEFF
Dark (on ink) legislativemagenta #FF00FF executivelavender-ASK #D4C6E1 judicialcyan #00BEFF

Only executive flips per theme; the two emphasis accents already read on both fields, so legislative and judicial are theme-invariant. Per the foundation's theme model, the dark executive value appears in both the explicit [data-theme="dark"] block and the prefers-color-scheme: dark auto block.

Rendering contract

Color is a sparse semantic signal, not a set of opaque blocks. A consuming surface keeps the restrained ASK field and marks each role-bearing apparatus at one intensity:

role stroke       full role value
role fill         30%  ·  color-mix(in srgb, <role> 30%, transparent)
label             the role-identifying name set on a role-bearing apparatus: --fg-1, the standard
                  theme foreground, by default; a foreground registered in README.md
                  (High-contrast foreground — registered uses) only within that registration's
                  scope — never the role hue
notes · tags      explanatory notes, and flow, section or relationship tags — including a tag
                  that names a role from beside its apparatus — are not labels: they keep their
                  own neutral foreground roles, never the role hue
structural edges  neutral (frames, arrows, dimension lines stay --fg-* / --line-*)

Every role-bearing apparatus — a labeled box, a bounded field or chamber, a selected node — carries a 30% fill and the full role value as stroke. The field-vs-object distinction is carried by geometry and negative space, not opacity: a large field reads as a field because it is large and because the artifacts inside it are cut out of it — not because its wash is lighter. Labels stay on --fg-1, or on a registered foreground within its scope, so the role reads as a tint on structure, not as colored text. Color must remain redundant with the labels and geometry: the surface still communicates legislative / executive / judicial in monochrome.

Semantic function color attaches to the role-bearing apparatus, not automatically to the artifacts produced inside it. A function that produces things — an executive field emitting candidates — colors the field; the candidates it emits stay neutral content, rendered as negative cutouts (holes) through the field with neutral outlines, never a second role fill. The 30% fill is the rendering contract, not a palette addition — the three role colors are unchanged.

Non-function elements

A consuming surface often contains consequential elements that are not functions — most commonly a downstream governance step that binds the accepted result. Represent these in the existing neutral structural treatment; they take no role color.

When a legend or key enumerates the three functions, a prominent neutral element (a governance box, an output node) can be left unexplained. If so, key it with one neutral exemplar under a separated, explicitly-labeled heading — a dotted legend-only divider, then a single neutral swatch (matching the scale and grammar of the three function swatches) under a label such as "downstream — not a fourth function." The key identifies the element's visual treatment; it does not reproduce the consuming surface's topology (no process chain, no arrows), and it is never a fourth colored swatch.

This creates no fourth role and no fourth color. There is no --function-governance. The separated row is explanatory: it teaches the reader that a consequential element sits outside the three functions — exactly the boundary the primitive holds.

Coexistence with Spectral State and Evidence State

Three semantic axes may appear on one surface; they may not compete for one visual channel on one element.

function role   ≠   element state   ≠   evidence state

Reused hue does not create semantic identity. --function-legislative and --state-proposed are both magenta; --function-judicial and --state-held are both named cyan. That is a shared hue name, not a shared token or resolved value — the function roles bind independently to the fixed emphasis accents, while --state-* are per-theme hsl() values, so they render differently (the magenta pair shares the 300° hue at different saturation/lightness; the two "cyans" are in fact different hues). These are not aliases: color proximity never turns different labels into the same meaning — the same discipline Evidence State applies to its exact reused values. Visible labels stay mandatory.

Channel contract when more than one system is present on an element:

function role   → fill / principal node treatment
state           → outline, badge, or separate state marker
evidence state  → evidence marker, rail, dash, or labeled annotation

In a document that adopts Review Semantics, review is a further axis, and the composition applies this contract with all three apart: state takes the separate state marker (a square), evidence the evidence marker (a dot), and review the outline. A diagram keeps the contract above.

Tiers

  • Tier 1 (identity-free): the three --function-* role names — a stable vocabulary other ASK-family surfaces can reuse.
  • Tier 2 (ASK design language): the mappings to ASK palette values (magenta, the theme-neutral executive, cyan) and the per-theme executive resolution.
  • No Tier 3. This primitive carries no instance identity.

How to use it

  1. Load colors_and_type.css first (Three Functions relies on its theme resolution and palette tokens), then three-functions.css.

  2. On a consuming element, set the stroke from a single role token and a restrained translucent fill from the same value:

    /* example — consuming surface */
    .part[data-function="legislative"] {              /* discrete role object → 30% */
      stroke: var(--function-legislative);
      fill:   color-mix(in srgb, var(--function-legislative) 30%, transparent);
    }
    .field[data-function="executive"] {               /* a bounded field is a role-bearing apparatus → 30% */
      fill:   color-mix(in srgb, var(--function-executive) 30%, transparent);
    }
  3. Keep labels at --fg-1 — or at a foreground registered for that exact bounded use in README.md (High-contrast foreground — registered uses), within that registration's scope — and keep structural edges neutral. A registration never makes a label take the role hue. Color only the parts that perform a function; leave everything else on the neutral field.

  4. If the surface also carries state or evidence color, assign them to different channels (outline / marker / rail), never the same fill.

Worked example // bounded-generativity binding

For the bounded-generativity model, Three Functions v0.2 applies the upstream admissibility rule as follows. The owner fixes which kinds of thing qualify for each function; each consumer owns which concrete element instantiates those kinds. method-ASK was the first to instantiate it. Landed state is recorded in CONSUMERS.md, not here.

  • legislative → the source-of-intent / normative-apex role as constitutive source, and the grammar / brief box as delegated apparatus // the apex adopts or authorizes the governing standard; the grammar / brief carries it into operative scope, and its grant produces the aperture.
  • executive → the bounded-realization chamber // the apparatus carries a 30% executive fill; generation fills the aperture, nonjudgmental. The candidate glyphs are variance the chamber produces — content, not executive-function objects — so they are rendered as negative cutouts through the wash with neutral outlines (consumer-local): the field reads as executive, the candidates read as uncommitted variance.
  • judicial → the selection ring and the candidate it ratifies // evaluation, selection, closure. The ratified candidate is judicial's closed output, no longer neutral chamber variance — which is why it, alone among the glyphs, takes a role fill.

Everything else stays neutral, and those exclusions are load-bearing:

  • an actor envelope, where the figure draws the occupying actor separately from the role // the actor is trans-functional, not exhausted by or reducible to the function of any role it occupies, so coloring its envelope with legislative magenta would collapse the actor into that function, while the source-of-intent role it occupies stays legislative;
  • the aperture dimension and iris geometry // coloring a quantity would make it look like role-bearing apparatus;
  • the outer bounded-generativity frame, the dotted authorized-judgment path, artifact governance, and the governed artifact with its governance record // carrying judicial cyan up into governance would imply selection = governance, and coloring the connecting arrows would suggest function propagates along the chain.

Artifact governance stays downstream and outside the three-function palette — it is not a fourth color. The classification rule applied above is upstream. Its concrete realization is consumer-local: the consuming figure owns its domain labels, element identity, additional neutral structural elements, geometry and layout — but may not redefine the upstream admissibility rule.

What is upstream vs consumer-local

  • Upstream (this repo): the three role names, their ASK mappings, the per-theme executive resolution, the rendering contract, the channel-coexistence rule, and the function-admissibility criteria — which kinds of thing qualify for each function, and which do not. General; family-reusable. Consumers inherit by reference and do not mint a divergent palette.
  • Consumer-local (e.g. method-ASK, asset-pipeline-ASK): which concrete element instantiates a classified role, the domain vocabulary, additional neutral structural elements, geometry, and surface layout — all conforming to the upstream criteria. Those are the application, not the color system.

The limit runs one way. A consumer-local realization may specialize the upstream rule; it may not contradict or redefine it. Naming the element is the consumer's; deciding what may be named is not.