Bind the command and the refusal as roles #74

Merged
PerishFire merged 1 commit from land/concord-identity-roles into main 2026-08-15 06:39:31 +00:00
Owner

Bind the command and the refusal as roles

The command name and the refusal code were payload content, so nothing could
group by them without parsing the payload. Every consumer wrote the same
grouping pass by hand, and the only way to serve it from the substrate would
have been to teach it a product word.

Both are identities, not content. Binding each to its own role leaves the
substrate opaque and answers the question with the query it already has:
locus query concord.command enumerates commands with their record counts and
locus query concord.fault enumerates refusal codes. A run that succeeds binds
no fault role, so the enumeration is exactly the failures.

Both roles sit on the start and finish facts only. The seat installs the base
context, so a kernel probe inherits neither, and a full estate audit keeps its
records unchanged in size. A test asserts that separation directly.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

Bind the command and the refusal as roles The command name and the refusal code were payload content, so nothing could group by them without parsing the payload. Every consumer wrote the same grouping pass by hand, and the only way to serve it from the substrate would have been to teach it a product word. Both are identities, not content. Binding each to its own role leaves the substrate opaque and answers the question with the query it already has: `locus query concord.command` enumerates commands with their record counts and `locus query concord.fault` enumerates refusal codes. A run that succeeds binds no fault role, so the enumeration is exactly the failures. Both roles sit on the start and finish facts only. The seat installs the base context, so a kernel probe inherits neither, and a full estate audit keeps its records unchanged in size. A test asserts that separation directly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Bind the command and the refusal as roles
All checks were successful
guard / guard (pull_request) Successful in 2m16s
guard / windows (pull_request) Successful in 4m6s
guard / guard (push) Successful in 2m6s
guard / windows (push) Successful in 4m1s
d5dfb44426
Bind the command and the refusal as roles

The command name and the refusal code were payload content, so nothing could
group by them without parsing the payload. Every consumer wrote the same
grouping pass by hand, and the only way to serve it from the substrate would
have been to teach it a product word.

Both are identities, not content. Binding each to its own role leaves the
substrate opaque and answers the question with the query it already has:
`locus query concord.command` enumerates commands with their record counts and
`locus query concord.fault` enumerates refusal codes. A run that succeeds binds
no fault role, so the enumeration is exactly the failures.

Both roles sit on the start and finish facts only. The seat installs the base
context, so a kernel probe inherits neither, and a full estate audit keeps its
records unchanged in size. A test asserts that separation directly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Land-Source: concord-identity-roles@4e98c633f23304c8ccfe0535f912fa65bb199fdb
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
PerishFire/concord!74
No description provided.