Reference

Project Intent Profile

Version: 0.2
Status: Draft
Lineage: Project-level configuration

Purpose

Different projects, organizations, and domains structure system meaning differently.

The Project Intent Profile exists to:

  • Make those differences explicit
  • Prevent silent semantic drift
  • Ensure humans and tools share the same intent model
  • Provide a stable contract for inference, review, and audit

Every intent snapshot in M45 is evaluated relative to a Project Intent Profile. Each snapshot explicitly references the profileId and profileVersion used for its evaluation, ensuring the semantic context is preserved.


Normative principles

  • A project has exactly one active intent profile at a time
  • The profile defines the semantic structure, not the content of intent
  • Changes to the profile are versioned and auditable
  • Intent inferred outside the active profile is considered out of scope

What a Project Intent Profile controls

A Project Intent Profile specifies:

  • Activated axis packages
  • Enabled intent axes
  • Disabled intent axes
  • Axis-specific constraints or guidance
  • Project-specific axis extensions
  • Optional weighting or priority hints for artifacts

The profile does not encode:

  • Inference algorithms
  • Certification logic
  • Organizational approval workflows

Profile lifecycle

  1. A project intent profile is defined
  2. Intent is inferred and reviewed under that profile
  3. The profile may evolve as the project matures
  4. Profile changes are versioned and recorded
  5. Historical intent snapshots retain their original profile context through the profileId and profileVersion fields, preserving the semantic frame under which they were created

Project Intent Profile schema

Formal JSON representation

{
  "profileId": "string",
  "profileName": "string",
  "version": "string",
  "status": "active | deprecated",
  "projectContext": {
    "projectName": "string",
    "domain": "string",
    "organization": "string"
  },
  "axisPackages": [
    {
      "packageId": "string",
      "packageVersion": "string",
      "notes": "string | null"
    }
  ],
  "enabledAxes": [
    {
      "axisId": "string",
      "constraints": "string | null",
      "notes": "string | null"
    }
  ],
  "disabledAxes": [
    {
      "axisId": "string",
      "rationale": "string"
    }
  ],
  "customAxes": [
    {
      "axisDefinition": {
        "axisId": "string",
        "displayName": "string",
        "description": "string",
        "scope": "project-specific",
        "status": "active",
        "inclusionCriteria": ["string"],
        "typicalSources": ["string"],
        "examples": [{ "text": "string", "rationale": "string" }],
        "nonExamples": [{ "text": "string", "rationale": "string" }],
        "notes": "string | null"
      }
    }
  ],
  "artifactWeighting": [
    {
      "artifactType": "string",
      "weight": "primary | secondary | supporting"
    }
  ],
  "createdBy": {
    "name": "string",
    "role": "string",
    "organization": "string"
  },
  "createdAt": "ISO-8601 timestamp",
  "supersedesProfileId": "string | null"
}

Field definitions

profileId

Type: string

Stable identifier for the profile.


profileName

Type: string

Human-readable name, for example:

  • “FMS Navigation Baseline”
  • “Prototype Integration Phase”

version

Type: string

Profile version identifier.


status

Type: enum

Values:

  • active
  • deprecated

Only one profile may be active at a time.


projectContext

Describes the scope in which this profile applies.

Fields are descriptive, not normative.


axisPackages

Type: array of objects

The axis packages activated by this profile, referenced by (packageId, packageVersion) as defined in Project Intent Axis Packages.

Rules:

  • A profile activates one or more axis packages.
  • The union of axes from activated packages defines the default active axis set for this profile.
  • If enabledAxes is present, it further narrows the active axis set (it is a subset of the union from activated packages, plus any customAxes).
  • disabledAxes can be used to explicitly disable default axes that would otherwise be active via packages.

notes is optional human guidance for why a package is activated or how it should be interpreted in this project.


enabledAxes

Lists axes that are active for this project.

Optional constraints may specify:

  • Narrowed semantics
  • Project-specific interpretation rules
  • Review expectations

disabledAxes

Lists default axes that are explicitly not used.

Disabling an axis requires a rationale to prevent accidental omission.


customAxes

Defines project-specific axes using the Axis Definition Schema.

Custom axes are first-class and behave identically to default axes.


artifactWeighting

Optional hints about interpretive weight of artifact types.

Example:

  • Requirements: primary
  • Design documents: secondary
  • Meeting notes: supporting

Weighting guides review priority, not authority.


createdBy

Identifies the human author of the profile.


createdAt

Timestamp of profile creation.


supersedesProfileId

References a prior profile if this profile replaces it.


Example Project Intent Profile

{
  "profileId": "PIP-001",
  "profileName": "FMS Navigation Baseline",
  "version": "1.0",
  "status": "active",
  "projectContext": {
    "projectName": "NextGen FMS",
    "domain": "Aerospace",
    "organization": "Example Aerospace"
  },
  "axisPackages": [
    {
      "packageId": "functionalBehavior",
      "packageVersion": "1.0",
      "notes": null
    },
    {
      "packageId": "safetyHazard",
      "packageVersion": "1.0",
      "notes": "Safety lens enabled for loss/hazard/constraint tracing."
    },
    {
      "packageId": "verificationAssurance",
      "packageVersion": "1.0",
      "notes": "Used to keep verification intent explicit and reviewable."
    }
  ],
  "enabledAxes": [
    {
      "axisId": "component",
      "constraints": null,
      "notes": null
    },
    {
      "axisId": "function",
      "constraints": null,
      "notes": null
    },
    {
      "axisId": "mode",
      "constraints": "Modes must be explicitly named in requirements.",
      "notes": null
    },
    {
      "axisId": "scenario",
      "constraints": null,
      "notes": null
    },
    {
      "axisId": "safetyConstraint",
      "constraints": null,
      "notes": "Use for hazard-derived constraints; avoid vague themes."
    }
  ],
  "disabledAxes": [
    {
      "axisId": "signal",
      "rationale": "Signal-level intent is managed in a separate ICD tool."
    }
  ],
  "customAxes": [
    {
      "axisDefinition": {
        "axisId": "performanceConstraint",
        "displayName": "Performance Constraint",
        "description": "Intent related to timing, throughput, and latency expectations.",
        "scope": "project-specific",
        "status": "active",
        "inclusionCriteria": ["Defines quantitative performance bounds"],
        "typicalSources": ["requirements", "test procedures"],
        "examples": [
          {
            "text": "Navigation update rate >= 10 Hz",
            "rationale": "Defines a quantitative bound that constrains acceptable system behavior."
          }
        ],
        "nonExamples": [
          {
            "text": "High performance",
            "rationale": "Ambiguous and non-quantified; does not define an actionable constraint."
          }
        ],
        "notes": null
      }
    }
  ],
  "artifactWeighting": [
    {
      "artifactType": "requirement",
      "weight": "primary"
    },
    {
      "artifactType": "designDocument",
      "weight": "secondary"
    },
    {
      "artifactType": "meetingNote",
      "weight": "supporting"
    }
  ],
  "createdBy": {
    "name": "A. Engineer",
    "role": "Systems Engineer",
    "organization": "Example Aerospace"
  },
  "createdAt": "2025-03-01T09:00:00Z",
  "supersedesProfileId": null
}

Why this matters

The Project Intent Profile ensures that:

  • Intent inference is context-aware
  • “What counts as intent” is explicit
  • Extensions do not silently change meaning
  • Auditors can see the semantic frame, not just the content

This is what allows M45 to scale across teams and domains without fragmenting semantics.


Design intent

M45 treats semantic structure as configuration, not as hard-coded logic. See Intent Axes for the conceptual overview.

The Project Intent Profile is the contract that makes this safe.