Docs: agent handover and AOT correctness inventory (2026-08-17) - #31962
Merged
Conversation
Two documents from a session that re-established ground truth on a tree 3,069
commits past the previous handover.
docs/AGENT-HANDOVER-2026-08-17.md
- the compiler could not produce a working binary: aot-smoke 0/8, every
case failing at link with `undefined reference to memset.1`, caused by
GcCollectCyclesRuntime::ensureExternal() calling addFunction() without a
getNamedFunction() check so LLVM emitted a body-less memset.1 (#31894,
merged, 0/8 -> 8/8)
- two defects reported as separate AOT bugs were that same one: var_dump
aborting rc=134 and Exception::getMessage() segfaulting both now match
Zend exactly
- why it went unnoticed: compiler-gate.yml had failed 19 of its last 20
master pushes, always in apply-patches.sh on a corrupt hunk header, so it
never reached aot-smoke. A gate permanently red for an irrelevant reason
carries as much information as one permanently green (#31909, partial fix)
- an explicit trap for the next patch in that chain, which has the same
arithmetic inconsistency but a DIFFERENT cause — correcting its header
would look like a fix and verify nothing
- what is verified vs what is not, kept separate on purpose
- operational notes: this is the production box; per-agent helper-cache
dirs; no composer install against a tree agents are using; whole-corpus
compliance stays manual
docs/roadmap/AOT-CORRECTNESS-PLAN.md
- 85 probes across two language areas produced 44 mismatches, roughly one
in two, on ordinary PHP
- grouped by likely root cause rather than listed flat, because several
crashes plausibly share one: float->string conversion (five crashes,
including one that segfaults the compiler itself), integer overflow not
promoting to float, static property storage (including a read of
uninitialised memory returning an unstable integer), invalid emitted IR,
and unimplemented lowering
- a suggested order, and the confound that the hunt ran at load 129-228 on
16 cores — which does not invalidate deterministic signatures (exit
2/255 with specific errors, SIGSEGV, SIGABRT) but would invalidate a
wall-clock timeout, of which none were reported
RELEASE-PLAN.md is left untouched and is stale: it still claims "P1.1 CI on
lib/, ext/ — done, green on master", which was false for a long stretch. It
should be corrected once the gate genuinely reports.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Aug 17, 2026
Closed
Maintainer status 2026-08-18h — filed foreach-byref-append / trait-insteadof IR #32128–#32130
#32131
Closed
Closed
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.
Two documents from a session that re-established ground truth on a tree 3,069 commits past the previous handover.
docs/AGENT-HANDOVER-2026-08-17.mdaot-smoke: 0 passed, 8 failed— every case failing at link withundefined reference to memset.1, becauseGcCollectCyclesRuntime::ensureExternal()calledaddFunction()without agetNamedFunction()check and LLVM emitted a body-lessmemset.1. Fixed in Fix: AOT link fails for EVERY binary — duplicate memset declaration #31894 (merged),0/8 → 8/8.var_dumpaborting rc=134 andException::getMessage()segfaulting both now match Zend exactly.compiler-gate.ymlhad failed 19 of its last 20 master pushes, always inapply-patches.shon a corrupt hunk header — so it never reachedaot-smoke.sh, the one check that would have caught it. A gate permanently red for an irrelevant reason carries as much information as one permanently green. Partial fix in Fix corrupt hunk header that has been aborting the master gate for 19+ runs #31909.composer installagainst a tree agents are using; whole-corpus compliance stays manual.docs/roadmap/AOT-CORRECTNESS-PLAN.md85 probes across two language areas produced 44 mismatches — roughly one in two, on ordinary PHP.
Grouped by likely root cause rather than listed flat, because several crashes plausibly share one:
With a suggested order, and the confound stated precisely: the hunt ran at load 129–228 on 16 cores, which would invalidate a wall-clock timeout but not the deterministic signatures actually observed (exit 2/255 with specific compiler errors, SIGSEGV, SIGABRT). No
hangfindings were reported.Provenance is marked throughout — only Group 6 was re-run by hand; the rest are probe-reported and say so.
Note
RELEASE-PLAN.mdis left untouched and is stale: it still claims "P1.1 CI onlib/,ext/— done, green on master", which was false for a long stretch. It should be corrected once the gate genuinely reports.🤖 Generated with Claude Code