Skip to content

fix(executor,pkginfo): stabilize hook diagnostics and dependency roots (0.0.55) - #39

Merged
Sunrisepeak merged 4 commits into
mainfrom
fix/stability-recovery-contracts
Aug 9, 2026
Merged

fix(executor,pkginfo): stabilize hook diagnostics and dependency roots (0.0.55)#39
Sunrisepeak merged 4 commits into
mainfrom
fix/stability-recovery-contracts

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

What changed

  • Capture Lua hook print, io.write, io.stderr:write, and log.error output per executor, retain a bounded 16 KiB tail, repair invalid UTF-8, and always return a semantic error when a hook returns false.
  • Add ordered ExecutionContext::dependency_store_roots for dependencies owned by a host store outside the xlings runtime graph.
  • Resolve modern host-store dependencies by literal <root>/<namespace>-x-<name>/<exact-version> paths. Valid resolver records remain authoritative; invalid records fail closed.
  • Preserve old-context fallback only when the roots field is absent. An empty roots table is a modern context and does not guess.
  • Bump the source-library release version to 0.0.55.

Why

The previous #514 fallback guessed through ambient directories. That is not a valid authority boundary when same-name packages and several runtime payloads coexist.

Compatibility and authority boundary

  • Namespaced modern lookups require an exact resolved version; wildcard, partial, range, and bare-name root lookups fail closed.
  • A legacy bare-name resolver-record caller remains supported only when exactly one canonical same-version record exists. Cross-namespace collisions are rejected deterministically.
  • Old producers with no roots field retain one warned scan/XVM fallback.
  • tool_payload_dir keeps its existing compatibility path.
  • No $MCPP_HOME discovery or inference was added.
  • No process file descriptor redirection is used; unrelated file handles and executor instances remain isolated.

Validation

  • Focused hook diagnostics: 5/5 passed.
  • Focused PkgInfo_*: 11/11 passed.
  • Full mcpp test: 4 test executables, 133 tests passed, 0 failed.
  • git diff --check passed; mcpp.lock is unchanged.

Downstream

xlings will consume the released 0.0.55 tag in its stability-regression recovery PR and provide the end-to-end CLI/interface coverage for both issues.

Fixes openxlings/xlings#513
Fixes openxlings/xlings#514

@Sunrisepeak
Sunrisepeak marked this pull request as ready for review August 9, 2026 01:07
@Sunrisepeak
Sunrisepeak merged commit 7ecf628 into main Aug 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant