route → rules → guard → claim proof

Tenetora

Governance runtime for AI-agent software engineering.

One project record for rules, decisions, evidence, and action boundaries — for every supported AI coding tool; actions stay constrained, verifiable, auditable.

$ tenetora route --message "<task description>"
context: build
rules: build-and-deps, testing
loaded: 2 rule files
route: ok

$ tenetora guard --action claim --verification-command "<command>" --verification-status passed
verification-claim: pass
claim proof: ah-claim-<example-hash>
Tenetora lifecycle: route → rules → guard → claim proof (example output, redacted)

PASSclaim proof: ah-claim-0123456789abcdef0123456789abcdef(synthetic example)

Install

Install or upgrade Tenetora. No install command is offered until the public sources are verified.

Your operating system could not be detected; select it manually to show the install command.

Python requirement
>=3.9
First install default scope
global
Upgrade without a scope
existing-only
Non-interactive default language
en

Trust and restart:Restart the native plugin host after updates; review /hooks after first install or hook changes.

The failures it governs

Consider an API change made across several modules with two coding agents:

  1. The first agent reads AGENTS.md and a local rule file.
  2. The second agent reads a different instruction set after context compaction.
  3. A copied issue description contains an unsafe instruction.
  4. The change affects a shared schema, but no one records the consumers.
  5. A focused unit test passes while the integration path is broken.
  6. The final report says “done”, but no one can reproduce the verification.

The problem is not that the agents cannot write code. The problem is that the work has no durable control surface.

One governed work path

One project record flows through five stages — the same pipeline the toolchain enforces; skipping any stage changes what the conclusion means:

  1. 01 Recordrules, facts, decisions, and evidence live in .tenetora/, current guidance separated from history.
  2. 02 Routeeach task loads only the rule slice for its context, leaving consumption evidence.
  3. 03 Guardexternal input, rule changes, commits, and completion claims pass deterministic checks before acting.
  4. 04 Observeruntime observation, review, and change-impact evidence recorded as-is — a file existing is never “active”.
  5. 05 Provea completion claim binds the full verification command, the current goal, and the worktree state.

What it is not

Tenetora operates beside, not instead of, other engineering systems. The difference is which layer is governed:

  • Spec / SDD toolsDescribe what should be builtGoverns which project context the agent consumes, which risky boundaries are checked, and which evidence supports the final claim
  • Rules files & prompt templatesRemind the agent to follow rules and run testsKeeps rules in one project record, distinguishes a partial check from the declared full command, and rejects stale evidence
  • Plain hooksTrigger fixed actions inside one toolProvides shared CLI semantics and an evidence model across tools, reporting each platform’s real runtime ceiling
  • CIRejects a bad commit after it is createdAlso governs the earlier model workflow and the local action that creates the commit
  • Issue trackersRecord team work and product decisionsRecords execution-level decision reasons, action boundaries, and verification evidence

Runtime evidence

Runtime evidence: Route / Doctor / Guard / Claim (example output, redacted)

$ tenetora doctor
scope: project
runtime: host-supported
hooks: none registered
evidence: recorded

Real engineering situations

Eleven concrete situations where governance changes the outcome. Each observable result comes from an actual product mechanism:

  1. Several tools work on one repositoryEach host reports its effective skill/plugin/runtime source; another conversation cannot silently complete the first one’s alignment.
  2. Conversations run in parallelAlignment and completion evidence are owner-bound; a later conversation cannot inherit an earlier one’s active goal or claim.
  3. One conversation switches modelsEach model run is recorded as a separate execution attempt; the alignment session, goal, and owner stay unchanged.
  4. Another model continues after a rate limitA rate-limited attempt does not close the alignment; the next model appends an attempt instead of creating a second goal.
  5. A long task resumes after interruptionBounded loop state records the goal, exit criteria, and next prompt; repeated blockers stop the loop, and other sessions cannot take over.
  6. An external report carries prompt injectionPrompt guard classifies the content before it is followed; a report cannot grant itself local execution or rule-edit authority.
  7. A global install meets a scratch workspaceA directory without .tenetora/ or .harness/ stays silent — no injected context, no gates; governance is enabled per project.
  8. A project depends on local environment filesPaths are registered without storing contents; doctor/status discover a missing path, the commit guard keeps them out of staging, and PreToolUse denies high-confidence destructive operations where the host supports it.
  9. A shared API, hook, or plugin contract changesChange-impact preflight records the contract and its consumers before editing and rescans after; commit checks distinguish recorded from unrecorded edits.
  10. A local test is treated as task completionA completion claim binds the full declared command and the worktree fingerprint; a newer failure or a changed worktree invalidates old evidence.
  11. One machine upgrades several projectsAn existing-only upgrade refreshes registered surfaces only, with previewable discovery; legacy directories of unclear ownership stay untouched.

Per-item mechanics, evidence, and boundaries: see Concepts

Platform capabilities

Maximum configurable capability per platform for the verified product version — not a claim that your machine already has it installed or activated.

PlatformScopesDistributionMaximum runtimeRequired follow-up
Claudeglobal, project, bothNative plugin, Hooks, SkillsActiveRestart the native plugin host after a plugin update.
Codexglobal, project, bothNative plugin, Hooks, SkillsActiveReview and approve hooks after first install or hook changes.
Cursorglobal, project, bothSkills, Merged hooksActiveReload the client and run doctor.
OpenCodeglobal, project, bothSkills, JavaScript pluginActive (partial)Review platform limits before relying on full runtime behavior.
Piglobal, project, bothSkills, TypeScript extensionActive (partial)Project-scope extension loads only after the host’s project trust decision; trust the project, restart the host, then run doctor.
ZCodeglobal, project, bothRegistered plugin, Process hooksActiveReload the client after a native plugin update.
Generic agentsglobal, project, bothSkills, CLISkills onlyConfigure the host skill directory; no portable runtime hook standard.

Security boundaries

  • External input is scanned before it is followed.
  • Unattributed configuration and runtime state fail closed.
  • Completion claims must bind to real verification evidence.
  • Workspaces without .tenetora/ stay silent — governance is enabled per project.

See Security

Quickstart

  1. Install or upgrade the package: the entry offers the command once sources are verified.
  2. Initialize the project record: use tenetora-init to create .tenetora.
  3. Validate the baseline: validate / run-all / audit, then daily work enters the lifecycle.

Next steps