1. playbooks
temper
  • Temper documentation
  • cli
    • README
    • admin
    • auth
    • check
    • cogmap
    • config
    • context
    • edge
    • init
    • invitations
    • invocation
    • memory
    • pull
    • query
    • resource
    • search
    • skill
    • slack
    • status
    • steward
    • team
    • trail
    • update
    • version
    • warmup
  • config
    • README
  • auth
  • guides
  • doors
    • Building against Temper
    • Running Temper
    • Using Temper
  • concepts
    • Auth Identity
    • Authoring Authorization
    • Contexts and Refs
    • Machine Tokens
    • Operational Memory
    • Release Verification
    • The SAML Reconcile Channel
    • Slack Identity and Revocation
    • Teams and Roles
    • Telemetry
    • Token Verification
    • The Trust Boundary
  • playbooks
    • Adopt operational memory
    • Authenticate
    • Bootstrap an Org
    • Bootstrap a Team's Self-Cognition
    • Build a cognitive map
    • Connect Claude Code
    • Connect Temper to Claude Desktop
    • Deliver L0 Kernel Content
    • Deploy a Steward Agent
    • Deploy the Web UI
    • Enterprise Install
    • Provision a Read-Only GitHub Connection
    • Ingest a corpus
    • Install Temper
    • Run a Team
    • Self-Host Temper
    • Self-host Temper with Okta
    • Self-host Temper with a SAML IdP
    • Send traces to an OTLP backend
    • Slack Mentions
    • Standing Up a Machine Credential
  • sdks
    • Integrating Ruby with temper-rb
  • Temper Cloud API
    • Access
      • POST /api/access/requests — submit a join request for the gating team.
      • GET /api/access/requests/me — check own join request status.
      • DELETE /api/access/requests/me — withdraw a pending join request.
      • POST /api/access/reviews — a revoked principal asks an admin to reconsider (spec D15).
      • GET /api/access/settings — read public system settings.
    • Slack Link
      • Disconnect any principal. Operator path — offboarding and stuck users.
      • Disconnect EVERY Slack principal bound to the caller's own profile.
    • Auditor
      • auditor_dispatch
      • auditor_sweep
      • complete_auditor_job
    • Graph
      • POST /api/cogmaps/{id}/graph/slice — R4 cogmap-scoped neighborhood slice.
      • GET /api/graph/cogmaps/{id}/panorama — enter-a-cogmap Tier-0 interior.
      • GET /api/graph/contexts/composition — Beat E Tier-1: the force-graph composition of a container's (or a residual bucket's) members.
      • GET /api/graph/contexts/panorama — Beat E Tier-0: goal-container territories + residual tray.
      • GET /api/graph/home — the you→teams→cogmaps membership home.
      • GET /api/graph/regions/composition — Beat D region→resources composition drill.
    • Cognitive Maps
      • list_cognitive_maps
      • genesis
      • get_cognitive_map
      • reconcile
      • analytics
      • grant_cogmap_access
      • revoke_cogmap_access
      • materialize
      • materialize_delta
      • region_metrics
      • shape
      • bind_team
      • unbind_team
    • Contexts
      • list_contexts
      • create_context
      • get_context
      • context_materialize
      • reassign
      • context_region_metrics
      • rename
      • context_shape
      • share_team
      • unshare_team
    • Events
      • cursor
      • GET /api/graph/elements/{kind}/{id}/trail — R5 element event-trail. kind ∈ {node, edge}.
    • Facets
      • set_facet
      • Read the live facets of one edge.
      • Set a facet whose owner is an **edge** rather than a resource.
      • Read the live facets of one resource — the confirming read for a write that steers region formation and Atlas grouping.
    • Health
      • health_check
    • Ingest
      • create_ingest
      • update_ingest
      • list_blocks
      • append_block
      • finalize_resource
    • Invitations
      • accept
      • decline
      • list_mine
      • list_team_invitations
      • revoke_team_invitation
      • create_team_invitation
    • Invocations
      • list_invocations
      • open
      • show
      • close
    • Profile
      • get_profile
      • update_profile
      • list_auth_links
    • Query
      • `POST /api/query`.
    • Relationships
      • assert
      • fold
      • retype
      • reweight
    • Resources
      • `GET /api/resources` — **one response type, unconditionally.**
      • create_resource
      • get_resource
      • delete_resource
      • update_resource
      • List the finding at `{id}`'s citation-audit trail — one row per audit, each naming its auditor.
      • Record an auditor's signed defensibility verdict on one `(block, source)` citation of the finding at `{id}`. CONFORM to `handlers::edges::assert` (the sibling authored-write handler): thin — build the command, dispatch it, map the error. No persistence he
      • get_content
      • list_resource_edges
      • resource_evidence
      • grant_resource_access
      • revoke_resource_access
      • resource_lineage
      • provenance
      • annotate_resource
    • Meta
      • get_meta
      • update_meta
    • Reassign
      • reassign_resource
      • reassign_team
    • Search
      • `POST /api/search`.
    • Steward
      • candidates
      • dispatch
      • sweep
      • delta
      • advance
    • Teams
      • list_teams
      • create_team
      • detail
      • delete_team
      • update_team
      • add_member
      • remove_member
      • change_role
    • Schemas
      • AcceptInvitationResponse
      • ActInput
      • ActInvocation
      • ActName
      • ActQuantity
      • ActRefusal
      • ActorAuthority
      • AddMemberRequest
      • AdvanceWatermarkAck
      • AdvanceWatermarkRequest
      • AgentAuthorship
      • AppendBlockPayload
      • AssertRelationshipRequest
      • AtlasEdge
      • AtlasHome
      • AtlasNode
      • AtlasSubgraph
      • AuditCitation
      • AuditSweepRow
      • AuditorDispatchTickRequest
      • AuditorDispatchTickResponse
      • AuditorJobCompleteAck
      • BindTeamOutcome
      • BindTeamRequest
      • BlockId
      • BlockProvenanceRow
      • BlocksResponse
      • BodyStorage
      • Bridge
      • BulkReassignAck
      • BulkReassignRequest
      • ChangeRoleRequest
      • CharterBlock
      • CharterDisposition
      • CitationAuditRequest
      • CitationAuditRow
      • ClaimedAuditJob
      • ClaimedJob
      • CloseInvocationRequest
      • CogmapAnalyticsRow
      • CogmapDetail
      • CogmapFoundationRow
      • CogmapGrantBody
      • CogmapId
      • CogmapRegionMetricsRow
      • CogmapRegionRow
      • CogmapRegulationRow
      • CogmapRevokeBody
      • CogmapRow
      • CogmapStaleness
      • CombineNode
      • CombineOp
      • Composition
      • CompositionTrace
      • ConfidenceBand
      • ContentResponse
      • ContextCreateRequest
      • ContextId
      • ContextOwnerRef
      • ContextPanorama
      • ContextRow
      • ContextRowWithCounts
      • CorrelationId
      • CreateCogmapOutcome
      • CreateCogmapRequest
      • CreateInvitationRequest
      • CreateRequestBody
      • CreateReviewBody
      • DeleteResponse
      • DeviceOverrides
      • DispatchTickRequest
      • DispatchTickResponse
      • Disposition
      • DriftSweepRow
      • EdgeFacetRow
      • EdgeFacetSetRequest
      • EdgeFacetsResponse
      • EdgeFilter
      • EdgeId
      • EdgeKind
      • ElementEvent
      • ElementKind
      • EmbedDispatchSummary
      • Entitlements
      • ErrorBody
      • ErrorDetail
      • ErrorDetails
      • EventCursorResponse
      • EventTrail
      • ExactArm
      • ExactHit
      • Extent
      • FacetAck
      • FacetPredicate
      • FacetSetRequest
      • FinalizePayload
      • FoldRelationshipRequest
      • GrantOutcome
      • GraphEdgeRow
      • GroupKeyMeta
      • HealthResponse
      • HomeCogmap
      • HomeContext
      • IdKind
      • IdProvenance
      • IdSet
      • IdpRevocation
      • IngestCreateResponse
      • IngestDelta
      • IngestPayload
      • IngestState
      • InheritedReadGrant
      • InheritedShare
      • InputSource
      • Intention
      • InvitationStatus
      • InvitationTokenRequest
      • InviteeInvitation
      • InvocationAck
      • InvocationActRow
      • InvocationCloseAck
      • InvocationId
      • InvocationSummary
      • InvocationView
      • JoinRequest
      • JoinRequestStatus
      • LensId
      • LineageNode
      • ManagedMeta
      • MatchLocation
      • MaterializeAck
      • MaterializeDelta
      • MaterializeRequest
      • MergePolicy
      • MetaUpdatePayload
      • NarrowedBy
      • NodeHome
      • OpenInvocationRequest
      • OrdOp
      • OrphanNode
      • OutcomeDeclaration
      • PlanRefusal
      • PlanRefusalDetails
      • Polarity
      • Profile
      • ProfileAuthLink
      • ProfileId
      • ProfileUpdateRequest
      • ProfileWithEntitlements
      • PropertyOp
      • PropertyPredicate
      • ProvenanceSource
      • PublicSystemSettings
      • QuantityScale
      • QueryResponse
      • ReassignAck
      • ReassignContextOutcome
      • ReassignContextRequest
      • ReassignResourceRequest
      • ReconcileCogmapRequest
      • ReconcileEdge
      • ReconcileEdgeTombstone
      • ReconcileEntry
      • ReconcileOutcome
      • ReconcileTelos
      • ReconcileTelosBlock
      • ReconcileTombstone
      • Refusal
      • RefusalReason
      • RegionHit
      • RegionId
      • RelationshipAck
      • RemoveMemberOutcome
      • RenameContextOutcome
      • RenameContextRequest
      • ResidualBucket
      • ResidualContext
      • ResidualGroups
      • ResidualOwnedReach
      • ResourceAnnotateRequest
      • ResourceCreateRequest
      • ResourceFacetRow
      • ResourceFacets
      • ResourceFacetsResponse
      • ResourceFilter
      • ResourceGrantBody
      • ResourceHit
      • ResourceId
      • ResourceLineage
      • ResourceListResponse
      • ResourceRevokeBody
      • ResourceSection
      • ResourceSortField
      • ResourceUpdateRequest
      • ResourceView
      • ReturnSpec
      • RetypeRelationshipRequest
      • RevokeOutcome
      • ReweightRelationshipRequest
      • ScoreKind
      • Scoring
      • SearchParams
      • SearchReason
      • SearchResponse
      • SearchResultRow
      • SearchScope
      • SearchScopeInfo
      • SegmentInfo
      • SegmentedBegin
      • SegmentedBeginResponse
      • ShareContextOutcome
      • ShareContextRequest
      • SlackDisconnectRequest
      • SlackDisconnectResponse
      • SlackDisconnectedPrincipal
      • SliceRequest
      • SortOrder
      • StageDisposition
      • StageInput
      • StageInputTrace
      • StageName
      • StageNode
      • StageOutput
      • StageRelation
      • StageResult
      • StageTrace
      • Standing
      • StandingShape
      • Subscription
      • SubscriptionOverride
      • SystemAccessDetails
      • TeamCreateRequest
      • TeamDetail
      • TeamInvitation
      • TeamMemberDetail
      • TeamMemberRow
      • TeamMemberSource
      • TeamRole
      • TeamRow
      • TeamUpdateRequest
      • Territory
      • TerritoryKind
      • TerritoryOverview
      • UnbindTeamOutcome
      • UnshareContextOutcome
      • VaultConfig
      • ViaEntry
      • WideArm
      • WideHit
  • Temper /api/query — the compositional read surface
    • Run a declared composition of situated acts.
    • Schemas
      • Composition
      • OutcomeDeclaration
      • ReturnSpec
      • Intention
      • StageNode
      • ActInvocation
      • CombineNode
      • StageInput
      • StageRelation
      • Disclosure
      • QueryResponse
      • StageResult
      • StageOutput
      • ScoreKind
      • Scoring
      • ResourceHit
      • CompositionTrace
      • StageTrace
      • InputSource
      • NarrowedBy
      • StageName
      • ActName
      • IdKind
      • IdSet
      • BoundTerm
      • Extent
      • StageDisposition
      • ActRefusal
      • PlanRefusal
      • RefusalReason
      • ActQuantity
      • QuantityScale
      • ResourceFilter
      • EdgeFilter
      • PropertyPredicate
      • PropertyOp
      • ResourceSection
      • EdgeKind
      • OrdOp
      • CogmapId
      • ContextId
      • IdProvenance
      • FacetPredicate
      • CombineOp
      • BlockId
      • MatchLocation
      • BodyStorage
      • ResourceId
      • IngestState
      • ManagedMeta
      • ProfileId
      • ResourceView
      • Polarity
      • ViaEntry
      • LensId
      • RegionId
      • CogmapRegionRow
      • RegionHit
      • StageInputTrace
      • Standing
      • ActorAuthority
      • Refusal
      • SystemAccessDetails
      • PlanRefusalDetails
      • ErrorDetails
      • ErrorDetail
      • ErrorBody
  1. playbooks

Deliver L0 Kernel Content

For operators. This playbook delivers or updates the content of the L0
kernel cognitive map (system-default) on a live Temper instance. It covers
the non-obvious fail-closed admin gate and the grant → reconcile →
re-lock
procedure an operator must follow to write to L0.
L0 is release/operator-governed, not operationally stewarded. This is an
operator runbook, not an end-user flow.

Outcome#

By the end you will have: the 22 kernel landmarks plus the telos charter
reconciled into the live L0 map, and the fail-closed admin gate restored so
the kernel is immutable again. A re-run against unchanged content is an
idempotent no-op.

Prerequisites#

A deployed, migrated instance — see
self-hosting Temper, or the
enterprise install for the full end-to-end
sequence.
The charter-set primitive applied. The cogmap_charter_set function
must be present on the target database before a telos-bearing reconcile.
An embed-capable temper binary. The reconcile path embeds each
manifest entry client-side (ONNX), so it requires a binary built with the
embed feature. The default install bundles it; a non-embed build
returns a clear requires the 'embed' feature error rather than running.
An admin connection to the instance's Postgres (admin role) for the
grant and re-lock steps.
The operator's profile id. Sign in once before the grant so the profile
row exists; capture its UUID.
A fork of the Temper repository. Self-hosters run this playbook
alongside steward-agent deployment, and both need a checkout — fork first.
For the trust model that gates the L0 write, see
trust boundary.

What L0 is#

The L0 kernel cognitive map is the public, root-team-joined "what is temper"
cognitive map. It is born deterministically by migration under the
system actor, with reserved ids:
EntityReserved id
L0 cogmap00000000-0000-0000-0005-000000000001
L0 telos resource00000000-0000-0000-0005-000000000002
Root team slugtemper-system
L0 is a living map, but it evolves only by shipping new additive
migrations
that call the substrate mutation functions against L0's reserved
id — never by editing the immutable birth migration. Its content (landmarks
telos charter) is delivered separately from its schema, via the operator
reconcile flow described here.

The gotcha: L0 writes are fail-closed#

temper cogmap reconcile against L0 is gated by
require_cogmap_write_admin → is_system_admin. Two things make this
non-obvious:
1.
is_system_admin reads kb_principal_governance and nothing else. Not
team membership, not gating_team_slug, not a column on kb_profiles. A
profile is a system admin exactly when it has a row in that table.
2.
Nothing has one out of the box. The canonical seed grants no governance,
so the L0 write gate denies everyone and the kernel is immutable on a
fresh instance. A reconcile attempt returns 403 Forbidden until the
temporary operator grant below has been run.
This is intentional: the L0 special-case is fail-closed so an unconfigured
instance cannot have its kernel rewritten by any authenticated user. The cure
is not a permission flag — it is the temporary operator grant below.

Procedure#

Snapshot prod before a hand-run data change. Take a backup of your
target database before running the grant or re-lock SQL.

0. Fork and clone#

Self-hosters run this playbook alongside steward-agent deployment; both need a
repository checkout. Fork the Temper repository and clone your fork. The
inlined manifest below is saved into it.

1. Grant (temporary admin)#

Connect to the target database with an admin role — any admin connection to
your instance's Postgres will do; the steps below are plain SQL. Point the
gating slug at the root team and make the operator an owner of it:

2. Reconcile#

Save the manifest below as l0-kernel.yaml in your checkout, then reconcile
the live L0 map against it:
The CLI reads the manifest, embeds each entry client-side (ONNX, via the
embed feature), builds a pre-embedded request, and PUTs it to
PUT /api/cognitive-maps/{id}.
It is idempotent — a re-run against unchanged content reports zero
changes:
{ "created": 0, "updated": 0, "folded": 0, "unchanged": 22, "charter": "unchanged" }
The charter field is a distinct grain from the landmark counts. Its values
are absent (manifest carried no telos:), unchanged, created (first
delivery into an empty telos), or updated (live charter differed and was
replaced). First delivery reads "created": 22, … "charter": "created".
Confirm the outcome counts match expectation (first delivery creates; a re-run
reports unchanged / charter: unchanged).

3. Re-lock (restore fail-closed)#

Undo the grant so L0 returns to immutable:
Delivered content persists. The next lifecycle update repeats this same
grant → reconcile → re-lock dance.

The L0 kernel manifest#

Save the following as l0-kernel.yaml. It delivers the 22 orientation
landmarks and the authored telos charter to the live system-default cogmap.
The CLI embeds each entry client-side (ONNX) before the PUT, so the server
stays embed-free on the request path.
Each entry carries a pre-generated, stable id (uuidv7) — the landmark's
substrate identity. The reconcile diff matches manifest entry ↔ live resource
by this id, and edges reference their target by id. origin_uri is pure
attribution (loose, non-unique — never a key). These ids are permanent once
shipped; a future landmark gets a freshly-generated uuidv7. First delivery is
all-additive: no fold_resources / fold_edges.
The telos: section is delivered via cogmap_charter_set (fold-then-reproject).
block_mutate is revise-only and cannot populate an empty telos;
cogmap_charter_set is the correct primitive for initial and subsequent
charter delivery.

Lifecycle framing#

L0 content evolves through two complementary mechanisms:
Schema / structural birth and additive evolution ship as migrations
that call the substrate mutation functions against L0's reserved id. These
are immutable once shipped.
Content delivery (landmarks + telos charter) is operator-directed
reconciles
of the manifest, each gated by the temporary grant above.
Both are operator-governed; neither is ambient or steward-driven. L0's charter
declares its ambient steward wake = never.

Further reading#

The trust model that gates the L0 write:
trust boundary.
The base deployment this playbook starts from:
self-hosting Temper.
The full end-to-end install sequence:
enterprise install.
What the architecture fixes vs. what a deployment chooses:
temperkb.io/operating/deployment.
Modified at 2026-08-20 02:05:41
Previous
Connect Temper to Claude Desktop
Next
Deploy a Steward Agent
Built with