Observable agent compatibility

Upgrade the model. Keep the agent's promises.

Behaviorlock compares portable before-and-after traces against deterministic contracts for the behavior people actually depend on: tool use, permissions, output structure, outcomes, ranks, sets, sequences, and bounded metrics.

git clone https://github.com/christian140903-sudo/behaviorlock.git
BEHAVIORLOCK / COMPAREDETERMINISTIC
Baselinemodel-a / prompt-v3permission: ask · tools: request → delete → verify
Candidatemodel-b / prompt-v4permission: deny · tools: request → delete → verify
5compatible
1drifted
1unknown
73 / 73automated tests
99.06%line coverage
9deterministic matchers
5 + 5report formats · MCP tools
20 / 22 / 24Node CI matrix ↗

Framework-neutral workflow

Compare observations, not hidden reasoning.

Your existing harness runs representative scenarios. Behaviorlock receives only the small JSON observations needed for a reproducible compatibility decision.

01 / RECORD

Capture a baseline

Store scenario status and narrow derived observations from the currently approved agent.

02 / CHANGE

Upgrade anything

Swap model, prompt, memory, policy, tools, or orchestration, then run the same scenario harness.

03 / CONTRACT

Declare compatibility

Use JSON Pointers and deterministic matchers for the behaviors that must remain stable or improve.

04 / GATE

Keep honest status

Compatible, drifted, or unknown — exported to CI and review formats without a judge model.

Nine deterministic relationships

Strict where it matters. Flexible where it is safe.

Contract exact values, baseline relationships, unordered sets, ordered sequences, monotonic ranks, or explicit numeric budgets.

exists · equals · allowlist

Candidate-only requirements for presence, exact structure, and approved values.

same · contains

Structural baseline equality or required membership in strings and arrays.

set_same · sequence_same

Choose whether array order and duplicates are behavior or implementation detail.

number_delta

Bound absolute and relative drift without turning one trace pair into a benchmark claim.

rank_not_lower

Require decisions or verdicts to remain equal or improve under an explicit policy order.

unknown

Missing baselines and undefined type relationships stay unknown instead of passing.

Live public observation

The badge is not the evidence.

This reads Behaviorlock's latest public GitHub Actions run. It establishes workflow state only, not trace authenticity, scenario coverage, or model quality.

api.github.com/repos/…/behaviorlock/actionsREADY
workflownot checked
statusnot checked
conclusionnot checked
commit

No model calls. No judge theater.

  • No provider keys, prompts, hidden reasoning, arbitrary shell execution, or network request in the comparison runtime.
  • Portable traces are trusted evidence inputs; Behaviorlock does not authenticate who produced them.
  • A passing gate covers only declared scenarios and selectors. Weak coverage can create false confidence.
  • Behavior fingerprints are content digests, not signatures or provenance attestations.
  • Trace values can appear in reports. Record derived, redacted observations instead of private conversations.

Read the security model → · Read every limitation →

Reviewer outputs

One comparison. Five existing workflows.

JSON for machines, Markdown for upgrade review, standalone HTML for audits, SARIF for findings, and JUnit for test interfaces.

JSON

Complete selected values, reasons, fingerprints, statuses, and digest.

MARKDOWN

Readable assertion table with limitations next to the result.

HTML

Escaped, responsive, no-index artifact with no hosted service.

SARIF

Drift and unknowns in code-scanning interfaces.

JUNIT

Drift as failure and unknown as skipped for CI systems.