sense §11: what a running agent receives when an observation surfaces to it #584

Merged
dcharlot merged 1 commit from sense/injected-observation into main 2026-11-02 18:03:33 -05:00
Owner

§5 decides whether an observation is worth attention; §8 seals that decision.
Neither said what the recipient receives. Where the recipient is a person that
is right — the form is a UI concern and a non-goal (§1.6). Where the recipient is
a running agent it is not, because the delivery enters the agent's own record
of what it has been told, and Sense had nothing to say about a frame that record
has to hold.

Why the form is normative rather than a matter of taste

Three plausible forms each corrupt the record:

form what breaks
a result on a call the agent made the agent made no such call; a record where every result answers a call cannot hold one that answers nothing
the principal's own words the principal did not say it; an auditor can no longer separate what the agent was asked from what it was told
outside the order what an agent did depends on when it learned a thing, so the record silently misstates what it knew earlier

So a surfaced observation delivered to an agent is an injected observation — a
distinctly-kinded frame occupying one position in the recipient's order, which
states the surfacing link it carries out (§8, by content address, so the delivery
cites a sealed decision rather than restating it and the two cannot drift), the
event's id and trust level (§2, bound in so a delivery cannot re-tag what it
carries), its destination, the authority under which a parked recipient was woken,
and the joules the delivery charged — which is not the joules §5 already
charged for deciding to surface.

The injected kind may not be offered to the agent as something it can author, and
a host must refuse the recipient authoring one: an agent able to author its own
observations could manufacture a record of having been told something, which is
the one thing the frame exists to witness.

§11.1 — the destination is stated, never inferred

own puts the observation in the recipient's own record, so everything it does
afterwards was done knowing it. derived puts it in a record inheriting the
recipient's context, and the recipient's own record gains that record's
outcome, not the observation — so the recipient never came to know the
observation itself. An auditor reading a recipient's record must be able to tell
an observation was handled elsewhere rather than never delivered.

§11.2 — four conditions refused rather than recorded

  1. A hold is not deliverable. §8 chains holds precisely so a decision not to
    surface cannot be quietly forgotten; delivering one is that fault in the other
    direction.
  2. The recipient is not the author, as a steering amendment's amender must
    differ from its author (JCP §4.7).
  3. A wake needs an authority — the fire of a standing grant (JCP §4.6).
    Already-running names none, which is a different fact from a wake nobody
    permitted; the absent case carries no key rather than a null, so the
    distinction lives in the frame's address.
  4. A delivery that happened cannot cost nothing. Something ran — the recipient
    read the frame. Zero is not a measurement; where a host cannot measure it
    estimates and labels (§7). This is the same rule as a parked run not being
    free, applied to the other side of the boundary.

Conformance

Class C6. The published pack gains three frame addresses — the same delivery
to each destination, and one that needed a wake against one that did not — plus
the four refusals as stable tokens rather than prose, so rewording a message
cannot move a vector.

tests/pack.rs holds all of it to the file and asserts the three addresses stay
distinct. That assertion earns its place: if the destination or the wake stopped
being bound in, two of the three would collapse into one, and a delivery could be
rewritten after the fact without changing what it addresses to. Every published
value from the five existing classes is unchanged
— the vectors diff is
additions only.

One implementation note worth reading

The harness picks its surfaced and held links from the C5 log by what they
decided, not by position
. My first attempt indexed entries()[1] as the hold;
that fixture's budget surfaces the first two, so the "a hold is not deliverable"
case silently passed as a success instead of a refusal. Selecting by decision
means a later change to the fixture's budget cannot quietly stop testing a
refusal.

Evidence

Run on the Framework box, deliberately not the CI host (which is mid-matrix for
another PR):

  • cargo clippy --workspace --all-targets -- -D warnings: clean.
  • cargo test --workspace: passes — nine conformance classes and the five
    published-pack checks.
  • check-comparative-prose.sh clean over 4,063 files;
    check-no-vanity-metrics.sh clean over 517 Markdown files.

🤖 Generated with Claude Code

§5 decides whether an observation is worth attention; §8 seals that decision. Neither said what the recipient *receives*. Where the recipient is a person that is right — the form is a UI concern and a non-goal (§1.6). Where the recipient is a **running agent** it is not, because the delivery enters the agent's own record of what it has been told, and Sense had nothing to say about a frame that record has to hold. ### Why the form is normative rather than a matter of taste Three plausible forms each corrupt the record: | form | what breaks | |---|---| | a result on a call the agent made | the agent made no such call; a record where every result answers a call cannot hold one that answers nothing | | the principal's own words | the principal did not say it; an auditor can no longer separate what the agent was *asked* from what it was *told* | | outside the order | what an agent did depends on when it learned a thing, so the record silently misstates what it knew earlier | So a surfaced observation delivered to an agent is an **injected observation** — a distinctly-kinded frame occupying one position in the recipient's order, which states the surfacing link it carries out (§8, by content address, so the delivery *cites* a sealed decision rather than restating it and the two cannot drift), the event's id and trust level (§2, bound in so a delivery cannot re-tag what it carries), its destination, the authority under which a parked recipient was woken, and the joules the delivery charged — which is **not** the joules §5 already charged for deciding to surface. The injected kind may not be offered to the agent as something it can author, and a host must refuse the recipient authoring one: an agent able to author its own observations could manufacture a record of having been told something, which is the one thing the frame exists to witness. ### §11.1 — the destination is stated, never inferred `own` puts the observation in the recipient's own record, so everything it does afterwards was done knowing it. `derived` puts it in a record inheriting the recipient's context, and the recipient's own record gains that record's **outcome**, not the observation — so the recipient never came to know the observation itself. An auditor reading a recipient's record must be able to tell an observation was handled elsewhere rather than never delivered. ### §11.2 — four conditions refused rather than recorded 1. **A hold is not deliverable.** §8 chains holds precisely so a decision not to surface cannot be quietly forgotten; delivering one is that fault in the other direction. 2. **The recipient is not the author**, as a steering amendment's amender must differ from its author (JCP §4.7). 3. **A wake needs an authority** — the fire of a standing grant (JCP §4.6). Already-running names none, which is a different fact from a wake nobody permitted; the absent case carries no key rather than a null, so the distinction lives in the frame's address. 4. **A delivery that happened cannot cost nothing.** Something ran — the recipient read the frame. Zero is not a measurement; where a host cannot measure it estimates and labels (§7). This is the same rule as a parked run not being free, applied to the other side of the boundary. ### Conformance Class **C6**. The published pack gains three frame addresses — the same delivery to each destination, and one that needed a wake against one that did not — plus the four refusals as **stable tokens** rather than prose, so rewording a message cannot move a vector. `tests/pack.rs` holds all of it to the file and asserts the three addresses stay distinct. That assertion earns its place: if the destination or the wake stopped being bound in, two of the three would collapse into one, and a delivery could be rewritten after the fact without changing what it addresses to. **Every published value from the five existing classes is unchanged** — the vectors diff is additions only. ### One implementation note worth reading The harness picks its surfaced and held links from the C5 log **by what they decided, not by position**. My first attempt indexed `entries()[1]` as the hold; that fixture's budget surfaces the first two, so the "a hold is not deliverable" case silently passed as a *success* instead of a refusal. Selecting by decision means a later change to the fixture's budget cannot quietly stop testing a refusal. ### Evidence Run on the Framework box, deliberately not the CI host (which is mid-matrix for another PR): - `cargo clippy --workspace --all-targets -- -D warnings`: clean. - `cargo test --workspace`: passes — nine conformance classes and the five published-pack checks. - `check-comparative-prose.sh` clean over 4,063 files; `check-no-vanity-metrics.sh` clean over 517 Markdown files. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
sense §11: what a running agent receives when an observation surfaces to it
All checks were successful
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 22s
standards workspaces build + test / macOS energy backends (pull_request) Has been skipped
standards workspaces build + test / sense-rs (sense/sense-rs, sense-rs, linux) (pull_request) Successful in 25s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 3m26s
35fc970903
§5 decides whether an observation is worth attention and §8 seals that decision.
Neither says what the recipient *receives*. Where the recipient is a person that
is right — the form is a UI concern and a non-goal (§1.6). Where the recipient is
a running agent it is not, because the delivery enters the agent's own record of
what it has been told, and the standard had nothing to say about a frame that
record has to hold.

Three plausible forms each corrupt that record, which is why the form is
normative rather than a matter of taste:

- **as a result on a call the agent made** — the agent made no such call, and a
  record in which every result answers a call cannot hold one that answers
  nothing without ceasing to mean that;
- **as the principal's own words** — the principal did not say it, and an auditor
  reading the record afterwards could no longer separate what the agent was
  *asked* from what it was *told*;
- **outside the order** — what an agent did depends on when it learned a thing,
  so an observation lifted out of order silently changes what the record says it
  knew at each earlier point.

So a surfaced observation delivered to an agent is an **injected observation**: a
distinctly-kinded frame occupying one position in the recipient's order, stating
the surfacing link it carries out (§8, by content address, so the delivery cites
a sealed decision instead of restating it), the event's id and trust level (§2,
bound in so a delivery cannot re-tag what it carries), its destination, the
authority under which a parked recipient was woken, and the joules the delivery
charged — which is not the joules §5 already charged for deciding to surface.

The injected kind may not be offered to the agent as something it can author, and
a host must refuse the recipient authoring one: an agent able to author its own
observations could manufacture a record of having been told something, which is
the one thing the frame exists to witness.

§11.1 — the destination is stated, never inferred

`own` puts the observation in the recipient's own record, so everything it does
afterwards was done knowing it. `derived` puts it in a record that inherits the
recipient's context, and the recipient's own record gains that record's
*outcome*, not the observation — so the recipient never came to know the
observation itself. An auditor reading a recipient's record has to be able to
tell that an observation was handled elsewhere rather than never delivered, so
the two may not be distinguished by shape alone.

§11.2 — four conditions refused rather than recorded

1. **A hold is not deliverable.** §8 chains holds precisely so a decision not to
   surface cannot be quietly forgotten. Delivering one is that fault in the other
   direction.
2. **The recipient is not the author**, as a steering amendment's amender must
   differ from its author (JCP §4.7).
3. **A wake needs an authority** — the fire of a standing grant (JCP §4.6).
   Already-running names none, which is a different fact from a wake nobody
   permitted, and the two do not share a shape: the absent case carries no key
   rather than a null, so the distinction is in the frame's address.
4. **A delivery that happened cannot cost nothing.** Something ran: the recipient
   read the frame. Zero is not a measurement, and where a host cannot measure it
   estimates and labels (§7) rather than reporting nothing. This is the same rule
   as a parked run not being free, applied to the other side of the boundary.

Conformance class C6, and the published pack gains three frame addresses — the
same delivery to each destination, and one that needed a wake against one that
did not — plus the four refusals as stable tokens rather than prose, so a
reworded message does not move a vector. `tests/pack.rs` holds all of it to the
file and asserts the three addresses stay distinct: if the destination or the
wake stopped being bound in, two would collapse into one and a delivery could be
rewritten after the fact without changing what it addresses to. Every published
value from the five existing classes is unchanged.

One implementation note. The harness picks its surfaced and held links from the
C5 log **by what they decided, not by position** — the first attempt indexed
`entries()[1]` as the hold, and that fixture's budget surfaces the first two, so
the refusal silently passed as a success. Selecting by decision means a later
change to the fixture's budget cannot quietly stop testing a refusal.

Evidence, on the Framework box (nothing on the CI host, which is mid-matrix for
another PR): clippy `-D warnings` clean over the workspace, every workspace test
passes including the nine conformance classes and the five published-pack checks.
`check-comparative-prose.sh` and `check-no-vanity-metrics.sh` clean.

Co-Authored-By: Claude Opus 5 <[email protected]>
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
Transaction-Science/open-standards!584
No description provided.