Skip to content

Dispatch host keeper by String.eq in the recovery helper entry - #900

Merged
flip-engineer merged 1 commit into
mainfrom
codex/cgen-keeper-stringeq-20261019
Oct 19, 2026
Merged

flip-engineer merged 1 commit into
mainfrom
codex/cgen-keeper-stringeq-20261019

Conversation

@flip-engineer

@flip-engineer flip-engineer commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

The focused recovery entry's host-keeper literal pattern expanded into a large generated continuation. Capturing the flag and comparing it with String.eq reduces that expansion while preserving argument order, keeper calls, lock parsing and exit-code behavior.

The full lifecycle entry was measured with the same Bend 2.0.25 compiler. Candidate source 73d5213ae950da005a6b84030c34b98922a0dd9a applies the exact PR patch to lifecycle source 9f859a493.

Measurement Literal-pattern source Candidate
C generation wall time 13m05s 2m14.18s
Peak memory 58.5 GiB 12.5 GiB
Generated C 82 MiB 15,031,558 bytes

Candidate generated C SHA-256: 86e9919547dfa1e13199ec496951aa83b615c6c51fecb048bf433c7a1d1a6697. Clang 19.1.1 compilation completed in 45.167 seconds, with 1.9 GiB peak memory and zero swap. Binary SHA-256: 589d2b8137b51e223a1eed9cf4e7a69bc480b6c437a42daadee435562fb3897a.

Isolated instance-owner, instance-shutdown and custody-adoption fixtures pass through the helper's embedded lifecycle routes. The keeper fixture used a retained test copy updated to the current br_attach_socket signature. A separate DeepSeek critic verified dispatch semantics, and the entry passes Bend type checking.

Recovery replay remains open. Both the earlier f65 helper and this lifecycle candidate fail the small unknown-status cursor test, and the 46,123,112-byte retained-output test times out after 900 seconds despite low recovery RSS. These failures remain tracked with the memory incident. The C-generation and lifecycle measurements do not establish a permanent recovery fix or production deployment.

Related: #890, #776, #825, #901. Retained source, proxy measurements and checksums are in private/compiler-recovery-wonder-20261019/cgen-owner-keeper-20261019/ on the homelab runner. Full-entry artifacts are in /var/tmp/baton-monitor-lifecycle-c14-main-20261019/.

The string-literal list pattern for --host-process-keeper made the
Bend match compiler expand a character decision tree across the
remaining dispatch cases. Measured on a same-source dispatch proxy
with the real arities: 54,063,638 bytes of C, 2m28s and 18,450,476
KiB for the literal form versus 424,856 bytes, 0.57s and 122,304 KiB
when the case captures the flag and compares it with String.eq, the
style the same dispatch already uses for --recover-receive and the
instance routes. The case order, arities, target function, and the
code 2 refusal for a different three-argument command are preserved.
Base automatically changed from codex/recovery-helper-routes-20261018 to main October 19, 2026 04:31
@flip-engineer
flip-engineer changed the base branch from codex/recovery-helper-routes-20261018 to main October 19, 2026 04:31
@flip-engineer
flip-engineer merged commit 6cec5a6 into main Oct 19, 2026
@flip-engineer
flip-engineer deleted the codex/cgen-keeper-stringeq-20261019 branch October 19, 2026 04:31
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.

1 participant