We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
Update for noetl-server v2.63.0 + e2e fixture _prev template fixes Sessions-Log: new entry for v2.63.0 merge + e2e PR #34 Home: refreshed Last-refreshed + Active-umbrellas row Releases: added v2.63.0 row Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-08: noetl-server v2.64.0 e2e validation — 25/27 PASS Sessions-Log: new entry for step-level set: + ctx shims session. Umbrella-49: new Recent activity row + updated R5 fixture rig status. Home: Last refreshed with e2e validation summary. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
update: noetl-server v2.62.1 clippy cleanup (server#167, closes server#161)
update: tools v2.24.2 clippy cleanup + server#22 closed
#76 closes — noetl-server v2.62.0 sequential-mode iterator dispatch Sessions-Log: new session entry. Releases: v2.62.0 row. Home: fix #70 drift (was still Active, now Recently closed); add #76 to Recently closed; update server version to v2.62.0; tools to v2.24.1. Umbrella-Rust-Server-Port: Recent activity row for #76.
docs: #75 closes — noetl-tools v2.24.1 + worker lockfile; kind-val partial GREEN
docs: #72 closes — noetl-server v2.61.1 honest in-flight check; kind-val GREEN at status layer
docs: #74 closes — noetl-server v2.61.0 namespace shim; test_args_passing fully green; #73→#74 chain done
docs: #73 gap 2 ships — noetl-server v2.60.0 arc set propagation; kind-val partial, #74 filed
docs: #73 gap 1 closes — noetl-server v2.59.0 fans out start-step iterators; kind-val GREEN
docs: worker#64 merged — repos/worker pointer to 802954b
docs: #71 CLOSED — noetl-tools v2.24.0 python wrapper; kind re-val partial, #73 filed
docs: post-#70 sweep filed #71 (python tool wrapper) + #72 (orchestrator status drift)
docs: #70 closes — noetl-server v2.58.0 kind-val GREEN
docs: #70 PR #160 opened on noetl/server via Codex handoff + kind corroboration
docs(wiki): #69 closed (worker v5.15.0 _ref embed) + #70 filed (server PUT /api/result/<eid> gap) Worker PR #63 merged → release-please tagged v5.15.0 (feat: prefix → MINOR bump). Worker fix is correct in principle (lib 126/0/0 + release build clean) — embeds inline `context.data._ref` on the over-budget durable-success branch. Kind re-val revealed a downstream gap: the Rust noetl-server doesn't expose `PUT /api/result/<execution_id>`, so the worker's durable PUT 404s and lands on the degraded shm-only branch where there's no `noetl://` URI to embed. Filed as noetl/ai-meta#70 (server-side parity gap). Home: Last refreshed bumped to lead with #69 close + #70 surface; Active umbrellas table — drop #69, add #70 (server-side); Recently closed adds #69 with the partial-validation caveat. Ecosystem map worker cell bumped to v5.15.0 with the new embedding + blocked-on-#70 note. Sessions-Log: new entry covering the fix-shipped + kind-val-surfaced-gap arc. Releases: v5.15.0 row prepended. Refs noetl/ai-meta#69, noetl/ai-meta#70
docs(wiki): ai-meta#68 closed (artifact args alias, tools v2.23.1 + worker#62) + #69 filed noetl-tools PR #40 merged → release-please tagged v2.23.1 (PATCH bump for `fix(artifact):` prefix); crates.io published 2026-06-08T02:48:09Z. Worker PR #62 merged with lockfile bump to noetl-tools 2.23.1. Kind re-val: built localhost/noetl-worker-rust:v5.15.1-tools231, loaded into kind, rolled worker. Both artifact-using fixtures (test_output_select + test_storage_tiers) confirm the original `missing field 'input'` error is gone (alias works) but FAIL at the same step with a NEW diagnostic: `invalid type: null, expected a string`. Root cause: upstream step's `{{ step._ref }}` resolves to null because the worker's call.done envelope carries a `reference` block (durable result_store PUT) without an inline `data + _ref` block. Filed as noetl/ai-meta#69. Home: Last refreshed bumped; Active umbrellas table — drop #68, add #69; Recently closed — add #68 row. Ecosystem map worker cell bumped to note the v5.15.1-tools231 image + worker#62 dep bump. Sessions-Log: new dated entry with the two-PR shipment + kind-val evidence + #69 surface. Releases: v2.23.1 row prepended. Refs noetl/ai-meta#68, noetl/ai-meta#69
docs(wiki): ai-meta#67 closed + kind-val GREEN on noetl-server v2.57.2 PR #159 merged at 02:11 UTC; release-please tagged v2.57.2 at f7ae136. `Closes noetl/ai-meta#67` keyword auto-closed the umbrella; board 3 status auto-moved to Done. Built localhost/noetl-server-rust:v2.57.2 via podman, loaded into kind via podman cp + ctr import, rolled deployment. Re-ran e2e/fixtures/playbooks/comprehensive_test.yaml (kind execution 322196926424420352) — COMPLETED in ~4s (was hanging forever pre-fix). Event trace confirms the fix shape: start.command.completed → step.skipped for process_low (untaken exclusive sibling — THE FIX) → step.enter for process_high → process_high.command.completed → step.enter for summarize → summarize.command.completed (R4 barrier saw process_low as Skipped) → step.enter for end → end.command.completed → playbook.completed Server pointer in ai-meta bumped: 9526b26 (v2.57.1) → f7ae136 (v2.57.2). Home: Last refreshed prefix updated to lead with the close + kind-val evidence. Active umbrellas table dropped #67 row (back to one umbrella — #49). Recently closed table gets #67 entry with fix shape + kind-val confirmation. Ecosystem map server cell bumped to v2.57.2 with the fix headline. Sessions-Log: previous entry's headline + frontmatter rewritten to reflect the close + v2.57.2 release; "What's left" section swapped for "Release + kind-val GREEN" with the full event-trace evidence. Releases: v2.57.2 row prepended with the full fix shape + kind-val GREEN evidence. Refs noetl/ai-meta#67
docs(wiki): #67 fix PR opened on noetl/server (#159) Diagnosed + fixed the orchestrator deadlock filed as noetl/ai-meta#67 earlier today. Jinja renderer was a red herring; root cause was build_incoming_arcs declaring untaken exclusive-routing siblings as upstreams, blocking R4 fan-in barrier. 3-part fix in noetl/server PR #159. Home: Last refreshed lede leads with the diagnosis + fix shape; Active umbrellas #67 row flipped to In progress with PR link + diagnosis + fix details. Sessions-Log: new dated entry covering the diagnosis arc, the 3-part fix shape, build evidence (lib 568/0/0, +2 new tests; release build clean), and what's left (kind re-val). Refs noetl/ai-meta#67
docs(wiki): #49 regression-rig sweep — 7 fixtures, 1 real bug filed as #67 Swept 7 self-contained fixtures from repos/e2e/fixtures/playbooks/ against the v2.57.1 Rust kind stack: 3 PASS: simple_python, test_args_passing, test_large_result_extraction 3 correct-FAIL (infra): - postgres_test: missing `auth:` block - http_test: stale Python-server hostname - v10_canonical_example: api.example.com placeholder 1 real bug → filed as noetl/ai-meta#67: `comprehensive_test.yaml` hangs forever after process_high completes; orchestrator silently produces 0 commands + 0 events + should_complete=false. Root cause: Jinja conditional `{{ A if A else B }}` in step `input:` where B is undefined because `mode: exclusive` only dispatched A. Minimal repro `tests/k66d/comprehensive_minimal_repro` (without the conditional) completes in ~4s. Sessions-Log: new dated entry with the per-fixture results table + recommendations for the three stale fixtures. Home: Last refreshed prefix lead with the sweep + #67 details. Active umbrellas: bumped to "Two open" (#49, #67); #67 row added with status + reproducer pointer. Refs noetl/ai-meta#49, noetl/ai-meta#67
docs(wiki): #49 — `{{ execution_id }}` multi-statement pg finding resolved on v2.57.1 Re-ran the open finding from the #54 sweep against the fresh Rust-only kind stack (noetl-server-rust:v2.57.1 + noetl-worker-rust:v5.15.0-tools223): - tests/k66b/pg_exec_id_multistatement (query: alias) — both single-statement (`SELECT {{ execution_id }} AS exec_id_one`) and multi-statement (`CREATE TEMP TABLE + DELETE WHERE eid = + INSERT VALUES + SELECT`) render `{{ execution_id }}` correctly; the wire result returns the expected execution_id in every position. - tests/k66c/pg_command_alias_repro (command: alias — the wiki-described failing shape) — exactly the `loop_with_pagination`-start-step CREATE+DELETE+INSERT+SELECT pattern; `{{ execution_id }}` renders correctly, INSERT succeeds, verifying SELECT returns the row. The "`WHERE execution_id = ;` syntax error at command-build time" fingerprint no longer reproduces. Likely fixed via the template defer-render series in server#71/#73. Umbrella-49 page: strikethrough applied to "Next concrete steps" item 4's "Open server-side finding" + resolution note; "Porting gap noted: artifact tool kind" also updated to reflect tools v2.20.0 + #64 closure (was already shipped, was a stale note). Home: Last refreshed prefix updated to lead with the housekeeping finding. Sessions-Log: new dated entry. Refs noetl/ai-meta#49
docs(wiki): ai-meta#66 kind-val GREEN on noetl-server v2.57.1 Built localhost/noetl-server-rust:v2.57.1 via podman, loaded into kind, rolled deployment. Registered tests/k66/python_file_loader_v2 + executed (kind execution 322179661486362624); 4-step playbook reached playbook.completed in ~4s. verify_data_accessor step's output (extracted from the call.done event's `result.context.result.context.data` chain): { "all_pass": true, "checks": { 7-out-of-7 true }, "flat_status": "success", "wrapped_status": "success", "flat_total": 3, "wrapped_total": 3, "wrapped_script_source": "file" } Both `{{ run_from_file.<field> }}` (flat path, existing pre-#66 accessor) AND `{{ run_from_file.data.<field> }}` (wrapped path, new #66 accessor) resolve to the same upstream user_data dict. Confirms the build_context wrapper-injection fix works end-to-end against the live Rust orchestrator. Home: Last refreshed prefix updated to lead with the kind-val GREEN evidence + execution ID + check results. Sessions-Log entry's "What's left" section swapped for "Kind re-validation — GREEN" + the actual output dict. Refs noetl/ai-meta#66
docs(wiki): bump worker cell to v5.14.0 + noetl-tools 2.23 dep bump Worker shipped v5.14.0 earlier today (Container Tool Callback umbrella #43 Round 4 — pending_callback adoption); main has since absorbed the chore(deps) bump for noetl-tools 2.21 → 2.23 via worker#61 (no release tag — release-please skips chore(deps) commits). Home Ecosystem-map worker cell: v5.13.0 → v5.14.0 (+ tools 2.23 dep bump on main, untagged) Headline rewritten to lead with the dep bump + ref to the #65 closeout context, then the v5.14.0 pending_callback content, then the prior v5.13.0 sealed-credential content. Refs noetl/worker#61
docs(wiki): reconcile Active umbrellas — #54 was closed 2026-06-06 Spot-check at session start (per agents/rules/wiki-maintenance.md Rule 0a) revealed the Active umbrellas table still listed #54 ("Phase F R5 — regression + e2e validation under sharded topology") even though `gh issue close noetl/ai-meta#54` ran on 2026-06-06 04:37 UTC. The umbrella was closed because every blocker had its own sub-issue (#62/#63/#64/#65/#66 — all five now also closed) and Tier 4 e2e on the Rust-only stack was GREEN; sharded-N=2 + production cutover are tracked separately as operational work, not umbrella sub-tasks. Home: drop #54 row from Active umbrellas; header swaps "Two open (#54, #49)" → "One open (#49)"; #54 added to Recently closed with 2026-06-06 close date + brief epilogue. Also bumped #49's deployed version from v2.57.0 → v2.57.1 and library test count 564/0/0 → 566/0/0 (the v2.57.1 #66 fix added two tests). Refs noetl/ai-meta#54
docs(wiki): ai-meta#66 closed — noetl/server v2.57.1 ships step.data accessor fix PR #158 merged at 19:18 UTC; `Closes noetl/ai-meta#66` keyword auto-closed the umbrella; board 3 status auto-moved to Done. noetl/server v2.57.1 released as a single-commit patch on top of v2.57.0 (the Phase D R5 R7 parity harness). Home: bump Last refreshed prefix to lead with the close + v2.57.1 release; Active umbrellas header drops the third-row "follow-up" phrasing (back to two umbrellas — #54, #49); #66 row removed from Active table; new #66 row inserted at top of Recently closed (replacing the Todo entry from the previous session); Ecosystem map server cell updated to v2.57.1 with the fix headline + preceding v2.57.0 (Phase D R5 R7) preserved. Sessions-Log: previous entry's headline + frontmatter rewritten to reflect the close + v2.57.1 release; "What's next" section swapped for "Release + closeout" (PR merged, server pointer bumped) + "What's left" (kind re-val sanity check; the unit-test reproducer already pins the fix at the lib layer). Releases: prepend v2.57.1 row above the v2.23.0 / v2.22.0 noetl-tools rows (chronological order — v2.57.1 released at 19:18 UTC, after tools). Refs noetl/ai-meta#66
docs(wiki): ai-meta#66 — PR open for Rust orchestrator step.data accessor Sessions-Log: prepend new entry for the noetl/server PR #158 work on the cross-step `{{ step.data }}` template gap surfaced during the previous session's #65 kind-val. Records the build-context wrapper-injection fix design, 2 new unit tests, build + test evidence (lib 566/0/0), and the kind re-val pending merge. Home: bump Last refreshed prefix to lead with #66 work; update Active umbrellas table row to In progress (was Todo), citing PR #158 + root cause + build evidence. Active umbrellas header phrasing updated to reflect #66's nature as a follow-up to #65. Wiki dashboard now reflects the same state as the matching ai-task issue + board 3 (In progress) per agents/rules/wiki-maintenance.md Rule 0a. Refs noetl/ai-meta#66
Wiki: noetl/ai-meta#65 closed — python external script loaders + main() convention (tools v2.22.0 + v2.23.0) The python `script:` block now resolves all three external source types (file/gcs/http) plus the legacy main() function convention that the canonical script_execution/* fixtures rely on. Both halves of #65 shipped + kind-val GREEN. Kind-val evidence: execution 322087210360770560 reached playbook.completed in ~6s on the live worker (v5.15.0-tools223, locally-built). Loaded main(name, count) return surfaced as run_from_file.data exactly as expected ({messages, total_greetings: 3, script_source: "file"}). Surfaced downstream finding filed as noetl/ai-meta#66 — cross-step {{ step.data }} template-context projection gap in the Rust orchestrator. Doesn't block #65. Touches the four pages that drift together per wiki-maintenance.md Rule 0a (Home + Sessions-Log + Releases + Umbrella-Rust-Server-Port — though the umbrella page isn't touched this round since #65 isn't a Rust-Server-Port sub-issue; it's tools+worker). Refs noetl/ai-meta#65 (closed), noetl/ai-meta#66 (new)
Wiki: Phase D R5 R7 ships — Replay engine port COMPLETE (server#157, v2.57.0; closes server#148) Server#157 merged → release-please tagged v2.57.0 → sub-issue server#148 auto-closed at 17:53:40Z via PR body's `Closes noetl/server#148` keyword. All seven Phase D R5 rounds shipped today (v2.51.0 → v2.57.0): R1 endpoint scaffold + execution projection (v2.51.0) R2 stages + frames + commands projections (v2.52.0) R3 loops + business_objects projections (v2.53.0) R4 typed Checksum + projection_checksums (v2.54.0) R5 snapshot seed + base_state + upcaster digest (v2.55.0) R6 payload resolver (v2.56.0) R7 cross-server parity harness against Python (v2.57.0) The Replay engine port — Python's ~1236-LoC `noetl/server/api/replay/service.py` → Rust — is complete with: - 564/0/0 unit tests covering every projection + helper + fallback path. - 8-test cross-server parity harness with verbatim-extracted Python regen for fixture refresh. R7 is test-only (no runtime changes); no kind-val required. release-please bumped to v2.57.0 from the `feat(replay):` commit prefix. Touches the four pages that drift together per wiki-maintenance.md Rule 0a (Home + Sessions-Log + Releases + Umbrella-Rust-Server-Port). Closes noetl/server#148 Refs noetl/ai-meta#49 Phase D R5
Wiki: Phase D R5 R6 ships — payload resolver (server#156, v2.56.0, kind-val GREEN) Server#156 merged + image v2.56.0 built + loaded into kind + rolled deployment + replay endpoint re-probed against two executions: 1. fanout_reduce execution 322023958058635264 — identical shape as v2.55.0 (no result.reference events; back-compat preserved). 2. Execution 640422512395813188 — execution.payload_refs populates with 3 entries carrying real SHA-256 hex digests (d0de6b8...). Live resolver path confirmed end-to-end. Every event's result.reference JSON now gets parsed into a typed PayloadSummary and appended to the relevant projection's payload-refs list. PayloadSummary + PayloadRefEntry types mirror Python's dict shapes; extract_payload_ref + payload_summary mirror Python's helpers with three-tier fallback chain. ReplayExecutionState.payload_refs + ReplayFrameState.output_ref/output_ref_summary + ReplayBusinessObjectState.payload_refs/last_payload_ref all populated. Only R7 (cross-server parity harness against Python) remains in the Phase D R5 umbrella. Touches the four pages that drift together per wiki-maintenance.md Rule 0a (Home + Sessions-Log + Releases + Umbrella-Rust-Server-Port). Refs noetl/ai-meta#49 Phase D R5
Wiki: Phase D R5 R5 ships — snapshot seed + base_state + upcaster digest (server#155, v2.55.0, kind-val GREEN) Server#155 merged + image v2.55.0 built + loaded into kind + rolled deployment + replay endpoint re-probed against the prior fanout_reduce execution. Wire-shape back-compat verified: new fields `replay_snapshot` + `upcaster_registry_digest` both `skip_serializing_if Option::is_none` — default folds produce R1-R4-identical JSON. The replay fold can now start from a prior fold's output and continue from there. ReplaySnapshotSeed mirrors Python's frozen dataclass; ReplaySnapshotInfo is the output subset; ReplayFoldOptions carries the optional inputs; new fold_replay_state_with_options entry point + 5-arg fold_replay_state as a back-compat shim. Snapshot-storage backend deferred to a downstream sub-issue. Touches the four pages that drift together per wiki-maintenance.md Rule 0a (Home + Sessions-Log + Releases + Umbrella-Rust-Server-Port). Refs noetl/ai-meta#49 Phase D R5