You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(build): a dlopen-surface pass that does not apply publishes a reason, and never over an answer (2026.9.10.2)
`check_dlopen_surface` returned without writing in four cases: not Linux, a
non-hermetic binding or `allow_host_libs`, a plan producing no program, a plan
producing no linked artifact. Omitting the record makes "the check did not
apply" and "the check was never run" the same reading.
It does more than omit a sentence, because the two copies of the record have
opposite lifetimes. The sidecar survives an invocation; `resolution.json` is
regenerated from an empty object at the start of one. The backend runs once per
drive and a single invocation can drive it more than once -- `mcpp test` builds
the library and then links the test binary -- so a drive that links only a
dependency's shared library has no program, has nothing to answer, and yet
decides what the documented place to look finally contains.
Every early return now publishes a record carrying its `reason`. A non-answer
republishes a reading already on file under the same key rather than replacing
it with a blank: the key covers the contract hash, the SubOS stamp and the
host-libs policy, not the link units, so a reading taken under it is still
about this farm and this policy, and a key that moved has already cleared the
record. Publishing the reason alone would have turned a silent absence into a
loud wrong answer.
WHAT WAS MEASURED, AND WHAT WAS NOT. Against the released 2026.9.10.1 in a
sandbox, `.agents/docs/2026-09-10-596-verify.sh` passed sections A to C and
section D reported `resolution.json has no runtime.dlopen_surface`; that run
was also the run that installed the dependency. Run again against the same
binary in the same sandbox with the registry warm, section D passes with
`dlopen_surface examined 15 of 15 members`. The ordering of drives on the cold
run was not captured and has not been reproduced, so what is repaired here is
the code path that can produce that reading, recorded as such in section 7 and
section 8.6 of the design record rather than as a diagnosis of that run.
The invariant is a unit test rather than an end-to-end case: reaching it needs
two drives over one output directory where the second is the one that does not
apply, and no project shape names that. Both halves were refuted with the
repair removed -- without the republish branch the reading becomes 0 members,
without the publish the sidecar is not written at all. The verification script
gained the matching criterion: a published non-answer counts as a failure.
0 commit comments