open-standards/sense
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 84768074ca
Some checks failed
energy meters on real hardware / RAPL and NVML on jetson-hub (push) Has been cancelled
energy meters on real hardware / sink decode table · RAPL on jetson-hub (NVML surveyed) (push) Has been cancelled
energy meters on real hardware / sink decode table · per-task energy and the GPU rail on macOS (push) Has been cancelled
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Has been cancelled
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (push) Has been cancelled
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (push) Successful in 2m15s
wai-app and Create / wai-app · does this change touch it (push) Successful in 1m45s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Has been cancelled
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Has been cancelled
joule-code conformance gate / Build + round-trip C1-C4 vectors (push) Successful in 5m43s
joule-code conformance gate / joule-moq-ingest, every target (push) Has been cancelled
joule-code conformance gate / joule-moq-relay, every target (push) Has been cancelled
Every text that states the IOReport liveness rule states it as the meters apply it
The meters count an IOReport interval only within three of the probe's ticks, and
the texts that state the rule said nothing of it, so an implementation following
any of them would call a lump-refreshed rail live once load stretched its intervals.
Each now says what an interval is (from one sample in hand to the next), that only
one no longer than three of the probe's ticks (75 ms at its 25 ms tick) counts, that
a longer one counts as nothing (not among the intervals, not as an advance, not
towards the 300 ms), and that the 300 ms is the summed length of the intervals that
count.

The normative clauses in arl/ARL-S.md, jcp/SPEC.md, joule-code/spec/receipt.md,
joule-ui/SPEC.md, jouleclaw/SPEC.md, JCR-1-spec.md, map/spec/receipt.md,
mesh/SPEC.md (a block quote), proof/SPEC.md and sense/SPEC.md; proof-schema's
quotation of proof/SPEC.md's; jouleclaw-energy's conformance README; and the proof
and sandbox READMEs, which say the cap is IOReport's alone. Map's and Joule Code's
unreleased changelog entries, which record the rule as it was added, are amended,
since neither release has gone out. No wire or conformance-vector change.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-07 08:20:02 -05:00
..
conformance/v1 sense §11: what a running agent receives when an observation surfaces to it 2026-11-02 13:56:29 -05:00
sense-rs Cargo: no minimum-supported-version floor, because the policy is latest stable 2026-11-03 17:42:20 -05:00
LICENSE sense: the ambient context standard (v0.1) 2026-06-13 21:39:39 -04:00
LICENSE-SPEC sense: the ambient context standard (v0.1) 2026-06-13 21:39:39 -04:00
README.md sense: the ambient context standard (v0.1) 2026-06-13 21:39:39 -04:00
SPEC.md Every text that states the IOReport liveness rule states it as the meters apply it 2026-11-07 08:20:02 -05:00

Sense

The ambient context standard — the always-on, deterministic, energy-accounted record of what is happening around an agent, and a principled account of when that is worth attention.

The tool protocols (MCP, A2A, ACP) standardized the efferent half of an agent: reaching out for tools, peers, payments. Sense standardizes the afferent half — the observations flowing in. It is the substrate an ambient or proactive agent needs but none of them specify: a feed of the world, deterministic enough to audit, with a governed decision about when to interrupt a human.

Where OpenTelemetry traces the agent's own reasoning — non-deterministic by its own admission, and about the agent's insides — Sense records the agent's outside, deterministically, with every datum provenance- and trust-tagged, and every interruption priced in joules and sealed in a receipt.

The four tiers

observe ─▶ project ─▶ detect ─▶ gate ─▶ seal ─▶ verify ─▶ answer
  │           │          │        │       │        │         │
 store     attention  attention attention receipt receipt  cascade
  • sense-schema — the wire types: the content-addressed [Event], the vendor-neutral SourceClass, the TrustLevel, the family Energy/Provenance model, the StateProjection, the Highlight. Pure, no IO.
  • sense-store — a content-addressed, HLC-ordered, replay-deterministic event log. Two runs over the same events yield a byte-identical digest.
  • sense-attention — the part no observability stack carries: a deterministic salience/novelty/uncertainty observer, a k-sigma highlight detector, and the attention budget that gates surfacing by value vs. interruption cost, priced in joules. "Perception ⊗ attention-budget", the afferent dual of JCP's "capability ⊗ joule-budget".
  • sense-cascade — the synthesis tier: a query envelope, deterministic recall retrieval, and a speculative cascade that answers factual-recall queries with zero LLM calls and escalates to a frontier model only as a last resort.
  • sense-receipt — a hash-chained, Ed25519-signed surfacing log: the tamper-evident record of what was surfaced (or held), when, and what it cost. Sealable as a JCR-1 COSE_Sign1 envelope for cross-family verification.

See SPEC.md for the normative standard and conformance/v1/ for the reproducible vector pack.

Try it

cd sense-rs
cargo run -p sense-cli --bin sense     # the whole loop on a scripted stream
cargo test --workspace                 # the conformance suite

The demo scripts an ambient stream (a quiet shell baseline, a burst of file changes, a low-trust log line), then for each surfaced moment prints the projection, the gate decision, and the joules it cost — then verifies the hash-chained surfacing log and answers a recall query with no model call.

What is not here

  • A daemon, sensors, or a UI. A host wires its platform's sensors to the SourceClass vocabulary and renders highlights however it likes. Sense fixes the datum, the determinism, the attention decision, and the receipt — not the plumbing.
  • A model. The salience observer and the synthesis fallback are recognized edges; the reference observer is deterministic and the reference fallback is a recorder. A host brings the model it trusts.
  • A transport or storage engine. The wire is serde/JCR-1; the order is the HLC. Ride it over anything; persist it in anything that preserves the order.

Licence

Specification text: CC-BY-4.0 (LICENSE-SPEC). Reference implementation in sense-rs/: Apache-2.0 (LICENSE).