-
fix(apollo-x-bot): gateway_server.py — _classify_wants_envelope only when messages is a non-empty list (avoids envelope_missing_messages on classify_response=raw without 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-s help 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 via AINL_HTTP_TIMEOUT_S.
-
fix(graph): apollo-x-bot/ainl-x-promoter.ainl — promoter.process_tweet payload: stringify tweet directly for the bridge body; skip branch uses boolean true for JSON ok (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.classify envelope rule); docs/OPENCLAW_INTEGRATION.md (Apollo promoter + openclaw-poll.sh pointer); apollo-x-bot/OPENCLAW_DEPLOY.md (AINL_HTTP_TIMEOUT_S · --http-timeout-s).
-
packaging: pyproject.toml · ainl 1.2.4; RUNTIME_VERSION (runtime/engine.py, mirrored tests/emits/server/runtime/engine.py) 1.2.4; language server serverInfo.version and runner service FastAPI app.version follow RUNTIME_VERSION (runner: scripts/runtime_runner_service.py; LSP: langserver.py)
-
feat(modules): modules/common/access_aware_memory.ainl — opt-in LACCESS_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_key in runtime/engine.py) so nested If · Loop · Call · While reach alias/label keys after merge
-
docs: modules/common/README.md; refresh root README.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 (sample runtime_version in JSON)
-
test: tests/test_demo_enforcer.py (demo compile + access-aware smoke; graph-only bare-label regression)
-
fix(programs): S is parsed as service mode path (three slots); patterns like S core memory cron "0 * * * *" wrongly set path to cron and drop the schedule. Restored S core cron "<expr>" (and equivalent) in intelligence/token_aware_startup_context.lang, intelligence/session_continuity_enhanced.lang, intelligence/proactive_session_summarizer.lang, demo/session_continuity.lang, and examples/autonomous_ops/memory_prune.lang.
-
fix(programs): examples/autonomous_ops/meta_monitor.lang — replace invalid S cron + Cr with S cache cron "*/15 * * * *" (aligned with demo/meta_monitor.lang).
-
tooling: scripts/validate_s_cron_schedules.py and console script ainl-validate-s-cron (pyproject.toml) — fail CI/local runs on malformed S+cron lines; tests/test_s_cron_schedule_lines.py keeps the rule green.
-
docs: docs/CRON_ORCHESTRATION.md — new § S line shape (cron schedules) and § Security: queues, notifications, and secrets; docs/RUNTIME_COMPILER_CONTRACT.md, docs/DOCS_INDEX.md; web mirror ainativelangweb/content/docs/RUNTIME_COMPILER_CONTRACT.mdx.
-
docs(intelligence): intelligence/token_aware_startup_context2.lang — explicit legacy header; prefer token_aware_startup_context.lang for production (budget gate + structured memory + access-aware reads).
-
bench: regenerate BENCHMARK.md, tooling/benchmark_size.json, tooling/benchmark_runtime_results.json, and CI twins tooling/benchmark_size_ci.json · tooling/benchmark_runtime_ci.json via make benchmark · make benchmark-ci; refresh README.md and docs/benchmarks.md headline table (e.g. 19 strict-valid, public_mixed path counts + viable ratios; make benchmark uses --mode wide: full_multitarget_core + full_multitarget + minimal_emit).
-
interop: optional [interop] extra in pyproject.toml (langgraph, temporalio, aiohttp); [benchmark] also lists temporalio for hybrid smoke tests — see docs/PACKAGING_AND_INTEROP.md.