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
{{ message }}
Repository navigation
Base-pin drift: manifest upstream_base_sha stale vs absorbed overlay #1229
Base-pin drift: manifest upstream_base_sha is stale vs the absorbed overlay
Problem
The overlay engine was authored against a newer anomalyco/opencode base
than the one the app-bundle manifest pins. packages/app-bundle/manifest.json
records upstream_base_sha = 7fe993879f98aa17cecc70f70d3f40d6f0f11689, but the
overlay's own files expect APIs absent from that base:
overlaid src/mcp/index.ts declares readonly remove on MCP.Interface
(and a corresponding server remove endpoint), but base 7fe9938's MCP Interface has no remove — so the base-provided test mocks/handlers
(test/session/snapshot-tool-race.test.ts, test/server/httpapi-mcp-oauth.test.ts,
and amicode's test/session/prompt.test.ts mock) don't implement it.
amicode's test/session/llm-native-recorded.test.ts uses HttpRecorderInternal.promptAgnosticMatcher, absent from base 7fe9938's http-recorder (which is not overlaid, so it materializes at the stale base).
The result is a newer-overlay-on-older-base materialized tree — a Frankenstein
that compiles the binary (so build-binary stays green) but is type-inconsistent
and potentially behavior-inconsistent in non-overlay files. This class of drift
is invisible today precisely because the engine typecheck/test gate was missing
(#1228).
Evidence
Fork was green on its own test.yml/typecheck.yml, so in the fork these
APIs existed → the fork's anomalyco base ≠ 7fe9938.
fork_tag was v1.18.29-amicode.30-67-g8608dcc1 (fork HEAD 8608dcc1).
Neither cached base (@7fe9938, @v1.18.29) exposes promptAgnosticMatcher
/ MCP remove — the correct base is neither; it must be recovered from
fork@8608dcc1 history.
Proposed fix (needs its own verification)
Determine the anomalyco commit fork@8608dcc1 actually vendored.
Bump manifest.json:upstream_base_sha to it; re-run refresh_manifest / materialize; confirm drift_gate PASS and the overlay applies cleanly.
Not blocking the gate (#1228 patches the symptom to land green), but this is
the correct fix and should follow promptly — a stale base risks other silent
inconsistencies beyond the 4 caught here.
Base-pin drift: manifest
upstream_base_shais stale vs the absorbed overlayProblem
The overlay engine was authored against a newer anomalyco/opencode base
than the one the app-bundle manifest pins.
packages/app-bundle/manifest.jsonrecords
upstream_base_sha = 7fe993879f98aa17cecc70f70d3f40d6f0f11689, but theoverlay's own files expect APIs absent from that base:
src/mcp/index.tsdeclaresreadonly removeonMCP.Interface(and a corresponding server
removeendpoint), but base7fe9938's MCPInterfacehas noremove— so the base-provided test mocks/handlers(
test/session/snapshot-tool-race.test.ts,test/server/httpapi-mcp-oauth.test.ts,and amicode's
test/session/prompt.test.tsmock) don't implement it.test/session/llm-native-recorded.test.tsusesHttpRecorderInternal.promptAgnosticMatcher, absent from base7fe9938'shttp-recorder(which is not overlaid, so it materializes at the stale base).The result is a newer-overlay-on-older-base materialized tree — a Frankenstein
that compiles the binary (so
build-binarystays green) but is type-inconsistentand potentially behavior-inconsistent in non-overlay files. This class of drift
is invisible today precisely because the engine typecheck/test gate was missing
(#1228).
Evidence
test.yml/typecheck.yml, so in the fork theseAPIs existed → the fork's anomalyco base ≠
7fe9938.fork_tagwasv1.18.29-amicode.30-67-g8608dcc1(fork HEAD8608dcc1).@7fe9938,@v1.18.29) exposespromptAgnosticMatcher/ MCP
remove— the correct base is neither; it must be recovered fromfork@
8608dcc1history.Proposed fix (needs its own verification)
8608dcc1actually vendored.manifest.json:upstream_base_shato it; re-runrefresh_manifest/materialize; confirmdrift_gatePASS and the overlay applies cleanly.(the mock
removeadditions, if the correct base already carries them).Acceptance criteria
upstream_base_shamatches the base the overlay was authored against.drift_gatePASS; materialize verifies overlay files at exact hashes.bun turbo typecheckgreen without the Restore engine test/typecheck CI coverage (regression gate) #1228 symptom-patches(or with them reduced to genuinely-amicode-owned deltas).
build-binarystill green.Priority
Not blocking the gate (#1228 patches the symptom to land green), but this is
the correct fix and should follow promptly — a stale base risks other silent
inconsistencies beyond the 4 caught here.
Campaign ledger:
sessions/session-20260916-engine-test-ci.md.