trust_posture_revisions.body. It covers the v1.0 schema, every field’s type and semantics, validation rules, and the per-axis composition rules the composer applies when folding Platform → Org → Team.
The conceptual overview is at Trust Posture; this page is the spec.
Top-level shape
Strict-unknown-field rejection. Top-level and nested objects reject unknown keys. Adding a field requires a schema-version bump.
sideband axes
sideband.coherence
Drives computeTeamCoherence (@mnemom/team-coherence). Detector takes no internal config; the posture body is the firing policy.
Detector fires when any of the
fire_on conditions is satisfied. To disable a condition entirely, set it to null. To disable the entire axis, set enabled: false.
sideband.fault_line
Drives analyzeFaultLines (@mnemom/agent-alignment-protocol).
The fault-line detector emits findings at four severity tiers (low / medium / high / critical, derived from
impact_score thresholds in the SDK). severity_floor is the cutoff — findings below that severity don’t fire. severity_on_fire is what the resulting pending_advisories row carries.
sideband.fleet
Drives checkFleetCoherence / checkFleetFaultLines (@mnemom/agent-alignment-protocol).
A finding is emitted when any enabled pattern fires.
fleet_identification
In v1.0,
team_membership is the only valid value. The field is present so future identification modes (by capability, by tag, by metadata predicate) can be added additively without breaking existing rows. Validators reject unknown values.
fan_out
In v1.0,
per_named_affected_agent is the only valid value — every named affected agent in a finding receives one pending_advisories row. Future modes (deduplicated, aggregated, throttled) extend this enum additively.
Composition rules
The composer (composeTrustPosture in mnemom-api) folds Platform → Org → Team with strictest-wins per axis. Mirrors the cards composition idiom.
On
min_pair_score_below direction: the field expresses “fire when the worst pair is below this.” A higher threshold fires more often (stricter); a lower threshold fires less often (looser). The composer uses min here — meaning the lower (looser) value wins. If you want stricter behavior, set the value higher at your layer.
This is a deliberate exception to “lower = stricter” because the field’s semantic is the upper bound at which firing starts. The composer documents it explicitly.
Cascade closure
The platform guarantees: every team has an effective posture. The platform default (tp-platform-standard) is the floor — every team’s effective body composes at least the platform layer.
If the gather RPC returns a degraded envelope (e.g., the platform seed somehow missing), the in-process composer synthesizes a fallback floor matching tp-platform-standard’s body. Production should never see this path; it’s defensive belt-and-suspenders, with a sentinel posture_id: tp-synthetic-fallback in the output’s scopes_applied for telemetry.
Validation rules summary
Validation failures return a structured
{ ok: false, errors: [{ field, rule, message }, …] } body so client tooling can surface specific field errors.
Body size
Server-side limit: 256 KiB per posture body. Cards’ equivalents are 128 KiB (alignment) and 64 KiB (protection); postures are larger by design because of the multi-axis schema and future-axis headroom (Trust-Rating gating, attestation flags, control-tag mappings). A 413 response means your body is over the limit. Postures rarely approach 256 KiB in practice — the canonical Mnemom defaults are <2 KiB each.See also
- Trust Posture — overview
- Trust Posture vs. Cards — parallel cascades
- Mnemom-shipped default postures — Standard / High-Compliance / Low-Latency rationales
- Posture versioning — revision history + rollback
mnemom posture— CLI mirror of the REST surface (see themnemom posture --helpoutput)