Project Intent Axis Packages
Purpose
Intent in M45 is structured through intent axes.
Intent axes define the semantic dimensions along which system intent is expressed, reviewed, and evolved.
Axes are grouped into Project Intent Axis Packages.
An axis package represents a coherent semantic lens on system intent, such as:
- Functional and behavioral intent
- Safety and hazard-related intent
- Operational and environmental intent
- Verification and assurance intent
Axis packages are not universal.
They are selected and configured per project through the Project Intent Profile.
Why axis packages exist
Complex systems do not have a single notion of intent.
Different stakeholders reason about the same system using different abstractions and concerns.
Axis packages allow M45 to:
- Represent multiple views of system intent without duplication
- Keep intent snapshots stable as semantic needs evolve
- Support safety-critical reasoning alongside functional reasoning
- Avoid collapsing intent into a single flattened taxonomy
This mirrors intent specifications, where intent is distributed across abstraction levels and concerns, but makes that structure explicit and configurable.
What an axis package defines
An axis package defines:
- Which intent dimensions (axes) exist
- What kinds of intent elements are meaningful
- How intent should be interpreted and reviewed
Project Intent Axis Package schema
Axis packages are first-class configuration objects. They are referenced (by id + version) from a Project Intent Profile.
Formal JSON representation
{
"packageId": "string",
"packageName": "string",
"version": "string",
"status": "active | deprecated",
"scope": "default | project-specific",
"description": "string",
"axes": [
{
"axisDefinition": {
"axisId": "string",
"displayName": "string",
"description": "string",
"scope": "default | project-specific",
"status": "active | deprecated",
"inclusionCriteria": ["string"],
"typicalSources": ["string"],
"examples": [
{ "text": "string", "rationale": "string" }
],
"nonExamples": [
{ "text": "string", "rationale": "string" }
],
"notes": "string | null"
},
"constraints": "string | null",
"notes": "string | null"
}
],
"supportedIntentKinds": ["string"],
"supportedConcerns": ["environment | operator | system | verification"],
"supportedIntentLevels": [
"system_purpose | design_principle | blackbox_behavior | design_representation | physical_representation"
],
"reviewGuidance": "string | null",
"inferenceGuidance": "string | null",
"supersedesPackageId": "string | null"
}
Field definitions
packageId
Type: string
Stable identifier for the axis package.
This is what profiles reference. It should remain stable across versions.
Examples:
functionalBehaviorsafetyHazardoperationalEnvironmentverificationAssurance
packageName
Type: string
Human-readable name for display.
version
Type: string
Version identifier for the package definition.
Axis packages are versioned so that intent snapshots can retain the semantic frame they were evaluated under (via the snapshot’s referenced profile).
status
Type: enum
Values:
activedeprecated
Deprecated packages can be referenced by historical profiles/snapshots, but should not be used for new profiles.
scope
Type: enum
Values:
defaultproject-specific
Indicates whether the package is part of the M45 default set or defined by a project/organization.
description
Type: string
Normative description of what semantic “lens” the package represents and what it is intended to be used for.
axes
Type: array of objects
The set of intent axes included in the package.
Each entry includes an axisDefinition (see Axis Definition Schema), including examples and non-examples with rationales.
Optional constraints/notes allow package-local guidance, without changing the underlying axis definition.
supportedIntentKinds
Type: array of strings
List of intent element kinds that this package is designed to organize/review.
This is a semantic contract used for validation and UX defaults (e.g., which kinds to emphasize in package-focused review views).
supportedConcerns
Type: array of enums
Allowed values:
environmentoperatorsystemverification
Concerns that are in-scope for this package.
supportedIntentLevels
Type: array of enums
Allowed values:
system_purposedesign_principleblackbox_behaviordesign_representationphysical_representation
Intent levels that are in-scope for this package.
reviewGuidance
Type: string | null
Human guidance for how to review intent under this package (e.g., “ensure every hazard traces to at least one safety constraint”).
inferenceGuidance
Type: string | null
Tooling guidance for inference (e.g., “prioritize STPA artifacts and hazard logs; treat meeting notes as supporting evidence”).
This is guidance, not executable logic.
supersedesPackageId
Type: string | null
References an earlier package that this package replaces.
Validation rules
- A profile references axis packages by (
packageId,packageVersion) (see Project Intent Profile). - The active axes for a profile are derived from its activated packages, optionally narrowed by profile settings.
- If an intent element has a non-null
axisId, thataxisIdmust be present in the active axis set under the snapshot’s referenced profile.
Example axis package
{
"packageId": "safetyHazard",
"packageName": "Safety and hazard-related intent",
"version": "1.0",
"status": "active",
"scope": "default",
"description": "Axes for hazards, safety constraints, and safety-relevant reasoning (STPA-compatible).",
"axes": [
{
"axisDefinition": {
"axisId": "hazard",
"displayName": "Hazard",
"description": "System-level hazardous state that could lead to unacceptable loss (not a component failure mode).",
"scope": "default",
"status": "active",
"inclusionCriteria": ["Describes an unsafe system state with potential loss consequences"],
"typicalSources": ["safetyAnalysis", "hazardLog", "requirements"],
"examples": [
{
"text": "Loss of navigation capability during approach",
"rationale": "Describes a hazardous system condition, independent of a specific component fault."
}
],
"nonExamples": [
{
"text": "GNSS receiver power supply fails",
"rationale": "A component failure mode; it may contribute to a hazard but is not itself the system-level hazardous state."
}
],
"notes": null
},
"constraints": null,
"notes": null
},
{
"axisDefinition": {
"axisId": "safetyConstraint",
"displayName": "Safety constraint",
"description": "Constraint derived from hazards to prevent or mitigate unsafe system states.",
"scope": "default",
"status": "active",
"inclusionCriteria": ["Constrains behavior or design to mitigate one or more hazards"],
"typicalSources": ["safetyRequirements", "safetyAnalysis", "requirements"],
"examples": [
{
"text": "The system shall transition to inertial navigation within 100 ms of GNSS signal loss during approach.",
"rationale": "Constrains behavior in a hazard-relevant context to prevent loss of navigation capability."
}
],
"nonExamples": [
{
"text": "The system shall be safe.",
"rationale": "Too vague to be a constraint; it does not define an actionable restriction or mitigation."
}
],
"notes": null
},
"constraints": null,
"notes": "Prefer constraints that are preservation invariants."
},
{
"axisDefinition": {
"axisId": "uca",
"displayName": "Unsafe control action (UCA)",
"description": "A control action that, under certain contexts, can lead to hazards or losses (STPA).",
"scope": "default",
"status": "active",
"inclusionCriteria": ["Describes an unsafe control action with context (provided/omitted/too early/too late/too long)"],
"typicalSources": ["stpaAnalysis", "safetyAnalysis"],
"examples": [
{
"text": "Autopilot engages climb mode when airspeed is below minimum safe threshold.",
"rationale": "A control action whose provision in a specific context can contribute to hazards."
}
],
"nonExamples": [
{
"text": "The autopilot shall have a climb mode.",
"rationale": "A functional feature statement, not an unsafe control action with hazardous context."
}
],
"notes": "Optional: include only if STPA-style artifacts exist."
},
"constraints": null,
"notes": "Unsafe Control Actions (optional, if STPA artifacts exist)."
}
],
"supportedIntentKinds": ["hazard", "constraint", "assumption", "limitation", "vnv_intent"],
"supportedConcerns": ["system", "operator", "environment", "verification"],
"supportedIntentLevels": ["system_purpose", "design_principle", "blackbox_behavior", "design_representation"],
"reviewGuidance": "Ensure every accepted hazard is mitigated by at least one accepted safety constraint and has supporting evidence or explicit rationale.",
"inferenceGuidance": "Prioritize safety analyses and hazard logs; treat requirements as evidence via requirement projections.",
"supersedesPackageId": null
}
Relationship to Project Intent Profiles
Project Intent Profiles activate one or more axis packages for a project.
This means:
- A profile declares which axis packages are enabled
- Only axes from enabled packages may be used in intent snapshots
- Intent snapshots reference the profile, preserving the semantic context
This keeps intent snapshots stable while allowing semantic evolution.
Relationship to intent snapshots
In M45:
- Intent Snapshots store meaning
- Axis Packages define how meaning is structured
So:
- Snapshots reference a Project Intent Profile
- Profiles activate one or more Axis Packages
- Axis Packages constrain and interpret intent elements
Each intent element in a snapshot has an axisId field that must belong to an axis from a package enabled by the snapshot's Project Intent Profile.
This constraint lives in validation logic and documentation, not in the snapshot payload, keeping snapshots compact and timeless.
Common axis packages
Functional and behavioral intent
Focuses on what the system does and how it behaves.
Typical axes include:
- Functions
- Modes
- Scenarios
- Components
Safety and hazard-related intent
Focuses on hazards, safety constraints, and safety-related behavior.
Typical axes include:
- Hazards
- Safety constraints
- Unsafe control actions (UCAs)
This allows projects to:
- Introduce hazard and safety reasoning incrementally
- Apply different safety lenses to the same system intent
- Maintain separation between functional intent and safety intent while preserving traceability
Safety intent does not replace functional intent.
It constrains and contextualizes it.
Operational and environmental intent
Focuses on operational context and environmental assumptions.
Typical axes include:
- Environmental assumptions
- Operator roles
- Operational scenarios
- External constraints
Verification and assurance intent
Focuses on verification objectives and assurance claims.
Typical axes include:
- Verification objectives
- Test scenarios
- Assurance claims
- Validation criteria
Design intent
Axis packages exist to make semantic structure explicit and configurable, not to impose a fixed ontology.
This enables:
- STPA lenses
- SysML v2 projections
- Certification-specific semantic overlays
Relationship to other concepts
- Intent Axes provide the conceptual overview
- Default Intent Axis Definitions describe the default axis set
- Axis Definition Schema defines the formal structure for axes
- Project Intent Profile activates axis packages for a project
- Intent Snapshot Schema shows how intent elements reference axes