Skip to content

Commit 32f7bb2

Browse files
mdhellerclaude
andcommitted
Merge main into add-recommendation-object (integrate genuine content; main canonical for conflicts)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2 parents 922d759 + 0c6cfdf commit 32f7bb2

85 files changed

Lines changed: 5919 additions & 15 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). Thi
99
## [Unreleased]
1010

1111
### Added
12-
- Agentic-marketing contract family: `RecommendationObject`, `SurfaceRegistry`, `AudienceTag`, `PersonaBundle` with canonical examples (`examples/recommendation_object.json`, `examples/surface_registry.json`, `examples/audience_tag.json`, `examples/persona_bundle.json`). `RecommendationObject` (evidence → action → risk → guardrails → rollback → validation) chains into the reasoning-evidence fabric via `traceHash`/`replayClass` and is fail-closed on actuation without an `admissionReceiptRef` from the autonomy ladder (L0–L5). `SurfaceRegistry` is the signed, queryable web-surface source of truth RO scopes resolve against; `AudienceTag` + `PersonaBundle` express personas as Boolean expressions over stable atomic tags (distinct from `TagAssignment`, which classifies data fields).
12+
- 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.
13+
- `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`.
1314
- SourceOS interaction substrate top-level index and README discovery links for `SourceOSInteractionEvent`, generated TypeScript/Python artifacts, and the Noetica → Superconscious → AgentPlane → AgentTerm reference flow.
1415
- Runtime observability and capability governance contracts: `CapabilityLedger`, `BrowserAutomationReceipt`, `GitWorkspaceState`, `OrphanEventReceipt`, and `RuntimeInstallReceipt` with canonical examples, validation wiring (`tools/validate_runtime_observability_examples.py`), a contract catalog, and ADR-0012.
1516
- Reasoning run contracts: `ReasoningRun`, `ReasoningEvent`, `ReasoningReceipt`, `ReasoningReplayPlan`, and `ReasoningBenchmark` with canonical examples and a contract-additions note for the Superconscious reference loop.

Makefile

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
.PHONY: validate validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts
1+
.PHONY: validate validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-interpretability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts validate-onboarding-examples validate-runtime-causality-examples
22

3-
validate: validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts
3+
validate: validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-interpretability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts validate-onboarding-examples validate-runtime-causality-examples
44
@echo "OK: validate"
55

66
validate-control-plane-examples:
@@ -19,10 +19,20 @@ validate-ops-history-examples:
1919
python3 -m pip install --user jsonschema >/dev/null
2020
python3 tools/validate_ops_history_examples.py
2121

22+
validate-runtime-causality-examples:
23+
python3 -m pip install --user jsonschema >/dev/null
24+
python3 tools/validate_runtime_causality_examples.py
25+
validate-onboarding-examples:
26+
python3 -m pip install --user jsonschema >/dev/null
27+
python3 tools/validate_onboarding_examples.py
2228
validate-runtime-observability-examples:
2329
python3 -m pip install --user jsonschema >/dev/null
2430
python3 tools/validate_runtime_observability_examples.py
2531

32+
validate-interpretability-examples:
33+
python3 -m pip install --user jsonschema >/dev/null
34+
python3 tools/validate_interpretability_examples.py
35+
2636
validate-lifecycle-boundary-examples:
2737
python3 -m pip install --user jsonschema >/dev/null
2838
python3 tools/validate_lifecycle_boundary_examples.py

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ sourceos-spec/
3636
├── asyncapi.agent-plane.patch.yaml # Agent-plane event channels
3737
├── asyncapi.fog.patch.yaml # Fog-layer event channels
3838
39+
├── schemas/ # 64 JSON Schema (draft 2020-12) files
3940
├── schemas/ # Top-level JSON Schema files (draft 2020-12)
4041
│ └── README.md # Schema catalog and URN patterns
4142
@@ -110,19 +111,21 @@ python tools/validate_interaction_flow_reference.py
110111

111112
## Schema families
112113

114+
The current schema set is organised into families that map directly to the platform layers and exchange surfaces:
113115
The schemas are organised into domain-oriented families that map to the SourceOS / SociOS contract surface:
114116

115117
| # | Family | Key schemas |
116118
|---|--------|-------------|
117119
| 1 | **Physical Assets** | `Connector`, `PhysicalAsset` |
118120
| 2 | **Glossary** | `GlossaryTerm`, `AuthorityLink` |
119121
| 3 | **Governance** | `Policy`, `Rule`, `PolicyCondition`, `PolicyDecision`, `CapabilityToken`, `Obligation`, `Exception` |
120-
| 4 | **Collaboration** | `Comment`, `Rating`, `Community` |
122+
| 4 | **Collaboration** | `Comment`, `Rating`, `Community`, `CommentSignal` |
121123
| 5 | **Models / Schemas** | `SchemaDefinition`, `EntityField`, `Field`, `ValidValues`, `TagAssignment`, `QualityMetric`, `ProfileStats` |
122124
| 6 | **Agreements** | `Agreement`, `Party` |
123125
| + | **Execution / Provenance** | `Dataset`, `RunRecord`, `WorkflowSpec`, `WorkflowNode`, `WorkflowEdge`, `WorkloadSpec`, `DataSphere`, `ProvenanceRecord`, `EventEnvelope`, `MappingSpec` |
124126
| + | **Agent Plane** | `AgentSession`, `ExecutionDecision`, `ExecutionSurface`, `SkillManifest`, `MemoryEntry`, `SessionReceipt`, `SessionReview`, `TelemetryEvent`, `FrustrationSignal` |
125127
| + | **Release / Experiments** | `ExperimentFlag`, `RolloutPolicy`, `ReleaseReceipt` |
128+
| + | **Shell / Document / Publication** | `ArtifactManifest`, `SignedArtifact`, `PdfValidationReport`, `AnnotationExport`, `RunReport`, `NoetherDiagnostic`, `PublishDecision`, `MirrorReceipt`, `SearchRouteDecision` |
126129
| + | **Fog Layer** | `Topic`, `TopicEnvelope`, `ReplicationPolicy`, `ContentRef`, `Offer`, `WorkOrder`, `UsageReceipt`, `SettlementEvent` |
127130
| + | **Agentic Graph Foundation** | `SourceOSRepoManifest`, `SyncEngineManifest`, `SourceChannelEnvelope`, `SourceGraphWrite`, `AgentCapabilityLease`, `AuditEvent` |
128131
| + | **Interaction Substrate** | `SourceOSInteractionEvent` |

__tree_content_test.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
hello

__tree_test.txt

Whitespace-only changes.

asyncapi.agent-plane.patch.yaml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,82 @@ channels:
152152
type: string
153153
description: The `objectId` URN of the ReleaseReceipt.
154154

155+
srcos.v2.artifact.events:
156+
description: Events emitted when shell artifacts are derived, signed, or validated.
157+
bindings:
158+
kafka:
159+
topic: srcos.v2.artifact.events
160+
partitions: 3
161+
replicas: 3
162+
topicConfiguration:
163+
retention.ms: 2592000000
164+
cleanup.policy: delete
165+
publish:
166+
operationId: publishArtifactEvent
167+
summary: Publish an artifact lifecycle event
168+
description: Publishes an event for ArtifactManifest upsert, signing, and validation outcomes.
169+
message:
170+
name: ArtifactEvent
171+
title: Artifact Lifecycle Event
172+
contentType: application/json
173+
payload: { $ref: './schemas/EventEnvelope.json' }
174+
175+
srcos.v2.annotation.events:
176+
description: Events emitted when annotation exports are recorded.
177+
bindings:
178+
kafka:
179+
topic: srcos.v2.annotation.events
180+
partitions: 3
181+
replicas: 3
182+
topicConfiguration:
183+
retention.ms: 604800000
184+
cleanup.policy: delete
185+
publish:
186+
operationId: publishAnnotationEvent
187+
summary: Publish an annotation export event
188+
description: Publishes an event whenever an AnnotationExport is recorded.
189+
message:
190+
name: AnnotationEvent
191+
title: Annotation Export Event
192+
contentType: application/json
193+
payload: { $ref: './schemas/EventEnvelope.json' }
194+
195+
srcos.v2.run.events:
196+
description: Events emitted when run reports or Noether diagnostics are recorded.
197+
bindings:
198+
kafka:
199+
topic: srcos.v2.run.events
200+
partitions: 3
201+
replicas: 3
202+
topicConfiguration:
203+
retention.ms: 2592000000
204+
cleanup.policy: delete
205+
publish:
206+
operationId: publishRunEvent
207+
summary: Publish a run/report event
208+
description: Publishes events for RunReport and NoetherDiagnostic objects.
209+
message:
210+
name: RunEvent
211+
title: Run Report Event
212+
contentType: application/json
213+
payload: { $ref: './schemas/EventEnvelope.json' }
214+
215+
srcos.v2.publish.events:
216+
description: Events emitted when publish decisions or mirror receipts are recorded.
217+
bindings:
218+
kafka:
219+
topic: srcos.v2.publish.events
220+
partitions: 3
221+
replicas: 3
222+
topicConfiguration:
223+
retention.ms: 2592000000
224+
cleanup.policy: delete
225+
publish:
226+
operationId: publishPublishEvent
227+
summary: Publish a publish/mirror event
228+
description: Publishes events for PublishDecision and MirrorReceipt objects.
229+
message:
230+
name: PublishEvent
231+
title: Publish and Mirror Event
232+
contentType: application/json
233+
payload: { $ref: './schemas/EventEnvelope.json' }

asyncapi.diagnostics.patch.yaml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Additive AsyncAPI patch fragment for diagnostics bundles.
2+
# Merge this file into asyncapi.yaml at build time using @asyncapi/bundler.
3+
# All channels use Kafka with the same broker configuration as the base spec.
4+
5+
channels:
6+
srcos.v2.diagnostics.events:
7+
description: Events emitted when a DiagnosticsBundle is recorded.
8+
bindings:
9+
kafka:
10+
topic: srcos.v2.diagnostics.events
11+
partitions: 3
12+
replicas: 3
13+
topicConfiguration:
14+
retention.ms: 2592000000
15+
cleanup.policy: delete
16+
publish:
17+
operationId: publishDiagnosticsBundleEvent
18+
summary: Publish a diagnostics bundle domain event
19+
description: Publishes an event whenever a DiagnosticsBundle is recorded.
20+
message:
21+
name: DiagnosticsBundleEvent
22+
title: Diagnostics Bundle Domain Event
23+
summary: A change event for a DiagnosticsBundle.
24+
description: |
25+
The `eventType` in the payload envelope is `DiagnosticsBundleRecorded`.
26+
The payload contains the full DiagnosticsBundle object.
27+
contentType: application/json
28+
payload: { $ref: './schemas/EventEnvelope.json' }
29+
bindings:
30+
kafka:
31+
key:
32+
type: string
33+
description: The `objectId` URN of the DiagnosticsBundle.
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# ADR 0001 — Agentic Mesh Access and Workspace Contract Expansion
2+
3+
**Date:** 2026-04-14
4+
**Status:** `Proposed`
5+
6+
---
7+
8+
## Context
9+
10+
`SourceOS-Linux/sourceos-spec` already defines the canonical machine-readable contract layer for SourceOS/SociOS with a two-plane model: a metadata plane and an agent plane. The current agent-plane family already includes session, execution-decision, execution-surface, skill, memory, receipt, telemetry, and review objects.
11+
12+
That is necessary but no longer sufficient for the operating model now being aligned across SourceOS, agentplane, CloudShell/fog execution, Nocalhost-style remote development, and the broader SocioProphet standards stack.
13+
14+
The missing contract families are the ones required to model:
15+
16+
- local-first but globally reachable mesh routing
17+
- governed operator remote shell access
18+
- governed HTTP/service tunnel access
19+
- developer workspaces and sync relationships
20+
- approval, delegation, and break-glass posture
21+
- proof-bearing evidence bundles and replay/export surfaces
22+
- Git-backed desired-state and boot/recovery lifecycle artifacts
23+
- placement decisions across local workstation, private cluster, fog, and optional burst cloud
24+
- world-model claims, conflicts, and reconciliation outcomes emitted from operational activity
25+
26+
If these objects are left in runtime repos or prose-only standards repos, the contract authority will fragment. If they are forced into transport repositories, protocol concerns and product-surface semantics will be conflated. If they are placed in legacy distro/UI repositories, SourceOS loses a clean machine-readable spine.
27+
28+
---
29+
30+
## Decision
31+
32+
`SourceOS-Linux/sourceos-spec` remains the canonical owner for the machine-readable contract layer of the SourceOS/SociOS agentic mesh operating model.
33+
34+
The repository should add the following new first-class object families, in phased additive work:
35+
36+
### Access / route / session family
37+
38+
- `MeshRoute`
39+
- `RemoteSession`
40+
- `SessionRecording`
41+
- `TunnelLease`
42+
- `ApprovalRequest`
43+
- `DelegationGrant`
44+
45+
### Workspace / developer execution family
46+
47+
- `DevSpace`
48+
- `DevSync`
49+
50+
### Evidence / lifecycle / placement family
51+
52+
- `EvidenceBundle`
53+
- `ProofPack`
54+
- `ConfigSource`
55+
- `ReleaseSet`
56+
- `BootReleaseSet`
57+
- `PlacementDecision`
58+
59+
### Knowledge reconciliation family
60+
61+
- `WorldStateClaim`
62+
- `ConflictSet`
63+
- `ReconciliationDecision`
64+
65+
These object families should be treated as additive extensions of the existing two-plane model rather than as a separate third specification. They should be published through the same core surfaces this repository already owns:
66+
67+
- JSON Schemas in `schemas/`
68+
- OpenAPI base or agent-plane patch fragments, as appropriate
69+
- AsyncAPI base or agent-plane patch fragments, as appropriate
70+
- semantic context updates for first-class types
71+
- example payloads and cross-object URN references
72+
73+
The repository boundary is explicit:
74+
75+
- `SourceOS-Linux/sourceos-spec` owns machine-readable object definitions and API/event contracts.
76+
- `SocioProphet/socioprophet-agent-standards` owns normative profile, conformance, and behavioral standards.
77+
- `SocioProphet/prophet-platform-standards` owns deployment, GitOps, RBAC, observability, and platform implementation standards.
78+
- `SocioProphet/socioprophet-standards-storage` owns event/storage/measurement/compliance standards for these artifacts.
79+
- `SocioProphet/socioprophet-standards-knowledge` owns knowledge/provenance/reconciliation semantics above the base contract layer.
80+
- `SocioProphet/agentplane` owns runtime execution, placement, run, evidence-emission, and replay implementation.
81+
- `SocioProphet/sociosphere` owns workspace manifest/lock/orchestration concerns, not downstream feature semantics.
82+
- `SocioProphet/TriTRPC` owns transport and fixture semantics, not product-surface object ownership.
83+
84+
---
85+
86+
## Alternatives considered
87+
88+
| Alternative | Reason not chosen |
89+
|-------------|------------------|
90+
| Put the new object families directly into runtime repositories such as `agentplane` or `cloudshell-fog` | Rejected because runtime repos would become de facto schema authorities, causing duplicated contracts and drift. |
91+
| Put the new object families only in standards/prose repositories | Rejected because the SourceOS operating model needs machine-readable contracts, not prose-only declarations. |
92+
| Treat the new access/workspace model as a transport concern owned by `TriTRPC` | Rejected because transport and routing frames are not the same thing as operator sessions, tunnel leases, workspaces, or proof bundles. |
93+
| Place the work in `SociOS-Linux` | Rejected because the current `SociOS-Linux` inventory is not the canonical SourceOS contract/spec spine. |
94+
| Create a separate contract repository just for mesh access and workspaces | Rejected because that would fragment the existing two-plane contract authority and force downstream repos to stitch multiple specification roots together. |
95+
96+
---
97+
98+
## Consequences
99+
100+
### Positive
101+
102+
- SourceOS keeps a single machine-readable contract authority.
103+
- Operator access, developer workspaces, release/boot artifacts, and knowledge reconciliation can all reference the same URN and API/event conventions.
104+
- Downstream runtime and standards repos can consume a stable contract family instead of redefining object shapes.
105+
- The local-first / fog / cloud placement story becomes part of the spec rather than an implementation accident.
106+
107+
### Negative
108+
109+
- The repository scope broadens and will require careful staging to avoid an oversized one-shot schema drop.
110+
- Several downstream repos will need follow-on updates once the first object families land.
111+
- The distinction between metadata-plane and agent-plane ownership must stay explicit so the contract layer does not become a dumping ground.
112+
113+
### Required follow-on
114+
115+
The next changes should be phased:
116+
117+
1. add the access / route / session family
118+
2. add workspace objects and sync posture
119+
3. add evidence / release / boot / placement objects
120+
4. add reconciliation objects and semantic overlay links
121+
5. update downstream standards and runtime repos to consume the canonical objects
122+
123+
---
124+
125+
## References
126+
127+
- `SourceOS-Linux/sourceos-spec`
128+
- `SocioProphet/socioprophet-agent-standards`
129+
- `SocioProphet/prophet-platform-standards`
130+
- `SocioProphet/socioprophet-standards-storage`
131+
- `SocioProphet/socioprophet-standards-knowledge`
132+
- `SocioProphet/agentplane`
133+
- `SocioProphet/sociosphere`
134+
- `SocioProphet/TriTRPC`
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# ADR 0002 — sourceos-shell API and event backlog
2+
3+
## Status
4+
Accepted
5+
6+
## Context
7+
8+
The shell/document/provenance workflow now has an initial schema cut, but downstream implementations also need a clear backlog for the API and event surfaces that should be added to OpenAPI and AsyncAPI.
9+
10+
## Decision
11+
12+
Queue the following surfaces for future OpenAPI/AsyncAPI additions:
13+
14+
- artifact sign/validate status
15+
- annotation export
16+
- run-report publication
17+
- publish decisions
18+
- mirror receipts
19+
- Noether diagnostic publication
20+
- search route decisions
21+
22+
## Consequences
23+
24+
The schema layer can land incrementally while API/event surfaces are added in follow-on patches without re-defining the objects elsewhere.

0 commit comments

Comments
 (0)