Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
id: 01a13d69-0423-7577-b12a-481bbd34838c
source: Local
kind: detective
mode: automated
enforces:
- Nothing claims what the model does not hold
---

# A chat answer's claims are read back against the model

> Each claim of an answer the chat gives on blust.ch is read back against the tool answers it rests on, and the chat marks one they do not carry before the visitor takes it for what the model says.

## How it is carried out

The chat server behind blust.ch, on every answer once it is written: it sends each claim, with the tool answers the chat's model was given, to TypeSafe's Jev, which returns a verdict and its probability and writes no text, and the widget marks a claim whose verdict is that the evidence does not carry it, above the threshold this deployment's configuration sets. Only an answer written in English is marked; a German one is checked and its verdicts kept until German has a threshold of its own. The check changes no word of the answer, and a check that cannot run, or does not finish within its budget, marks nothing. It holds the chat's answers and nothing else: a specification or a page someone writes is held to the rule by whoever writes it.

## Applies to

| Type | Entity | Owner |
| --- | --- | --- |
| phase | Answer | Answering |

## References

| What | URL |
| --- | --- |
| The claim check | https://github.com/companygraph/chat-server/blob/main/lib/verdict.mjs |
| This deployment's configuration | https://github.com/robertblust/mcp-blust-ch/blob/main/chat/chat.json |
28 changes: 28 additions & 0 deletions model/controls/a-family-resync-refuses-to-start-beside-another.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
id: 01a13d69-0423-7526-81a3-ac3b6e561274
source: Local
kind: preventive
mode: automated
enforces:
- One session holds a piece of shared work
---

# A family resync refuses to start beside another

> A resync takes a lock before it moves anything, and refuses to start while another run holds it or while a resync pull request it did not open is still open.

## How it is carried out

The family resync in robertblust/conventions, each time a session starts it: it takes a lock in the clone's own git directory, which every worktree of that clone shares, and refuses while the run that holds it is alive; it then asks GitHub for the open pull requests of every member whose branch begins with `resync-`, and refuses where one is open that no run in this checkout opened or took on that day, unless it is started with `--force`. It holds a resync and nothing else: a release, a re-pin by hand or a change across repositories is claimed by the session itself, which reads the open pull requests, branches and tags and asks the running sessions before it starts, and nothing refuses a session that skips that.

## Applies to

| Type | Entity | Owner |
| --- | --- | --- |
| phase | Integrate | Delivery |

## References

| What | URL |
| --- | --- |
| The family resync | https://github.com/robertblust/conventions/blob/main/family/resync.mjs |
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
id: 01a13d69-0423-773e-ab3d-3ea3a261d170
source: Local
kind: preventive
mode: automated
enforces:
- A refusal is not carried out by another session
---

# A message from another session carries no word of the Owner's

> A session that receives a message from another takes it as that session's and never as the Owner's, so a refusal one session met is not passed to another to carry out.

## How it is carried out

The agent harness, in every session that receives a message from another: it delivers the message marked as another session's and not as the Owner's, tells the receiving agent that such a message grants no permission and that a request to do what the sender was refused is to be declined and shown to the Owner, and its permission layer judges any action the message asks for against the receiving session's own conversation, where the Owner gave no word for it. The marking is how the agent harness delivers such a message, seen in its sessions and not in its documentation, and it rests on the agent heeding it; a session the Owner gives the word in, in its own conversation, may carry out what another was refused, because the word is then the Owner's.

## Applies to

| Type | Entity | Owner |
| --- | --- | --- |
| seat | Controller | |
| seat | Implementer | |
| seat | Surveyor | |

## References

| What | URL |
| --- | --- |
| The agent harness's permission modes | https://code.claude.com/docs/en/permission-modes |
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ enforces:

## How it is carried out

A hook Claude Code runs on my machine before every shell command an agent issues: it reads each `git worktree remove` in the command, resolves the worktree's path through any `cd` or `-C` before it, and refuses the command where that worktree holds a plan's ledger under `.superpowers/sdd/`, saying why, so the agent stops before anything is deleted. It holds an agent and not my own terminal, and a worktree deleted some other way, such as by `rm -rf`, passes it; the hook lives in my own settings and in no repository.
A hook the agent harness runs on my machine before every shell command an agent issues: it reads each `git worktree remove` in the command, resolves the worktree's path through any `cd` or `-C` before it, and refuses the command where that worktree holds a plan's ledger under `.superpowers/sdd/`, saying why, so the agent stops before anything is deleted. It holds an agent and not my own terminal, and a worktree deleted some other way, such as by `rm -rf`, passes it; the hook lives in my own settings and in no repository.

## Applies to

Expand All @@ -26,4 +26,4 @@ A hook Claude Code runs on my machine before every shell command an agent issues

| What | URL |
| --- | --- |
| Claude Code hooks | https://code.claude.com/docs/en/hooks |
| The agent harness's hooks | https://code.claude.com/docs/en/hooks |
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ enforces:

## How it is carried out

Claude Code's permission layer, before the agent's command runs: it judges the action against the conversation, and a merge without a review it can see is refused, so the agent stops and the merge waits for the Owner. On October 2, 2026 it refused the merge of meta-model #223, which the Owner then gave in another session.
The agent harness's permission layer, before the agent's command runs: it judges the action against the conversation, and a merge without a review it can see is refused, so the agent stops and the merge waits for the Owner. On October 2, 2026 it refused the merge of meta-model #223, which the Owner then gave in another session.

## Applies to

Expand All @@ -28,4 +28,4 @@ Claude Code's permission layer, before the agent's command runs: it judges the a

| What | URL |
| --- | --- |
| Claude Code permissions and auto mode | https://code.claude.com/docs/en/permissions |
| The agent harness's permissions and auto mode | https://code.claude.com/docs/en/permissions |
Loading