Repository navigation
Conversation
… workers forked again after a late registration Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…unction-preparation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…class; a prepared runner builds itself Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…alue, loaded per pipeline in its workers A hook may name parameters of its function. The acquire hook is called once per value of each parameter's declared type during catalogue preparation; a compile selecting a value that was not acquired is refused, naming the acquired values. The load hook runs in the workers of a pipeline, with the values the compiled step selects, in a 'prepare this pipeline' job that is separate from compile and execute. An execution that was not prepared runs the same load phase before any lane starts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ted server The manager's three operations tell connected_servers, which sends each running server the change (one family: created, edited, deleted; the member is the wire payload and carries its effect in the server) and asks for its state until it stops reporting pending. Until then the manager lists the function as preparing; a source the server could not acquire is listed as failed to load with the server's error. A compile naming a deleted function is refused by name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
trissim
force-pushed
the
refactor/DL4-custom-function-preparation
branch
from
October 12, 2026 20:37
6119384 to
ee25394
Compare
…hmark prepares before its clock The implicit load phase is a field of the execution record (BundleExecutionExtras.load_phase: started_at, ended_at, loads), written to the results summary; benchmark/timing.py reads it and subtracts it from the execution's seconds. run_compiled_pipeline is compile + execute; the prepare job is its own call (prepare_pipeline), which well_throughput_scaling sends before total_seconds starts and reports as prepare_seconds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A catalogue projection is keyed by the FunctionMetadata it was derived from, not by the identity of the registry's dict. A custom-function change no longer drops the registries' loaded metadata (custom functions are never in a library's disk catalogue); only the unified lookup is derived again. Measured in-process, 269 functions: the projection after a registration 6.15 s / 270 entries before, 0.05 s / 1 entry after. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… request or the next pipeline preparation A serving process tries every declared value: a function with at least one acquired value is published and lists the values it lacks with their causes. The retry is the fourth member of the change family (CustomFunctionRetried), exposed in the manager dialog and through MCP, and the server retries the values a pipeline selects when it prepares that pipeline, before any worker loads. Listing, loading and compiling never retry. Also: the custom-catalogue state travels in the typed control response; a connected server is identified by its address; load= is typed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… accelerator_workers limit Unfinished: the agent building this stopped at a usage limit. KeptWorkers (openhcs/runtime/kept_workers.py) owns the forked and the self-started workers and states the lifetime rule; GlobalPipelineConfig.accelerator_workers (default 1) is declared. Six unit files pass (131 tests); the real-server spawn driver and its tests were not observed passing. See the receipt's 'what remains'. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…device contract for hooks, what remains Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DL4 · draft · guards 3/3 new (5/5 in the file) · production −21 +107 · tests −0 +423
Gap 5 of the Cellpose/N2V2 receipt (#1230): a custom function's declared preparation ran in the first compile after readiness, and workers loaded the resource again on later runs. Receipt:
docs/refactor/consolidation-20261009/DL4-custom-function-preparation.md.What changed
CallablePreparation.prepare_for_servingcatalogued functions use (CallablePreparation.prepare_published, called fromproject_declarationin the custom-function manager). Authoring processes load without preparing.CustomFunctionLoadFailureof that source alone (file, line, error); a registration that fails publishes nothing.PreparedForkWorkerLaneRunner.replace_with_current_forks), so fork workers inherit the loaded resource.Measured (Cellpose
nuclei, CPU, 4 BBBC039 fields, 2 workers, cold weights)Not done (details in the receipt)
Gates
guardrails_local.sh:base a51f4eab135b8b56f55f048391497fa62015b41d head b182fefef392a6006c9352d8ae1306e78401183f guardrails rc=0smoke_local.sh:smoke pytest exit 0 (335 s): 7 passed, 2 warnings in 322.33s (0:05:22),smoke gui exit 0 (51 s),smoke rc=0tests/integration/test_no_jit_after_readiness.py:5 passed in 205.22s (0:03:25)180 passed, 3 warnings in 22.07sverify_branch.sh(full suite) and official30 parity: queued, not yet reported; results will be added to the receipt.🤖 Generated with Claude Code