Repository navigation
2026.10.16.1: the provider port, indices in mcpp's home, upstreams, the system home, filesystems and long paths - #811
Merged
Merged
Conversation
…them (#809) Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…ider/xlings, callers through mcpp.provider.select; payloads written by no one but their provider Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Callers ask the port (mcpp.provider.select) for layouts, payloads, the home's store and its legacy directories; the legacy-directory reader moves under the adapter. .github/tools/check_provider_boundary.py refuses, in src/ outside the adapter and the composition root, an import of the adapter, a spelling of the provider's layout in code, and a payload canonicalised or removed; the docs job runs it and its fixtures. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…eams with a trust boundary; --system; windows_long_paths; the handshake - An index mcpp serves keeps its data in <home>/indices/<name> and its payloads in <home>/xpkgs (a project's in <project>/.mcpp); a home from before has its index moved once and its installed payloads still found. - A refresh fetches each owned index into a staging directory (xlings sync_index), judges it against index.toml's floor, and exchanges it in; mcpp.pm.index_snapshot's backup and rollback are gone. - [xlings] upstream (user config, else /etc/mcpp/config.toml): homes of this user or of the system only; written into the registry as xlings upstreams. `mcpp self store dedupe [--apply]` links what an upstream has the same of. - `--system` maintains the machine's system home (/var/lib/mcpp): the maintenance commands only, write access checked, umask 022, held locked. - windows_long_paths (target and [test] keys): longPathAware in the application manifest; a host tool's default; mcpp.exe declares it. - Every xlings source passes the handshake; one that cannot serve this mcpp gives way to the bundled one. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…r shows the home, its upstreams, its filesystem and Windows long paths; the Windows path budget Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…are never written (91, SPEC-006 v0.8, SPEC-001 1.6); windows_long_paths; tools follow the adapter's path Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…lse positive avoided Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…ex's store, is looked for in the home (legacy store); e2e: the owned index's place, stub xlings answer the handshake and stage a refresh, no marker is written into a payload Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…ome is maintained with --system and read by users (915); a home from before keeps working (916); a fresh home adopts its owned index too Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…, run, doctor); e2e: a long home on Windows (917); the isolated homes inherit the store of mcpp's indices Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…am; design record of what was implemented Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…es_of); a home an earlier mcpp made (its index named mcpp-index) stays usable as [xlings] home Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…re of the home (its index's, then the provider home's) Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…atform::fs is a namespace; GCC 16 crashed reading both); e2e 32, 33 link the mcpplibs index where mcpp keeps it Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… there, naming xim:glibc@<v> (no fixup remains to report it later) Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…he provider's links to it are made again then (a toolchain's loader is <registry>/abi; installing glibc alone does not make it) Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
This was referenced Oct 16, 2026
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.
mcpp 2026.10.16.1. Implements
.agents/docs/2026-10-16-xlings-provider-port-and-shared-store-design.md(the mcpp side; the xlings side is openxlings/xlings#676, released as 2026.10.16.1 and bundled here). Fixes #809.The provider port
mcpp.provider. Only the adapter undersrc/provider/xlings/names xlings' commands, protocol and store layout; the composition rootmcpp.provider.selectchooses it..github/tools/check_provider_boundary.pychecks the boundary in CI.specsor clang.cfg, writes.mcpp_ok/.mcpp-fixup.json, or copies payloads from~/.xlings; a build states what a payload lacks on its own command lines.xlings interface --version); one that cannot serve this mcpp gives way to the bundled xlings, with a note.Ownership, place and refresh
<MCPP_HOME>/indices/<name>,<MCPP_HOME>/xpkgs(a project's under<project>/.mcpp). The provider's own indexes stay underregistry/.min_mcppthere, and exchanged with the copy in use only when this mcpp can read it.registry/data/xpkgsstay and are still found.Reuse and the system home
[xlings] upstream = [...](user configuration, else the system configuration/etc/mcpp/config.toml/%ProgramData%\mcpp\config.toml): a payload of the same identity is linked from an upstream, never copied or written. An upstream must belong to the user or to the system; another user's home is refused.mcpp self store dedupe [--apply]replaces the home's own copies with links.mcpp --systemmaintains the machine's system home (self init|doctor|store,toolchain install|remove|default,index update); every other command, and a caller without write access, is refused.[xlings] homenames a home mcpp made; a home it did not make is refused with a pointer toupstream.Filesystems and Windows long paths
windows_long_paths(target and[test]keys) writeslongPathAwareinto a PE application manifest;mcpp.exedeclares it. With long paths off and a longMCPP_HOME, the path budget is reported as a degradation.mcpp self doctorstates the home, its upstreams, its filesystem and the long-path setting.Documentation
New docs/25 (en/zh) on the home, its indices and its store; docs/91 §4, docs/11, docs/09, docs/04, SPEC-001 1.6, SPEC-004, SPEC-006 v0.8 updated; CHANGELOG 2026.10.16.1.
Verification
All 65 CI checks pass on the final head (Linux, aarch64, macOS, Windows, e2e shards, openkal, target matrix, fresh installs, NFSv3). mcpp-plugins CI built and ran against this branch (38895101589). Found and fixed on the way: a package of mcpp's indices is looked for in every store of the home; the runtime is pinned after its payload is installed, so the provider's loader links exist; a toolchain whose runtime cannot be installed is refused naming
xim:glibc@<v>;fs_caps' alias ofstd::filesystemno longer shadows themcpp::platform::fsnamespace (GCC 16 crashed reading both).Unit tests for the port, the owned index, the trust check, the manifest key and the resources; e2e 914 (upstream linked, never written; trust; doctor; dedupe; a home mcpp did not make), 915 (system home), 916 (a home from before), 917 (a long home on Windows), plus the existing suites with stub xlings answering the handshake. Locally against xlings 2026.10.16.1: upstream reuse, dedupe,
--system, and the e2e suites listed pass.Co-authored-by: speak-agent 248744407+speak-agent@users.noreply.github.com