Skip to content

fix(validate-a2ml): exempt canonical typed manifests + *file.a2ml from identity check#8

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/exempt-typed-manifests-from-identity-check
May 14, 2026
Merged

fix(validate-a2ml): exempt canonical typed manifests + *file.a2ml from identity check#8
hyperpolymath merged 1 commit into
mainfrom
fix/exempt-typed-manifests-from-identity-check

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Parallels hyperpolymath/k9-validate-action#6 for the A2ML validator. Same shape: a check that's correct in spirit but doesn't recognise the canonical filename conventions in use across the estate.

Symptom

Validate A2ML manifests is red on every consumer with a complete 6a2 manifest set:

::error::Missing required identity field (agent-id, name, or project)

…on each of the typed manifests (AGENTIC.a2ml, META.a2ml, NEUROSYM.a2ml, PLAYBOOK.a2ml), and on every Intentfile.a2ml / Trustfile.a2ml.

Why those files don't have an identity field

  • Canonical typed manifests under .machine_readable/6a2/ carry an aspect of the parent project — agent constraints, metadata, neurosymbolic invariants, playbook recipes. Identity is the parent directory; the filename is the aspect tag. Sibling files ECOSYSTEM.a2ml and STATE.a2ml do declare name / project because they describe the project itself — those continue to be validated.
  • Top-level *file.a2ml files (Intentfile, Trustfile, …) use markdown-flavoured A2ML — @abstract: blocks, ## headers — so the name = … / project = … regex cannot match by construction. Identity is the parent repo, like with Dockerfile.

Fix

Extend the existing *AI-MANIFEST* exemption with these two patterns. Every other *.a2ml filename remains subject to the identity check, so genuinely-missing-identity files are still surfaced.

Test plan

  • Action passes on the canonical typed-manifest set in hyperpolymath/stapeln/container-stack/svalinn/.machine_readable/6a2/.
  • Action still flags a (synthetic) foo.a2ml with no identity.
  • CI on this repo passes.

…m identity check

The identity check (`agent-id`/`name`/`project`) is appropriate for
manifests that genuinely declare a subject, but two families of A2ML files
carry identity by convention rather than by in-file field:

1. **Canonical typed manifests under `.machine_readable/6a2/`** —
   `AGENTIC.a2ml`, `META.a2ml`, `NEUROSYM.a2ml`, `PLAYBOOK.a2ml`.
   These hold typed *aspects* of the enclosing project (agent permissions,
   metadata, neurosymbolic invariants, playbook recipes). Identity is the
   parent directory; the filename indicates the aspect. Sibling files
   `ECOSYSTEM.a2ml` and `STATE.a2ml` already declare `[project] name`
   or `[metadata] project` and continue to be validated normally.

2. **Dockerfile-style top-level typed manifests** — `Intentfile.a2ml`,
   `Trustfile.a2ml`, etc. These use markdown-flavoured A2ML
   (`@abstract:` blocks, `## headers`) rather than TOML-style fields,
   so the identity-field regex cannot match by construction. Identity is
   the parent repo, exactly as with a `Dockerfile` or `Makefile`.

Adds both patterns to the existing `*AI-MANIFEST*` exemption. The check
remains active for any other `*.a2ml` filename, so genuinely-missing-
identity bugs are still surfaced.

Without this, `Validate A2ML manifests` reports 40+ errors across every
estate consumer that ships a complete 6a2 manifest set.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@hyperpolymath hyperpolymath merged commit 86c6da6 into main May 14, 2026
16 of 18 checks passed
@hyperpolymath hyperpolymath deleted the fix/exempt-typed-manifests-from-identity-check branch May 14, 2026 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant