open-standards/sense
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science fca3f76e51 specs: a vendor counter is a hardware reading only while it is demonstrably live
The monorepo's IOReport energy backends now decline unless the CPU energy
rail keeps advancing: on macOS 27 an unprivileged reader sees the CPU rails
frozen or republished only in rare lumps, so a meter that trusted a present
counter reported CPU work as GPU-only energy, or as zero, while tagging it a
reading. The owner's decision is that a vendor energy counter is a real
reading (the trust gap is provenance, not accuracy), so a LIVE reading is
graded as a hardware reading, and every spec that grades vendor counters now
carries the same rule:

  A reading from a vendor energy counter (RAPL, NVML, Apple IOReport, ...)
  MAY be graded as a hardware reading only while the counter is demonstrably
  live for the domain the figure claims: the implementation MUST have
  observed the counter covering that domain advance under load (for Apple
  IOReport: the CPU energy rail itself advancing in at least 5 sample
  intervals, in at least 4 of every 5, over at least 300 ms while the probing
  thread burns CPU). A counter that is present but not live - frozen, or
  republished in lumps - MUST NOT produce a hardware-graded figure; the
  implementation falls back to its estimator or reports the work unmetered,
  and SHOULD record why. A figure MUST NOT claim coverage of a domain its
  counter does not read; where the format has a coverage field, such a
  figure is Partial.

Joule Code
- spec/receipt.md §2 (REQUIRED): HwShunt now reads "an external shunt, or a
  vendor energy counter (RAPL, NVML, Apple SMC/IOReport) while that counter
  is live"; the rule above is added verbatim, and in this receipt the
  hardware grade is a present measured_uj and the HwShunt tag, so a counter
  that is not live supplies neither. The §1 comment and §5 say "live".
- SPEC.md §6: the provenance definition now names IOReport and NVML beside
  RAPL/SMC, measured_uj comes only from an interface live for the domain it
  claims, and a paragraph states the MAY/MUST NOT, pointing to receipt.md §2
  for the test. The §9 readiness row says "live" and "not live".
- ROADMAP.md v0.2 "Measured energy": a vendor counter feeds the HwShunt path
  only while live; where it is present but not live (IOReport's CPU rails to
  an unprivileged reader on macOS 27) the receipt stays on the estimator.
- examples/l3-jouleclaw/README.md: the claim that the receipt is "a real
  local measurement ... (HwShunt on RAPL/NVML hosts; Estimator on Apple
  Silicon until IOReport is wired)" was wrong both ways: run.rs wires only
  Apple Silicon's counter, and other hosts fall to the token Estimator. It
  now says so, that the counter's own tag is carried, and that HwShunt needs
  a live counter.
- joule-code-receipt: the Provenance::HwShunt doc comment says the same.
- CHANGELOG.md [Unreleased] ### Changed: the rule; no wire or vector change.

Sense
- SPEC.md §7 (REQUIRED): measured_uj comes only from a live interface; the
  rule is added verbatim. The Sandbox PowerMeter was described as "(real
  RAPL/IOReport)"; it is now described as grading a reading HwShunt only
  while its counter is live and falling back to its estimator otherwise,
  which is what origin/sandbox-meter/cpu-rail-liveness implements. §10's
  Sandbox edge says the same in brief.
- sense-schema: the HwShunt, Energy and Energy::measured doc comments say a
  vendor counter is a hardware reading only while live.
- Sense keeps no CHANGELOG, so none is added.

Other specs that grade vendor counters
- map/spec/receipt.md §2: the HwShunt row read "RAPL/SMC/shunt"; it now
  names a counter "while it is live", and the rule is added verbatim, noting
  that Receipt::seal cannot check liveness (the meter's duty, upstream).
  map/SPEC.md §6 states the MUST NOT and points there. CHANGELOG.md gains an
  [Unreleased] ### Changed entry; no wire or vector change.
- arl/ARL-S.md, Telemetry: physical telemetry is what gates tiers above 0,
  and it said energy is "measured directly via RAPL ... NVML". The rule is
  added in ARL-S's own terms and lower-case keywords (ARL uses no RFC 2119
  capitals): a counter that is not live does not produce physical telemetry,
  the energy it would have covered is reported unmetered, and the Supervisor
  must have observed the counter advance. No version bump.
- smart-byte treatise §8.6: "Where RAPL or equivalent hardware energy
  counters are available, the measurement is read from the hardware" now
  requires the counter to be demonstrably live, and a frozen or lump-
  republished counter yields the same honest zero as an absent one.

Text and doc comments only: no code path, wire format, or conformance
vector changes. joule-code-rs (joule-code-receipt, joule-code-conformance)
and sense-rs (sense-schema, sense-conformance) build and test clean, their
rustdoc builds under -D warnings, map-rs (map-receipt, map-conformance)
tests pass, `joule-code-conformance verify ../conformance/v1` passes
24/0/0, the no-vanity-metrics check passes, and every relative link in the
changed Markdown resolves.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-01 01:10:36 -04:00
..
conformance/v1 sense: publish the gate's refusal path — every outcome, with the budget after each 2026-09-30 16:25:02 -04:00
sense-rs specs: a vendor counter is a hardware reading only while it is demonstrably live 2026-10-01 01:10:36 -04: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 specs: a vendor counter is a hardware reading only while it is demonstrably live 2026-10-01 01:10:36 -04: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).