Skip to content

feat(§21): action: reload_self — in-run pipeline hot reload#156

Merged
AlexChesser merged 1 commit intomainfrom
claude/llm-pipeline-self-modify-RRm6M
Apr 15, 2026
Merged

feat(§21): action: reload_self — in-run pipeline hot reload#156
AlexChesser merged 1 commit intomainfrom
claude/llm-pipeline-self-modify-RRm6M

Conversation

@AlexChesser
Copy link
Copy Markdown
Owner

Ship the minimum primitive for self-modifying pipelines (#132): a step
type that re-reads the active .ail.yaml, swaps session.pipeline in
place, and re-anchors the top-level sequential executor by step-id so
newly-added tail steps execute in the same run.

Previously the only way for an LLM-edited pipeline to take effect was
on the next ail --once invocation — the executor captured a static
Vec at startup. spec/core/s21 framed this as "deferred / between
runs only"; that framing was incorrect. A minimum-viable mid-run
reload is achievable without the full diff-application / FROM-layering
/ log-injection machinery.

Surface: action: reload_self. Anchor-by-id resumption. Hard cap of
MAX_RELOADS_PER_RUN = 16. Typed ail:pipeline/reload-failed error for
passthrough (no source), cap exhaustion, validation failure, and
missing-anchor. Turn-log entry records the before/after step count.

Clean up pre-existing clippy/unused-import warnings across the
workspace so the build is warning-free.

Ship the minimum primitive for self-modifying pipelines (#132): a step
type that re-reads the active .ail.yaml, swaps session.pipeline in
place, and re-anchors the top-level sequential executor by step-id so
newly-added tail steps execute in the same run.

Previously the only way for an LLM-edited pipeline to take effect was
on the next ail --once invocation — the executor captured a static
Vec<Step> at startup. spec/core/s21 framed this as "deferred / between
runs only"; that framing was incorrect. A minimum-viable mid-run
reload is achievable without the full diff-application / FROM-layering
/ log-injection machinery.

Surface: action: reload_self. Anchor-by-id resumption. Hard cap of
MAX_RELOADS_PER_RUN = 16. Typed ail:pipeline/reload-failed error for
passthrough (no source), cap exhaustion, validation failure, and
missing-anchor. Turn-log entry records the before/after step count.

Clean up pre-existing clippy/unused-import warnings across the
workspace so the build is warning-free.
@AlexChesser AlexChesser merged commit b537866 into main Apr 15, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants