Author: Daniel Jacob Read IV
Steward: ĀRU Intelligence Inc.™
ĀML changes are not judged by whether they add capability. They are judged by whether they improve the system without creating hidden future debt.
Every material change must survive all ten axes below before merge.
- Does the change fit an existing layer, or is it creating a new architectural concept?
- Is responsibility located in the right module?
- Does it duplicate an existing primitive under a new name?
- Does it create circular dependency between syntax, meaning, policy, runtime, evidence, trust, browser, or deployment layers?
- Which public or machine-readable contracts change?
- Is the change backward compatible?
- If behavior changes, is a version boundary explicit?
- Can an old client safely ignore the new field or capability?
- Is downgrade behavior defined?
- What new input is trusted?
- What happens with malformed, adversarial, oversized, replayed, stale, conflicting, or partially valid input?
- Are fail-open and fail-closed choices intentional?
- Does the change accidentally turn metadata into authority?
- Can two independent implementations produce the same observable result?
- Are timestamps, ordering, randomness, locale, floating point, Unicode, and serialization rules explicit where relevant?
- Is test evidence reproducible from a pinned commit?
- Does every new SHIPPED claim point to executable or inspectable evidence?
- Does the wording say exactly what was proved and no more?
- Are prototype, certification, standards, adoption, safety, compliance, and ethics boundaries preserved?
- Does the name collide with an existing standard, protocol, security term, accessibility term, or serialization format?
- If ĀML intentionally differs from an existing standard, is that difference explicit?
- Are wire identifiers and protocol names narrow enough to remain true in five years?
- What happens when the feature fails halfway through?
- Can state be rolled back or replayed safely?
- Are errors machine-readable where needed?
- Can operators distinguish invalid input, unsupported capability, policy denial, transport failure, and internal failure?
- What grows with number of nodes, policies, receipts, sessions, witnesses, or federated systems?
- Is complexity bounded or documented?
- Can a hostile input trigger pathological work or memory use?
- Does the feature still make sense at 10×, 100×, and 10,000× current demo scale?
- Can a new implementer discover the feature from the normal entry points?
- Is there one shortest reproduction path?
- Are names consistent across CLI, API, schema, docs, examples, and CI?
- Are migration and debugging paths clear?
- What accidental promise does this change make to future versions?
- Which identifiers become difficult to rename after adoption?
- Could this block a better design later?
- Is the current abstraction the smallest durable one?
- Would we still be comfortable defending this contract to a standards engineer, security reviewer, enterprise architect, and independent implementer five years from now?
A material change is not ready because tests pass. Tests are necessary, not sufficient.
Before merge, the PR must state:
- the contracts touched;
- the compatibility story;
- new failure modes;
- claim/evidence impact;
- security impact;
- interoperability impact;
- performance impact;
- migration or rollback path;
- tests/evidence added;
- what was deliberately not added because the abstraction is not ready.
If any answer is unknown, the change stays experimental or remains unmerged.