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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). Thi

### Added
- Epistemic Assay contracts: `ReasoningAssay` (a typed verdict on a claim over five orthogonal axes — method, binding, verifier, agreement, authority — whose `ok`/`sad`/`bad` `projectedState` is a render-time projection, not a stored scalar) and `AssayStandard` (a verifier's measured, versioned reliability — the calibration reference every assay must point at). Includes canonical `ok`/`sad`/`bad` examples, ADR (`docs/adr/ADR-epistemic-assay-verdict-v0-1.md`), and a `validate-reasoning-examples` target that also enforces projection soundness (recomputes `assay()` from the stored axes and fails on drift) and retroactively brings the existing reasoning family under `make validate`.
- `ReasoningReceipt.assay` (optional) — the reserved receipt landing spot for the Assay: a render-time, run-level epistemic summary that references its run's `ReasoningAssay` records by URN (`assayRefs`) and surfaces the projected `overallState`, weakest-link `binding`, verifier `calibrationRef`, per-state `counts`, and `projectedAt`. A cache of the referenced verdicts, not authoritative over them — re-projectable when an `AssayStandard` improves. Backward-compatible (optional field). The assay's `authority` axis continues to mirror `EventEnvelope.actor`/`integrity`, so the envelope needs no structural change.
- Onboarding control-plane contract family: `WorkspaceScope`, `TrustMode`, `CapabilityPack`, `ConnectorActionScope`, `AutomationTemplate`, and `OnboardingReceipt`, with canonical first-run examples, semantic vocabulary seed, ADR, and `validate-onboarding-examples` validation target.
- `ReasoningEvent.controlFlow` (optional) + a reserved control-flow `eventType` vocabulary (`reasoning.tool.called` / `reasoning.decision.branched` / `reasoning.subrun.spawned` / `reasoning.subrun.joined` / `reasoning.run.completed`) so emitters can carry a run's operational control flow for downstream narration-fidelity verification (SP-TRACE-CFR). Backward-compatible; operational structure only (no raw reasoning). See `docs/reasoning-control-flow-events.md` and `examples/reasoning_event_control_flow.json`.
- SourceOS interaction substrate top-level index and README discovery links for `SourceOSInteractionEvent`, generated TypeScript/Python artifacts, and the Noetica → Superconscious → AgentPlane → AgentTerm reference flow.
Expand Down
8 changes: 8 additions & 0 deletions examples/reasoning_receipt.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@
"memory": "proposal-only",
"approval": "not-required"
},
"assay": {
"assayRefs": ["urn:srcos:reasoning-assay:superconscious-demo-ok"],
"overallState": "ok",
"binding": "inline",
"calibrationRef": "urn:srcos:assay-standard:narration-fidelity-verifier:0.2.0",
"counts": { "ok": 1, "sad": 0, "bad": 0 },
"projectedAt": "2026-07-05T00:00:02Z"
},
"replayClass": "exact",
"capturedAt": "2026-05-05T00:00:01Z"
}
40 changes: 40 additions & 0 deletions schemas/ReasoningReceipt.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,46 @@
"type": "object",
"additionalProperties": true
},
"assay": {
"type": "object",
"additionalProperties": false,
"description": "Run-level epistemic posture: a render-time summary projected from the run's ReasoningAssay records. A cache, not the source of truth — re-derivable by re-projecting the referenced assays against the current AssayStandard, so it is optional and never authoritative over the assays themselves. The reserved receipt landing spot for binding + verifier calibration.",
"properties": {
"assayRefs": {
"type": "array",
"items": { "type": "string", "pattern": "^urn:srcos:reasoning-assay:" },
"description": "URNs of the ReasoningAssay records covering this run's claims. Referenced, not embedded, so each verdict stays independently re-projectable."
},
"overallState": {
"enum": ["ok", "sad", "bad"],
"description": "assay() projection for the run's overall answer AT projectedAt — the weakest-link readout across the referenced assays. A cache of the tuple, not a stored severity."
},
"binding": {
"enum": ["inline", "post-hoc"],
"description": "Weakest evidence binding across the run's assays. A single post-hoc claim pulls the run's binding to post-hoc; recorded so a post-hoc 'verified' run is not mistaken for an inline one."
},
"calibrationRef": {
"type": "string",
"pattern": "^urn:srcos:assay-standard:",
"description": "The AssayStandard the overall verdict rests on. An absent or uncalibrated reference caps overallState at 'sad'."
},
"counts": {
"type": "object",
"additionalProperties": false,
"description": "Tally of the referenced assays by projected state at projectedAt.",
"properties": {
"ok": { "type": "integer", "minimum": 0 },
"sad": { "type": "integer", "minimum": 0 },
"bad": { "type": "integer", "minimum": 0 }
}
},
"projectedAt": {
"type": "string",
"format": "date-time",
"description": "When this summary was projected. Re-projection against a newer AssayStandard yields a later summary rather than mutating this one."
}
}
},
"replayClass": { "enum": ["exact", "best-effort", "evidence-only", "non-replayable-side-effect"] },
"capturedAt": { "type": "string", "format": "date-time" }
}
Expand Down
8 changes: 8 additions & 0 deletions schemas/reasoning-contracts.README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,14 @@ historical assays re-project without mutating their records — the same discipl
arm rather than only its current winner. `tools/validate_reasoning_examples.py` enforces this: it recomputes
`assay()` from the stored axes and fails CI if the recorded `projectedState` does not follow from them.

`ReasoningReceipt.assay` is the reserved receipt landing spot: a run-level, render-time summary that
**references** its run's `ReasoningAssay` records by URN (`assayRefs`) rather than embedding them — so each
verdict stays independently re-projectable — and surfaces the projected `overallState`, the weakest-link
`binding`, the verifier `calibrationRef`, per-state `counts`, and `projectedAt`. It is a cache, never
authoritative over the assays themselves, and optional so existing receipts remain valid. The `authority`
axis of each assay mirrors `EventEnvelope.actor`/`integrity`, so authenticity is corroborated from the
envelope the claim arrived on rather than asserted by the content — the envelope needs no structural change.

Expected consumers:

- `SocioProphet/superconscious` as the reference governed cognition loop;
Expand Down
Loading