- docs(adapters): auto-generated tier badge on every
docs/adapters/*.mdpage, sourced fromADAPTER_REGISTRY.json. ClosesLONG_TERM_FIXES_TRACKERT3.2. New scriptscripts/refresh_adapter_doc_badges.pyrewrites a machine-fenced block (<!-- adapter-badge:begin ... :end -->) on each adapter doc; only text inside the fence is touched, everything else is preserved exactly. The badge summarizestier(🟢 Core / 🟡 Extended), group, verbs (with truncation for long lists),privilege_tier,sandbox_safe, andnetwork_facing. 11 adapter doc pages stamped:POSTGRES,MYSQL,REDIS,DYNAMODB,AIRTABLE,SUPABASE,AINL_GRAPH_MEMORY,MEMORY_CONTRACT,MEMORY_CONTRACT_V1_1_RFC,CODE_CONTEXT,PTC_RUNNER. Non-adapter docs are skipped via an explicitSKIP_FILESlist. CI hook:--checkmode exits 1 on drift;tests/test_adapter_doc_badges.pyenforces the contract with 6 tests covering presence, skip-list integrity, registry-tier parity, idempotency, and drift detection. Side-effect honesty: the script also lists 16 Extended-tier adapters that don't have a dedicated doc page (solana,tiktok, etc.); informational, doesn't block. - docs(icp): canonical ICP doc at
docs/WHO_IS_THIS_FOR.md. ClosesLONG_TERM_FIXES_TRACKERT3.8. Synthesizes the three-baseline framework (LLM-first / hand-optimized / pure-deterministic), the persona table (solo operator / agent-heavy shop / small team needing audit / Temporal-curious / compliance-led / researcher), the four workload-pattern anti-fits (pure-deterministic automation, judgment-heavy semantic pipelines, already-gated triage, low-volume classifiers), the "what AINL is still good for when tokens aren't the play" table, a 30-second decision tree, and the reviewer Q&A into one source of truth. The README's 60-second filter is the teaser; this is the long-form answer.docs/competitive/WHEN_AINL_DOES_NOT_HELP.mdis now a pointer stub (URL preserved for inbound links and search-engine results; full content merged into the canonical).docs/competitive/ARMARAOS_GTM.mdretains its ArmaraOS-specific product positioning and gains a top banner pointing at the canonical for the ICP question.docs/AUDIENCE_GUIDE.mdgains a top banner clarifying it's a contributor entry-point map, not an ICP filter. Sales-facing inbound links updated to the canonical across README, BENCHMARK,docs/benchmarks,CLAIMS_AND_EVIDENCE,competitive/README,competitive/COMPETITIVE_MESSAGING,competitive/OVERVIEW,competitive/COMPARISON_TABLE. The stub handles any unedited inbound link. - docs(token / community): transparent restatement of $AINL token + marketplace marketing surfaces. Closes
LONG_TERM_FIXES_TRACKERT3.5. The principle: transparency beats revisionism. Aspirational marketing claims are preserved (git history is public; deletion would itself be a credibility risk), but every claim is now explicitly tagged with current shipping status and a pointer to live, verifiable data. New machine-readable canonical source:tooling/token_status.json(mint address, decimals, Solana on-chain placeholders, git-verifiable contributor counts, original aspirational goals retained as a fixed baseline). New refresher script:scripts/fetch_token_status.py— stdlib-only, no auth required for public reads, idempotent, populates on-chain (Solana RPC) + GitHub stars + local git contributor metric with explicit_statusfields on every value (ok/pending_run/rpc_error: .../github_error: .../skipped); the script never invents numbers. New rootCONTRIBUTORS.mdwith C3 framing — founder-led, multi-contributor, AI-assisted; active human maintainers: Steven B Hooley (founder), Terrance Schonleber, Kobe Welker; external human contributors and AI co-author identities listed; classification methodology (BOT_PATTERNS,AI_PATTERNS,HUMAN_ALIASES) documented and editable in the refresher script. Status-tagged:docs/community/CHAMPIONS_PROGRAM.md,docs/learning/intermediate/patterns/template-marketplace-submission.md,docs/learning/intermediate/patterns/README.md,docs/learning/intermediate/README.md,docs/learning/basics/README.md,docs/learning/basics/04-next-steps.md,docs/enterprise/ENTERPRISE_FAQ.md(per-utility status table),docs/enterprise/METRICS_DASHBOARD_SPEC.md(Token-holders metric clarified as community metric, not enterprise health signal). Enterprise stays token-free. - docs(adapters): two-tier adapter catalog — Core (29 adapters) + Extended (16 adapters) — both fully supported. No deprecations, no removals, no breaking changes.
adapters/solana.py→adapters/extended/solana.pyandadapters/tiktok.py→adapters/extended/tiktok.py; thin PEP 562 alias modules at the original paths forward every attribute (public and private) to the canonical extended modules so bothfrom adapters.solana import ...andfrom adapters.extended.solana import ...continue to work identically and produce no warnings. Tier metadata stamped on every entry inADAPTER_REGISTRY.json(tier: "core" | "extended", plus a new top-leveltier_meaningsblock); regenerator + audit-drivenTIER_MAPinscripts/update_adapter_registry_tiers.py.ainl doctorsurfaces tier counts (adapter_tiers: 29 core + 16 extended (all supported)). New canonical docdocs/adapters/ADAPTER_TIERS.mddescribes the model, lists each tier, documents the Extended-adapter layered config pattern (explicit arg → env var → legacy default with one-timeUserWarning→ fail-fast), and records downstream compatibility commitments (ArmaraOS, ainl-inference-server, ainl-cortex, ainativelangweb). The ExtendedTiktokAdapternow uses that layered config and raises a clearTiktokAdapterConfigErrorwhen nothing is configured, replacing the previously hardcoded/Users/...path. Tests:tests/test_adapter_tier_shim_compat.py(9 cases — both import paths return the same class, no warnings on alias import, every adapter has a valid tier, layered config precedence, fail-fast). Tracker:docs/competitive/LONG_TERM_FIXES_TRACKER.mdT3.1–T3.4 → Done. - docs(architecture):
TOOL_SURFACE_CANONICALIZATION_CHECKLIST.md§9 — cross-repo vocabulary table (pre-filter vs D-gate vs router; snap-back vs future sticky); links toTOOL_REGISTRY_AND_TOOL_PATCH_PLAN.md§7.2–7.3 andainl-inference-server(TOOL_PATCH_AND_ROUTER_ARCHITECTURE,PLANNER_HOST_BOUNDARIES,INFER_SESSION_ACTIVE_TODOS§N). Related rows inTOOL_REGISTRY_AND_TOOL_PATCH_PLAN.md§10 Related. - feat(mcp / cli): agent-recovery for empty / missing
.ainlsource.mcp_ainl_ainl_validate,mcp_ainl_ainl_compile,mcp_ainl_ainl_run, andmcp_ainl_ainl_security_reportnow short-circuit whencodeis whitespace-only witherror_kind: "empty_source",tool_call_error: false, aminimal_strict_valid_example, andrecommended_next_tools: ["ainl_get_started", "ainl_step_examples"]— distinct from the existing tool-wiringtool_call_error: truepayload that fires when nocodewas passed at all (helpers_classify_source_arg/_empty_source_tool_errorinscripts/ainl_mcp_server.py). The CLI runner (ainl run <file>) gains a pre-flight stat:error_kind: "empty_source"for 0-byte / whitespace-only files anderror_kind: "path_not_found"(with asibling_workflowslisting of nearby.ainl/.langfiles) when the path does not exist; both render as JSON under--jsonand as a short human summary otherwise (helpers_preflight_workflow_path/_pretty_preflight_errorincli/main.py). Tests:tests/test_mcp_server.py(newempty_sourcecases underTestValidate/TestCompile/TestRun),tests/test_cli_run_preflight.py. Docs:AGENTS.md(Empty / missing source self-recovery). - feat(mcp):
pathonainl_validate,ainl_compile,ainl_run, andainl_security_report— load workflow source from a filesystem path (inlinecode/ainlstill takes precedence); optional envAINL_MCP_WORKFLOW_ROOTfor resolving relative paths (ArmaraOS / multi-root workspaces). Mirrors CLI preflight (path_not_found,empty_source,path_not_a_file, siblings); success payloads may includesource_path.ainl_run: workflows under anintelligence/path segment setAINL_ALLOW_IR_DECLARED_ADAPTERS=1when unset, matching CLI. Tests:tests/test_mcp_server.py. ArmaraOS host wiring: the OpenFang kernel additionally augments cached MCP tool definitions with thepathproperty when an olderainl-mcptools/listomitted it (openfang_types::tool::augment_mcp_ainl_tool_definition, applied at every MCP cache build site inopenfang-kernel::kernel) so the planner schemas and chat tool lists carrypatheven before operators redeploy the Python server — see armaraosCHANGELOG.md(AINL MCP tool schemas — optionalpath) andCLAUDE.md(Common Gotchas).
- feat(mcp / authoring): deterministic wizard in
tooling/ainl_get_started.pywithwizard_state_jsoncontinuity; new MCP toolainl_step_examples; resourceainl://strict-valid-familiesbacked bycorpus/strict_valid_family_index.json(tooling/corpus_mining.py);ainl_validate/ainl_compileattachcontract_validation_statusandcontract_alignment(mismatched_callsvsADAPTER_CONTRACTS). Tests:tests/test_ainl_get_started.py,tests/test_mcp_server.py,tests/test_mcp_exposure_scoping.py. - feat(http): optional
payment_profile(none/auto/x402/mpp) onSimpleHttpAdapter— structured402payment_requiredenvelope +http_paymentframe merges; settlement metadata on200when enabled; helpers inruntime/adapters/http_machine_payments.py. CLI--http-payment-profile,--http-max-payment-rounds; runner + MCPadapters.httpkeys;AINL_HTTP_PAYMENT_PROFILE/AINL_HTTP_MAX_PAYMENT_ROUNDSfor OpenClaw monitor registry. Tests:tests/test_http_machine_payments.py, extendedtests/test_http_adapter_contracts.py. - docs(integrations):
docs/integrations/README.md(index);HTTP_MACHINE_PAYMENTS.md(x402/MPP + landscape + repo map);AGENTIC_PROTOCOLS_PRACTITIONER_READINESS.md(capability matrix + backlog);AGTP.md(gateway / MCP / adapter options); cross-links fromAGENTS.md,README.md,SECURITY.md,examples/README.md,docs/EXAMPLE_SUPPORT_MATRIX.md. - docs:
docs/operations/MCP_AINL_WIZARD_AND_CORPUS.md(hub); cross-links fromAGENTS.md,docs/README.md,docs/DOCS_INDEX.md,examples/README.md,armaraos/docs/mcp-a2a.md,armaraos/docs/graph-memory.md;tooling/mcp_exposure_profiles.json—ainl_step_examples+ainl://strict-valid-familiesondesign_impact_first,inspect_only,safe_workflow,full;validate_onlyincludesainl_step_exampleswithout MCP resources. - test: refresh
test_patch_a_valid_artifacts_fingerprint_lockgolden hashes for opcodeS core webfixtures (labels_sha256,emit_ir_json_sha256) after compiler IR shape drift — restoresparser-compat/core-prCI (open Dependabot PRs were failing the same gate). - test / tooling: drop duplicate
a2a.GET/a2a.TASK_GETentries fromADAPTER_EFFECT(manifest verbs arediscover,send,get_taskonly); alignsafe_workflow/fullMCP exposure tool/resource lists withALL_TOOL_NAMES/ALL_RESOURCE_URIS(includesainl_step_examples); register 16 newexamples/**paths intooling/artifact_profiles.json(non-strict-only/legacy-compatso canonical curriculum stays unchanged);test_memory_search_missing_adapter_raises_descriptiveuseshost_adapter_denylistso autoAINLGraphMemoryBridgeregistration does not mask the missing-adapter path.
- feat(adapter / a2a): opt-in
runtime/adapters/a2a.py— wire profile 1.0:GET …/.well-known/agent.json, JSON-RPCtasks/send/tasks/get; host allowlist (allow_hosts, empty list denies all),allow_insecure_local, optionalstrict_ssrf(DNS + block private/loopback/link-local unless local allowed),follow_redirectsdefault off (on: re-check URL per hop). CLI:--a2a-allow-hosts,--a2a-allow-insecure-local,--a2a-strict-ssrf,--a2a-follow-redirects,--a2a-default-timeout,--enable-adapter a2a. Env:AINL_A2A_*,AINL_ADAPTERS. MCP / runner:adapters.enable+adapters.a2a; exposure profiles do not enable a2a by themselves — seetooling/mcp_exposure_profiles.json. Effect analysis: stricta2a.*intooling/effect_analysis.py. Tests:tests/test_a2a_adapter.py,tests/test_a2a_adapter_integration.py(local HTTPServer; skips if bind fails). Example:examples/compact/a2a_delegate.ainl. Docs:docs/integrations/A2A_ADAPTER.md,ADAPTER_REGISTRY.json, registry/reference docs,SECURITY.md.
- TOCTOU — allowlist and DNS checks apply per request; targets can change between metadata fetch and work requests in adversarial conditions.
- Empty allowlist — outbound a2a calls are denied; operators must set hosts explicitly.
- IDNA / Unicode hosts — punycode and homoglyph risk; prefer explicit allowlisted hostnames.
Ship tag for everything after v1.6.0 (7b78f18) through Gap K vitals parity: graph-memory inbox + monitor registry, Hand schema_version, Rust snapshot / export alignment, bundle pre-seed, OpenClaw wrapper fixes, and PRIOR_ART / blog operator docs. Full conventional list under v1.7.0 below.
- feat(armaraos): inbox sync toward
ainl_memory.db; monitor registry pre-seed +AdapterRegistry.get+ unified bootstrap (CronDriftCheckAdapter);tests/test_armaraos_monitor_registry.py. - feat(armaraos-bridge): inbox JSON schema, CI workflow, sync envelope metadata (
f1c4e62). - feat(armaraos-emit):
schema_versionon Hand artifacts (0bb96b8); Python bridge accepts Rust snapshotschema_version"1"(**a2a2c78`). - feat(ainl_graph_memory): read
AgentGraphSnapshotvia export env (f2e6372);.ainlbundleboot pre-seed for non-persona graph nodes (1e86f14);feat(runtime+bundle)pre-seed graph store onainl run+ persona hook (eece265). - fix(bridge): ArmaraOS per-agent export paths aligned (
5a88026). - feat(gap-k): CognitiveVitals on episodic
MemoryNode, inbox schema,tests/test_vitals_bridge.py(3af546c). - integration(armaraos-rust-crates): clarify production convergence across
ainl-runtime,openfang-runtime,openfang-kernel, andopenfang-types(optionalainl-runtime-engineturn routing, depth guards, shared graph-memory semantics) to reflect the shipped ArmaraOS bridge path. - integration(graphpatch/registry): document cross-runtime GraphPatch alignment — Python
memory.patchremains the rich executor while Rust-sidePatchAdapter/AdapterRegistry+GraphPatchAdapterhost dispatch form the stable patch-registry contract. - integration(persona/extractor/tagger): align release notes with ArmaraOS runtime feature stack (
ainl-persona-evolution,ainl-extractor,ainl-tagger) and runtime gates (AINL_PERSONA_EVOLUTION,AINL_EXTRACTOR_ENABLED,AINL_TAGGER_ENABLED) used for persona evolution, extraction reporting, and semantic tagging. - fix(openclaw):
token_aware_startup_contextincludes +fsread (6a3b35b). - docs / chore: PRIOR_ART + graph-memory blog + inbox/bridge hub sync + bundle boot + OpenClaw cron graphs +
supervisor_fixed.ainl; demotest_openspace_mcpHTTP MCP (c0a87c4); post-evolution ARMARAOS export refresh (c03d897);docs(release): v1.6.0follow-up (8dcf043).
All items below are commits on main since Git tag v1.6.0 (7b78f18 — release: v1.6.0 — GraphPatch notes, version surfaces, adapter registry), through 3af546c, unless noted.
- release: bump
pyproject.toml/RUNTIME_VERSION/CITATION.cff/tooling/bot_bootstrap.jsonto 1.7.0 (mirroredtests/emits/server/runtime/engine.py); docs hub / skills / operations PyPI + docs pointers aligned for the v1.7.0 line (MINOR — bridge + inbox + vitals + emit surface). - feat(runtime+bundle) (
eece265): pre-seed graph store onainl runwhen a bundle / graph-memory path is active; persona hook wiring in the agent loop path (bundle + graph continuity). - docs (
e3449fa,8492a8a): ArmaraOS bundle env (AINL_BUNDLE_PATH,AINL_AGENT_ID), boot pre-seed, and chat persona vs JSON graph cross-links. - docs(release) (
8dcf043): v1.6.0 GraphPatch release doc pass (changelog / release notes alignment — landed immediately after thev1.6.0tag; included here for a complete post-tag audit trail). - fix(openclaw) (
6a3b35b):intelligence/token_aware_startup_context.ainl— correctincludepaths andfsread wiring for bridge cron graphs. - feat(ainl_graph_memory) (
f2e6372): read RustAgentGraphSnapshotviaAINL_GRAPH_MEMORY_ARMARAOS_EXPORT(and related export env) for Python-side import. - chore(demo) (
c0a87c4): pointdemo/test_openspace_mcp.ainlat HTTP MCPexecute_task(demo hygiene). - docs(ainl_graph_memory) (
c03d897): document post-evolution ARMARAOS graph export refresh semantics. - fix(armaraos) (
a2a2c78): accept Rust graph snapshotschema_version:"1"in the Python bridge (forward-compat with emitted packs). - feat(armaraos-emit) (
0bb96b8): emitschema_version = "1"onHAND.toml[hand], shallow-copied IR JSON, andsecurity.json(openfang-hands alignment). - fix(bridge) (
5a88026): alignainl_graph_memoryArmaraOS export discovery with per-agent{agent}_graph_export.json/ agent directory layout. - feat(ainl_graph_memory) (
1e86f14): pre-seed non-persona graph nodes from.ainlbundleonboot()(bundle round-trip toward JSON graph store). - docs(prior-art) (
04dbbe2): expand graph-memory timeline + implementation claims inPRIOR_ART.md. - feat(armaraos) (
1300979): inbox sync for graph-memory mutations towardainl_memory.db(Python writer + host drain contract). - feat(armaraos) (
4ad914c): pre-seed monitor registry with bridge adapters (cron drift + graph tooling path). - feat(armaraos) (
1092daa): unify monitor registry bootstrap + exposeAdapterRegistry.get(name)publicly;RuntimeEnginegraph-patch paths resolveainl_graph_memoryviaadapters.get(...)(no private_adaptersaccess). - feat(armaraos-bridge) (
f1c4e62): inbox JSON schema (ainl_graph_memory_inbox_schema_v1.json), CI workflow coverage, sync envelope metadata (source_features, etc.). - docs (
965b8d5,843be1a,1ed8ab2,a7dfb65,eeeede8): graph-memory inbox contract + vendored armaraos hub sync + bundle graph boot + adapters index + OpenClaw wrapperinclude/fs/Ifnotes for bridge cron graphs + graph-as-memory blog / PRIOR_ART / adapter frontmatter cross-links. - feat(gap-k) (
3af546c): CognitiveVitals round-trip on PythonMemoryNode(vitals_gate,vitals_phase,vitals_trust);from_dict/to_dict; Rust snapshot import; inbox schema +tests/test_vitals_bridge.py. - chore:
scripts/wrappers/supervisor_fixed.ainl— canonicalR openclaw_memory append_todayadapter form (wrapper hygiene).
Ship tag for the GraphPatch line; full conventional list under v1.6.0 below.
- GraphPatch op end-to-end: bridge (
graph_patch), runtime (install + fitness + boot reinstall), compiler (strict literals / dataflow), tooling (MEMORY_PATCH/ effect analysis), tests (tests/test_graph_patch_op.py). - Guards / strictness:
OverwriteGuardErroron compiled-label collision;StrictModeErrorfor invalidmemory.patchliterals whenstrict_literalsis enabled. - Fitness + boot: fitness EMA on patched-label exit (including early
J);_reinstall_patchesreapplies active patches after engine boot when the graph-memory bridge is present. - Dispatch:
R memory.patchis routed through the same enginememoryadapter dispatch path as othermemory.*verbs (not a special-case bypass). - Foundation for unified graph execution: this release locked in canonical Python GraphPatch semantics and dataflow guarantees that the ArmaraOS Rust integration extends in v1.7.0 via patch-registry dispatch and graph-memory convergence.
- release: bump
pyproject.toml/RUNTIME_VERSION/CITATION.cff/tooling/bot_bootstrap.jsonto 1.6.0 (mirroredtests/emits/server/runtime/engine.py). - feat(runtime / graph memory):
R memory.patchinstalls procedural label bodies fromainl_graph_memoryviaadapters.call("ainl_graph_memory", "graph_patch", [memory_node_id, label_name], …);_reinstall_patcheson engine boot; overwrite guard for compiled labels (OverwriteGuardError→AinlRuntimeError); patch metadata (__patch_node_id__,__patch_version__,__fitness__) +finalize_patchdeclared reads; fitness EMA on label exit including earlyJreturns; sync/asyncmemorydispatch includespatch. - feat(compiler): strict-mode
memory.patchliteral guard (StrictModeError/strict_literalsonAICodeCompiler); patch dataflow validation uses per-step_analyze_step_rw(aligns with compiler read analysis for stringSetrefs). - feat(tooling):
ainl_graph_memory.MEMORY_PATCHinADAPTER_EFFECT(tooling/effect_analysis.py). - fix(runtime):
Loop/Whileinner locals renamed (body_lid) so inner graphs do not shadowbody(patch fitness updates). - test:
tests/test_graph_patch_op.py— eight pytest cases (step vs graph mode, frame$var, overwrite guard, re-patch versioning, boot reinstall +_reinstall_patches, fitness EMA, strict compile). - docs:
docs/RELEASE_NOTES.md,docs/POST_RELEASE_ROADMAP.md,docs/RELEASING.md,ADAPTER_REGISTRY.json/docs/reference/ADAPTER_REGISTRY.md(memory_patchtarget for GraphPatch; runtime call targetgraph_patch), current-release pointers to v1.6.0 across hub and integration docs. - docs:
docs/adapters/AINL_GRAPH_MEMORY.md—boot(),AINL_BUNDLE_PATH/AINL_AGENT_ID, scheduledainl runbundle round-trip vs Rustainl_memory.dbchat[Persona traits active: …]hook;docs/ARMARAOS_INTEGRATION.md— env table rows + cron / chat split + armaraosdocs/graph-memory.md;docs/INTELLIGENCE_PROGRAMS.md— statefulbundle.ainlbundle+ armaraos doc links;AGENTS.md(ArmaraOS bullets).
- release: bump
pyproject.toml/RUNTIME_VERSION/CITATION.cff/tooling/bot_bootstrap.jsonto 1.5.2 (mirroredtests/emits/server/runtime/engine.py). - feat(memory / graph IR): optional
memory_typeon per-labelRnodes for graph-memory / persona steps;memory.pattern_recallon the graph bridge +__last_pattern__formemory.merge; per-labelemit_edges(port: "data"/"emit") alongsiderequired_emit_targets;tooling/graph_apihelpersemit_edges,data_flow_edges,memory_nodes(label_*accept label id sequences). Docs:GRAPH_SCHEMA.md,GRAPH_INTROSPECTION.md,AINL_GRAPH_MEMORY.md,MEMORY_CONTRACT.md. - feat(compiler / runtime / bundle): graph-memory and persona adapter ops registered for strict validation (
OP_REGISTRY,MODULE_ALIASES,ADAPTER_EFFECT,KNOWN_MODULESas applicable);persona.loadwith runtime frame injection (__persona__,persona_instruction);AINLBundle/AINLBundleBuilderinruntime/ainl_bundle.pyfor single.ainlbundleworkflow + memory + persona + tools JSON round-trip. - feat(mcp): malformed workspace
ainl_mcp_limits.json→ successfulainl_runmay includewarnings; invalid non-empty workspacecache.jsonduring MCP auto-registration →adapter_config_errorwithdetails. - feat(emit/armaraos):
security.jsonincludescapability_declarations.adapters;HAND.toml[hand]includesainl_ir_version. - fix(runtime): enforce
max_adapter_callsincluding0(no longer folded to “unset”); aligns with MCP/workspace limits and tests. - fix(profiles):
local_minimalmax_adapter_callsraised from 0 to 500 intooling/security_profiles.jsonso the profile remains usable with the stricter adapter-call ceiling. - test:
tests/test_mcp_frame_hints.py,tests/test_mcp_workspace_limits.py,tests/test_mcp_auto_cache_adapter.py,tests/test_emit_armaraos_handpack.py,tests/test_compact_opcode_ir_parity.py,tests/test_memory_search_op.py,tests/test_core_builtins_v143.py, persona / bundle / strict-contract suites — seedocs/RELEASE_NOTES.md. - test(conftest):
offline_llm_provider_configpytest fixture (deterministic offline LLM provider block for suites that opt in viapytestmark). - docs:
docs/adapters/MEMORY_CONTRACT.md,docs/adapters/AINL_GRAPH_MEMORY.md,docs/architecture/GRAPH_INTROSPECTION.md,docs/RUNTIME_COMPILER_CONTRACT.md,docs/DOCS_INDEX.md,docs/adapters/README.md,docs/architecture/STATE_DISCIPLINE.md,docs/README.md,docs/RELEASE_NOTES.md,AGENTS.md,README.md,docs/operations/MCP_RESEARCH_CONTRACT.md,docs/ARMARAOS_INTEGRATION.md,docs/operations/CAPABILITY_GRANT_MODEL.md, hub / overview / skills — current-release pointers aligned to v1.5.2;WHITEPAPERDRAFT.md(v1.5.2, §6.8 graph-memory gap audit).
- release: bump
pyproject.toml/RUNTIME_VERSION/CITATION.cff/tooling/bot_bootstrap.jsonto 1.5.1 (mirroredtests/emits/server/runtime/engine.py). - feat(runtime): IR ops
MemoryRecallandMemorySearchdispatch theainl_graph_memoryadapter from_exec_stepand sync_run_label_graph; fallback adapter inference includes legacystepsand label graphnodes(_fallback_adapters_from_label_steps). Tests:tests/test_memory_recall_op.py. - bridge (ArmaraOS): JSON graph store +
AINLGraphMemoryBridge(armaraos/bridge/ainl_graph_memory.py), registration andon_delegationhook inarmaraos/bridge/runner.py, optionalarmaraos/bridge/graph_viz/FastAPI viewer,demo/procedural_roundtrip_demo.py,demo/ainl_graph_memory_demo.py(stdlib walkthrough of episodic / semantic / procedural / persona nodes + JSON export; run from repo root),armaraos/bridge/bridge_token_budget_adapter.pyimportlib shim. - docs: new
docs/adapters/AINL_GRAPH_MEMORY.md; cross-links fromdocs/adapters/MEMORY_CONTRACT.md,docs/adapters/README.md,docs/README.md,docs/DOCS_INDEX.md,docs/reference/README.md,docs/ARMARAOS_INTEGRATION.md(AINL_GRAPH_MEMORY_PATH),docs/RUNTIME_COMPILER_CONTRACT.md,docs/architecture/STATE_DISCIPLINE.md; hub / overview / skills /README.md“current release” lines aligned to v1.5.1. - tooling(docs): register
ainl_graph_memoryintooling/adapter_manifest.jsonandADAPTER_EFFECT(tooling/effect_analysis.py) with graph-node effect tiers; extenddocs/reference/ADAPTER_REGISTRY.md,ADAPTER_REGISTRY.json,docs/GITHUB_RELEASE_CHECKLIST.md,docs/DOCS_MAINTENANCE.md, anddocs/CONFORMANCE.md(strict-literals matrix callout).
- release: bump
pyproject.toml/RUNTIME_VERSION/CITATION.cff/tooling/bot_bootstrap.jsonto 1.5.0 (minor after 1.4.6). - docs(whitepaper):
WHITEPAPERDRAFT.md— substantive pass for 1.5.0: runner default grants vsainl_runadapter registration on MCP,host_security_env/ capability-block metrics,ainl-validatehyperspace path, adapter and emission accuracy, include prelude; new §16–§18 (security / CI & assurance / LLM authoring contract); renumbered tail (§19–§22); §20.1 shipped-features parity; Appendix A pointers todocs/advanced/SAFE_USE_AND_THREAT_MODEL.mdandAGENTS.md. - docs: repository-wide refresh — docs hub (
docs/README.md),docs/DOCS_INDEX.md,docs/overview/README.md,docs/OPENCLAW_INTEGRATION.md,docs/CONTRIBUTING.md, rootCONTRIBUTING.md,docs/operations/OPENCLAW_AINL_GOLD_STANDARD.md/docs/operations/README.md/docs/operations/HOST_PACK_OPENCLAW.md/docs/operations/EXTERNAL_ORCHESTRATION_GUIDE.md/docs/operations/OPENCLAW_REQUESTS_2_6_MAPPING.md,docs/competitive/README.md/docs/competitive/OVERVIEW.md,docs/openclaw/TOKEN_AWARE_STARTUP_CONTEXT.md,docs/POST_RELEASE_ROADMAP.md,docs/upstream/OPENCLAW_ISSUE_DRAFT_bootstrap_flag.md,docs/operations/MCP_RESEARCH_CONTRACT.md,docs/RELEASING.md,docs/QUICKSTART_OPENCLAW.md,docs/getting_started/HOST_MCP_INTEGRATIONS.md,docs/ZEROCLAW_INTEGRATION.md,docs/HERMES_INTEGRATION.md,docs/integrations/hermes-agent.md,docs/solana_quickstart.md,README.md,AGENTS.md,WHITEPAPERDRAFT.md— “current release” / PyPI pointers (and JSON samples where applicable) aligned to 1.5.0;skills/openclaw/README.md/SKILL.md,skills/ainl/README.md/SKILL.md,skills/hermes/README.md/SKILL.md— PyPI / host-briefing lines aligned to v1.5.0.
- release: bump
pyproject.toml/RUNTIME_VERSION/CITATION.cff/tooling/bot_bootstrap.jsonto 1.4.6. - chore(demo): add
demo/test_openspace_http.ainl— experimental HTTP probe for OpenSpace MCP (demo tree; not strict-valid). - chore: add
apollo-x-bot/api-cost-monitor.ainl— sample promoter workflow for API-cost monitoring (uses sharedmodules/commonincludes). - chore: add
run_openspace_test.py— portable dev harness fordemo/test_openspace_mcp.ainl(repo-root-relative paths; OpenClaw adapter registry smoke).
- release: bump
pyproject.toml/RUNTIME_VERSION/CITATION.cff/tooling/bot_bootstrap.jsonto 1.4.5. - fix(tooling):
ainl install-mcp --host armaraos— whenname = "ainl"already exists in[[mcp_servers]], mergeenvpass-through (AINL_MCP_EXPOSURE_PROFILE,AINL_MCP_TOOLS,AINL_MCP_TOOLS_EXCLUDE,AINL_MCP_RESOURCES,AINL_MCP_RESOURCES_EXCLUDE) into the existingenv = [...]line (sorted union) instead of only applying to newly appended blocks.~/.openfang/config.tomlreceives the same merge. Tests intests/test_install_mcp.py. - feat(mcp):
scripts/ainl_mcp_server.py— registerainl://authoring-cheatsheetresource (short golden-path authoring guide aligned withAGENTS.md); process-local validate telemetry counters; validate/compile path improvements for MCP agent loops. - feat(compiler / diagnostics):
Diagnosticsupports optionalcontract_violation_reasonfor include failures; include diagnostics populate stable reasons; graph validation emits better line attribution (_graph_error_lineno,_emit_graph_validation_diagnostic). - fix(compiler strict): Targeted labels whose last step is
LooporWhileare skipped for the “exactly oneJ/ must end inJ” check (same exemption pattern asIf-final labels). Fixes false strict failures for assembly-style pipelines. - test:
tests/test_compiler_agent_suggested_fixes.py— coverage for suggested-fix kinds on common agent mistakes;tests/test_mcp_server.pyextended for MCP surface changes. - docs: docs/operations/EFFICIENT_MODE_ARMARAOS_BRIDGE.md — clarifies
ainl run --efficient-mode/AINL_EFFICIENT_MODE(env signal only),modules/efficient_styles.ainl(output density), vs ArmaraOS Rust input compression (see ArmaraOSdocs/prompt-compression-efficient-mode.md).
- release: bump
pyproject.toml/RUNTIME_VERSION/CITATION.cff/tooling/bot_bootstrap.jsonto 1.4.4. - fix(emit):
emit_solana_clientdiscoverability header interpolatesRUNTIME_VERSION(was hard-coded v1.4.2). - test: Solana discoverability assertions use
f"v{RUNTIME_VERSION}"instead of a pinned version string.
- feat(mcp):
ainl_runnow accepts an optionaladaptersargument to enable scoped runtime adapters per call (sandboxedfs, host-allowlistedhttp, file-backedcache, optionalsqlite) so agent workflows can do required I/O without asking end users to edit global config. - feat(builtins):
CoreBuiltinAdapter(runtime/adapters/builtins.py) now implements the full set of verbs that were already present in the validator contract but missing at runtime:EQ,NEQ,GT,LT,GTE,LTE(comparisons);TRIM(collapse whitespace + strip),STRIP,LSTRIP,RSTRIP(edge whitespace);STARTSWITH,ENDSWITH(string predicates);KEYS,VALUES(dict introspection);STR,INT,FLOAT,BOOL(type coercions). All purely additive — no existing verb changed. These eliminate the common workarounds (CONCAT "" valfor int→str coercion, cascadingREPLACEfor whitespace normalization,CONTAINSfor equality checks). - feat(mcp):
ainl_compilenow returnsframe_hints[]— a list of{name, type, source}entries describing variables the caller should supply viaframeinainl_run. Sources: explicit# frame: name: typecomment lines (authoritative) and IR-inferred undeclared variables (heuristic). - feat(mcp): Per-workspace
ainl_mcp_limits.jsonoverride — if<fs.root>/ainl_mcp_limits.jsonexists, its values are merged into caller limits before server ceiling enforcement. Enables workspace-specific limit tuning without editing global defaults. - feat(mcp): Auto-registered
cacheadapter — iffsis enabled andcacheis not explicitly configured, the MCP server automatically registerscachewhenoutput/cache.jsonorcache.jsonexists infs.root. - fix(limits):
_SERVER_DEFAULT_LIMITSinscripts/runtime_runner_service.pyraised to match MCP defaults (max_steps: 500000,max_depth: 500,max_adapter_calls: 50000,max_time_ms: 900000) — the two surfaces were inconsistent since the previous session's MCP-only raise. - fix(tooling):
tooling/effect_analysis.pynow includescore.STARTSWITH,core.ENDSWITH,core.TRIM,core.STRIP,core.LSTRIP,core.RSTRIPeffect entries matching the new builtins. - fix(docs):
ainl_rundocstring documents variable shadowing pitfall and# frame:convention.CAPABILITY_GRANT_MODEL.md,RUNTIME_CONTAINER_GUIDE.md,SANDBOX_EXECUTION_PROFILE.mdupdated with current default limits.MCP_RESEARCH_CONTRACT.mdupdated forframe_hints, workspace limits, and auto-cache.AGENTS.mdruntime verb list updated. - release: bump
pyproject.toml/RUNTIME_VERSION/CITATION.cff/tooling/bot_bootstrap.jsonto 1.4.3.
v1.4.2 (April 7, 2026) — Intelligence path policy, MCP/runner alignment, compiler strict-mode + tooling
- feat(runtime):
AINL_ALLOW_IR_DECLARED_ADAPTERS— when set,AINL_HOST_ADAPTER_ALLOWLISTfrom the environment is ignored so graphs can use IR-declared adapters; denylist and security profiles still apply;ainl doctor/ capability hints updated. For sources under anintelligence/path segment,RuntimeEngine.from_codeandainl runsetAINL_ALLOW_IR_DECLARED_ADAPTERS=1when unset, unlessAINL_INTELLIGENCE_FORCE_HOST_POLICY=1. - feat(cli):
ainl runregistersweb,tiktok,queue(OpenClaw integration) consistently on every invocation. - feat(mcp):
scripts/ainl_mcp_server.py— defaultainl_run/ fitness tool grants aligned with the HTTP runner (no core-only adapter cap at the policy layer; resource limits unchanged). LLM on MCP remains opt-in viaAINL_CONFIG/AINL_MCP_LLM_ENABLED. - feat(runner):
scripts/runtime_runner_service.pydocuments the adapter-relax flag inhost_security_env/ capabilities response. - test:
tests/test_host_adapter_allowlist_env.py— intelligence path relax, host allowlist env behavior, strict policy override coverage. - docs:
AGENTS.md,docs/INTELLIGENCE_PROGRAMS.md,docs/LLM_ADAPTER_USAGE.md,env/openclaw-workspace-ainl.env.example, ArmaraOSscheduled-ainl/ snippet cross-links. - fix(compiler):
J L_label(jump to a known label by name) no longer generates false "undefined variable" strict-mode errors._steps_to_graphnow emitsanalysis_only: trueinter-label edges for everyJnode whose var resolves to a known label, enabling inter-label dataflow propagation without confusing the dataflow checker. - fix(compiler): Edge port validation now skips
analysis_only: trueedges (compiler-internal, dataflow-only), eliminating the spurious"edge … invalid for op 'J' (allowed: [])"error that appeared when strict mode validated label-jumping graphs. - fix(tooling):
strict_adapter_key_for_stepintooling/effect_analysis.pynow uses the IRentityfield as the verb fallback whenreq_opis empty. This fixes*.Funknown-adapter-verb errors forR adapter verb argsinstructions whose IR stores the verb inentity(affectscore,web,tiktok,cache,svc,crm, and similar adapters). - feat(tooling): Expanded
ADAPTER_EFFECTallowlist with:web.*—SEARCH,FETCH,SCRAPE,GETtiktok.*—RECENT,SEARCH,PROFILE,STATS,TRENDINGsvc.*—STATUS,RESTART,CADDY,NGINX,HEALTHcrm.*—QUERY,UPDATE- Additional
core.*ops:LEN,LT,GT,EQ,MAP,FILTER,CONCAT,SLICE,PARSE,FORMAT,NOW,ISO,JOIN,KEYS,CONTAINS,MERGE,TYPE,BOOL,UPPER,LOWER,ROUND,ABS,MOD,FLOOR,CEIL,RANGE,ZIP,REDUCE,SORT,UNIQUE,FLAT,HEAD,TAIL,CHUNK,SAMPLE,SHUFFLE
- feat(tooling): Updated
tooling/adapter_manifest.jsonto include thewebadapter namespace and all new verbs fortiktok,svc,crm, andcore, keeping adapter manifest coverage tests green. - fix(intelligence):
intelligence/intelligence_digest.lang— removedinclude "modules/common/generic_memory.ainl" as genmem(include was after theSheader, violating strict prelude placement, andgeneric_memory.ainldoes not conform to theENTRY/EXIT_*module contract); inlined memory writes using directR memory putadapter calls; replacedQueuePut notify notewithR queue Put "notify" note ->_; added missingJ L_analyzeterminator toL_default_prev. - fix(intelligence):
intelligence/infrastructure_watchdog.lang— replaced non-standardRet nullwithJ null; replacedQueuePut notify alert_msgwithR queue Put "notify" alert_msg ->_. - feat(armaraos):
ainl-librarywalker respects a.ainl-library-skipmarker file — any directory tree containing this file is excluded from the App Store listing. Addeddemo/.ainl-library-skipso development-only demo files stay out of the user-facing App Store. - fix(profiles): Promoted 11 files from
non-strict-onlytostrict-validintooling/artifact_profiles.jsonfollowing resolution of their structural issues:examples/api_only.lang,examples/blog.lang,examples/ecom.lang,examples/internal_tool.lang,examples/ticketing.lang,examples/openclaw/daily_lead_summary.lang,examples/openclaw_full_unification.ainl,examples/test_if_var.ainl,examples/test_mul.ainl,examples/test_X_sub.ainl; added newexamples/compact/openclaw_learning_handoff.ainl. - chore: Synced
tooling/canonical_curriculum.json,tooling/canonical_training_pack.json(rebuilt viascripts/build_canonical_training_pack.py), andtests/fixtures/snapshots/compile_outputs.jsonwith promoted files and refreshed checksums. - release: bump
pyproject.toml/RUNTIME_VERSION/CITATION.cff/tooling/bot_bootstrap.jsonto 1.4.2.
- feat(llm): register
offlineAbstractLLMAdapter(deterministic, no network) forconfig.yaml+register_llm_adaptersdemos and CI;LLMRuntimeAdapternormalizes verb casing soR llm.COMPLETIONmatchescompletion. - feat(core): implement
core.GETonCoreBuiltinAdapter(deep key/index read viadeep_get); add strictcore.GET+llm.COMPLETIONentries totooling/effect_analysis.py. - examples(wishlist): add
05b_unified_llm_offline_config.ainl+fixtures/llm_offline.yaml— unifiedllmpath vs05_route_then_llm_mock.ainl(llm_query+ mock env). - ci:
parser-compatrunstests/test_wishlist_examples_strict.pyplus no-network smoke runs for wishlist 01 and 05b. - release: bump
pyproject.toml/RUNTIME_VERSION/CITATION.cff/tooling/bot_bootstrap.jsonto 1.4.1.
- release: bump
pyproject.toml/ PyPIainl1.4.0; alignRUNTIME_VERSION1.4.0 inruntime/engine.py(mirroredtests/emits/server/runtime/engine.py);CITATION.cffversion/date-released;tooling/bot_bootstrap.jsonschemaversion;ainl serveGET /healthreportsversionfromRUNTIME_VERSION. - feat(armaraos): first-class ArmaraOS host-pack support:
ainl emit --target armaraosemits a hand package (HAND.toml,<stem>.ainl.json,security.json,README.md).ainl status --host armaraosuses consistent env resolution (canonicalARMARAOS_*, legacyOPENFANG_*aliases).ainl install-mcp --host armaraossupports ArmaraOS~/.armaraos/config.tomlformat ([[mcp_servers]]array) and installs~/.armaraos/bin/ainl-run+ PATH hints.
- docs(armaraos): new integration doc
docs/ARMARAOS_INTEGRATION.md; linked from the host hubdocs/getting_started/HOST_MCP_INTEGRATIONS.mdanddocs/DOCS_INDEX.md. - fix(tests): repair ArmaraOS integration tests to use supported AINL syntax and fix ArmaraOS emitter import path.
- fix(packaging): add
PyYAMLto coredependencies.scripts/ainl_mcp_server.pyimportsyamlat module load;ainl-mcp --help/ CI wheel-integrity must not fail withModuleNotFoundError: yamlafterpip install ainativelang[mcp]. - fix(ci):
tests/test_intelligence_budget_hydrate.py/tests/test_runtime_api_compat.py— closeMemoryAdapterSQLite connections (andgc.collect) before deleting temp DB paths on Windows (avoidsPermissionErrorincore-pr). - chore(benchmarks): refresh
tooling/benchmark_size_ci.jsonafterexamples/hello.ainlgrew (commented tutorial header); keepsbenchmark-regressionsize gate aligned withminimal_emittoken counts.
- fix(packaging): declare
httpxandrequestsas coredependenciesinpyproject.toml.adapters/__init__.pyeagerly imports LLM adapters that require these modules; a barepip install ainativelang[mcp](or base install) must not fail withModuleNotFoundErroronainl --help/ import smoke (CI install-smoke / wheel-integrity).
v1.3.1 (March 29, 2026) — Native Solana + prediction markets (strict graphs), discoverability docs, mirrored runtime sync
- release: bump
pyproject.toml/ PyPIainl1.3.1;RUNTIME_VERSION1.3.1 inruntime/engine.pyandtests/emits/server/runtime/engine.py;CITATION.cffversion/date-released;tooling/bot_bootstrap.jsonschemaversion. - solana: prediction-market flows on
adapters/solana.SolanaAdapter—DERIVE_PDAwith single-quoted JSON seeds,GET_PYTH_PRICE(legacy + PriceUpdateV2),HERMES_FALLBACK,INVOKE/TRANSFER_SPLwith priority fees;AINL_DRY_RUN=1simulation envelopes for mutating verbs; optionalpip install "ainativelang[solana]". - examples / curriculum:
examples/solana_demo.ainl,examples/prediction_market_demo.ainlstrict-valid; wired through artifact profiles / canonical curriculum / training packs where applicable. - emitters:
--emit solana-client/blockchain-clientstandalonesolana_client.pywith v1.3.1 DISCOVERABILITY module docstring; seedocs/emitters/README.mdSolana section. - docs:
docs/solana_quickstart.md, rootREADME.mdSolana callout,examples/README.mdpointers,CONTRIBUTING.md(release version + Solana pointers),docs/CONTRIBUTING.mdhub stub; tests assert discoverability strings in emitted client + adapter docstrings (tests/test_solana_blockchain.py).
v1.3.0 (March 27, 2026) — Official Hermes Agent integration + OpenClaw integration improvements (MCP bootstrap + skill pack + hermes-skill emitter)
- solana / lexer:
R solana.DERIVE_PDAseeds accept single-quoted JSON'["a","b"]'as one lexer token; underAINL_DRY_RUN=1, mutating verbsINVOKE,TRANSFER, andTRANSFER_SPLreturn simulated envelopes without requiring solders (live RPC/signing still needsainativelang[solana]). Legacytokenize_line()now delegates totokenize_line_lossless(decoded slot values; same as compile). - code_context adapter: Added
GET_SKELETON(cheap Tier-0 signatures), embedding-awareCOMPRESS_CONTEXT(cosine ranking whenembedding_memoryis available), and extendedSTATSwith graph metrics; plus import-graphGET_DEPENDENCIES/GET_IMPACTand greedy packing on earlier iterations. Builds on ctxzip tiers + forgeindex graph/compression ideas. Seedocs/adapters/CODE_CONTEXT.md,examples/code_context_demo.ainl. Full credit to Brady Drexler (ctxzip) and Chris Micah (forgeindex). - feat(hermes): add official Hermes Agent host support to
ainl install-mcp --host hermes/ainl hermes-install(writes~/.hermes/config.yamlmcp_servers.ainl, installs~/.hermes/bin/ainl-run, PATH hint). - feat(skills/hermes): ship a Hermes-native skills pack under
skills/hermes/(installer + bridge helpers for ingest/export loops). - feat(emitter): add
--emit hermes-skill(and--target hermesalias) to compile a.ainlworkflow into a drop-in Hermes skill bundle (SKILL.md,workflow.ainl,ir.json) that runs deterministically via MCPainl_run. - feat(doctor):
ainl doctornow recognizes Hermes’ YAML host config (~/.hermes/config.yamlmcp_servers:) and validatesainlMCP registration without requiring a YAML dependency. - docs(hermes): new docs:
docs/integrations/hermes-agent.md(high-level) anddocs/HERMES_INTEGRATION.md(full guide, quickstarts, loop contract, troubleshooting). - docs(discovery): README badge + “Start here” +
docs/README.md+docs/DOCS_INDEX.md+ MCP host hub cross-link Hermes Agent next to OpenClaw / ZeroClaw so humans and agents can find the upstream host. - feat(openclaw):
ainl install openclaw --workspace PATHfor true one-command setup with health check,--dry-runsupport, and core gold-standard cron registration. - feat(openclaw):
ainl statusas a unified view for budget, cron health, and token usage (legacyweekly_remaining_v1table plusmemory_recordsfallback via_read_weekly_remaining_rollup). - feat(openclaw): self-healing validator and
ainl doctor --ainlfor OpenClaw + AINL integration checks. - fix(ux): improved error messages with actionable fix suggestions.
- docs(openclaw): updated OpenClaw docs with progressive disclosure — quickstart-first, gold-standard depth preserved.
- fix(openclaw): weekly budget display in
ainl statuscorrectly reads from modernmemory_recordsprimary storage (legacy table remains bootstrapped for compatibility).
- fix(packaging): include
intelligenceandintelligence.*in setuptools package discovery and addintelligence/__init__.pyso wheel/PyPI installs includeintelligence.signature_enforcerfor CLI paths that import validator utilities. - fix(cli):
ainl visualizenow works from cleanpip install ainativelangenvironments (noModuleNotFoundError: intelligenceduringscripts.visualize_ainlimport path). - feat(adapters/llm): add an internal LLM adapter layer under
adapters/llm/withAbstractLLMAdapter,LLMResponse/LLMUsage, and concreteOpenRouterAdapterandOllamaAdapterimplementations registered viaadapters/registry.AdapterRegistry; wiring is exercised intests/test_adapters.pyand documented indocs/ADAPTER_DEVELOPER_GUIDE.md. - feat(monitoring): introduce an optional AINL-native monitoring pack under
intelligence/monitor/:collector.MetricsCollector(in-memory metrics with Prometheus exposition),cost_tracker.CostTracker(SQLite-backed LLM usage and budget store),budget_policy.BudgetPolicy(monthly budget thresholds + Telegram alerts),health.HealthStatus(liveness/readiness checks),dashboard.server(Flask dashboard at/,/api/budget,/api/metrics,/health/*with a minimal static HTML UI). The pack is driven by Python-side intelligence programs and adapters, not the AINL language itself. Integration guides live indocs/MONITORING_OPERATIONS.mdanddocs/INTELLIGENCE_PROGRAMS_INTEGRATION.md.
- feat(openclaw tools): add thin OpenClaw tool helpers under
adapters/tools/openclaw/and a simple MCP tools client/registry underadapters/tools/mcp/to demonstrate how external tool surfaces can be wrapped for AINL-hosted agents; these are extension-level helpers, not canonical language features. - release: bump package/runtime surfaces to 1.2.10 (
pyproject.toml,runtime/engine.py,tests/emits/server/runtime/engine.py,CITATION.cff). - docs: update release tracking docs to point at v1.2.10 and call out the PyPI quickstart flow (
pip install→ainl init→ainl check→ainl run→ainl visualize). Cross-link the new monitoring/adapter components fromREADME.md,WHITEPAPERDRAFT.md(§10.5/§13.5),docs/DOCS_INDEX.md, and the intelligence/operations docs so operators can discover the monitoring pack from both OpenClaw and core AINL entry points.
- feat(ptc):
adapters/ptc_runner.py— opt-in PTC Runner adapter (HTTP + mock + subprocess mode viaAINL_PTC_USE_SUBPROCESS/AINL_PTC_RUNNER_CMD); disabled by default;AINL_ENABLE_PTC=trueor--enable-adapter ptc_runner; structured result envelope withok,result,beam_metrics,beam_telemetry; health/status verbs;_strip_private_keyscontext firewall; registered inADAPTER_REGISTRY.json,tooling/adapter_manifest.json,tooling/effect_analysis.py. - feat(ptc):
adapters/llm_query.py— lightweight opt-in LLM query adapter mirroringptc_runnerstructure;run/queryverbs;_strip_private_keysat serialization boundary. - feat(ptc/modules):
modules/common/ptc_run.ainl— thin syntactic-sugar wrapper overptc_runner runwith named frame variables and safe defaults for optionalsignatureandsubagent_budget. - feat(ptc/modules):
modules/common/ptc_parallel.ainl— pcall-style fan-out orchestrator; respectsmax_concurrentcap; optionalqueue.Putside-channel. - feat(ptc/modules):
modules/common/recovery_loop.ainl— bounded retry wrapper forptc_runnercalls based onok: falseenvelope;max_attemptscapped at 10. - feat(ptc/intelligence):
intelligence/signature_enforcer.py— parse# signature: ...metadata, validate output shapes,run_with_signature_retry(max 3 attempts). - feat(ptc/intelligence):
intelligence/trace_export_ptc_jsonl.py— export AINL trajectories in PTC-compatible JSONL;_strip_private_keys;beam_metricsandbeam_telemetryfields. - feat(ptc/intelligence):
intelligence/context_firewall_audit.py— audit.ainlsource and trajectory files for_-prefixed key leakage; runnable viascripts/run_intelligence.py. - feat(ptc/intelligence):
intelligence/ptc_to_langgraph_bridge.py— analyze.ainlsource or trajectory forptc_runnercalls; emit LangGraph-compatiblecreate_ptc_tool_nodePython snippet. - feat(ptc/mcp):
scripts/ainl_mcp_server.py— new tools:ainl_ptc_signature_check,ainl_trace_export,ainl_ptc_run,ainl_ptc_health_check,ainl_ptc_audit(combined signature + firewall report); wired intotooling/mcp_exposure_profiles.json. - feat(ptc/cli):
cli/main.py—ainl run-hybrid-ptcsubcommand: thin wrapper overainl runwith pre-configured defaults (mock mode,ptc_runneradapter, trace path);--no-mockand--trace-jsonloverrides. - feat(ptc/examples):
examples/hybrid_order_processor.ainl— production hybrid example: parallel order batches, signature validation, recovery loop,_context firewall, trace/LangGraph bridge comments. - feat(ptc/examples):
examples/price_monitor.ainl— second production example: parallel price monitoring withptc_parallel+recovery_loop+_context firewall. - feat(ptc/docs):
docs/assets/ptc_flow.mmd— Mermaid flow diagram: AINL graph → PTC modules → PTC Runner/BEAM → enriched envelope → trace export / LangGraph bridge → deployment. - feat(ptc/security):
tooling/security_profiles.json—ptc_sandbox_plusnamed profile withmax_subagent_budget,trace_depth,max_concurrent_calls. - docs(ptc):
docs/adapters/PTC_RUNNER.md— full integration guide (setup, verbs, envelope, signature, context firewall, parallel, recovery, subprocess BEAM mode, LangGraph emission, MCP tools, Mermaid diagram, production examples). - docs(ptc):
WHITEPAPERDRAFT.md§8.4 — PTC-Lisp hybrid integration positioning note. - docs(ptc):
README.md,docs/README.md,docs/INTELLIGENCE_PROGRAMS.md,docs/EXAMPLE_SUPPORT_MATRIX.md,docs/operations/EXTERNAL_ORCHESTRATION_GUIDE.md— cross-references and quick-start callouts.
- docs(whitepaper):
WHITEPAPERDRAFT.md(v1.2.8 positioning, §6.6 graph pitfalls, §10.5 intelligence, §13.5 token caps, §17.1 shipped, appendix OpenClaw file map); supporting updates:docs/WHAT_IS_AINL.md,docs/DOCS_INDEX.md,docs/overview/README.md,docs/POST_RELEASE_ROADMAP.md - packaging:
pyproject.toml/ainl1.2.8;RUNTIME_VERSION1.2.8inruntime/engine.py(mirroredtests/emits/server/runtime/engine.py);CITATION.cffaligned. Reinstall orpip install -U -e .so CLI/MCP/runnerruntime_versionmatches and__pycache__from older trees does not shadow updated modules. - feat(ops): rolling budget hydration for
scripts/run_intelligence.py,tooling/intelligence_budget_hydrate.py, workspace env pintooling/openclaw_workspace_env.example.sh, ops docs (docs/operations/*: profiles, token observability, workspace isolation, WASM/TTL/embedding notes). - docs(openclaw):
docs/operations/OPENCLAW_AINL_GOLD_STANDARD.md— agent-discoverable install/upgrade checklist (profiles, caps, cron, host bootstrap, verification); indexed fromtooling/bot_bootstrap.json,HOST_PACK_OPENCLAW.md,DOCS_INDEX.md. - docs(openclaw):
docs/operations/OPENCLAW_HOST_AINL_1_2_8.md— host briefing for v1.2.8 (repo capabilities vs OpenClaw obligations: probe, rolling hydrate, profiles, bootstrap contract);openclaw_host_ainl_1_2_8intooling/bot_bootstrap.json. - fix(graph): intelligence +
modules/common/generic_memory.ainl— graph-safeX(no raw{…}literals),memory.listoptional prefix vianull, metadatavalid_at/ tags; seedocs/RUNTIME_COMPILER_CONTRACT.md§ graph pitfalls,docs/AINL_SPEC.md.
- feat(cli):
ainl inspect <file.ainl> [--strict] [--json]— dump full canonical IR JSON. - feat(runtime):
ainl run --trace-jsonl PATH|-— structured JSONL execution tape (file or stdout). - feat(diagnostics): structured diagnostics expose
llm_repair_hintfor LLM-native repair loops. - feat(mcp):
ainl_fitness_reportandainl_ir_difftools for selection/mutation loops;ainl_fitness_reportincludesfitness_scorewithfitness_components/weights, plus adapter/operation/frame-key proxy metrics;ainl_ir_diffdetects payload-level node data deltas (not only topology). - feat(schema): machine-readable schema seed
ainl.schema.json. - docs:
docs/EMBEDDING_RESEARCH_LOOPS.md,docs/operations/MCP_RESEARCH_CONTRACT.md,prompts/meta-agent/*.
- fix(graph / intelligence):
intelligence/token_aware_startup_context.langandmodules/common/generic_memory.ainl— avoidX {…}object literals (graph IR →unknown X fn: {); build filters/payloads withcore.parse,obj/put,arr; merge list steps into one label (do not useJ NextLabelas a jump);memory.listusesnullfor omittedrecord_id_prefix;memory_tagsviaX … (arr …);valid_atfromR core iso. Documented indocs/AINL_SPEC.md,docs/RUNTIME_COMPILER_CONTRACT.md,docs/INTELLIGENCE_PROGRAMS.md,docs/adapters/MEMORY_CONTRACT.md§ 3.4. - fix(lang/samples): intelligence programs, demos, and autonomous-ops examples — bind memory-contract frame variables with
Set(memory_namespace,memory_kind,memory_record_id, …), notX, which parses the next token asfn(fixesunknown X fn/ invalidcore.isNullusage in scheduled OpenClaw flows). Documented indocs/AINL_SPEC.md,docs/INTELLIGENCE_PROGRAMS.md,docs/adapters/MEMORY_CONTRACT.md; module example comments inmodules/common/access_aware_memory.ainl. - fix(packaging): include
runtimeandruntime.*in setuptools package discovery so wheel installs includeruntime.compatand avoid wheel-only import regressions. - fix(skill-installer):
skills/ainl/install.shhardened for restricted environments (PEP 668 fallbacks), noeval, and idempotent PATH hint updates across.bashrc/.zshrc/.profile. - feat(cli): add
ainl doctorfor environment diagnostics (Python/import health, PATH checks, MCP config checks,install-mcp --dry-runchecks). - feat(ci): add Linux/macOS install smoke matrix for Python 3.10–3.13 with normal,
--user, and--break-system-packagesinstall paths, pluspip check,ainl --help, andainl-mcp --help. - feat(ci/release): add wheel-integrity CI and dedicated release gates (
twine check, wheel import smoke forruntime.compat/adapters/cli.main,pip check, MCP dry-run installers). - feat(packaging/docs): add tested Python 3.13 MCP constraints (
constraints/py313-mcp.txt) and document no-root install order (venv ->--user->--break-system-packages) across install/release/skill docs. - feat(compiler/ir): add optional
execution_requirementsmetadata (includingavm_policy_fragment, isolation/capability/resource hints) for AVM/general sandbox handoff. - feat(runtime/sandbox): add unified optional sandbox shim (
runtime/sandbox_shim.py) and light wiring in runner, MCP, and CLI runtime path with graceful fallback when no sandbox runtime is detected. - feat(cli): add
ainl generate-sandbox-config <file.ainl> [--target avm|firecracker|gvisor|k8s|general]. - feat(trajectory): add optional trajectory JSONL fields when sandbox shim is connected (
avm_event_hash,sandbox_session_id,sandbox_provider,isolation_hash). - docs(integration): update integration/ops/getting-started docs and whitepaper references for AVM + general sandbox deployment posture.
- feat(compiler):
S hybrid langgraph,S hybrid temporal, or both on one line — opt-in hybrid wrapper targets forminimal_emit/ capability planning; stored asservices.hybrid.emit(de-duped); strict mode rejects unknown targets - feat(tooling): legacy
infer_artifact_capabilities(IRs withoutemit_capabilities) derivesneeds_langgraph/needs_temporalfromservices.hybrid.emit - feat(ci):
benchmark-regressionprefers committedtooling/benchmark_size_ci.json/tooling/benchmark_runtime_ci.jsonon the baseline SHA when present; falls back to full JSON reports; several jobs pinned to Python 3.10;make benchmark-ciprints resolvedPYTHON - fix(emit/langgraph): emitted
AinlHybridStateuses plaindictfields so LangGraph’sget_type_hintspath works on Python 3.10 - test: hybrid e2e (
StateGraph.invoke, TemporalActivityEnvironment),S hybridand emission-planner legacy IR coverage - docs:
BENCHMARK.md(CI baseline rules),docs/AINL_SPEC.md/docs/language/grammar.md(S hybrid),docs/RELEASING.md(benchmark-ci commit step); expanded narrativedocs/RELEASE_NOTES.md§ v1.2.5; cross-links inREADME.md,docs/README.md,CONTRIBUTING.md,WHITEPAPERDRAFT.md,docs/POST_RELEASE_ROADMAP.md,docs/DOCS_INDEX.md,docs/WHAT_IS_AINL.md,WHAT_IS_AINL.md,docs/overview/README.md
- feat(runtime): optional per-step trajectory JSONL (
--log-trajectory/AINL_LOG_TRAJECTORY) —docs/trajectory.md - feat(modules):
modules/common/guard.ainl,session_budget.ainl,reflect.ainl— token/time ceilings, budget accounting, reflect gates;modules/common/README.mdupdated - feat(adapters): local
vector_memory(keyword-scored JSON store) andtool_registry(JSON tool catalog) underadapters/; CLI--enable-adapter vector_memory|tool_registry; documented indocs/reference/ADAPTER_REGISTRY.md,docs/adapters/README.md - feat(emit):
--emit hyperspaceviascripts/validate_ainl.py/ainl-validate—compiler_v2.AICodeCompiler.emit_hyperspace_agentemits a single-file Python agent: base64 JSON IR blob (_IR_B64), repo-root discovery forruntime/+adapters/,AdapterRegistrywithcore,vector_memory,tool_registry,RuntimeEngine(graph-preferred,step_fallback=True),run_ainl,__main__;AINL_LOG_TRAJECTORY→<source-stem>.trajectory.jsonlin cwd; optionalhyperspace_sdkimport withRuntimeWarningwhen absent (scaffold TODO for future SDK bridge) - feat(examples/teaching):
examples/hyperspace_demo.ainl,examples/test_adapters_full.ainl— strict-valid dotted-verb demos;tooling/canonical_curriculum.json/scripts/build_canonical_training_pack.pyoutputs include these lessons - test(emit): hyperspace (and related) emitter coverage in
tests/test_snapshot_emitters.py - docs:
docs/emitters/README.md, rootREADME.md; hub links indocs/README.md,docs/DOCS_INDEX.md;docs/runtime/README.md(trajectory);docs/examples/README.md(phase-2 / hyperspace examples);docs/language/AINL_CORE_AND_MODULES.md§8 (guard/budget/reflect);docs/INTELLIGENCE_PROGRAMS.md(infrastructure_watchdog.lang);docs/RUNTIME_COMPILER_CONTRACT.md(trajectory note);docs/RELEASE_NOTES.md§ v1.2.5 — expanded Hyperspace emitter narrative - ops / examples:
intelligence/infrastructure_watchdog.lang,scripts/morning_briefing.ainl+ wrapper, smallexamples/test_*.ainlharnesses;.gitignoreruntime_runner.log - docs (primer policy):
docs/WHAT_IS_AINL.mdis the canonical “What is AINL?” document (stakeholder narrative + capability snapshot); repository rootWHAT_IS_AINL.mdis a stub pointing to it.README.md,docs/README.md,docs/DOCS_INDEX.md,docs/overview/README.md,WHITEPAPERDRAFT.md(§5.4 includes note, new §6.5 trajectory / Hyperspace) updated accordingly.
- fix(strict):
propagate_inter_label_entry_defs/ merged entry defs intooling/effect_analysis.pyandcompiler_v2._validate_graphs— variables live on all paths into a jumped-to label are recognized at that label (fewer false undefined-at-use errors on branch/cron monitor patterns) - test:
tests/test_inter_label_dataflow.py; Temporalexecute_workflowpath intests/test_hybrid_emit_integration.py(WorkflowEnvironment,Worker,ThreadPoolExecutoractivity executor) - tooling:
tooling/artifact_profiles.jsonstrict-valid refresh (examples/cron/monitor_and_alert.ainl,corpus/example_monitor_alert/program.ainl, …); curriculum order bump + regeneratedtooling/canonical_training_pack.json/tooling/training_packs/*; conformance syrupy snapshots undertests/snapshots/conformance/
Addendum (2026-03-22).
-
fix(apollo-x-bot):
gateway_server.py—_classify_wants_envelopeonly whenmessagesis a non-empty list (avoidsenvelope_missing_messagesonclassify_response=rawwithout messages; legacy tweet+prompt path); clearer bind error on EADDRINUSE; swallow BrokenPipeError / connection resets when the client disconnects early (timeouts). -
fix(cli):
ainl run --http-timeout-shelp text — note LLM / bridge latency; default remains 5 (callers with slow routes must raise it). -
fix(apollo-x-bot):
openclaw-poll.sh/run-with-gateway.sh—--http-timeout-s 120, overridable viaAINL_HTTP_TIMEOUT_S. -
fix(graph):
apollo-x-bot/ainl-x-promoter.ainl—promoter.process_tweetpayload: stringifytweetdirectly for the bridge body; skip branch uses booleantruefor JSONok(strict-safe). -
test:
tests/test_apollo_x_gateway.py— regression for classify raw without messages; expanded gateway coverage as applicable. -
fix(compiler_v2): strict reachability — treat If as a valid label terminator (skip “exactly one J” false positive when If is last); include If when wiring Loop/While fall-through edges to following labels.
-
fix(demo):
demo/infrastructure_watchdog.lang— restart services when down; verify after restart before alerting. -
docs:
docs/reference/ADAPTER_REGISTRY.md§2.4.3 (bridge client timeout);docs/integrations/EXTERNAL_EXECUTOR_BRIDGE.md§7 (timeouts +llm.classifyenvelope rule);docs/OPENCLAW_INTEGRATION.md(Apollo promoter +openclaw-poll.shpointer);apollo-x-bot/OPENCLAW_DEPLOY.md(AINL_HTTP_TIMEOUT_S/--http-timeout-s). -
packaging:
pyproject.toml/ainl1.2.4;RUNTIME_VERSION(runtime/engine.py, mirroredtests/emits/server/runtime/engine.py) 1.2.4; language serverserverInfo.versionand runner service FastAPIapp.versionfollowRUNTIME_VERSION(runner:scripts/runtime_runner_service.py; LSP:langserver.py) -
feat(modules):
modules/common/access_aware_memory.ainl— opt-inLACCESS_READ,LACCESS_WRITE,LACCESS_LIST,LACCESS_LIST_SAFE(graph-safe list touches via While + index); header warnings and usage notes for graph vs ForEach -
fix(runtime): resolve bare label targets against include alias from call stack (
_resolve_label_keyinruntime/engine.py) so nested If / Loop / Call / While reachalias/labelkeys after merge -
docs:
modules/common/README.md; refresh rootREADME.md,WHAT_IS_AINL.md,docs/WHAT_IS_AINL.md,WHITEPAPERDRAFT.md,docs/RELEASE_NOTES.md,docs/POST_RELEASE_ROADMAP.md,docs/RUNTIME_COMPILER_CONTRACT.md,docs/README.md,docs/adapters/README.md,docs/DOCS_INDEX.md,docs/operations/EXTERNAL_ORCHESTRATION_GUIDE.md(sampleruntime_versionin JSON) -
test:
tests/test_demo_enforcer.py(demo compile + access-aware smoke; graph-only bare-label regression) -
fix(programs):
Sis parsed asservice mode path(three slots); patterns likeS core memory cron "0 * * * *"wrongly setpathtocronand drop the schedule. RestoredS core cron "<expr>"(and equivalent) inintelligence/token_aware_startup_context.lang,intelligence/session_continuity_enhanced.lang,intelligence/proactive_session_summarizer.lang,demo/session_continuity.lang, andexamples/autonomous_ops/memory_prune.lang. -
fix(programs):
examples/autonomous_ops/meta_monitor.lang— replace invalidS cron+CrwithS cache cron "*/15 * * * *"(aligned withdemo/meta_monitor.lang). -
tooling:
scripts/validate_s_cron_schedules.pyand console scriptainl-validate-s-cron(pyproject.toml) — fail CI/local runs on malformedS+cronlines;tests/test_s_cron_schedule_lines.pykeeps the rule green. -
docs:
docs/CRON_ORCHESTRATION.md— new §Sline shape (cron schedules) and § Security: queues, notifications, and secrets;docs/RUNTIME_COMPILER_CONTRACT.md,docs/DOCS_INDEX.md; web mirrorainativelangweb/content/docs/RUNTIME_COMPILER_CONTRACT.mdx. -
docs(intelligence):
intelligence/token_aware_startup_context2.lang— explicit legacy header; prefertoken_aware_startup_context.langfor production (budget gate + structured memory + access-aware reads). -
bench: regenerate
BENCHMARK.md,tooling/benchmark_size.json,tooling/benchmark_runtime_results.json, and CI twinstooling/benchmark_size_ci.json/tooling/benchmark_runtime_ci.jsonviamake benchmark/make benchmark-ci; refreshREADME.mdanddocs/benchmarks.mdheadline table (e.g. 19 strict-valid,public_mixedpath counts + viable ratios;make benchmarkuses--mode wide:full_multitarget_core+full_multitarget+minimal_emit). -
interop: optional
[interop]extra inpyproject.toml(langgraph, temporalio, aiohttp);[benchmark]also liststemporaliofor hybrid smoke tests — seedocs/PACKAGING_AND_INTEROP.md.
- bench(docs): major size benchmark documentation refresh (Mar 2026): default tiktoken cl100k_base in
BENCHMARK.mdtables; viable subset vs legacy-inclusive dual reporting; minimal_emit python_api fallback stub and prisma / react_ts compaction called out in transparency notes; JSON schema3.5+; hubdocs/benchmarks.mdhighlights table; README /WHITEPAPERDRAFT.md§12 / cross-links updated. Representative headline:public_mixedminimal_emit ~1.02× on viable rows (46/59); legacy-inclusive minimal ~0.24× shown separately. - docs(ops): add
docs/operations/UNIFIED_MONITORING_GUIDE.md(unified AINL + OpenClaw monitoring); expanddocs/openclaw/BRIDGE_TOKEN_BUDGET_ALERT.md; cross-link hub fromdocs/README.md,docs/DOCS_INDEX.md,docs/operations/README.md,docs/CRON_ORCHESTRATION.md,docs/AINL_CANONICAL_CORE.md,docs/ainl_openclaw_unified_integration.md,docs/adapters/*,docs/BOT_ONBOARDING.md,docs/OPENCLAW_IMPLEMENTATION_PREFLIGHT.md,docs/operations/AUTONOMOUS_OPS_PLAYBOOK.md,docs/operations/AUTONOMOUS_OPS_MONITORS.md,docs/advanced/README.md,docs/adapters/MEMORY_CONTRACT.md; standardize daily memory path~/.openclaw/workspace/memory/YYYY-MM-DD.md; refreshopenclaw/bridge/README.mdmonitoring tables and env reference - feat(modules): add reusable memory helper include modules for production monitor flows:
modules/common/token_cost_memory.ainlfor deterministicworkflownamespace writes/listsmodules/common/ops_memory.ainlfor deterministicopsnamespace writes/lists
- refactor(programs): migrate monitor-heavy
demo/andexamples/autonomous_ops/workflows from repeated inline memory logic to shared include calls while preserving payloads, record kinds, tags, TTLs, and control-flow behavior - feat(programs): normalize deterministic filters across migrated history reads (
updated_after,tags_any,source,limit) and standardize metadata envelopes on writes (source,confidence,tags,valid_at) - docs(ops): refresh autonomous ops documentation to reflect include-helper architecture and current monitor implementation posture
- feat(strict): allowlist
memory.PUT/GET/APPEND/LIST/DELETE/PRUNEintooling/effect_analysis.pyand treatR memory <verb> …steps asmemory.<VERB>for strict adapter checks - test(conformance): add
memory_continuity_runtimesnapshot category andtests/data/conformance/session_budget_memory_trace.ainl; extend tokenizer round-trip withdemo/session_budget_enforcer.langand IR canonicalization for the trace golden - docs(examples): add
examples/timeout_memory_prune_demo.ainl, committeddocs/assets/timeout_memory_prune_flow.png, README Memory & State pointer todemo/session_budget_enforcer.lang, and visualizer PNG example command
- feat(memory): implement Memory Contract v1.1 additive runtime support in
runtime/adapters/memory.py:- optional deterministic metadata envelope fields (
source,confidence,tags,valid_at) - deterministic
memory.listbounded filters (tags_any,tags_all, created/updated windows,source,valid_atwindows,limit,offset) - namespace retention hooks (
default_ttl_by_namespace,prune_strategy_by_namespace) - portable operational counters in adapter responses (
stats.operations,stats.reads,stats.writes,stats.pruned)
- optional deterministic metadata envelope fields (
- feat(capabilities): add capability-advertised memory profile in
tooling/capabilities.json(memory_profile: "v1.1-deterministic-metadata") with schema support intooling/capabilities.schema.json - test(memory): extend
tests/test_memory_adapter.pyfor metadata round-trip, deterministic list filters/pagination, retention hooks, and operational counters - docs(memory): align
docs/adapters/MEMORY_CONTRACT.mdanddocs/reference/CAPABILITY_REGISTRY.mdwith shipped v1.1 additive behavior
- feat(visualizer): add image export for
ainl visualizevia Playwright (--png,--svg,--width,--height, and extension auto-detect for.png/.jpg/.jpeg/.svg) - test(visualizer): add
tests/test_visualizer.pysmoke coverage for PNG/SVG generation - docs(examples): add
examples/timeout_demo.ainland expand README/docs guidance for starter timeout module and visualizer image export usage - fix(readme): remove duplicate badge block and switch release badge to latest tag endpoint
- feat: subgraph includes & modules (compile-time composition, alias prefixing, ENTRY/EXIT contract)
- feat: graph visualizer CLI (
ainl visualize→ Mermaid with clusters, synthetic call edges) - feat: full conformance matrix runner (
make conformance) with snapshot categories for tokenizer, IR, strict validation, runtime parity, and emitter stability - fix: preserve
__literal_fieldsthrough include merge + lowering - docs: updated README/docs hubs for conformance command, CI gate, and generated conformance artifacts
pyproject.toml/ainl: version 1.2.0.RUNTIME_VERSION(runtime/engine.py, mirroredtests/emits/server/runtime/engine.py): 1.2.0 (runner/MCP payloads,/capabilities,ainl run --json).- Language server initialize
serverInfo.versionand runner service OpenAPI app version: 1.2.0.
- Includes (compile-time composition): top-level
include path [as alias]merges submodule labels into the parent IR asalias/LABEL(e.g.retry/ENTRY,retry/EXIT_OK). Strict mode enforces ENTRY / EXIT_* shapes for included graphs. Starter modules:modules/common/retry.ainl,modules/common/timeout.ainl. Tests:tests/test_includes.py. - Graph visualizer CLI:
ainl visualize/ainl-visualize/scripts/visualize_ainl.py— strict compile → Mermaidgraph TDfromir["labels"]; subgraph clusters per include alias; syntheticCall → callee entryedges with a%%comment; flags--no-clusters,--labels-only,-o -. Fixture:examples/bad_include.ainl. - Structured diagnostics: native
Diagnosticrows,--diagnostics-format(auto|plain|rich|json), merge dedup (native-first), optional rich stderr withpip install -e ".[dev]"— used byainl-validateandainl visualize(and the language server path). - Strict literals / dataflow: quote string payloads where strict dataflow expects literals (e.g.
J "ok"); aligned withdocs/RUNTIME_COMPILER_CONTRACT.mdand conformance tests.
- Root
README.md(quick-start write → validate → visualize → run, includes, visualize flags,docs/WHAT_IS_AINL.mdlink),WHAT_IS_AINL.md,docs/WHAT_IS_AINL.md,WHITEPAPERDRAFT.md(v1.2.0, §5.4–5.5),docs/POST_RELEASE_ROADMAP.md,docs/CONFORMANCE.md,SEMANTICS.md,docs/architecture/GRAPH_INTROSPECTION.md,docs/INSTALL.md,docs/DOCS_INDEX.md,docs/overview/README.md,docs/README.md.
scripts/visualize_ainl.py— strict compile → Mermaidgraph TDfromir["labels"]; subgraph clusters byincludealias; syntheticCall →entry edges with%%comment;--no-clusters,--labels-only; structured diagnostics on failure (reusevalidate_ainlformatters).ainl-visualizeconsole script andainl visualizesubcommand (cli/main.py,pyproject.toml).examples/bad_include.ainl— fixture for visualize/strict error demos.
- Root
README.md(Visualize your workflow, mermaid.live walkthrough),.gitignore(hello.mmd). docs/architecture/GRAPH_INTROSPECTION.md§7 (Mermaid), §8 (DOT; former §6), fixed duplicate §5 → §6 record/replay.docs/INSTALL.md,docs/DOCS_INDEX.md,docs/README.md,docs/architecture/README.md,docs/reference/GRAPH_SCHEMA.md.
compiler_v2: After merging native and string-derived diagnostics, deduplicate by(kind, message body)withLine N:stripped; native rows first so spans,label_id, and suggestions win over parsed duplicates.ainl-validate:--diagnostics-format=auto|plain|json|rich(defaultauto).--json-diagnosticsremains an alias forjson.--no-colorforces plain output instead of rich.
README.md,docs/INSTALL.md.
compiler_diagnostics.py—Diagnostic,CompilerContext,CompilationDiagnosticError; native diagnostics merged with legacyerrorsstrings.- Strict-mode native diagnostics in
compiler_v2.pyfor: arity (min_slots), unknown module prefix, duplicateLxx:(strict-only legacy error; non-strict still merges bodies), undeclared endpoint label, undeclared targeted label (control-flow refs). Spans,suggested_fix,related_span, and label close-match hints where applicable. ainl-validate/scripts/validate_ainl.py—--strictwires structured diagnostics by default; stderr shows a numbered report (3-line source context, carets for spans).--json-diagnosticsprints diagnostics JSON only to stdout on failure.rich(optional dev extra) enables styled output; plain ANSI or no-color when rich is missing or--no-color/ non-TTY.- Tests:
tests/test_diagnostics.py(structured round-trip, phase-2 sites, formatter smoke).
README.md,docs/INSTALL.md,docs/architecture/GRAPH_INTROSPECTION.md,docs/CONFORMANCE.md,docs/POST_RELEASE_ROADMAP.md,pyproject.toml(richin[project.optional-dependencies] dev).
agent_reports/README.md— index of OpenClaw field reports (distinct fromCONSULTANT_REPORTS.md/AI_CONSULTANT_REPORT_*.md).docs/INTELLIGENCE_PROGRAMS.md— map ofintelligence/*.lang, host responsibilities, andscripts/run_intelligence.py.scripts/run_intelligence.py— dev runner forcontext/summarizer/consolidation/continuity/all(OpenClaw monitor registry).CONSULTANT_REPORTS.md,docs/DOCS_INDEX.md,docs/AI_AGENT_CONTINUITY.md,AI_AGENT_QUICKSTART_OPENCLAW.md,README.md— cross-links to the above.- Field report:
agent_reports/ainl-king-openclaw-2026-03-19.md(Day 2 — AINL King; merged via PR #2).
-
Compiler: X-step S-expression paren stripping —
X dst (core.add 3 4)and similar paren-form X expressions now parse correctly. The tokenizer does not treat(and)as delimiters, so the leading(was attaching to the function name and the entirecore.*engine branch was unreachable dead code. Fixed in both X-step parser paths incompiler_v2.py. Snapshot updated forexamples/openclaw/daily_digest.langwhich uses(core.div ...)and(core.gt ...). -
Runtime:
Jvariable resolution —J varwas returning the raw token string"var"instead of resolvingvarfrom the execution frame. Fixed with a one-line_resolve()call inruntime/engine.py. This was a silent correctness bug since the original release; every program usingJfor its return value was affected. Snapshots updated.
-
web.search— newWebAdapterinadapters/openclaw_integration.pybacked by OpenRouter/Perplexity. Returns search results for use in intelligence digest and monitoring workflows. RequiresOPENROUTER_API_KEY. -
tiktok.recent— new verb on theTikTokAdapterfor retrieving recent posts/metrics with a configurable limit. -
core.idiv— integer division builtin added toCoreBuiltinAdapterinruntime/adapters/builtins.py. Available as bothR core.idivandX dst (core.idiv a b)in X expressions. -
memoryopsnamespace —opsadded to the valid namespace whitelist in the memory adapter for operational metrics and monitor state storage.
requests>=2.28.0declared under[project.optional-dependencies] openclawinpyproject.toml. TheWebAdapteruses it; previously relied on silently as a transitive dep.
-
docs/INSTALL.md: recommended Python 3.10 layout using.venv-py310andPYTHON_BIN=python3.10bootstrap; agents/CI parity note. -
scripts/bootstrap.sh:PYTHON_BIN/VENV_DIRenv vars + 3.10 minimum check. -
scripts/precommit_docs_contract.sh+.pre-commit-config.yaml: docs contract hook resolves Python via.venv-py310, then.venv, thenpython3(no barepythonon PATH required). -
docs/AINL_SPEC.md:X,Loop,While,ForEachadded to grammar and slot rules tables;Jdescription clarified to say "resolve from frame". -
docs/ainl_runtime_spec.md: X fn list updated (idiv,concat,join,ite/if,core.*prefix form, paren syntax);Jsemantics note added. -
docs/reference/ADAPTER_REGISTRY.md:webadapter added;tiktok.recentandcore.idiv/IDIVdocumented;memoryopsnamespace noted. -
docs/adapters/MEMORY_CONTRACT.md:opsnamespace added to v1 whitelist.
- Official Python minimum raised to 3.10+; metadata, docs, bootstrap, and CI (3.10 + 3.11) aligned.
- Core test profile fully green (403 tests, 0 failures).
- Added
scripts/ainl_mcp_server.py— a thin, stdio-only MCP server exposingainl_validate,ainl_compile,ainl_capabilities,ainl_security_report, andainl_runas MCP tools, plusainl://adapter-manifestandainl://security-profilesas MCP resources. - Safe-default posture: core-only adapters, conservative limits, hardcoded
local_minimal-style policy. - Quickstart and end-to-end example in
docs/operations/EXTERNAL_ORCHESTRATION_GUIDE.mdsection 9.
- Adapter privilege-tier metadata in
tooling/adapter_manifest.json. - Policy validator supports
forbidden_privilege_tiers. - Named security profiles in
tooling/security_profiles.json. - Security/privilege introspection via
tooling/security_report.py. - Sandbox, orchestration, and threat-model docs shipped.
docs/reorganized into intent-based sections (overview, fundamentals, getting_started, architecture, runtime, language, adapters, emitters, examples, case_studies, competitive, operations, advanced, reference) with section READMEs, compatibility stubs, and a root navigation hub.- README: added "Choose Your Path" mode chooser (CLI / runner / MCP) with a single canonical example shown three ways.
- Getting-started guide enriched with integration paths and core-first guidance.
- Release notes finalized with current milestone summary.
- Runner service migrated from deprecated
@app.on_eventto FastAPI lifespan handlers. - Memory tooling migrated from
datetime.utcnow()to timezone-aware UTC helpers. - Repo hygiene: scratch files removed,
.gitignoretightened.
Full details: docs/RELEASE_NOTES.md.
- Added new autonomous ops programs (OpenClaw-created):
memory_prune,meta_monitor,session_continuity,token_budget_tracker, andmonitor_system(reference shape). Demo andexamples/autonomous_ops/copies added; existing monitors (canary_sampler, infrastructure_watchdog, lead_quality_audit, tiktok_sla_monitor, token_cost_tracker) updated. - New docs:
docs/operations/AUTONOMOUS_OPS_MONITORS.md(monitor index and schedules),docs/operations/STANDARDIZED_HEALTH_ENVELOPE.md. OpenClaw implementation notes:openclaw/MEMORY_PRUNE_IMPLEMENTATION.md,openclaw/META_MONITOR_IMPLEMENTATION.md,openclaw/SESSION_CONTINUITY_IMPLEMENTATION.md,openclaw/TOKEN_BUDGET_TRACKER_IMPLEMENTATION.md, plus update docs for existing monitors. - Updated
docs/DOCS_INDEX.md(links to autonomous ops monitors and standardized health envelope),docs/EXAMPLE_SUPPORT_MATRIX.mdandexamples/autonomous_ops/README.md(new programs table),tooling/artifact_profiles.json(new example paths). Config externalization and related OpenClaw notes inopenclaw/CONFIG_EXTERNALIZATION.md,openclaw/CANARY_SAMPLER_UPDATE.md, etc.
- Added an extension-level
memoryadapter backed by SQLite with explicit record identity(namespace, record_kind, record_id)and three core verbs:memory.put(namespace, record_kind, record_id, payload, ttl_seconds?)memory.get(namespace, record_kind, record_id)memory.append(namespace, record_kind, record_id, entry, ttl_seconds?)
- Documented the v1 contract in
docs/adapters/MEMORY_CONTRACT.md, including:- namespace whitelist and recommended record kinds,
- advisory TTL semantics,
- validation expectations and backend schema.
- Marked the adapter as
extension_openclaw/ non-canonical intooling/adapter_manifest.jsonanddocs/reference/ADAPTER_REGISTRY.md.
- Added an extension-only validator/linter for memory envelopes:
tooling/memory_validator.pyscripts/validate_memory_records.py
- Implemented JSON/JSONL export/import tooling on top of the SQLite store:
tooling/memory_bridge.pyscripts/export_memory_records.pyscripts/import_memory_records.py
- These tools:
- treat the
memory_recordstable as source of truth, - export canonical envelopes including
provenanceandflags, - import validated envelopes back into the store while preserving provenance
and flags inside
payload._provenance/payload._flags.
- treat the
- Added a one-way, human-facing markdown export for daily logs:
tooling/memory_markdown_bridge.pyscripts/export_memory_daily_log_markdown.py- maps
daily_log.noterecords tomemory/daily_log/YYYY/YYYY-MM-DD.md.
- Added curated, frontmatter-based markdown import for long-term kinds:
tooling/memory_markdown_import.pyscripts/import_memory_markdown.py- supports
long_term.project_factandlong_term.user_preferenceonly.
- Added a narrow legacy migration helper to bootstrap from existing note habits:
tooling/memory_migrate.pyscripts/migrate_memory_legacy.py- migrates
MEMORY.mdsections tolong_term.project_factandmemory/YYYY-MM-DD.mdfiles todaily_log.note.
- Extended the
memoryadapter with a fourth verb:memory.list(namespace, record_kind?, record_id_prefix?, updated_since?)
- Provides structured enumeration of records without returning payloads:
- filters by namespace (required), optional kind, optional record_id prefix,
and optional
updated_since(ISO timestamp onupdated_at), - returns deterministic, lightweight summaries
(
record_kind,record_id,created_at,updated_at,ttl_seconds).
- filters by namespace (required), optional kind, optional record_id prefix,
and optional
- Documented this as discovery-only, not a general query/search surface, and updated tests and docs to keep the adapter manifest, registry, and contract aligned.
- Added an exact-key lifecycle verb:
memory.delete(namespace, record_kind, record_id)
- Provides explicit deletion for a single record identified by its canonical
key, returning
{ok, deleted}and leaving neighboring records untouched. - Kept this strictly non-bulk and non-query: no predicates, no wildcard/batch deletion, and no TTL/prune semantics in this pass.
- Added an operator-oriented TTL prune helper:
memory.prune(namespace?)
- Removes only records whose
ttl_secondsis set and whosecreated_at + ttl_secondslies strictly in the past, optionally scoped to a single namespace. - Does not provide predicate-based/bulk deletion or broader retention policy logic; it is a small explicit cleanup tool on top of the existing TTL semantics.
- Added
docs/advanced/SAFE_USE_AND_THREAT_MODEL.mdto describe:- what the local coordination substrate assumes (local-first, file-backed, sandboxed roots, external orchestrator),
- what it does not provide (no built-in auth, encryption, policy, or multi-tenant isolation),
- the threat model and trust assumptions for coordination usage,
- and a clear split between supported safe-default use and advanced/unsupported-by-default patterns.
- Updated
README.mdanddocs/DOCS_INDEX.mdto clearly separate:- core / safe-default surfaces (compiler/runtime/IR, canonical examples),
- advanced / operator-only / experimental surfaces (OpenClaw extensions, coordination docs, and examples).
- Added an extension-only coordination schema validator and mailbox linter:
tooling/coordination_validator.pyscripts/validate_coordination_mailbox.py
- The validator checks
AgentTaskRequestandAgentTaskResultenvelopes in JSON/JSONL files against the minimal upstream schema documented indocs/advanced/AGENT_COORDINATION_CONTRACT.mdand reports malformed or drifted envelopes. - This tooling is optional, additive, and non-semantic: it does not change compiler/runtime behavior and is intended as governance and compatibility support for advanced coordination users.
- Tightened framing for advanced coordination/OpenClaw examples:
- added "advanced / operator-only / advisory-only" notes to key examples under
examples/openclaw/, - updated
docs/EXAMPLE_SUPPORT_MATRIX.mdto describe the OpenClaw family as advanced, extension-only, and not a safe default for unsupervised agents.
- added "advanced / operator-only / advisory-only" notes to key examples under
- Marked the
agentadapter as advanced, opt-in indocs/reference/ADAPTER_REGISTRY.mdand reiterated its extension-only, noncanonical status. - Extended
docs/RELEASE_NOTES_DRAFT.mdwith a short "Advanced coordination" section clarifying that:- coordination is experimental/operator-only,
- coordination is local/file-backed and advisory,
- upstream does not claim it is a secure multi-agent or orchestration platform by default.
- Updated
docs/GITHUB_RELEASE_CHECKLIST.mdwith coordination-specific items:- protocol surface tests,
- baseline verification,
- mailbox validator run on baseline artifacts,
- and a check that core vs advanced framing remains intact in
README.mdanddocs/DOCS_INDEX.md.
- Added a human-visible coordination baseline section to
docs/advanced/AGENT_COORDINATION_CONTRACT.md:- records the current baseline id:
coordination-baseline-2026-03-09-token-and-monitor-advisory, - lists the required coordination artifacts (docs, examples, and sample result/snapshot JSON files) that both Cursor-side and OpenClaw-side environments should have on disk before controlled validation.
- records the current baseline id:
- Clarified usage guidance:
- missing or renamed coordination artifacts should be treated as repo-state drift, not as a protocol change,
- protocol-shaping artifacts should not be silently recreated without updating the documented baseline in a follow-up change.
- Added extension/OpenClaw examples for a bounded monitor-status advisory loop
built on top of the existing
agentcoordination substrate:examples/openclaw/monitor_status_advice_request.lang— assembles a small snapshot of monitor IDs, services, statuses, and recentlast_ok/last_errortimestamps, wraps it in anAgentTaskRequest, and enqueues it viaagent.send_task(returning thetask_id).examples/openclaw/monitor_status_advice_read.lang— reads a single advisoryAgentTaskResultfor a known monitor-status task id viaagent.read_result.
- Added
examples/openclaw/monitor_status_example_snapshot.jsonas a small, non-semantic JSON snapshot illustrating the payload shape used in the request example. - Updated
docs/advanced/AGENT_COORDINATION_CONTRACT.mdanddocs/EXAMPLE_SUPPORT_MATRIX.mdto describe and classify the new monitor-status advisory workflow as extension/OpenClaw, noncanonical, local-first, file-backed, sandboxed, and advisory-only.
- Added a minimal local mailbox-style coordination adapter
agentwith a narrow shared protocol surface:agent.send_task(envelope) -> task_id (string)agent.read_result(task_id) -> AgentTaskResult (dict)
- Implemented the adapter as a sandboxed, file-backed extension under
AINL_AGENT_ROOT:- tasks are appended to
tasks/openclaw_agent_tasks.jsonl, - results are read from
results/<task_id>.json, - all paths are checked via a sandbox root helper, and attempts to escape the sandbox or use filesystem root are rejected.
- tasks are appended to
- Enforced that
AgentTaskResultfiles must parse as JSON objects; invalid or non-object JSON now raiseAdapterError. - Locked the shared protocol surface in tests
(
tests/test_agent_protocol_surface.py) so onlysend_taskandread_resultremain part of the coordination API.
- Added
docs/advanced/AGENT_COORDINATION_CONTRACT.mdas the canonical design/spec for:AgentManifestAgentTaskRequestAgentTaskResultand the local mailbox protocol underAINL_AGENT_ROOT.
- Documented the shared protocol boundary (Cursor ↔ OpenClaw) and explicitly
excluded additional verbs such as
read_taskandlist_agentsfrom the shared surface. - Added small extension/OpenClaw examples:
examples/openclaw/agent_send_task.lang— build and enqueue a minimalAgentTaskRequestand return thetask_id.examples/openclaw/agent_read_result.lang— read a singleAgentTaskResultidentified bytask_id.examples/openclaw/token_cost_advice_request.lang— enqueue a bounded token-cost advisory request for a Cursor-side agent.examples/openclaw/token_cost_advice_read.lang— read the advisoryAgentTaskResultfor a known token-cost task id.
- Updated
docs/reference/ADAPTER_REGISTRY.mdanddocs/EXAMPLE_SUPPORT_MATRIX.mdto classify theagentadapter and the new examples as extension/OpenClaw, noncanonical surfaces.
- Hardened the
agentadapter sandbox:- rejected
AINL_AGENT_ROOT="/"(filesystem root) as an invalid sandbox, - rejected
task_idvalues containing path separators or..inagent.read_result, - ensured all file reads/writes go through a safe-path helper.
- rejected
- Added tests in
tests/test_agent_send_task.pyto assert:- sandbox escapes are rejected,
- filesystem-root sandboxing is rejected,
- invalid and non-object JSON results are rejected.
- Extended the OpenClaw
extrasadapter with a newmetricsverb that reads precomputed JSON summaries (e.g. fromscripts/summarize_runs.py) and exposes a small, stable metrics envelope:run_count,ok_count,error_countok_ratio(whenrun_count > 0)runtime_versionsresult_kinds,trace_op_counts,label_countstimestamps_present
- Implemented
extras.metricsas a sandboxed, read-only extension/OpenClaw helper:- summaries are resolved relative to
AINL_SUMMARY_ROOT(default:/tmp/ainl_summaries), - attempts to escape the sandbox root raise
AdapterError.
- summaries are resolved relative to
- Kept
extras.metricsclearly non-canonical and outside the strict core: it is classified asextension_openclaw,strict_contract: false, and documented indocs/reference/ADAPTER_REGISTRY.md. - Added
tests/test_extras_metrics.pyto lock in the envelope shape and error behavior for missing files, invalid JSON, and non-object summaries.
- Added
scripts/render_graph.pyas a tiny helper to render compiled IR/graphs to DOT for visualization:- supports compiling
.ainl/.langfiles withAICodeCompileror reading existing IR JSON, - groups IR nodes per label in DOT subgraphs,
- labels nodes by op and adapter prefix (e.g.
R (http)), and edges by control-flow port (next,then,else, etc.).
- supports compiling
- Documented the helper and example usage in
docs/architecture/GRAPH_INTROSPECTION.mdwithout changing any compiler or runtime semantics. - Added
tests/test_render_graph.pyto assert basic DOT structure and labeling.
- Expanded
examples/autonomous_ops/with additional extension/OpenClaw monitors:infrastructure_watchdog.langtiktok_sla_monitor.langlead_quality_audit.langtoken_cost_tracker.langcanary_sampler.lang
- Updated
examples/autonomous_ops/README.md,docs/EXAMPLE_SUPPORT_MATRIX.md, andtooling/artifact_profiles.jsonto classify these as non-strict, extension/OpenClaw operational examples (not canonical core).
- Added
scripts/summarize_runs.pyas a small meta-monitoring helper that aggregates one or moreRuntimeEngine.run(..., trace=True)JSON payloads into a concise JSON summary:run_count/ok_count/error_countruntime_versionsresult_kinds(Python type names ofresult)trace_op_counts(per-op counts from traces)label_counts(per-label trace event counts)timestamps_present(currentlyfalse, since payloads do not include wall-clock timestamps)
- Kept the tool strictly read-only over existing payloads; it does not change any language, compiler, or runtime semantics.
- Added
tests/test_summarize_runs.pyto lock in the summary schema and basic aggregation behavior for single/multiple runs and list-of-payloads JSON input. - Extended
docs/architecture/COMPILE_ONCE_RUN_MANY.md,README.md, anddocs/DOCS_INDEX.mdwith small notes on how to use the new run-summary helper.
- Added
docs/operations/AUTONOMOUS_OPS_PLAYBOOK.mdas the central, truthful playbook for autonomous-agent use of AINL (compile-once/run-many, cooldown patterns, remediation flows, and current meta-monitoring limits). - Added
examples/autonomous_ops/with a small extension/OpenClaw autonomous-ops pack:status_snapshot_to_queue.langbackup_freshness_to_queue.langpipeline_readiness_snapshot.langAll are explicitly classified asextension_openclaw, non-canonical, non-strict-only snapshot emitters.
- Updated
examples/README.md,tooling/artifact_profiles.json,tooling/support_matrix.json, anddocs/EXAMPLE_SUPPORT_MATRIX.mdto classify the autonomous-ops pack as compatible OpenClaw extension examples.
- Added
docs/architecture/GRAPH_INTROSPECTION.mdto document IR/graph emission, graph API helpers, normalization, and diffs. - Added
scripts/inspect_ainl.pyas a tiny program-summary helper that printsgraph_semantic_checksum, label/node counts, adapters, endpoints, and diagnostics without requiring users to read full IR JSON. - Updated
README.mdanddocs/DOCS_INDEX.mdto link to the new graph introspection and inspect helper surfaces.
- Added
docs/architecture/COMPILE_ONCE_RUN_MANY.mdwith a minimal, reproducible recipe to:- compile a program once and inspect IR/graph + checksum,
- run with live adapters while recording calls,
- replay deterministically from recorded adapter traces.
- Updated
README.mdanddocs/DOCS_INDEX.mdto expose the proof pack as the primary evidence surface for compile-once/run-many and deterministic replay.
- Extended
tooling/adapter_manifest.jsonwithresult_envelopemetadata for:http(success envelope:ok,status_code,error,body,headers,url)queue(enqueue envelope:ok,message_id,queue_name,error)svc(extension/OpenClaw health envelope:ok,status,latency_ms,error)
- Updated
docs/reference/ADAPTER_REGISTRY.mdto document the same envelopes and clearly marksvcas extension/OpenClaw-only (non-canonical). - Added
tests/test_adapter_result_envelopes.pyto keep the manifest and docs aligned on result-envelope field sets.
- Normalized the runtime HTTP adapter (
SimpleHttpAdapter) to return an additive success envelope on 2xx responses while preserving legacy fields:- keep
status,body, andheadersbehavior unchanged, - add
ok,status_code,error=None, andurlfields on success.
- keep
- Left non-2xx and transport failures unchanged: they still surface as
AdapterError/Errand do not return a failure envelope in this pass. - Updated
tests/test_http_adapter_contracts.pyto assert the new envelope fields alongside the legacystatus/bodybehavior. - Extended
docs/operations/AUTONOMOUS_OPS_PLAYBOOK.mdwith a small, truthful snippet showing how to use the HTTP success envelope for monitoring-oriented flows.
- Updated
docs/EXAMPLE_SUPPORT_MATRIX.mdto tag canonical examples with ops-oriented roles (branching, resilience, webhook remediation, cron/scraper). - Kept all compiler and core control-flow semantics unchanged; this release is a packaging, documentation, and adapter-behavior-hardening pass for autonomous-agent use.
- Added
tooling/support_matrix.jsonas the machine-readable support-level source for:- canonical vs compatible syntax intent
- canonical vs compatible example families
- current emitter support posture
- Added
docs/AINL_CANONICAL_CORE.mdto define the recommended public AINL lane separately from the full accepted compatibility surface. - Added
docs/EXAMPLE_SUPPORT_MATRIX.mdto classify canonical and compatible repository examples for onboarding, training, and migration safety.
- Updated
README.mdto expose:- the canonical core doc
- the example support matrix
- the machine-readable support matrix
- Updated
docs/DOCS_INDEX.mdwith canonical-lane entry points. - Updated
examples/README.mdto reference the canonical-core and example support docs alongside the existing artifact profile contract.
- Added initial snapshot fixtures under
tests/fixtures/snapshots/for:- canonical and selected compatibility compile outputs
- selected emitter outputs
- selected runtime path envelopes
- Added snapshot tests:
tests/test_snapshot_compile_outputs.pytests/test_snapshot_emitters.pytests/test_snapshot_runtime_paths.py
- Locked graph semantic checksums for current canonical examples plus one OpenClaw compatibility example and one golden compatibility example to make future compiler extraction/refactoring parity-visible.
- Added compiler-side canonical guidance warnings without changing compile success behavior.
- Current warning-only lint coverage includes:
- inline executable content on label declaration lines
- split-token
Rrequest form instead of dottedadapter.VERB Callwithout explicit->out- lowercase dotted adapter verbs in non-canonical request style
- accepted-but-noncanonical compatibility ops such as
X,Loop, and cache/queue policy helpers
- Added
scripts/validate_ainl.py --lint-canonicalto print warning diagnostics without failing validation. - Added
tests/test_canonical_warning_lint.pyto lock the first guidance set. - Added
scripts/refresh_snapshot_fixtures.pyto intentionally regenerate the compile/emitter/runtime snapshot baselines from current compiler/runtime behavior.
- Hardened public project-origin attribution across repository metadata and docs so downstream mirrors, archives, forks, and machine-indexed copies retain clear initiator evidence.
- Recorded the human initiator explicitly as Steven Hooley with public references:
- Updated attribution-bearing surfaces:
README.mddocs/PROJECT_ORIGIN_AND_ATTRIBUTION.mddocs/DOCS_INDEX.mddocs/PROVENANCE_AND_RELEASE_EVIDENCE.mddocs/GITHUB_RELEASE_CHECKLIST.mdCITATION.cffpyproject.tomlNOTICEtooling/project_provenance.json
- Added emitted-artifact provenance hardening in
compiler_v2.pyso generated server, OpenAPI, frontend, SQL, env, deployment, and runbook outputs carry explicit project-origin references.
- Refined the top-level README to present AINL more clearly as a graph-first AI-native language/toolchain and intermediate programming system.
- Added a more public-facing breakdown of:
- what AINL is,
- what is best supported today,
- where users should still exercise caution.
- Updated
docs/AUDIENCE_GUIDE.mdwith a path for first-time public evaluators. - Added
docs/NO_BREAK_MIGRATION_PLAN.mdas the operator-grade milestone tracker for compatibility-preserving canonical convergence. - Linked the no-break migration plan from:
README.mddocs/DOCS_INDEX.mddocs/POST_RELEASE_ROADMAP.md
- Finalized canonical runtime execution ownership in
runtime/engine.py(RuntimeEngine). - Replaced independent runtime logic in
runtime.pywith compatibility re-exports only. - Added compatibility shim
runtime/compat.py:- preserves historical
ExecutionEngineAPI - bridges legacy adapters into canonical runtime adapter interfaces.
- preserves historical
- Updated
runtime/__init__.pyexports to make canonical + compatibility surfaces explicit.
- Added compiler-owned helpers in
compiler_v2.pyand switched runtime to consume them:runtime_normalize_label_id()runtime_normalize_node_id()runtime_canonicalize_r_step()
- Reduced runtime duplication for label/node normalization and R-step shape interpretation.
- Hardened step/graph parity around:
Callout-binding and_call_resultcompatibility behaviorErr/Retryexplicit@nXtargetingLoop/Whiledeterministic behavior and limits- capability ops (
CacheGet,CacheSet,QueuePut,Tx,Enf)
- Broadened retry applicability and aligned strict graph-port validation so retry/error ports are accepted on executable source ops (not only
R), matching runtime behavior.
- Fixed static-analysis gap for
Call ->out ... Retry @nX ... J outstrict paths. - Improved compiler read/write analysis (
_analyze_step_rw) to reflect runtime semantics:- explicit
Callwrites - literal-aware read filtering in key ops.
- explicit
- Added strict quoted-literal policy enforcement via compile/dataflow behavior:
- in strict mode, bare identifier-like tokens in read positions are treated as variable references
- string literals must be quoted.
- Added explicit strict error guidance to quote literals when undefined-var failures indicate likely literal intent.
- Added/expanded runtime/compiler contract tests:
tests/test_runtime_compiler_conformance.py- updates in
tests/test_runtime_basic.py - updates in
tests/test_runtime_graph_only.py - updates in
tests/test_runtime_parity.py - fixture additions in
tests/conformance_runtime/fixtures/retry_at_node.json
- Added strict matrix coverage for quoted-vs-bare behavior in:
Set.refFilt.valueCacheGet.keyCacheGet.fallbackCacheSet.valueQueuePut.value.
- Added runtime/compiler contract document:
docs/RUNTIME_COMPILER_CONTRACT.md. - Updated cross-links and status docs to reflect canonical runtime ownership and strict literal policy:
README.mddocs/DOCS_INDEX.mddocs/architecture/ARCHITECTURE_OVERVIEW.mddocs/CONFORMANCE.mddocs/language/grammar.mddocs/RELEASE_READINESS.mddocs/AI_AGENT_CONTINUITY.mddocs/CONTRIBUTING_AI_AGENTS.md
- Added long-term docs governance contract:
docs/DOCS_MAINTENANCE.md. - Expanded schema/profile cross-linking for small and large agents:
docs/reference/IR_SCHEMA.mddocs/reference/GRAPH_SCHEMA.mddocs/reference/AINL_V0_9_PROFILE.mddocs/PATTERNS.mddocs/reference/TOOL_API.mddocs/INSTALL.mddocs/language/AINL_CORE_AND_MODULES.mddocs/language/AINL_EXTENSIONS.md
- Added docs automation and governance guardrails:
scripts/check_docs_contracts.py(stale-phrase, link-style, required-link, semantics-doc-coupling checks)ainl-check-docsCLI entrypoint.venv/bin/python scripts/run_test_profiles.py --profile docs.pre-commit-config.yamllocal hook (ainl-docs-contract) for pre-push/pre-commit parity with CI- CI job
.github/workflows/ci.yml->docs-contract - PR checklist updates in
.github/pull_request_template.md
- Moved remaining decoding transition ownership to compiler helpers in
compiler_v2.py:grammar_scan_lexical_prefix_stategrammar_next_slot_classesgrammar_prefix_line_okgrammar_apply_candidate_to_prefixgrammar_active_label_scopegrammar_prefix_completable
- Kept
compiler_grammar.pyas formal-only orchestration (state + admissibility). - Isolated non-authoritative sampling into
grammar_priors.py. - Kept compatibility composition in
grammar_constraint.py.
- Removed formal matcher fallback to prior samples; formal class matching is compiler-owned only.
- Reworked priors to consume formal state/classes from callers (no reach-back imports into formal core).
- Added typed protocol contracts for prior-state input to reduce silent drift risk.
- Added compiler-owned constants for decoder control classes (
NEWLINE,QUOTE_CLOSE, etc.).
- Added corpus-driven transition tests for
prefix + candidate -> next prefixinvariants. - Added corpus-wide class/sample/mask round-trip checks ensuring surviving candidates keep prefixes completable.
- Added structural-vs-strict boundary tests to preserve distinction between prefix plausibility and strict compile validity.
- Added runtime/compiler conformance tests to validate execution against compiler-emitted step schema for:
Callout-bindingIf,Err,Retry,CacheGet,CacheSet,QueuePut,Tx,Enf
- Added/updated ownership contract references across:
README.mddocs/DOCS_INDEX.mddocs/architecture/ARCHITECTURE_OVERVIEW.mddocs/RUNTIME_COMPILER_CONTRACT.mddocs/RELEASE_READINESS.mddocs/CONTRIBUTING_AI_AGENTS.mddocs/AI_AGENT_CONTINUITY.md
- Corrected prior timeline wording that implied AINL-origin work began in early 2025.
- Updated project chronology to reflect:
- 2024 foundational AI research and cross-platform experimentation by the human founder.
- Partial loss of early artifacts, followed by explicit rebuild/retest/revalidation.
- 2025-2026 formalization, implementation expansion, and release hardening of AINL.
- Standardized this corrected timeline anchor across project-facing docs:
README.mdCONTRIBUTING.mddocs/AUDIENCE_GUIDE.mddocs/architecture/ARCHITECTURE_OVERVIEW.mddocs/RELEASE_READINESS.mddocs/CONFORMANCE.mddocs/AINL_SPEC.mddocs/PROJECT_ORIGIN_AND_ATTRIBUTION.mdCITATION.cff
Note: historical start-date wording in this entry is superseded and corrected by
1.0.4-documentation-timeline-correction.
- Documented an explicit historical timeline confirming that AINL research and project initiation began in early 2025.
- Added phase framing to reduce ambiguity about when work occurred:
- Early 2025: concept definition, AI-native language research, and naming/design exploration.
- Mid 2025: grammar/spec experimentation, compiler direction setting, and first IR-shape validation loops.
- Late 2025: implementation expansion across compiler/runtime paths, emitter surface growth, and conformance-first test structuring.
- Early 2026: runtime/platform hardening, adapter contract coverage, alignment/eval gate maturity, and publication/operations documentation.
- Added explicit note that phases overlap by design and were developed iteratively in parallel tracks (research, development, and implementation were not strictly linear).
- Updated cross-reference documentation (
README.md,docs/PROJECT_ORIGIN_AND_ATTRIBUTION.md,docs/DOCS_INDEX.md) so timeline context is discoverable from both onboarding and release-history entry points.
- Added hard trend quality gates with threshold/regression checks and non-zero failure mode in
scripts/analyze_eval_trends.py. - Added machine-readable run health output
corpus/curated/alignment_run_health.jsoninscripts/run_alignment_cycle.sh. - Added prompt-length bucketing support across eval/sweep/cycle for shape-stability and better diagnostics.
- Added optional quantized eval/infer lane (
--quantization-mode none|dynamic-int8) with safe fallback behavior. - Added bounded host-side canonicalization controls:
--canonicalize-chunk-lines--canonicalize-max-lines
- Added per-length-bucket diagnostics in model eval output:
- rates, timing totals, failure families, and per-bucket constraint health.
- Extended trend output with bucket-level summary pointers:
- worst strict bucket
- slowest bucket
- quantization metadata
- Added
docs/DOCS_INDEX.mdas a top-level orientation map. - Added
docs/AI_AGENT_CONTINUITY.mdfor handoff and persistence protocol. - Added
docs/TRAINING_ALIGNMENT_RUNBOOK.mdfor full train/sweep/gate operations. - Added publication-layer docs:
docs/architecture/ARCHITECTURE_OVERVIEW.mddocs/CONTRIBUTING_AI_AGENTS.mddocs/reference/GLOSSARY.mddocs/PROJECT_ORIGIN_AND_ATTRIBUTION.md
- Added OpenClaw integration guide:
docs/adapters/OPENCLAW_ADAPTERS.md - Added consultant report template and index:
AI_CONSULTANT_REPORT_TEMPLATE.mdCONSULTANT_REPORTS.mdAI_CONSULTANT_REPORT_APOLLO.md(Apollo's OpenClaw integration analysis)
- Added OpenClaw agent quickstart:
AI_AGENT_QUICKSTART_OPENCLAW.md - Updated
docs/FINETUNE_GUIDE.mdto link and use the new runbook. - Added publication/trust/community artifacts:
docs/AUDIENCE_GUIDE.mddocs/GITHUB_RELEASE_CHECKLIST.mdCODE_OF_CONDUCT.mdSECURITY.mdCITATION.cff.github/ISSUE_TEMPLATE/bug_report.yml.github/ISSUE_TEMPLATE/feature_request.yml.github/pull_request_template.md
- Added Option C legal/package baseline files:
LICENSE(Apache-2.0)LICENSE.docsCOMMERCIAL.mdTRADEMARKS.mdMODEL_LICENSE.mdNOTICE
- Updated
README.md,CONTRIBUTING.md,docs/DOCS_INDEX.md, andCITATION.cffto reflect open-core licensing structure and DCO expectations.
- Added execution mode policy controls:
graph-preferred,steps-only, andgraph-only. - Added unknown-op policy controls:
skipanderror, with explicit behavior in both step and graph execution. - Added IR/version compatibility guard: runtime validates
ir_versionmajor compatibility. - Added runtime metadata and ergonomics:
RuntimeEngine.run(...)convenience wrapperruntime_versionin run payloadstrace_sinkcallback for streaming trace eventslinenoincluded in trace events
- Added production guardrails:
max_stepsmax_depthmax_adapter_callsmax_time_msmax_frame_bytesmax_loop_iters(applies across loop paths)
- Hardened frame semantics and variable validation:
- explicit failures for missing destination variables in
Set,Filt,Sort, andX.
- explicit failures for missing destination variables in
- Refactored runtime internals to reduce semantic drift:
- shared step execution helpers (
_exec_stepand common op helpers) - shared graph error-routing helper for
erredge + active handler fallback + recursion guard.
- shared step execution helpers (
- Improved graph traversal performance with indexed edge lookups for common
(from, port, to_kind)access.
- Extended
ainl runwith:- execution mode and unknown-op policy flags
- guardrail limit flags
--trace-outto write trace JSON--record-adaptersand--replay-adaptersfor deterministic adapter replay workflows.
- Added pretty runtime error formatting with source snippet + caret output in non-JSON mode.
- Added
ainl goldencommand for fixture-driven verification usingexamples/*.ainl+*.expected.json. - Enhanced
ainl checkoutput withir_versionand compiler warnings. - Added direct adapter bootstrapping flags to
ainl runforhttp,sqlite,fs,tools, andext.
- Added
SimpleHttpAdapter(runtime/adapters/http.py) with:- method allowlist
- timeout handling
- host allowlist
- JSON/text request-response handling
- response-size guard
- consistent
AdapterErrormapping for transport/status/validation failures.
- Added replay/recording adapter registries in runtime package:
RecordingAdapterRegistryReplayAdapterRegistry
- Added
SimpleSqliteAdapter(runtime/adapters/sqlite.py) with query/execute contract, allow-write policy, and table allowlist support. - Added
SandboxedFileSystemAdapter(runtime/adapters/fs.py) with sandbox-root confinement, extension policy, and size caps. - Added
ToolBridgeAdapter(runtime/adapters/tools.py) for tool-call bridging with tool allowlist and error mapping. - Added
HttpAdaptersupport in adapter base and registry accessor (get_http()). - Added registry accessors for
sqlite,fs, andtools.
- Added property/fuzz suites (Hypothesis):
- step-vs-graph equivalence
- randomized IR safety checks.
- Added runtime guardrail tests (
max_*limits). - Added HTTP adapter contract tests (validation, timeout, error mapping, request/response shape).
- Added deterministic replay test (live run vs replay output/log parity).
- Added runtime API/compat tests:
ir_version/runtime_policypresence- unsupported IR rejection
- unknown-op policy enforcement
- trace sink and wrapper behavior
- CLI golden pass.
- Added runtime conformance fixture harness with trace-signature expectations.
- Updated conformance assertions for endpoint layout compatibility.
- Added/updated:
SEMANTICS.md(frozen runtime semantics)docs/RELEASE_READINESS.md(capability-to-test/file handoff map)docs/INSTALL.md(runtime adapter CLI examples, record/replay usage)- README runtime/replay/golden usage notes.
- Added deployable runtime runner service:
scripts/runtime_runner_service.py- endpoints:
/run,/enqueue,/result/{id},/health,/ready,/metrics - compile cache + async job worker + structured logs + trace IDs
- Added deployment artifacts:
services/runtime_runner/Dockerfileservices/runtime_runner/docker-compose.yml
- Added service test coverage:
tests/test_runner_service.py
- Consolidated matrix result after this release set:
- 68 passed / 0 failed
- Property + runtime + adapter contract + replay + compat + conformance suites all green.