Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.mnemom.ai/llms.txt

Use this file to discover all available pages before exploring further.

This page is the operator’s playbook for the cards primitive. Three stages — review, publish, promote — each with its own tool. The legacy activate_composure CLI was retired in Phase 4 W5.3; the substitutes are below.

Tools at a glance

StageToolWhat it does
Per-PR reviewmnemom/cards-action@v1Posts a care-framed PR comment with composed-view diff + simulate + explain.
Operator publishemps.publish_manifestGET-modify-PUT from editorial manifest to canonical card.
Verificationscripts/audit_polis_cards.pyCompares canonical state to editorial intent.
Rollbackemps.restore_cards_from_auditReplays a prior canonical from the governance audit log.

Stage 1 — Per-PR review (Cards Action)

When a PR touches a .mnemom/<scope>/**.yaml file, GitHub Actions runs mnemom/cards-action@v1. The action posts one sticky comment per PR (updated on each push). The comment surfaces:
  • The composed-view diff (this PR’s manifest projected against the agent’s current /effective state).
  • Care-framed monotone-tightening advisories.
  • Simulate verdicts for golden-path tool calls declared in .mnemom/tests/simulate-cases.yaml.
  • The explain trace from the policy engine, including suggested remediations.
The action is read-only. It never PUTs. The merge step doesn’t auto-publish — that’s Stage 2.

Reviewer guidance

  • Composed-view diff is the headline. Read it as “what will the agent see after this lands.”
  • Care-framed advisories are editorial signals. The platform’s PUT-time monotone-tightening check is authoritative; the action’s local check is best-effort.
  • Simulate verdicts show how the gateway and observer would react to golden-path tool calls under the new manifest. A false verdict is a hard stop unless the reviewer understands why.

Failure mode config

Per-repo .mnemom/ci-config.yaml:
behavior:
  on_allowed_false: hard_fail       # fail the CI check
  on_allowed_conditional: soft_warn # surface a warning, allow merge
  on_allowed_true: pass             # silent green
  on_action_error: soft_warn        # when the API is unreachable

Stage 2 — Operator publish (publish_manifest)

After the PR merges, an operator runs publish_manifest to update the canonical card. The merge does not auto-publish; the publish is a separate, deliberate step.
export MNEMOM_API_KEY=$(op read "op://polis-api-keys/operator-key/credential")
cd packages/core

# Alignment
uv run python -m emps.publish_manifest --all-agents --resource=alignment --dry-run --report
uv run python -m emps.publish_manifest --all-agents --resource=alignment

# Protection
uv run python -m emps.publish_manifest --all-agents --resource=protection --dry-run --report
uv run python -m emps.publish_manifest --all-agents --resource=protection
Single-agent variants: --name Themis or --agent-id smolt-512448e7. See Publishing Manifests for the full CLI surface.

Stage 3 — Audit

uv run python scripts/audit_polis_cards.py --all-agents --report --exclude-inherited
The audit compares each agent’s canonical to the editorial source. Drift surfaces in six categories: catalog-ID / parameter / mode / connector-soft / domain-missing / unknown-value. A MISSING canonical finding points the operator back at publish_manifest. --exclude-inherited filters out inherited cascade values that surface as advisories but aren’t real drift.

Stage 4 — Promotion ladder (observe → nudge → enforce)

The observe-first rollout is the operator default. Promote one (agent, value) tuple at a time, audit between steps. See the Publishing Manifests promotion section for the full ladder.

The activate_composure retirement

emps.activate_composure was the original CLI before the cards primitive landed. As of Phase 4 W5.3 it is retired — invoking it prints a care-framed message and exits 1. The two substitute paths above (publish_manifest and mnemom/cards-action) cover both halves of its prior responsibility:
Old activate_composure stepNew tool
Step 1 — compute bounded_actions + PUT alignment-cardemps.publish_manifest --resource=alignment (manifest-driven) + the mechanical publisher (live ConnectorRegistry → bounded_actions in canonical, separately)
Step 2 — PUT conscience-valuesemps.publish_manifest --resource=alignment (conscience values are part of the canonical preserved-fields set)
Step 3 — reverify AAPPlatform-managed; observer runs it on every publish
Step 4 — reverify AIPPlatform-managed; AIP runs it on every gateway request
Step 5 — recompute trust scoresPlatform-managed
Per-PR editorial feedbackmnemom/cards-action@v1
If you have an existing shell alias or shell function that invokes activate_composure, point it at publish_manifest --resource=alignment (or --resource=protection) instead.

Rollback

uv run python -m emps.restore_cards_from_audit --agent-id smolt-512448e7 --since 2026-05-21T00:00:00Z
Replays the governance_audit_log.before_json snapshot taken on every PUT.

See also