schema.osm.dev is the canonical semantic and operational definition layer for OSM.
It defines the entities, relationships, operations, constraints, lifecycle states, evidence structures, and validation rules required to manage technology operations, governance, risk, compliance, assurance, resilience, and service management in a consistent, machine-valid, agent-operable form.
The schema is designed so that humans, systems, tools, and agents can interact with OSM data without bypassing schema validity.
The initial schema frame leverages ISO-style management system and technology operations standards, including:
- ISO/IEC 27001 — Information Security Management System requirements
- ISO/IEC 27002 — Information security controls and implementation guidance
- ISO 22301 — Business Continuity Management System requirements
- Related operational standards and frameworks where useful, including ISO/IEC 20000, ISO 31000, ISO/IEC 27005, ASD ISM, Essential Eight, SOC 2, PCI DSS, and CIS Controls
These standards are not treated as isolated checklists. They are treated as structured source content mapped into reusable OSM schema entities.
Every OSM object should resolve to a canonical schema definition.
Canonical definitions include:
- entity type
- required attributes
- optional attributes
- relationship rules
- lifecycle states
- permitted operations
- validation constraints
- provenance requirements
- evidence expectations
OSM does not duplicate entities, definitions, controls, risks, requirements, assets, or obligations unless there is a justified semantic difference.
Default behaviour:
- Reuse existing canonical definition.
- Extend through permitted attributes or relationships.
- Fork only when semantic divergence is necessary.
- Coalesce equivalent or reconcilable entities when safe.
A fork is permitted only when an entity or definition has diverged in a way that cannot be represented safely through context, inheritance, profile, jurisdiction, version, applicability, or local configuration.
Every fork must record:
- source entity
- reason for fork
- scope of divergence
- owner
- effective date
- review trigger
- coalescence criteria
Where two or more entities become semantically equivalent, redundant, or safely reconcilable, OSM should coalesce them into a shared canonical representation.
Coalescence must preserve:
- historical references
- audit trail
- evidence links
- dependent relationships
- prior decisions
- external mappings
All non-machine interaction with OSM data is mediated through agentic ALMs.
Agentic ALMs translate human intent into schema-valid operations. They may assist with drafting, reviewing, mapping, classifying, linking, testing, reporting, or decision support, but the resulting data changes must remain exact and complete against the schema.
ISO and other standards provide authoritative domain concepts, requirements, controls, control attributes, implementation guidance, and assurance expectations.
They do not dictate the entire OSM schema structure.
The OSM schema separates:
- canonical operational entities
- standards-derived requirements
- standards-derived controls
- implementation artefacts
- evidence
- assessments
- treatment decisions
- assurance results
The schema begins with the following root domains.
| Domain | Purpose |
|---|---|
identity |
Defines organisations, people, teams, roles, accounts, agents, and authorities. |
operation |
Defines services, activities, processes, procedures, tasks, jobs, events, and workflows. |
asset |
Defines information, systems, applications, infrastructure, facilities, records, data stores, and other associated assets. |
governance |
Defines objectives, policies, rules, responsibilities, approvals, delegations, decisions, and oversight structures. |
risk |
Defines risks, threats, vulnerabilities, impacts, likelihoods, treatments, controls, and residual risk. |
control |
Defines controls, control objectives, implementation patterns, operating expectations, and verification methods. |
compliance |
Defines standards, clauses, requirements, obligations, mappings, applicability, exclusions, and conformance status. |
evidence |
Defines records, artefacts, observations, attestations, test results, audit evidence, and proof objects. |
assurance |
Defines audits, assessments, reviews, findings, nonconformities, corrective actions, and assurance outcomes. |
continuity |
Defines business impact analysis, prioritized activities, resources, dependencies, recovery objectives, continuity strategies, plans, exercises, and recovery. |
integration |
Defines external systems, connectors, synchronisation jobs, imported objects, source records, and reconciliation status. |
schema |
Defines schema entities, versions, profiles, extensions, forks, coalescence rules, and validation constraints. |
Every persisted OSM object should inherit from schema.object.
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Globally unique object identifier. |
type |
schema.type_ref |
yes | Canonical schema type. |
canonical_key |
string |
conditional | Stable human-meaningful key where applicable. |
name |
string |
yes | Primary display name. |
description |
markdown |
optional | Human-readable explanation. |
status |
schema.lifecycle_status |
yes | Current lifecycle state. |
owner_ref |
identity.party_ref |
conditional | Accountable owner. |
tenant_ref |
identity.tenant_ref |
yes | Owning tenant or organisational boundary. |
source_ref |
integration.source_ref |
optional | Source system or source import reference. |
created_at |
datetime |
yes | Creation timestamp. |
created_by |
identity.actor_ref |
yes | Creating actor. |
updated_at |
datetime |
yes | Last update timestamp. |
updated_by |
identity.actor_ref |
yes | Last modifying actor. |
valid_from |
date |
optional | Date from which object is valid. |
valid_until |
date |
optional | Date until which object is valid. |
provenance |
schema.provenance[] |
yes | Origin, derivation, and decision trail. |
labels |
schema.label[] |
optional | Classification, tags, and search labels. |
external_refs |
schema.external_ref[] |
optional | Links to external systems, standards, documents, or records. |
Initial lifecycle states:
draftproposedactiveunder_reviewsupersededretiredarchivedrejected
Domain-specific states may extend these through schema profiles, but should not redefine the base state semantics.
Relationships are first-class schema objects, not implicit links.
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique relationship identifier. |
relationship_type |
schema.relationship_type_ref |
yes | Canonical relationship type. |
source_ref |
schema.object_ref |
yes | Source object. |
target_ref |
schema.object_ref |
yes | Target object. |
directionality |
enum |
yes | Directed, bidirectional, or derived. |
strength |
enum |
optional | Strong, weak, inferred, candidate. |
status |
schema.lifecycle_status |
yes | Relationship lifecycle status. |
valid_from |
date |
optional | Start of relationship validity. |
valid_until |
date |
optional | End of relationship validity. |
evidence_refs |
evidence.object_ref[] |
optional | Evidence supporting the relationship. |
provenance |
schema.provenance[] |
yes | Source and rationale. |
| Relationship | Meaning |
|---|---|
owns |
Accountable ownership. |
custodies |
Day-to-day custodianship without full accountability. |
implements |
Source object implements target requirement, control, or design. |
supports |
Source object supports the operation of target object. |
depends_on |
Source object depends on target object. |
governs |
Source object governs target object. |
applies_to |
Source object applies to target object or scope. |
satisfies |
Source object satisfies target requirement or obligation. |
evidences |
Source object provides evidence for target assertion. |
mitigates |
Source object mitigates target risk, threat, or vulnerability. |
causes |
Source object causes or contributes to target object. |
maps_to |
Source object maps to semantically related target object. |
derived_from |
Source object is derived from target object. |
forked_from |
Source object is a fork of target object. |
coalesced_into |
Source object has been coalesced into target canonical object. |
supersedes |
Source object replaces target object. |
conflicts_with |
Source object conflicts with target object. |
requires |
Source object requires target object. |
Standards are modelled as source systems of authoritative requirements, controls, guidance, and attributes.
Represents a standard, framework, regulation, contractual framework, policy framework, or control catalogue.
Examples:
- ISO/IEC 27001:2022
- ISO/IEC 27002:2022
- ISO 22301:2019
- ASD ISM
- Essential Eight
- SOC 2 Trust Services Criteria
- CIS Controls
Core attributes:
| Attribute | Type | Required |
|---|---|---|
standard_id |
string |
yes |
name |
string |
yes |
publisher |
string |
yes |
edition |
string |
optional |
publication_date |
date |
optional |
jurisdiction |
string[] |
optional |
standard_type |
enum |
yes |
license_constraints |
markdown |
optional |
source_uri |
uri |
optional |
Represents a normative requirement, clause, criterion, obligation, or expected outcome.
Examples:
- ISO 27001 clause requirement
- ISO 22301 BCMS requirement
- contractual security requirement
- regulatory obligation
Represents a reusable control from a catalogue or standard.
For ISO/IEC 27002, the catalogue control model should support:
- control identifier
- control title
- theme
- control text
- purpose
- guidance
- other information
- attributes
- related requirements
- implementation patterns
- evidence expectations
Represents a tenant-specific implementation of a catalogue control or locally defined control.
It must distinguish:
- what the control is supposed to do
- where it applies
- who owns it
- how it is implemented
- how it is operated
- how it is evidenced
- how its effectiveness is assessed
- which risks, requirements, and assets it relates to
ISO/IEC 27002:2022 is suitable as the first detailed control catalogue because it already provides reusable concepts that map cleanly to OSM schema concepts:
- controls
- themes
- attributes
- control type
- information security properties
- cybersecurity concepts
- operational capabilities
- security domains
- control text
- purpose
- guidance
- other information
Initial ISO/IEC 27002 control themes:
| Theme | OSM representation |
|---|---|
| Organisational controls | control.theme.organizational |
| People controls | control.theme.people |
| Physical controls | control.theme.physical |
| Technological controls | control.theme.technological |
Initial ISO/IEC 27002 control attributes:
| ISO attribute | OSM attribute namespace |
|---|---|
| Control type | control.attribute.control_type |
| Information security properties | control.attribute.security_property |
| Cybersecurity concepts | control.attribute.cybersecurity_concept |
| Operational capabilities | control.attribute.operational_capability |
| Security domains | control.attribute.security_domain |
ISO 22301 is suitable as the first continuity requirements source because it defines management-system requirements for business continuity, including:
- organisational context
- interested parties
- legal and regulatory requirements
- BCMS scope
- leadership and commitment
- policy
- roles and responsibilities
- risks and opportunities
- objectives
- resources
- competence
- awareness
- communication
- documented information
- operational planning and control
- business impact analysis
- risk assessment
- continuity strategies and solutions
- business continuity plans and procedures
- exercising and testing
- performance evaluation
- improvement
These should be represented primarily as compliance.requirement objects, with supporting continuity.* operational entities.
The following entity types should be defined next.
identity.tenantidentity.organizationidentity.organizational_unitidentity.personidentity.teamidentity.roleidentity.actoridentity.authorityidentity.account
operation.serviceoperation.productoperation.processoperation.procedureoperation.activityoperation.taskoperation.joboperation.workflowoperation.eventoperation.incidentoperation.change
asset.assetasset.information_assetasset.systemasset.applicationasset.infrastructure_componentasset.deviceasset.networkasset.data_storeasset.recordasset.facilityasset.supplier_asset
governance.objectivegovernance.policygovernance.topic_policygovernance.rulegovernance.responsibilitygovernance.decisiongovernance.approvalgovernance.exceptiongovernance.review
risk.riskrisk.threatrisk.vulnerabilityrisk.impactrisk.likelihoodrisk.control_effectrisk.treatmentrisk.acceptancerisk.scenario
control.catalogue_controlcontrol.implemented_controlcontrol.control_objectivecontrol.control_activitycontrol.control_testcontrol.control_resultcontrol.control_exception
compliance.standardcompliance.clausecompliance.requirementcompliance.obligationcompliance.mappingcompliance.applicability_decisioncompliance.conformance_statuscompliance.statement_of_applicability
evidence.recordevidence.artefactevidence.observationevidence.attestationevidence.test_resultevidence.audit_sampleevidence.external_report
assurance.assessmentassurance.auditassurance.findingassurance.nonconformityassurance.observationassurance.corrective_actionassurance.management_review
continuity.business_impact_analysiscontinuity.prioritized_activitycontinuity.impact_typecontinuity.resource_requirementcontinuity.dependencycontinuity.rtocontinuity.rpocontinuity.mtpdcontinuity.strategycontinuity.solutioncontinuity.plancontinuity.exercisecontinuity.recovery_process
integration.systemintegration.connectorintegration.source_recordintegration.sync_jobintegration.ingestion_ruleintegration.reconciliation_resultintegration.transform
schema.typeschema.profileschema.extensionschema.constraintschema.operationschema.validation_resultschema.forkschema.coalescenceschema.version
The schema should be built in this order:
schema.objectschema.relationshipidentity.partyand actor modelcompliance.standardcompliance.requirementcontrol.catalogue_controlcontrol.implemented_controlasset.assetoperation.serviceandoperation.processrisk.riskevidence.recordassurance.assessment- ISO/IEC 27002 control catalogue import profile
- ISO 22301 requirement import profile
- OSM tenant implementation profile
OSM implementation and data-layer capabilities are extended through first-class use_case definitions.
A use case is not only a user story or process description. In OSM it is a schema-governed operational pattern that defines:
- intent
- actors and agents
- input perceptions
- required context
- permitted operations
- expected outputs
- validation rules
- evidence requirements
- handoff rules
- escalation rules
- success criteria
- lifecycle states
Use cases allow OSM to grow dynamically while preserving exact schema validity.
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique use-case identifier. |
canonical_key |
string |
yes | Stable key, e.g. vulnerability.intake.triage. |
name |
string |
yes | Human-readable name. |
description |
markdown |
yes | Use-case purpose and operating context. |
domain_refs |
schema.domain_ref[] |
yes | Related schema domains. |
trigger_types |
operation.trigger_type[] |
yes | Events, schedules, perceptions, manual requests, or agent-initiated triggers. |
actor_roles |
identity.role_ref[] |
optional | Human roles involved. |
agent_roles |
agent.role_ref[] |
optional | Agent roles involved. |
input_types |
schema.type_ref[] |
yes | Permitted input object types. |
output_types |
schema.type_ref[] |
yes | Expected output object types. |
permitted_commands |
schema.command_ref[] |
yes | Commands this use case may invoke. |
validation_profile_ref |
schema.validation_profile_ref |
yes | Validation profile to apply. |
evidence_expectations |
evidence.expectation_ref[] |
optional | Evidence required or produced. |
handoff_rules |
operation.handoff_rule[] |
optional | Rules for agent-to-agent or agent-to-human handoff. |
approval_policy_ref |
governance.policy_ref |
optional | Approval policy for committing changes. |
success_criteria |
markdown |
optional | Completion and quality criteria. |
failure_modes |
operation.failure_mode[] |
optional | Expected failure classes and responses. |
Initial use-case examples:
control.catalogue.import.oscalcontrol.implementation.designrisk.scenario.identifyrisk.treatment.proposevulnerability.intake.triageincident.event.classifyevidence.collect.validatepolicy.review.performsupplier.assessment.performcontinuity.bia.performchange.impact.assessarchitecture.pattern.reviewtest.case.generateoperations.activity.schedule
OSM should distinguish between raw data, smetion-produced perceptions, agent interpretations, structured observations, assertions, and validated canonical facts.
This is essential for monitoring data, logs, alerts, vulnerability feeds, agent observations, audit findings, and operational telemetry.
source data
-> ingestion event
-> smetion
-> perception
-> agent interpretation
-> observation
-> assertion
-> validated object / relationship / decision
A smetion is an SME-authored automation that translates raw, external, noisy, or tool-specific data into structured OSM perceptions.
Smetions do not generally decide canonical truth. They normalise, enrich, classify, correlate, score, and frame source data so agents and validation workflows can reason over it.
A smetion is an SME automation: a domain-specific translator from source data into OSM perceptions.
The name combines SME and automation. It represents expert-authored operational logic that captures how a subject matter expert would interpret raw data before passing it to agents.
Examples:
- translate a CrowdStrike detection into a security event perception
- translate an AWS GuardDuty finding into a threat/risk perception
- translate a Microsoft Entra risky sign-in into an identity-risk perception
- translate a failed backup job into a continuity/control perception
- translate a Jira ticket transition into an operational-status perception
- translate a vulnerability scan result into an asset/vulnerability perception
- translate an OSCAL control update into a compliance-change perception
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique smetion identifier. |
canonical_key |
string |
yes | Stable key, e.g. smetion.aws.guardduty.finding_to_threat_perception. |
name |
string |
yes | Human-readable name. |
description |
markdown |
yes | What the smetion translates and why. |
sme_domain_refs |
schema.domain_ref[] |
yes | SME domains encoded by the automation. |
source_type_refs |
schema.type_ref[] |
yes | Input source object or event types. |
output_perception_types |
perception.type_ref[] |
yes | Perception types produced. |
trigger_types |
operation.trigger_type[] |
yes | Event, schedule, manual, webhook, polling, or batch trigger. |
transform_ref |
integration.transform_ref |
yes | Transformation logic or mapping definition. |
normalisation_rules |
schema.rule_ref[] |
optional | Data cleaning, field mapping, canonicalisation, and enrichment rules. |
classification_rules |
schema.rule_ref[] |
optional | Rules for assigning perception types, severity, confidence, and affected domains. |
correlation_rules |
schema.rule_ref[] |
optional | Rules for linking source records to existing OSM objects. |
confidence_model |
automation.confidence_model_ref |
optional | Method for assigning confidence. |
validation_profile_ref |
schema.validation_profile_ref |
yes | Validation required before perception emission. |
owner_ref |
identity.party_ref |
yes | SME or team accountable for the smetion. |
status |
schema.lifecycle_status |
yes | Draft, active, under_review, retired, etc. |
Smetions should follow a controlled lifecycle:
drafttestactiveunder_reviewsupersededretired
A smetion should be reviewed when:
- the source integration changes
- the source data schema changes
- a false positive or false negative pattern is identified
- a related standard/control requirement changes
- an agent repeatedly rejects or corrects its perceptions
- an incident, audit, or post-implementation review identifies translation error
A smetion may emit:
perception.perceptionperception.observationschema.command.proposalevidence.candidate_recordoperation.candidate_task
But it should not directly commit canonical state except in tightly controlled low-risk cases.
Default rule:
smetion output is candidate reality, not canonical truth
| Capability | Smetion | Agent |
|---|---|---|
| Purpose | Translate source data into structured perceptions. | Interpret perceptions, reason, plan, decide, propose, validate, and operate. |
| Behaviour | Mostly deterministic or rule-bound. | Adaptive, goal-directed, context-aware. |
| Authorship | SME-authored automation. | Agent capability and policy profile. |
| Input | Raw data, logs, events, source records. | Perceptions, observations, schema objects, use cases, tasks. |
| Output | Perceptions, candidate observations, candidate commands. | Work products, staged commands, decisions, handoffs. |
| Risk | Translation error. | Reasoning/action error. |
| Governance | SME owner and validation profile. | Permission profile and supervision mode. |
A perception is an interpreted view of data by a human, system, or agent. It is not automatically canonical truth.
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique perception identifier. |
perceiver_ref |
`identity.actor_ref | agent.agent_ref | integration.system_ref` |
source_refs |
schema.object_ref[] |
yes | Source events, records, logs, alerts, documents, or telemetry. |
perception_type |
enum |
yes | Classification, anomaly, risk, relationship, evidence, requirement, control, dependency, change, incident. |
summary |
markdown |
yes | Interpreted summary. |
confidence |
number |
yes | Confidence score from 0 to 1. |
claims |
perception.claim[] |
optional | Atomic claims made by the perception. |
candidate_relationships |
schema.relationship[] |
optional | Proposed relationships. |
recommended_commands |
schema.command_ref[] |
optional | Commands suggested by the perception. |
status |
enum |
yes | Candidate, accepted, rejected, superseded, escalated. |
validation_refs |
schema.validation_result_ref[] |
optional | Validation outcomes. |
An observation is a structured statement derived from perception, monitoring, review, audit, or testing.
Examples:
- A vulnerability scanner detected CVE exposure.
- A log source stopped reporting.
- A backup job failed.
- An access review is overdue.
- A policy control has no current evidence.
- A service dependency was inferred from telemetry.
Initial raw and semi-structured data entities:
telemetry.metrictelemetry.log_eventtelemetry.alerttelemetry.tracetelemetry.health_checktelemetry.vulnerability_findingtelemetry.configuration_itemtelemetry.identity_eventtelemetry.cloud_eventtelemetry.ticket_eventtelemetry.repository_event
These are generally source-derived and may be high volume. They should not all become canonical OSM objects unless promoted by a use case, perception, or validation rule.
OSM agents operate as an IT group. Agents have roles, responsibilities, permissions, work queues, handoff rules, artefact expectations, and validation constraints.
Agents are not treated as generic assistants. They are typed operational actors participating in controlled organisational workflows.
Initial agent classes:
| Agent class | Primary purpose |
|---|---|
agent.scout |
Discover, collect, monitor, inspect, and surface candidate information. |
agent.concept |
Form concepts, classify information, identify patterns, and propose semantic structures. |
agent.architect |
Design target state, architecture patterns, controls, dependencies, and implementation approaches. |
agent.business_analyst |
Convert needs, obligations, risks, and objectives into requirements and use cases. |
agent.developer |
Produce implementation artefacts, schema definitions, integrations, automation, and code changes. |
agent.tester |
Validate outputs, generate test cases, verify controls, check conformance, and detect defects. |
agent.operator |
Execute operational workflows, monitor status, schedule recurring tasks, and maintain service state. |
ScoutAgent
-> ConceptAgent
-> BusinessAnalystAgent
-> ArchitectAgent
-> DeveloperAgent
-> TestAgent
-> OperatorAgent
-> ScoutAgent feedback loop
This is not a fixed linear workflow. It is a default collaboration pattern. Use cases define which agents participate and what handoffs are required.
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique agent identifier. |
agent_class |
agent.class_ref |
yes | Scout, concept, architect, BA, developer, tester, operator, or specialised subclass. |
name |
string |
yes | Agent display name. |
tenant_ref |
identity.tenant_ref |
yes | Tenant boundary. |
capability_refs |
agent.capability_ref[] |
yes | Capabilities available to the agent. |
tool_refs |
integration.tool_ref[] |
optional | Tools/connectors the agent can use. |
permission_profile_ref |
governance.permission_profile_ref |
yes | Authorised operations. |
use_case_refs |
operation.use_case_ref[] |
optional | Use cases the agent can participate in. |
supervision_mode |
enum |
yes | Suggest, stage, commit_low_risk, commit_with_policy, requires_approval. |
handoff_policy_ref |
operation.handoff_policy_ref |
optional | Handoff and escalation policy. |
status |
schema.lifecycle_status |
yes | Agent lifecycle state. |
Agents produce work products, not unstructured responses.
Initial work product types:
agent.work_product.discovery_reportagent.work_product.concept_modelagent.work_product.requirement_briefagent.work_product.architecture_decision_recordagent.work_product.schema_change_proposalagent.work_product.implementation_planagent.work_product.code_changeagent.work_product.test_planagent.work_product.test_resultagent.work_product.operational_runbookagent.work_product.handoff_noteagent.work_product.validation_report
Every work product should link to:
- source perceptions
- use case
- agent
- validation result
- impacted objects
- next recommended command or handoff
Agents do not directly mutate canonical OSM objects. Agents propose or invoke schema commands.
perception / intent
-> proposed command
-> precondition validation
-> schema validation
-> policy validation
-> impact analysis
-> staged diff
-> approval if required
-> commit
-> event emission
-> projection updates
schema.command.propose_objectschema.command.update_objectschema.command.propose_relationshipschema.command.attach_evidenceschema.command.classify_eventschema.command.create_findingschema.command.propose_requirementschema.command.propose_control_mappingschema.command.propose_riskschema.command.propose_treatmentschema.command.create_taskschema.command.request_human_approvalschema.command.fork_objectschema.command.coalesce_objects
The agentic IT group should be modelled similarly to a human IT function:
| IT function concept | OSM schema object |
|---|---|
| Team | identity.team |
| Role | identity.role or agent.role |
| Responsibility | governance.responsibility |
| Work queue | operation.queue |
| Ticket/task | operation.task |
| Change | operation.change |
| Incident | operation.incident |
| Problem | operation.problem |
| Runbook | operation.procedure |
| Handoff | operation.handoff |
| Decision | governance.decision |
| Artefact | evidence.artefact or agent.work_product.* |
| Review | assurance.review |
This permits mixed human-agent teams where responsibility, authority, approval, evidence, and accountability remain explicit.
This use case provides an end-to-end model for penetration testing, external/internal technical exposure analysis, asset discovery perception, technical vulnerability management, risk-group selection, mitigation planning, remediation execution, validation, and ongoing monitoring.
It perceives the output of asset discovery tooling that discovers and watches an organisation's deployed assets, initially across:
- AWS services and data stores
- Microsoft 365 people, services, identities, access paths, and exposure surfaces
- external attack/exposure views generated by an
assetsInteractortool using white-box, grey-box, and black-box scanning modes
It then uses assetsInteractor to scan, probe, examine, test, jiggle, fuzz, and otherwise interact with assets in controlled ways to generate perceptions, refine understanding/context, identify relative risk groups, propose mitigation activity sets, generate testable plans, and establish ongoing watching/monitoring.
asset discovery output, scanner output, and probe output are not canonical truth
Discovery tooling, cloud APIs, M365 APIs, scanners, logs, fuzzing output, probes, and external interactions produce source data. Smetions translate that data into perceptions. Agents interpret those perceptions and propose schema-valid changes.
Canonical asset, risk, control, and mitigation state is updated only through validated OSM commands.
AWS / M365 / external scan source data
-> ingestion event
-> asset-discovery smetion
-> asset / service / data / identity / exposure perceptions
-> ScoutAgent correlation
-> ConceptAgent semantic classification
-> assetsInteractor scan/probe/examine/test/jiggle/fuzz cycle
-> smetion-generated interaction perceptions
-> context and understanding refinement
-> relative risk group determination
-> decider review / selection / approval
-> standards-guided mitigation activity optimisation
-> mitigation plan generation
-> success criteria and test design
-> implementation by agents and/or people
-> validation and evidence capture
-> established monitoring / watching
-> feedback loop into discovery, perception, risk, and activity prioritisation
| Parameter | Type | Required | Purpose |
|---|---|---|---|
organisation_ref |
identity.organization_ref |
yes | Organisation being assessed. |
scope_ref |
operation.scope_ref |
yes | Authorised assessment scope. |
deciders |
identity.person_ref[] |
yes | People authorised to review, select, and approve the relevant risk group and mitigation direction. |
asset_sources |
integration.system_ref[] |
yes | Asset discovery sources, e.g. AWS, M365, scanners. |
assetsInteractor_ref |
integration.tool_ref |
yes | External interaction/scanning/probing tool. |
interaction_modes |
enum[] |
yes | White-box, grey-box, black-box. |
standards_profile_refs |
compliance.profile_ref[] |
yes | Standards/publications used to guide activities. |
risk_method_ref |
risk.method_ref |
yes | Method for grouping, scoring, and comparing risks. |
approval_policy_ref |
governance.policy_ref |
yes | Review and approval rules. |
monitoring_profile_ref |
operation.monitoring_profile_ref |
conditional | Watch/monitoring rules once plans are established. |
The asset discovery tooling is implemented as an external integration. It discovers and watches deployed organisation assets.
Initial discovery domains:
| Source | Discovery focus |
|---|---|
| AWS | Accounts, organisations, regions, services, workloads, identities, policies, networks, storage, data services, logs, security services, public exposure, encryption, backup posture. |
| Microsoft 365 | People, users, groups, roles, tenants, domains, applications, mail, SharePoint, Teams, OneDrive, Entra ID, conditional access, privileged access, external sharing, guest exposure. |
assetsInteractor is an external scanner/interactor that examines assets from multiple trust perspectives:
| Mode | Meaning |
|---|---|
| White-box | Uses authorised internal context, credentials, APIs, configuration, and known architecture. |
| Grey-box | Uses partial knowledge or limited credentials to simulate partner, user, supplier, or partially trusted access. |
| Black-box | Uses externally observable information and unauthenticated or internet-facing interaction. |
The tool may scan, probe, examine, test, jiggle, fuzz, fingerprint, enumerate, validate, and safely exercise asset behaviours within an authorised scope.
assetsInteractor does not directly mutate canonical OSM state. It emits source records and scan results that are translated by smetions into perceptions.
assetsInteractor may perform controlled interaction activities including:
- passive discovery
- active probing
- service fingerprinting
- endpoint enumeration
- configuration examination
- identity/access path testing
- permission boundary testing
- authenticated configuration inspection
- unauthenticated exposure testing
- grey-box role/path testing
- fuzzing within defined safety constraints
- vulnerability validation
- exploitability confirmation where authorised
- control effectiveness probing
- data exposure checks
- externally visible attack-surface mapping
Every interaction activity must be linked to:
- authorised scope
- interaction mode
- source asset candidate
- safety constraints
- timestamp
- tool identity
- resulting source records
- resulting perceptions
The use case maintains a progressively refined model of understanding/context.
Understanding/context is built from:
- evidence
- source data
- perceptions
- observations
- prior canonical objects
- asset relationships
- business service context
- identity/access context
- standards mappings
- control coverage
- risk history
- external exposure data
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique context identifier. |
scope_ref |
operation.scope_ref |
yes | Scope to which the context applies. |
subject_refs |
schema.object_ref[] |
yes | Assets, services, identities, data stores, or exposure surfaces being understood. |
evidence_refs |
evidence.record_ref[] |
optional | Evidence used to form context. |
data_refs |
integration.source_record_ref[] |
optional | Raw/source data used. |
perception_refs |
perception.perception_ref[] |
optional | Perceptions used. |
observation_refs |
perception.observation_ref[] |
optional | Structured observations used. |
relationship_refs |
schema.relationship_ref[] |
optional | Relevant existing or candidate relationships. |
confidence |
number |
yes | Context confidence score from 0 to 1. |
unknowns |
markdown[] |
optional | Known unknowns and unresolved assumptions. |
assumptions |
markdown[] |
optional | Assumptions currently influencing context. |
last_refined_at |
datetime |
yes | Last refinement timestamp. |
refined_by_refs |
identity.actor_ref[] |
yes | Agents/people/tools involved in refinement. |
A relative risk group is a selected grouping of related risks derived from the discovered and understood technical context.
Risk groups may be formed by:
- shared asset or service
- shared exposure path
- shared threat actor path
- shared vulnerability class
- shared control weakness
- shared data sensitivity
- shared business impact
- shared identity/access failure mode
- shared remediation dependency
- shared standards obligation
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique risk group identifier. |
name |
string |
yes | Human-readable group name. |
scope_ref |
operation.scope_ref |
yes | Assessment or organisational scope. |
risk_refs |
risk.risk_ref[] |
yes | Risks included in the group. |
subject_refs |
schema.object_ref[] |
yes | Assets, services, identities, or data objects related to the group. |
basis |
markdown |
yes | Rationale for grouping. |
relative_priority |
number |
yes | Priority compared with other groups. |
confidence |
number |
yes | Confidence in grouping and prioritisation. |
standards_refs |
compliance.requirement_ref[] |
optional | Standards/publications informing risk relevance. |
evidence_refs |
evidence.record_ref[] |
optional | Evidence supporting group. |
status |
enum |
yes | Candidate, under_review, selected, approved, rejected, superseded. |
decider_refs |
identity.person_ref[] |
yes | People authorised to select/approve the group. |
approval_ref |
governance.approval_ref |
conditional | Approval record once selected. |
Before mitigation plans are defined and iterated, the relevant risk.relative_group must be reviewed, selected, and approved by the deciders supplied as a use-case parameter.
Required approval states:
candidate
-> under_review
-> selected
-> approved
-> mitigation_planning_allowed
Rules:
- Mitigation planning cannot proceed against a risk group unless its status is
approved. - Approval must identify the deciders, approval timestamp, selected risk group, scope, and rationale.
- Rejected risk groups must preserve rationale and may be superseded by later groups.
- Risk group approval does not approve every mitigation plan; it approves the group as the mitigation-planning target.
- If material new perceptions change the risk group basis, the group returns to
under_reviewor requires re-approval.
Activities are abstract units of mitigation intent. They are guided by standards, authoritative publications, control catalogues, threat guidance, vendor hardening guides, and organisational policy.
Examples of authoritative guidance sources:
- ISO/IEC 27001 requirements
- ISO/IEC 27002 controls and implementation guidance
- ISO/IEC 27005 risk treatment guidance
- ISO 22301 where continuity impact is relevant
- ASD ISM controls
- Essential Eight maturity guidance
- CIS Controls and Benchmarks
- NIST publications where applicable
- vendor hardening guides for AWS, Microsoft 365, identity, endpoint, network, and application platforms
- internal policy and architecture standards
An activity is abstract. It defines mitigation intent and expected risk effect, not the full implementation detail.
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique activity identifier. |
name |
string |
yes | Activity name. |
activity_type |
enum |
yes | Mitigate, validate, monitor, remove, harden, isolate, patch, configure, restrict, detect, recover, document. |
target_risk_group_ref |
risk.relative_group_ref |
yes | Approved risk group targeted. |
target_risk_refs |
risk.risk_ref[] |
optional | Specific risks targeted. |
objective_refs |
governance.objective_ref[] |
optional | Objectives supported. |
standards_refs |
compliance.requirement_ref[] |
optional | Standards/publications guiding the activity. |
expected_risk_effect |
risk.effect_ref |
yes | Expected mitigation effect. |
priority |
number |
yes | Relative priority. |
efficiency_score |
number |
optional | Expected mitigation efficiency compared with alternatives. |
dependencies |
operation.activity_ref[] |
optional | Other activities required first. |
success_criteria_refs |
assurance.success_criteria_ref[] |
yes | Testable success criteria. |
status |
schema.lifecycle_status |
yes | Draft, proposed, approved, active, completed, retired. |
The optimisation objective is:
select the smallest, safest, most feasible and most effective set of activities
that produces the greatest validated mitigation of the approved relative risk group,
subject to business constraints, standards obligations, operational risk, dependencies,
available capability, and evidence/testability requirements.
Optimisation inputs:
- relative risk priority
- expected risk reduction
- implementation cost
- operational disruption
- dependency order
- exploitability/exposure confidence
- data sensitivity
- business criticality
- standards obligations
- control coverage gaps
- agent/person capacity
- testability
- monitoring feasibility
Plans are groups of concrete actions by agents and/or people. A single abstract activity may be implemented by one or many plans.
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique plan identifier. |
name |
string |
yes | Plan name. |
activity_refs |
operation.activity_ref[] |
yes | Activities implemented by this plan. |
action_refs |
operation.action_ref[] |
yes | Concrete actions in the plan. |
actor_refs |
identity.actor_ref[] |
yes | Agents and/or people executing the plan. |
owner_ref |
identity.party_ref |
yes | Accountable plan owner. |
success_criteria_refs |
assurance.success_criteria_ref[] |
yes | Criteria that must be tested. |
test_plan_ref |
assurance.test_plan_ref |
yes | How success criteria will be tested. |
evidence_expectation_refs |
evidence.expectation_ref[] |
yes | Evidence to collect. |
rollback_or_recovery |
markdown |
conditional | Rollback/recovery approach where applicable. |
monitoring_profile_ref |
operation.monitoring_profile_ref |
yes | Watching/monitoring once established. |
status |
enum |
yes | Draft, proposed, approved, active, established, monitoring, completed, failed, superseded, retired. |
Actions are concrete units of work performed by agents or people.
Examples:
- change AWS S3 bucket public-access block configuration
- restrict Entra app consent policy
- remove stale privileged role assignment
- patch vulnerable package
- rotate exposed credential
- update conditional access policy
- deploy detection rule
- add backup monitoring
- create evidence collection automation
- update system architecture documentation
- schedule retest using
assetsInteractor
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique action identifier. |
name |
string |
yes | Action name. |
plan_ref |
operation.plan_ref |
yes | Parent plan. |
action_type |
enum |
yes | Configure, patch, remove, restrict, deploy, test, verify, document, monitor, approve, notify. |
assignee_ref |
identity.actor_ref |
yes | Agent or person responsible. |
target_refs |
schema.object_ref[] |
yes | Assets, controls, services, identities, or records targeted. |
preconditions |
markdown[] |
optional | Conditions required before execution. |
execution_method |
enum |
yes | Manual, agentic, automated, external-tool, hybrid. |
expected_output_refs |
schema.type_ref[] |
optional | Expected outputs. |
evidence_refs |
evidence.record_ref[] |
optional | Evidence produced. |
status |
enum |
yes | Proposed, ready, blocked, in_progress, completed, failed, cancelled. |
All plans must have success criteria that can be tested.
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique success criterion identifier. |
statement |
markdown |
yes | Testable success statement. |
target_refs |
schema.object_ref[] |
yes | Objects the criterion applies to. |
test_method |
enum |
yes | Inspect, query, scan, probe, fuzz, simulate, sample, attest, monitor, retest. |
expected_result |
markdown |
yes | Result required to pass. |
evidence_expectation_ref |
evidence.expectation_ref |
yes | Evidence proving the result. |
pass_fail_rule |
schema.rule_ref |
yes | Deterministic or reviewable pass/fail rule. |
validity_period |
duration |
optional | How long the success result remains valid before retest. |
Examples:
- Black-box scan no longer identifies exposed administrative endpoint.
- Grey-box user cannot access restricted SharePoint site.
- White-box AWS IAM analysis shows no cross-account trust path outside approved principals.
- Vulnerability scanner confirms CVE no longer present.
- M365 external sharing setting matches approved policy.
- GuardDuty/Security Hub finding is resolved and no recurrence observed within monitoring period.
Once a plan reaches established, it must have an active monitoring profile.
| Attribute | Type | Required | Purpose |
|---|---|---|---|
id |
uuid |
yes | Unique monitoring profile identifier. |
watched_refs |
schema.object_ref[] |
yes | Assets, controls, risks, plans, or criteria watched. |
signal_refs |
telemetry.signal_ref[] |
yes | Telemetry, smetions, scans, or checks used. |
frequency |
`duration | schedule` | yes |
thresholds |
schema.rule_ref[] |
optional | Trigger conditions. |
responsible_actor_refs |
identity.actor_ref[] |
yes | Operators/agents responsible. |
response_use_case_ref |
operation.use_case_ref |
optional | Use case to invoke on threshold breach. |
status |
schema.lifecycle_status |
yes | Active, paused, retired, failed. |
Monitoring outputs may create:
- new perceptions
- control degradation observations
- recurring vulnerability findings
- risk reactivation
- plan failure findings
- retest tasks
- escalation tasks
integration.systemintegration.connectorintegration.toolintegration.source_recordintegration.sync_jobintegration.reconciliation_resulttelemetry.cloud_eventtelemetry.identity_eventtelemetry.configuration_itemtelemetry.vulnerability_findingtelemetry.alerttelemetry.health_checktelemetry.exposure_findingtelemetry.interaction_resulttelemetry.fuzz_resulttelemetry.probe_result
perception.perceptionperception.observationperception.claim
asset.assetasset.information_assetasset.systemasset.applicationasset.infrastructure_componentasset.networkasset.data_storeasset.identity_storeasset.service_accountasset.external_endpointasset.public_exposure
identity.personidentity.accountidentity.groupidentity.roleidentity.permissionidentity.access_grantidentity.privileged_accessidentity.external_party
risk.vulnerabilityrisk.threatrisk.riskrisk.relative_grouprisk.treatmentrisk.effectcontrol.implemented_controlcompliance.requirementevidence.recordassurance.findingassurance.success_criteriaassurance.test_planoperation.activityoperation.planoperation.actionoperation.taskoperation.changeoperation.monitoring_profile
Initial smetions:
| Smetion | Input | Output perception |
|---|---|---|
smetion.aws.asset_inventory |
AWS API inventory/source records | AWS asset, service, data store, network, identity, and region perceptions. |
smetion.aws.iam_exposure |
IAM users, roles, policies, trust relationships, access analyzer results | Privilege, trust, access path, and excessive-permission perceptions. |
smetion.aws.data_exposure |
S3, RDS, DynamoDB, KMS, backups, snapshots, public policies | Data asset, confidentiality, encryption, backup, public exposure, and retention perceptions. |
smetion.aws.security_signal |
GuardDuty, Security Hub, Inspector, CloudTrail, Config | Threat, vulnerability, misconfiguration, incident, and control-status perceptions. |
smetion.m365.identity_inventory |
Entra ID users, groups, roles, applications, devices | Person, account, role, group, guest, and privileged access perceptions. |
smetion.m365.service_inventory |
Exchange, SharePoint, Teams, OneDrive, Defender, Purview, Intune | M365 service, data store, endpoint, and governance perceptions. |
smetion.m365.access_exposure |
Conditional access, external sharing, guest users, app grants, role assignments | Access/exposure, external sharing, and excessive privilege perceptions. |
smetion.assetsInteractor.whitebox |
Authenticated scanner/interactor results | Validated internal exposure, reachable service, configuration, vulnerability, and control-effectiveness perceptions. |
smetion.assetsInteractor.greybox |
Partially trusted scan/interactor results | Partner/user/supplier-perspective exposure, access path, and privilege-boundary perceptions. |
smetion.assetsInteractor.blackbox |
External scan/interactor results | Internet-facing exposure, attack surface, service fingerprint, and vulnerability perceptions. |
smetion.assetsInteractor.fuzzing |
Controlled fuzz/probe results | Behavioural weakness, input-handling, service instability, and exploitability perceptions. |
smetion.risk.relative_grouping |
Perceptions, observations, asset context, control context | Candidate relative risk groups. |
smetion.mitigation.activity_options |
Approved risk group, standards profile, constraints | Candidate mitigation activities and priority options. |
Initial perception types:
perception.asset_detectedperception.asset_changedperception.asset_removed_candidateperception.service_detectedperception.data_store_detectedperception.identity_detectedperception.access_grant_detectedperception.privileged_access_detectedperception.external_sharing_detectedperception.public_endpoint_detectedperception.public_exposure_detectedperception.attack_surface_detectedperception.reachable_service_detectedperception.vulnerability_detectedperception.exploitability_candidate_detectedperception.misconfiguration_detectedperception.control_gap_detectedperception.control_effectiveness_candidate_detectedperception.dependency_detectedperception.ownership_candidate_detectedperception.business_service_candidate_detectedperception.evidence_candidate_detectedperception.relative_risk_group_candidate_detectedperception.mitigation_activity_candidate_detected
This use case may propose the following commands:
schema.command.propose_objectschema.command.update_objectschema.command.propose_relationshipschema.command.attach_evidenceschema.command.classify_eventschema.command.create_findingschema.command.propose_riskschema.command.propose_relative_risk_groupschema.command.submit_risk_group_for_reviewschema.command.approve_risk_groupschema.command.reject_risk_groupschema.command.propose_activity_setschema.command.optimise_activity_setschema.command.propose_planschema.command.approve_planschema.command.establish_monitoring_profileschema.command.propose_treatmentschema.command.propose_control_mappingschema.command.create_taskschema.command.request_human_approvalschema.command.coalesce_objectsschema.command.mark_object_absent_candidate
Potential relationships produced or proposed:
| Relationship | Example |
|---|---|
contains |
AWS account contains S3 bucket. |
hosts |
EC2 instance hosts application component. |
stores |
RDS database stores customer data. |
processes |
Lambda function processes regulated data. |
exposes |
Load balancer exposes application endpoint. |
grants_access_to |
IAM role grants access to S3 bucket. |
depends_on |
Service depends on KMS key or Entra application. |
owned_by |
Cloud resource is owned by service owner. |
implements |
AWS Backup plan implements backup control. |
evidences |
Security Hub finding evidences control weakness. |
mitigates |
Conditional access policy mitigates identity risk. |
violates |
Public bucket policy violates data protection rule. |
maps_to |
AWS control maps to ISO/ISM control. |
targets |
Mitigation activity targets approved risk group. |
implemented_by |
Activity is implemented by one or more plans. |
tested_by |
Plan is tested by test plan or success criteria. |
monitored_by |
Established plan is watched by monitoring profile. |
Initial validation expectations:
- A discovered asset must have a source reference.
- A discovered cloud asset must have provider, account or tenant, region where applicable, and source-native identifier.
- A public exposure perception must identify the exposure path or observable endpoint.
- A data exposure perception must identify the affected data store or information asset candidate.
- A privileged access perception must identify subject, permission, target, and source of authority where available.
- A vulnerability perception must include scanner/source, affected asset candidate, finding identifier, severity, and detection timestamp.
- A proposed canonical asset update must pass duplicate/coalescence checks.
- A missing asset is marked as absent candidate before retirement or archival.
- A black-box scan result cannot overwrite white-box canonical metadata without review.
- A smetion confidence score below the threshold must route to agent/human review.
- All active interaction testing must be linked to an authorised scope.
- Fuzzing/probing must declare safety constraints and stopping conditions.
- A relative risk group must be reviewed, selected, and approved by deciders before mitigation plans are defined or iterated.
- Activities must reference an approved risk group.
- Activities must reference at least one guiding standard, publication, internal policy, or explicit expert rationale.
- Plans must implement one or more activities.
- Plans must include testable success criteria.
- Established plans must include an active monitoring profile.
- Material new evidence that changes the risk group basis must trigger re-review.
- Mitigation completion must be supported by evidence and test results.
| Agent | Responsibilities |
|---|---|
| ScoutAgent | Monitor source feeds, detect new/changed/missing assets, correlate scanner outputs, identify candidate duplicates, collect initial exposure signals. |
| ConceptAgent | Classify perceived assets, services, identities, exposure types, data classes, vulnerability classes, risk themes, and semantic relationships. |
| BusinessAnalystAgent | Link assets, exposures, risks, and treatments to business services, obligations, owners, deciders, priorities, and use-case relevance. |
| ArchitectAgent | Model dependencies, trust boundaries, control coverage, design weaknesses, target-state implications, and mitigation patterns. |
| DeveloperAgent | Implement or modify smetions, connectors, transforms, schema extensions, automations, remediation scripts, and technical changes. |
| TestAgent | Validate mappings, duplicate handling, scanner interpretation, exploitability evidence, success criteria, retest design, and proposed canonical updates. |
| OperatorAgent | Schedule discovery jobs, scan cycles, review queues, tasks, changes, monitoring profiles, and ongoing operational state. |
Expected outputs:
- current asset inventory perceptions
- current identity and access perceptions
- data store and data exposure perceptions
- public attack surface perceptions
- vulnerability and misconfiguration perceptions
- exploitability and control-effectiveness perceptions
- refined understanding/context objects
- dependency relationship candidates
- ownership candidates
- evidence candidates for controls
- candidate relative risk groups
- decider-approved selected risk groups
- standards-guided mitigation activities
- prioritised activity sets
- mitigation plans implementing activities
- success criteria and test plans
- operational actions for agents and people
- evidence records and validation results
- established monitoring profiles
- risk and treatment updates
- control gap candidates
- schema-valid object and relationship update proposals
Telemetry source emits vulnerability finding
-> ScoutAgent collects and normalises finding
-> ConceptAgent classifies affected asset, vulnerability, threat, and control context
-> assetsInteractor validates exposure/exploitability within authorised scope
-> understanding/context is refined from evidence/data/perceptions
-> relative risk group candidate is formed
-> deciders review/select/approve risk group
-> BAAgent identifies obligation, SLA, risk, and business impact
-> ArchitectAgent proposes standards-guided mitigation activities
-> activity set is optimised and prioritised
-> plans are generated to implement selected activities
-> TestAgent defines success criteria and retest method
-> DeveloperAgent and/or people implement actions
-> OperatorAgent schedules, executes, monitors, and closes work
-> assetsInteractor retests
-> evidence is attached
-> established monitoring profile watches for recurrence or degradation
-> risk/control status is updated through validated commands
Canonical objects potentially created or updated:
telemetry.vulnerability_findingtelemetry.interaction_resulttelemetry.fuzz_resultperception.perceptionperception.observationoperation.understanding_contextasset.systemasset.infrastructure_componentrisk.vulnerabilityrisk.riskrisk.relative_grouprisk.treatmentrisk.effectcontrol.implemented_controloperation.activityoperation.planoperation.actionoperation.taskoperation.changeoperation.monitoring_profileassurance.success_criteriaassurance.test_planassurance.validation_resultevidence.record
Requirement or control selected
-> ConceptAgent interprets semantic intent
-> BusinessAnalystAgent identifies operating requirement and affected stakeholders
-> ArchitectAgent designs target implementation pattern
-> DeveloperAgent implements configuration, automation, integration, or workflow
-> TestAgent verifies control design and operating effectiveness evidence
-> OperatorAgent schedules recurring operation and monitoring
Canonical objects potentially created or updated:
compliance.requirementcontrol.catalogue_controlcontrol.implemented_controloperation.procedureoperation.jobevidence.expectationassurance.control_testoperation.recurring_activity
The next schema iteration should decide:
- Whether schema IDs are UUID-only, slug-plus-version, or both.
- Whether every object must have an accountable owner.
- Whether standards-derived content is represented as immutable source objects plus tenant overlays.
- Whether implemented controls must always map to at least one risk, requirement, asset, or objective.
- Whether evidence objects are immutable after collection.
- Whether fork and coalescence operations require approval.
- How agentic ALMs are authorised to propose, stage, validate, and commit schema operations.
- Whether perceptions expire unless promoted to observations, assertions, findings, or canonical objects.
- Which telemetry classes are stored canonically and which remain in external observability platforms with only references in OSM.
- Whether agent work products are immutable once handed off.
- How agent-to-agent handoff quality is validated.
- Whether each use case requires a formal validation profile before activation.