Skip to main content

Manifest Schema

The Semantic Manifest is validated by a JSON Schema published at /schema/v1.1/axag-manifest.schema.json. The v1 schema stays published for existing manifests; v1.1 only adds optional fields and enum values, so every valid v1 manifest is also valid under v1.1.

Top-Level Fields​

FieldTypeRequiredDescription
versionstring (semver)YesAXAG specification version
generated_atdate-timeYesISO 8601 timestamp
sourceSourceYesWhere the annotations were read from
conformanceenumYesbasic, intermediate, full
actionsAction[]YesOperation definitions
dynamic_actionsobject[]NoAnnotations registered at runtime rather than read at build time (1.1) — source_file, source_line, reason

Source Fields​

FieldTypeRequiredDescription
urluriNoApplication URL
pathsstring[]NoSource paths scanned
toolstringNoGenerator name
tool_versionstringNoGenerator version

Action Fields​

FieldTypeRequiredDescription
intentstringYesSemantic intent, entity.verb (^[a-z_]+\.[a-z_]+$)
entitystringYesDomain entity (^[a-z_]+$)
action_typeenumYesread, write, delete, navigate
descriptionstringYesHuman-readable description
operation_idstringNoUnique operation identifier
required_parametersParameter[]NoParameters that must be provided
optional_parametersParameter[]NoParameters that may be provided
risk_levelenumNonone, low, medium, high, critical
confirmation_requiredbooleanNoHuman confirmation gate
approval_requiredbooleanNoRole-based approval gate
approval_rolesstring[]NoRoles that can approve
idempotentbooleanNoRetry safety
asyncbooleanNoCompletes asynchronously (1.1)
scopeenumNopublic, user, tenant, global (public added in 1.1)
tenant_boundaryenumNostrict, relaxed (1.1)
required_rolesstring[]NoRoles permitted to invoke (1.1)
side_effectsstring[]NoObservable changes
preconditionsstring[]NoRequired state
postconditionsstring[]NoGuaranteed state
element_selectorstringNoCSS selector of the source element
source_filestringNoFile the annotation lives in
source_lineintegerNoLine in that file (1-based)

Parameter Fields​

FieldTypeRequiredDescription
namestringYesParameter name
typeenumYesstring, number, integer, boolean, array, object (integer added in 1.1)
descriptionstringNoHuman-readable description
enumarrayNoAllowed values
min / maxnumberNoNumeric bounds
minLength / maxLengthintegerNoString length bounds (minLength added in 1.1)
patternstringNoRegular expression the value must match (1.1)
formatenumNoemail, url, date, datetime, uuid
defaultanyNoValue used when omitted
itemsobjectNoJSON Schema for array elements (1.1)
propertiesobjectNoJSON Schema properties for objects (1.1)
sourceenumNoharvested:html, zod, openapi — where an undeclared parameter came from (1.1)

Which optional fields a manifest fills in determines its conformance level.

The schema sets additionalProperties: false, so a field it doesn't define makes the manifest invalid. Extensions belong in namespaced attributes, not in the manifest.