Changelog
Release notes, milestones, and updates to the AI Native Lang project.
AINL 1.8.0
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- feat(mcp · authoring): deterministic wizard in
tooling/ainl_get_started.py with wizard_state_json continuity; new MCP tool ainl_step_examples; resource ainl://strict-valid-families backed by corpus/strict_valid_family_index.json (tooling/corpus_mining.py); ainl_validate · ainl_compile attach contract_validation_status and contract_alignment (mismatched_calls vs ADAPTER_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) on SimpleHttpAdapter — structured 402 payment_required envelope + http_payment frame merges; settlement metadata on 200 when enabled; helpers in runtime/adapters/http_machine_payments.py. CLI --http-payment-profile, --http-max-payment-rounds; runner + MCP adapters.http keys; AINL_HTTP_PAYMENT_PROFILE · AINL_HTTP_MAX_PAYMENT_ROUNDS for OpenClaw monitor registry. Tests: tests/test_http_machine_payments.py, extended tests/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 from AGENTS.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 from AGENTS.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-families on design_impact_first, inspect_only, safe_workflow, full; validate_only includes ainl_step_examples without MCP resources.
- test: refresh
test_patch_a_valid_artifacts_fingerprint_lock golden hashes for opcode S core web fixtures (labels_sha256, emit_ir_json_sha256) after compiler IR shape drift — restores parser-compat · core-pr CI (open Dependabot PRs were failing the same gate).
- test · tooling: drop duplicate
a2a.GET · a2a.TASK_GET entries from ADAPTER_EFFECT (manifest verbs are discover, send, get_task only); align safe_workflow · full MCP exposure tool/resource lists with ALL_TOOL_NAMES · ALL_RESOURCE_URIS (includes ainl_step_examples); register 16 new examples/** paths in tooling/artifact_profiles.json (non-strict-only · legacy-compat so canonical curriculum stays unchanged); test_memory_search_missing_adapter_raises_descriptive uses host_adapter_denylist so auto AINLGraphMemoryBridge registration does not mask the missing-adapter path.
AINL 1.7.1
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- feat(adapter · a2a): opt-in
runtime/adapters/a2a.py — wire profile 1.0: GET …/.well-known/agent.json, JSON-RPC tasks/send · tasks/get; host allowlist (allow_hosts, empty list denies all), allow_insecure_local, optional strict_ssrf (DNS + block private/loopback/link-local unless local allowed), follow_redirects default 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 — see tooling/mcp_exposure_profiles.json. Effect analysis: strict a2a.* in tooling/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.
Known limitations (triage; full detail in A2A_ADAPTER)
- 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.
AINL 1.7.0
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
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.json to 1.7.0 (mirrored tests/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 on ainl run when 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 the v1.6.0 tag; included here for a complete post-tag audit trail).
- fix(openclaw) (
6a3b35b): intelligence/token_aware_startup_context.ainl — correct include paths and fs read wiring for bridge cron graphs.
- feat(ainl_graph_memory) (
f2e6372): read Rust AgentGraphSnapshot via AINL_GRAPH_MEMORY_ARMARAOS_EXPORT (and related export env) for Python-side import.
- chore(demo) (
c0a87c4): point demo/test_openspace_mcp.ainl at HTTP MCP execute_task (demo hygiene).
- docs(ainl_graph_memory) (
c03d897): document post-evolution ARMARAOS graph export refresh semantics.
- fix(armaraos) (
a2a2c78): accept Rust graph snapshot schema_version: "1" in the Python bridge (forward-compat with emitted packs).
- feat(armaraos-emit) (
0bb96b8): emit schema_version = "1" on HAND.toml [hand], shallow-copied IR JSON, and security.json (openfang-hands alignment).
- fix(bridge) (
5a88026): align ainl_graph_memory ArmaraOS export discovery with per-agent {agent}_graph_export.json · agent directory layout.
- feat(ainl_graph_memory) (
1e86f14): pre-seed non-persona graph nodes from .ainlbundle on boot() (bundle round-trip toward JSON graph store).
- docs(prior-art) (
04dbbe2): expand graph-memory timeline + implementation claims in PRIOR_ART.md.
- feat(armaraos) (
1300979): inbox sync for graph-memory mutations toward ainl_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 + expose AdapterRegistry.get(name) publicly; RuntimeEngine graph-patch paths resolve ainl_graph_memory via adapters.get(...) (no private _adapters access).
- 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 wrapper include · fs · If notes for bridge cron graphs + graph-as-memory blog · PRIOR_ART · adapter frontmatter cross-links.
- feat(gap-k) (
3af546c): CognitiveVitals round-trip on Python MemoryNode (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 — canonical R openclaw_memory append_today adapter form (wrapper hygiene).
Site + docs: graph-as-memory narrative
Published When Your AI Agent Actually Remembers: Introducing AINL’s Graph-as-Memory Architecture on the blog.
Cross-links and prior-art updates in the AI Native Lang and ArmaraOS repositories: PRIOR_ART.md, docs/adapters/AINL_GRAPH_MEMORY.md, docs/README.md, docs/adapters/README.md, armaraos/docs/graph-memory.md, crates/ainl-memory/README.md. Running npm run sync-content (with AINL_REPO_ROOT pointing at the AINL repo) refreshes synced docs under /docs, including AINL_GRAPH_MEMORY.
AINL 1.5.1
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- release: bump
pyproject.toml · RUNTIME_VERSION · CITATION.cff · tooling/bot_bootstrap.json to 1.5.1 (mirrored tests/emits/server/runtime/engine.py).
- feat(runtime): IR ops
MemoryRecall and MemorySearch dispatch the ainl_graph_memory adapter from _exec_step and sync _run_label_graph; fallback adapter inference includes legacy steps and label graph nodes (_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 and on_delegation hook in armaraos/bridge/runner.py, optional armaraos/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.py importlib shim.
- docs: new
docs/adapters/AINL_GRAPH_MEMORY.md; cross-links from docs/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_memory in tooling/adapter_manifest.json and ADAPTER_EFFECT (tooling/effect_analysis.py) with graph-node effect tiers; extend docs/reference/ADAPTER_REGISTRY.md, ADAPTER_REGISTRY.json, docs/GITHUB_RELEASE_CHECKLIST.md, docs/DOCS_MAINTENANCE.md, and docs/CONFORMANCE.md (strict-literals matrix callout).
AINL 1.5.2
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- release: bump
pyproject.toml · RUNTIME_VERSION · CITATION.cff · tooling/bot_bootstrap.json to 1.5.2 (mirrored tests/emits/server/runtime/engine.py).
- feat(memory · graph IR): optional
memory_type on per-label R nodes for graph-memory · persona steps; memory.pattern_recall on the graph bridge + __last_pattern__ for memory.merge; per-label emit_edges (port: "data" · "emit") alongside required_emit_targets; tooling/graph_api helpers emit_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_MODULES as applicable); persona.load with runtime frame injection (__persona__, persona_instruction); AINLBundle · AINLBundleBuilder in runtime/ainl_bundle.py for single .ainlbundle workflow + memory + persona + tools JSON round-trip.
- feat(mcp): malformed workspace
ainl_mcp_limits.json → successful ainl_run may include warnings; invalid non-empty workspace cache.json during MCP auto-registration → adapter_config_error with details.
- feat(emit/armaraos):
security.json includes capability_declarations.adapters; HAND.toml [hand] includes ainl_ir_version.
- fix(runtime): enforce
max_adapter_calls including 0 (no longer folded to “unset”); aligns with MCP/workspace limits and tests.
- fix(profiles):
local_minimal max_adapter_calls raised from 0 to 500 in tooling/security_profiles.json so 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 — see docs/RELEASE_NOTES.md.
- test(conftest):
offline_llm_provider_config pytest fixture (deterministic offline LLM provider block for suites that opt in via pytestmark).
- 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).
AINL 1.6.0
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- release: bump
pyproject.toml · RUNTIME_VERSION · CITATION.cff · tooling/bot_bootstrap.json to 1.6.0 (mirrored tests/emits/server/runtime/engine.py).
- feat(runtime · graph memory):
R memory.patch installs procedural label bodies from ainl_graph_memory via adapters.call("ainl_graph_memory", "graph_patch", [memory_node_id, label_name], …); _reinstall_patches on engine boot; overwrite guard for compiled labels (OverwriteGuardError → AinlRuntimeError); patch metadata (__patch_node_id__, __patch_version__, __fitness__) + finalize_patch declared reads; fitness EMA on label exit including early J returns; sync/async memory dispatch includes patch.
- feat(compiler): strict-mode
memory.patch literal guard (StrictModeError · strict_literals on AICodeCompiler); patch dataflow validation uses per-step _analyze_step_rw (aligns with compiler read analysis for string Set refs).
- feat(tooling):
ainl_graph_memory.MEMORY_PATCH in ADAPTER_EFFECT (tooling/effect_analysis.py).
- fix(runtime):
Loop/While inner locals renamed (body_lid) so inner graphs do not shadow body (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_patch target for GraphPatch; runtime call target graph_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, scheduled ainl run bundle round-trip vs Rust ainl_memory.db chat [Persona traits active: …] hook; docs/ARMARAOS_INTEGRATION.md — env table rows + cron · chat split + armaraos docs/graph-memory.md; docs/INTELLIGENCE_PROGRAMS.md — stateful bundle.ainlbundle + armaraos doc links; AGENTS.md (ArmaraOS bullets).
AINL 1.4.6
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- release: bump
pyproject.toml · RUNTIME_VERSION · CITATION.cff · tooling/bot_bootstrap.json to 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 shared modules/common includes).
- chore: add
run_openspace_test.py — portable dev harness for demo/test_openspace_mcp.ainl (repo-root-relative paths; OpenClaw adapter registry smoke).
AINL 1.4.5
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- release: bump
pyproject.toml · RUNTIME_VERSION · CITATION.cff · tooling/bot_bootstrap.json to 1.4.5.
- fix(tooling):
ainl install-mcp --host armaraos — when name = "ainl" already exists in [[mcp_servers]], merge env pass-through (AINL_MCP_EXPOSURE_PROFILE, AINL_MCP_TOOLS, AINL_MCP_TOOLS_EXCLUDE, AINL_MCP_RESOURCES, AINL_MCP_RESOURCES_EXCLUDE) into the existing env = [...] line (sorted union) instead of only applying to newly appended blocks. ~/.openfang/config.toml receives the same merge. Tests in tests/test_install_mcp.py.
- feat(mcp):
scripts/ainl_mcp_server.py — register ainl://authoring-cheatsheet resource (short golden-path authoring guide aligned with AGENTS.md); process-local validate telemetry counters; validate/compile path improvements for MCP agent loops.
- feat(compiler · diagnostics):
Diagnostic supports optional contract_violation_reason for 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
Loop or While are skipped for the “exactly one J · must end in J” check (same exemption pattern as If-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.py extended 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 ArmaraOS docs/prompt-compression-efficient-mode.md).
AINL 1.5.0
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- release: bump
pyproject.toml · RUNTIME_VERSION · CITATION.cff · tooling/bot_bootstrap.json to 1.5.0 (minor after 1.4.6).
- docs(whitepaper):
WHITEPAPERDRAFT.md — substantive pass for 1.5.0: runner default grants vs ainl_run adapter registration on MCP, host_security_env · capability-block metrics, ainl-validate hyperspace 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 to docs/advanced/SAFE_USE_AND_THREAT_MODEL.md and AGENTS.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, root CONTRIBUTING.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.
AINL 1.4.4
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- release: bump
pyproject.toml · RUNTIME_VERSION · CITATION.cff · tooling/bot_bootstrap.json to 1.4.4.
- fix(emit):
emit_solana_client discoverability header interpolates RUNTIME_VERSION (was hard-coded v1.4.2).
- test: Solana discoverability assertions use
f"v{RUNTIME_VERSION}" instead of a pinned version string.
AINL 1.4.3
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- feat(mcp):
ainl_run now accepts an optional adapters argument to enable scoped runtime adapters per call (sandboxed fs, host-allowlisted http, file-backed cache, optional sqlite) 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 "" val for int→str coercion, cascading REPLACE for whitespace normalization, CONTAINS for equality checks).
- feat(mcp):
ainl_compile now returns frame_hints[] — a list of {name, type, source} entries describing variables the caller should supply via frame in ainl_run. Sources: explicit # frame: name: type comment lines (authoritative) and IR-inferred undeclared variables (heuristic).
- feat(mcp): Per-workspace
ainl_mcp_limits.json override — if <fs.root>/ainl_mcp_limits.json exists, its values are merged into caller limits before server ceiling enforcement. Enables workspace-specific limit tuning without editing global defaults.
- feat(mcp): Auto-registered
cache adapter — if fs is enabled and cache is not explicitly configured, the MCP server automatically registers cache when output/cache.json or cache.json exists in fs.root.
- fix(limits):
_SERVER_DEFAULT_LIMITS in scripts/runtime_runner_service.py raised 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.py now includes core.STARTSWITH, core.ENDSWITH, core.TRIM, core.STRIP, core.LSTRIP, core.RSTRIP effect entries matching the new builtins.
- fix(docs):
ainl_run docstring documents variable shadowing pitfall and # frame: convention. CAPABILITY_GRANT_MODEL.md, RUNTIME_CONTAINER_GUIDE.md, SANDBOX_EXECUTION_PROFILE.md updated with current default limits. MCP_RESEARCH_CONTRACT.md updated for frame_hints, workspace limits, and auto-cache. AGENTS.md runtime verb list updated.
- release: bump
pyproject.toml · RUNTIME_VERSION · CITATION.cff · tooling/bot_bootstrap.json to 1.4.3.
AINL 1.4.2
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- feat(runtime):
AINL_ALLOW_IR_DECLARED_ADAPTERS — when set, AINL_HOST_ADAPTER_ALLOWLIST from 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 an intelligence/ path segment, RuntimeEngine.from_code and ainl run set AINL_ALLOW_IR_DECLARED_ADAPTERS=1 when unset, unless AINL_INTELLIGENCE_FORCE_HOST_POLICY=1.
- feat(cli):
ainl run registers web, tiktok, queue (OpenClaw integration) consistently on every invocation.
- feat(mcp):
scripts/ainl_mcp_server.py — default ainl_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 via AINL_CONFIG · AINL_MCP_LLM_ENABLED.
- feat(runner):
scripts/runtime_runner_service.py documents the adapter-relax flag in host_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, ArmaraOS scheduled-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_graph now emits analysis_only: true inter-label edges for every J node 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: true edges (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_step in tooling/effect_analysis.py now uses the IR entity field as the verb fallback when req_op is empty. This fixes *.F unknown-adapter-verb errors for R adapter verb args instructions whose IR stores the verb in entity (affects core, web, tiktok, cache, svc, crm, and similar adapters).
- feat(tooling): Expanded
ADAPTER_EFFECT allowlist with:
web.* — SEARCH, FETCH, SCRAPE, GET
tiktok.* — RECENT, SEARCH, PROFILE, STATS, TRENDING
svc.* — STATUS, RESTART, CADDY, NGINX, HEALTH
crm.* — 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.json to include the web adapter namespace and all new verbs for tiktok, svc, crm, and core, keeping adapter manifest coverage tests green.
- fix(intelligence):
intelligence/intelligence_digest.lang — removed include "modules/common/generic_memory.ainl" as genmem (include was after the S header, violating strict prelude placement, and generic_memory.ainl does not conform to the ENTRY/EXIT_* module contract); inlined memory writes using direct R memory put adapter calls; replaced QueuePut notify note with R queue Put "notify" note ->_; added missing J L_analyze terminator to L_default_prev.
- fix(intelligence):
intelligence/infrastructure_watchdog.lang — replaced non-standard Ret null with J null; replaced QueuePut notify alert_msg with R queue Put "notify" alert_msg ->_.
- feat(armaraos):
ainl-library walker respects a .ainl-library-skip marker file — any directory tree containing this file is excluded from the App Store listing. Added demo/.ainl-library-skip so development-only demo files stay out of the user-facing App Store.
- fix(profiles): Promoted 11 files from
non-strict-only to strict-valid in tooling/artifact_profiles.json following 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 new examples/compact/openclaw_learning_handoff.ainl.
- chore: Synced
tooling/canonical_curriculum.json, tooling/canonical_training_pack.json (rebuilt via scripts/build_canonical_training_pack.py), and tests/fixtures/snapshots/compile_outputs.json with promoted files and refreshed checksums.
- release: bump
pyproject.toml · RUNTIME_VERSION · CITATION.cff · tooling/bot_bootstrap.json to 1.4.2.
AINL 1.4.1
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- feat(llm): register
offline AbstractLLMAdapter (deterministic, no network) for config.yaml + register_llm_adapters demos and CI; LLMRuntimeAdapter normalizes verb casing so R llm.COMPLETION matches completion.
- feat(core): implement
core.GET on CoreBuiltinAdapter (deep key/index read via deep_get); add strict core.GET + llm.COMPLETION entries to tooling/effect_analysis.py.
- examples(wishlist): add
05b_unified_llm_offline_config.ainl + fixtures/llm_offline.yaml — unified llm path vs 05_route_then_llm_mock.ainl (llm_query + mock env).
- ci:
parser-compat runs tests/test_wishlist_examples_strict.py plus no-network smoke runs for wishlist 01 and 05b.
- release: bump
pyproject.toml · RUNTIME_VERSION · CITATION.cff · tooling/bot_bootstrap.json to 1.4.1.
AINL 1.4.0
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- release: bump
pyproject.toml · PyPI ainl 1.4.0; align RUNTIME_VERSION 1.4.0 in runtime/engine.py (mirrored tests/emits/server/runtime/engine.py); CITATION.cff version · date-released; tooling/bot_bootstrap.json schema version; ainl serve GET /health reports version from RUNTIME_VERSION.
- feat(armaraos): first-class ArmaraOS host-pack support:
ainl emit --target armaraos emits a hand package (HAND.toml, <stem>.ainl.json, security.json, README.md).
ainl status --host armaraos uses consistent env resolution (canonical ARMARAOS_*, legacy OPENFANG_* aliases).
ainl install-mcp --host armaraos supports ArmaraOS ~/.armaraos/config.toml format ([[mcp_servers]] array) and installs ~/.armaraos/bin/ainl-run + PATH hints.
- docs(armaraos): new integration doc
docs/ARMARAOS_INTEGRATION.md; linked from the host hub docs/getting_started/HOST_MCP_INTEGRATIONS.md and docs/DOCS_INDEX.md.
- fix(tests): repair ArmaraOS integration tests to use supported AINL syntax and fix ArmaraOS emitter import path.
AINL 1.3.3
Synced from docs/CHANGELOG.md in ainativelang. For narrative release notes see Release notes.
- fix(packaging): add
PyYAML to core dependencies. scripts/ainl_mcp_server.py imports yaml at module load; ainl-mcp --help · CI wheel-integrity must not fail with ModuleNotFoundError: yaml after pip install ainativelang[mcp].
- fix(ci):
tests/test_intelligence_budget_hydrate.py · tests/test_runtime_api_compat.py — close MemoryAdapter SQLite connections (and gc.collect) before deleting temp DB paths on Windows (avoids PermissionError in core-pr).
- chore(benchmarks): refresh
tooling/benchmark_size_ci.json after examples/hello.ainl grew (commented tutorial header); keeps benchmark-regression size gate aligned with minimal_emit token counts.