Skip to content

feat: converge template identity, runtime contracts, and release state - #400

Draft
Sunrisepeak wants to merge 32 commits into
mainfrom
feat/template-runtime-graphics-aur
Draft

feat: converge template identity, runtime contracts, and release state#400
Sunrisepeak wants to merge 32 commits into
mainfrom
feat/template-runtime-graphics-aur

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Aug 9, 2026

Copy link
Copy Markdown
Member

概要

本 Draft PR 实现 #398 冻结的聚焦方案,覆盖包/模板身份、事务式项目创建、根本地运行时、图形栈 provenance、release desired state 和 mcpp-bin AUR 恢复。

核心产品决策:

  1. 包和模板统一使用 [ns.]name[@version][:tname]
    • 省略 ns 时严格等于 mcpplibs
    • versiontname 可省略
    • 不引入 --variant
    • 只有一个模板且没有 default = true 时,该模板自动成为默认模板
  2. xlings/xim 负责图形栈、运行时 provider 和 sentinel;mcpp-index 描述 C++ 包依赖;mcpp 不探测 GPU、Mesa、NVIDIA、WSL、driver 或 ICD。
  3. mcpp 默认使用自己的运行时;根项目/workspace 根可在 mcpp.toml 中选择 xlings SubOS。
    • 暂无 CLI override
    • SubOS 只是根构建/运行的本地 OS 环境
    • 成员和依赖的 SubOS 不传递
  4. AUR 自动化只管理 mcpp-binmcpp-m 文件和发布路径不动。

已实现

  • 共享、精确、命名空间感知的 PackageSelector;exact miss 只给提示,不跨命名空间 fallback
  • 精确 TemplateSpec、稳定版本选择、唯一模板自动默认和确定性多模板错误
  • 事务式 mcpp new:安全项目名、单次渲染、完整校验、rollback、跨平台 no-replace commit
  • 根/workspace-root RuntimeSelection 和不可变 RuntimeBinding,build/run/test/fast path 共用同一快照
  • Linux ELF/runtime closure:精确 glibc payload、Rule A/Rule B、sticky verdict、stored doctor
  • provider-neutral runtime requirement/provider/artifact/provenance 和 LinkIntent;mcpp why runtime 不重新探测 host
  • 不可变 schema-1 mcpp-release.json,最终公开 inventory 重取和 payload checksum 复算
  • mcpp-bin-only AUR reconciler:event/schedule/manual、Arch vercmp、幂等/单调、checksum、fast-forward-only、有界恢复
  • exact miss 的隐私安全 route: 诊断:只报告 local index root/pkgs 是否存在,不输出本机路径
  • 版本 2026.8.9.1、当前稳定 xlings pin 2026.8.9.2、英文/中文用户和发布文档

验证证据

不会把“全量后修复并精确重跑”描述成“最新 HEAD 全量 E2E 全绿”;最新 HEAD 的原生 CI 必须独立达到终态。

原生 CI 当前证据

ed4cf64 矩阵终态为 12 success / 5 failure / 1 cancelled:

  • 四个失败属于已知跨仓库边界:Linux xlings integration、macOS xlings LLVM、aarch64 mcpp + xlings、Windows xlings regressions 均遇到裸 ftxui exact miss;
  • Windows E2E 2/2 另有一个独立 mcpp 失败:workspace member 无法读取根 [indices] 中的 acme local index(run 31321961040 / job 93266267511);
  • bare Windows/no-Visual-Studio 被后续 push 的 concurrency 取消,不计为 PASS;
  • 对应 native Windows unit 已通过,且同一 artifact 在隔离 Wine 重放通过,因此不能用 unit/Wine 代替原生 Git Bash 结论。

9a47ccf 已增加无绝对路径的 route 状态。当前最新 HEAD 等待 Windows 原生 runner 输出 root/pkgs present/absent 后再做最小修复;当前没有宣称该问题已解决。

跨仓库状态

  • mcpplibs/mcpp-index#197 已正常合并,10/10 CI 通过。
    • 保持不可变 mcpplibs.capi.lua@0.0.3 payload 不变
    • 用 index-side Form-B bridge 精确声明 compat.lua@5.4.7
  • openxlings/xlings#521 为 Draft,8/8 CI 通过。
    • 精确声明 compat.ftxui@6.1.9 和测试用 compat.gtest@1.15.2
    • 刷新 lock,使传递 Lua C 库保留 canonical identity
    • 仍需用户 review、普通合并和新的 xlings 稳定 release

四个 xlings 失败不能在 mcpp 中恢复 fallback 掩盖,必须从 xlings #521 和后续 release 正常收口。Windows E2E 2/2 是独立 mcpp 问题,继续在本 Draft PR 内按原生证据修复。

文档

Draft、追踪和合并规则

  • PR 保持 Draft,等待用户 review。
  • 每个逻辑变更单独 commit、立即 push,并用中文 PR checkpoint 记录问题、根因、改动和验证。
  • 不 amend、rebase、squash、force-push,不使用 admin/bypass。
  • commit、文档、PR 正文和评论不得包含本地用户名、绝对 workspace/home 路径、个人邮箱、凭据或其它隐私信息。
  • pending、skipped、cancelled、superseded job 都不算 PASS。
  • 用户明确 review 后,才转 ready 并走普通合并。

尚未完成

Closes #398.

Related: #380, #392, #396, #397, mcpplibs/mcpp-index#197, openxlings/xlings#521

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Checkpoint — exact local-index namespace inheritance (e6050b7)

  • Fixed exact dependency lookup so a name-only descriptor inherits the namespace of its owning declared index, including [indices] default.
  • Kept selector semantics strict: this does not restore cross-namespace fallback.
  • Added a focused regression test for acme.util resolving a descriptor that declares only name = "util".
  • Verification: PmIndexRoute.* passed 8/8; the complete unit-test invocation reported 72/72 test binaries passing.
  • Privacy scan and git diff --check passed; no machine-local paths or user identifiers were committed.

Next checkpoint will migrate the affected E2E fixtures and validate the previously failing local-index scenarios against this commit.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Checkpoint — exact identity retained through the build resolver (d008a21)

The first fix covered shared IndexRoute lookup, but the build path performed a second identity check without the owning-index namespace. This commit carries the same index ownership into that stricter check, so name-only descriptors in local-dev or redirected default indices remain exact identities instead of false misses.

Evidence:

  • Rebuilt the Draft-PR CLI from this source.
  • E2E 49 advanced from no package found for exact selector through resolution and compilation.
  • With the loader-physics correction in the next isolated commit, E2E 49 completes successfully.
  • Diff/privacy checks passed; no local paths or user identifiers are included.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Checkpoint — ELF loader physics / multi-glibc correctness (c569152)

The closure validator was resolving every dependency's libc.so.6 independently through that object's RUNPATH. That can report two payloads even though the ELF loader reuses the first process-global SONAME mapping.

This commit now:

  • preserves DT_NEEDED order,
  • parses DT_SONAME,
  • tracks already-loaded SONAME mappings (including PT_INTERP), and
  • reuses the mapped object before consulting a later dependency's RUNPATH.

Verification:

  • New synthetic ELF regression was red before the fix (resolvedLibcs.size() == 2) and green after it (== 1, selected payload retained).
  • Full test_elf_runtime: 11 passed, 1 platform-boundary skip on Linux.
  • Existing proven two-libc mismatch and Rule A/B rejection tests remain passing.
  • E2E 49 now completes successfully (OK) with the real selected runtime/toolchain combination.
  • Diff/privacy checks passed; no local machine paths or identifiers were committed.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Validation checkpoint — local-index exact identity group

Against current Draft-PR HEAD c569152, the previously failing local-index/cache scenarios now pass 7/7:

  • 49 BMI cache with nested custom index
  • 51 package-generated files
  • 121 default-namespace index redirect
  • 147 per-OS xpkg features
  • 172 cross-project build cache
  • 174 cache modes and commands
  • 184 build-cache object layout

These use isolated fresh sandboxes and the rebuilt PR CLI. No test fixtures needed loosening: the implementation fixes make their existing exact selectors resolve as intended.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Checkpoint — E2E contract migrations (679c7ab)

Three tests were asserting pre-exact-identity or host-capability behavior rather than product regressions:

  • 100 now selects compat.cjson explicitly in both manifests.
  • 123 asserts the namespace-qualified dependency object root (obj/mcpplibs_mydep/...).
  • 204 only exercises symlink rejection when the filesystem actually produced a symlink; restricted Windows shells that return success without one no longer create a false failure.

Local verification with the rebuilt PR CLI: 3/3 passed (100, 123, 204). Diff/privacy checks passed.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Checkpoint — fake xlings fixtures retain truthful SubOS contracts (65fc77b)

E2E 52 and 58 used a fake xlings self init that wrote {} as the SubOS manifest. The new runtime contract correctly rejects that as an environment with no declared runtime/provider facts.

The fixtures now copy the already inherited native runner's default SubOS contract into the fake home. This keeps the fake focused on install ordering/index transport while preserving truthful platform/runtime facts.

Verification: 52 and 58 pass 2/2 with the rebuilt PR CLI. Diff/privacy checks passed; the committed tests contain no host-specific contract or path.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Checkpoint — exact misses retain an unreadable-index cause (e3b93ac)

The exact-selector failure path bypassed the existing with_index_cause wrapper, so an E0006 floor violation was printed early but the terminal error still blamed a missing package. The final exact-miss diagnostic now carries the recorded unreadable-index cause.

E2E 185 is green across all three gates:

  • terminal failure names E0006 / unreadable index,
  • a too-new unused index remains isolated,
  • MCPP_INDEX_FLOOR=ignore still works.

Diff/privacy checks passed.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Checkpoint 92caaf9 — fixed the Windows-only SelfDependencyInjection fixture cleanup failure. The two manifest input streams now leave scope before remove_all, matching Windows file-lock semantics while preserving the canonical-identity assertions. Evidence: native Windows runner supplied the red case; rebuilt focused test_scaffold and exact GoogleTest case PASS on Linux; diff check and privacy-path scan clean. Fresh Draft-PR CI has been restarted from this commit.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Verification checkpoint at 92caaf9: full local C++ unit/integration suite PASS — 72 test binaries, 0 failures (fresh isolated mcpp home). This includes the rebuilt scaffold, exact selector, runtime, index, and mangling unit coverage. No source change was made by this checkpoint; the Draft PR remains the only delivery channel.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Checkpoint 4e39a8e — codified the requested delivery policy in the implementation plan: every logical change is an independent commit, pushed immediately to the Draft PR with a verification checkpoint; local usernames, absolute workspace paths, and private details are excluded. The ledger and focused design were sanitized, and the former admin/bypass/non-Draft merge wording was replaced with explicit user review plus the normal merge path. Full PR-relative docs scan is clean for local-user/worktree markers; diff check passes.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Native-CI boundary at 4e39a8e: Windows toolchains/regressions failed only while building openxlings/xlings from its current main. The exact selector correctly rejected bare ftxui as mcpplibs.ftxui and pointed to compat.ftxui. This is the already-isolated cross-repository fix in Draft xlings PR #521 (8/8 checks passed), not a new mcpp regression. This CI lane can turn green after #521 is reviewed and normally merged; the bundled-release path additionally needs a new xlings release and explicit mcpp pin update. No bypass will be used.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Checkpoint 0cc6a2a — the full isolated Linux E2E corpus reached 186 pass / 1 fail / 19 capability skips. The sole failure was test 156 reading a private libc from HOME instead of the selected MCPP_HOME, so it poisoned the mcpp process before the nested-tool regression could be exercised. The fixture now honors isolated state; bash syntax and exact E2E 156 PASS. Post-run protection hashes confirm both host xlings configuration and scripts/aur/mcpp-m remain byte-identical. Native Windows workspace-index failure remains a separate active diagnosis; xlings build-chain failures remain isolated to Draft PR #521.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Checkpoint ed4cf64 — addresses the native Windows workspace-member failure from E2E 12. Inherited local index paths are now anchored to the workspace root lexically instead of weakly canonicalized, preserving the manifest-owned path identity across Windows short/case path aliases. Added a focused C++ route test that loads the exact descriptor through a member and hardened the E2E fixture copy/error boundary. Evidence: PmIndexRoute 10/10 PASS, rebuilt release binary, exact E2E 12 PASS, E2E 156 remains PASS, bash syntax/diff/privacy scans clean. Native Windows CI is the acceptance gate for this commit.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Verification checkpoint at ed4cf64: full local C++ unit/integration suite PASS — 72 test binaries, 0 failures. The rebuilt current binary also passes exact E2E 12 and 156. No additional code change was made by this checkpoint; native Windows remains the acceptance authority for the workspace-path repair.

@Sunrisepeak

Copy link
Copy Markdown
Member Author

Trace checkpoint: Draft PR summary and boundary are now synchronized with the enforced workflow: separate pushed logical commits, per-commit checkpoint comments, no history rewriting or admin/bypass merge, terminal latest-head checks only, and privacy-safe public text. The body also records mcpp-index #197 merged and xlings #521 as the remaining reviewed cross-repository dependency.

@speak-agent

Copy link
Copy Markdown
Member

中文交接 checkpoint

已由 speak-agent 推送独立 commit 9f6161adocs: add Chinese PR handoff

完整交接文档:2026-08-09-pr400-handoff-zh.md

文档详细记录了:

  • 用户冻结的模板、SubOS、图形栈和 mcpp-bin AUR 四组设计边界;
  • 26 个既有逻辑 commit 分别做了什么;
  • exact namespace、事务 scaffold、RuntimeBinding、Rule A/B、provider provenance、release manifest 和 AUR reconciler 的实现状态;
  • macOS、Windows、隔离 HOME、真实 SubOS、ELF/SONAME 等问题的症状、根因和修复;
  • 本地 72/72、Linux E2E 审计、release/AUR contract、边界哈希和当前原生 CI 的诚实证据;
  • mcpp-index docs(toolchain): toolchain internals doc (en+zh) + remove .xpkg-exports.json reader #197 已合并、xlings #521 为 Draft 且 8/8 CI 通过的跨仓库状态;
  • 尚未完成的 xlings review/release、mcpp pin、latest-head CI、mcpp release、GitCode、AUR、fresh-home 全生态验证和 issue 收口;
  • 后续每个改动必须继续采用 Draft + 独立 commit + push + 中文 checkpoint,禁止历史改写、admin/bypass 和隐私信息。

当前没有宣称可合并:mcpp latest-head CI 仍需重新等待终态;四个构建 xlings 的失败由其裸 ftxui 声明触发,对应 Draft PR openxlings/xlings#521,不能在 mcpp 中恢复跨命名空间 fallback 来掩盖。

@speak-agent

Copy link
Copy Markdown
Member

验证账本 checkpoint

已由 speak-agent 推送独立 commit 6e42d6cdocs: refresh PR validation handoff

本次只更新 .agents/docs/2026-08-09-mcpp-template-runtime-graphics-aur-validation.md,把此前可验证但尚未写入的状态同步到 Draft PR:

  • 真实 Arch makepkg --printsrcinfo / 非 root makepkg --verifysource 已通过,不再错误标记为 pending;
  • 记录 ed4cf64 本地 72/72、Linux 全量 E2E 审计和精确修复后的诚实边界;
  • 区分原生 CI 已通过、已知 xlings exact-namespace 失败和仍 pending 的任务;
  • 记录 mcpp-index docs(toolchain): toolchain internals doc (en+zh) + remove .xpkg-exports.json reader #197 的真实内容:为不可变 mcpplibs.capi.lua@0.0.3 增加精确 compat.lua@5.4.7 Form-B bridge,合并 commit b974cbb,10/10 CI 通过;
  • 记录 xlings #521 的 compat.ftxui / compat.gtest 修复、8/8 CI 和仍需 review/新 release 的边界;
  • 明确 GitCode、xim-pkgindex、fresh-home、多 SubOS/glibc、OpenGL/Vulkan provenance 仍未完成。

该 commit 仅为文档账本更新,没有把 pending/superseded 任务写成 PASS,也没有改变产品代码或 mcpp-m

@speak-agent

Copy link
Copy Markdown
Member

PR 正文同步 checkpoint

PR 正文已由 speak-agent 全量更新为中文,并与当前设计、交接和验证账本对齐:

  • 写明四组冻结产品决策和已经实现的边界;
  • 写明本地/原生验证中可以确认与不能确认的部分;
  • 更正跨仓库归属:mcpp-index docs(toolchain): toolchain internals doc (en+zh) + remove .xpkg-exports.json reader #197mcpplibs.capi.luacompat.lua bridge;xlings #521 才是 compat.ftxui / compat.gtest 根声明修复;
  • 补上聚焦设计、实施计划、验证账本和中文交接链接;
  • 明确 Draft、逐 commit/checkpoint、隐私安全、普通合并,以及 xlings release、mcpp pin、GitCode/AUR/fresh-home 等未完成事项。

本次是 PR 元数据更新,没有新代码 commit;最新仓库 HEAD 仍为 6e42d6c

@speak-agent

Copy link
Copy Markdown
Member

最新 HEAD / CI checkpoint

  • Draft PR HEAD:6e42d6c21fcdfc5ed9f06454166df6a790b848ec
  • 本地 HEAD 与远端分支 HEAD 一致,实施 worktree clean
  • 最近两个文档 commit 均使用 speak-agent GitHub noreply identity
  • PR:Draft、MERGEABLE、REVIEW_REQUIRED/BLOCKED
  • latest-head 16 个 Linux/macOS/Windows/cross job 已重新排队,目前全部 pending

当前不把任何 pending job 记为 PASS。后续等待终态,并单独确认 Windows E2E 2/2;构建 xlings 的 job 在 #521 合并并发布前预计仍会报告裸 ftxui exact miss。

@speak-agent

Copy link
Copy Markdown
Member

隐私身份 checkpoint

已由 speak-agent 推送独立 commit cf39cb2fix(aur): use privacy-safe release identity

问题与根因:完整 PR added-line/privacy 复核发现,AUR reconciler 的提交身份仍硬编码了个人邮箱;mcpp-bin/PKGBUILD maintainer 行也继续引用该地址。交接 Markdown 另有 3 行尾随空格。

RED:新增 public service identity contract 后,测试因 AUR_COMMIT_NAME/AUR_COMMIT_EMAIL 不存在而报错;新增 rendered PKGBUILD maintainer 断言后,旧模板失败。

GREEN:

  • reconciler 统一使用 speak-agent + GitHub noreply 地址;
  • mcpp-bin/PKGBUILD maintainer 改为同一公共服务身份;
  • 新增两个回归断言,AUR contract suite 现在 12/12;
  • Python compile、git diff --check、PR added-line 隐私扫描通过;
  • 交接 Markdown 尾随空格已修复;
  • scripts/aur/mcpp-m/** 聚合 SHA256 仍为 afb8a647e04483a86985119e07086016f49d55f177ee6257094c336d226113c6,未修改。

本 commit 和 push 本身也使用 speak-agent GitHub noreply identity。最新 HEAD 为 cf39cb2,latest-head CI 已再次重新排队。

@speak-agent

Copy link
Copy Markdown
Member

文档一致性 checkpoint

已由 speak-agent 推送独立 commit 189c6d1docs: record privacy-safe AUR checkpoint

同步内容:

  • 中文交接更新到隐私修复 checkpoint,补入 9f6161a6e42d6ccf39cb2 的职责;
  • AUR contract 从 11/11 更新为 12/12;
  • 验证账本记录 rendered mcpp-bin 和 reconciler 都必须使用公共 speak-agent noreply 身份;
  • 明确 cf39cb2 之后的 latest-head CI 仍需终态,不提前宣称通过。

git diff --check 与 PR added-line 隐私扫描通过。该 commit 仅同步文档证据,最新 HEAD 为 189c6d1

@speak-agent

Copy link
Copy Markdown
Member

Checkpoint:精确索引路由诊断(9a47ccf

已作为独立提交推送到 Draft PR:

  • mcpp add 在“可确认不存在”的错误中增加稳定的 route: 状态;
  • 本地索引只报告 root/pkgs 的 present/absent,不输出绝对路径或 runner/用户目录;
  • 单测覆盖路径隐私、索引根缺失、workspace 根索引继承;
  • E2E 固化 local index 'acme': root present, pkgs present 契约。

验证证据:

  • RED:生产接口尚未实现时,unit/test_pm_index_route 按预期编译失败;
  • GREEN:mcpp test pm_index_route,12/12;
  • GREEN:tests/e2e/12_add_command.sh,OK;
  • git diff --check 通过;新增行隐私扫描未发现本机目录或私人邮箱。

此提交的目的也是让 Windows 原生 E2E 直接暴露失败属于“workspace 索引未继承 / 根不存在 / pkgs 不存在 / 描述符读取”中的哪一层。当前仍保持 Draft,不把这次推送表述为 Windows 问题已经修复;等待最新 HEAD 的原生 CI 证据后继续做下一笔独立修复。

@speak-agent

Copy link
Copy Markdown
Member

Checkpoint:交接与验证账本同步(64803fc

已把此前能确认但文档尚未同步的状态全部写回 Draft PR:

  • ed4cf64 原生矩阵终态:12 success / 5 failure / 1 cancelled;
  • 四个 xlings 裸 ftxui 失败继续归入 xlings #521;
  • Windows E2E 2/2 是独立 mcpp 失败,记录 run 31321961040 / job 93266267511,不再误写为 pending 或“可能已修复”;
  • 记录同一 Windows unit 通过、精确 artifact 在隔离 Wine 重放通过,但这些不能替代 GitHub Windows 原生结论;
  • 记录 9a47ccf 的 RED/GREEN、无路径泄露诊断,以及下一轮只根据 route: 原生证据修复;
  • commit 追踪表补齐 189c6d19a47ccf,并更新未完成项和接手顺序。

文档提交只同步证据,不改变“Draft、待用户 review、不合并/不发布”的边界。最新 HEAD 已推送;后续以该 HEAD 的 Windows E2E 2/2 为准。

@speak-agent

Copy link
Copy Markdown
Member

Draft PR 正文已同步

已把 64803fc 交接账本中的当前事实同步到 PR 正文:补充隐私安全 route 诊断、ed4cf64 原生矩阵终态、独立 Windows E2E 2/2 失败及其 run/job、Wine/单元测试不能替代原生结论,以及最新尚未完成清单。PR 继续保持 Draft。

@speak-agent

Copy link
Copy Markdown
Member

中文任务交接(最新单入口)

当前交接对象:Draft PR #400,分支 HEAD 64803fce2bfc09e581f0d3f58869be5ae69aeab2。远端与实施 worktree HEAD 一致,worktree clean;相对冻结基线共有 32 个追加式 commit,未 amend/rebase/squash/force-push。

完整交接文档:

已做

  1. 包与模板身份

    • 统一 [ns.]name[@version][:tname];省略 ns 严格等于 mcpplibs,version/tname 可省略,不增加 --variant
    • 唯一模板未声明 default = true 时自动成为默认;多模板无默认给确定性错误。
    • 包选择、manifest、add/remove、scaffold、resolver 收口到 exact identity,禁止跨 namespace 静默 fallback。
  2. mcpp new

    • 项目名在配置/索引/网络访问前验证。
    • 使用同父目录 staging、完整渲染和 manifest 校验、sync、跨平台 no-replace commit;失败 rollback,不留下半成品。
  3. Runtime/SubOS

    • mcpp 默认运行时;只允许根项目/workspace 根 [xlings].subos 选择本地 build/run 环境,暂不提供 CLI override。
    • SubOS 不传递给成员或库依赖;RuntimeSelection/RuntimeBinding 在 build/run/test/fast path 共用。
    • Linux glibc/ELF closure、Rule A/B、sticky verdict、stored doctor 已实现。
  4. 图形栈边界

    • mcpp 不探测 GPU、Mesa、NVIDIA、WSL、driver、ICD。
    • xlings/xim provider/sentinel 负责环境事实;mcpp-index 只表达 C++ 包依赖;mcpp 保存 provider-neutral provenance 并可 why runtime
  5. Release/AUR

    • schema-1 不可变 mcpp-release.json、最终公开 inventory 重取和 checksum 复算。
    • AUR 只管理 mcpp-bin;reconciler 支持 release/schedule/manual、Arch vercmp、幂等/单调、fast-forward-only 和有界恢复。
    • 发布提交身份使用公共 speak-agent noreply 契约;mcpp-m 未改。
  6. 跨仓库

  7. 文档和可追溯性

    • 设计、计划、验证账本、中文交接均已进仓库。
    • 每个逻辑变化独立 commit、立即 push、中文 checkpoint;PR 正文已同步当前真实状态。
    • 最新两笔为 9a47ccf(隐私安全 index route 诊断)和 64803fc(同步 Windows 原生证据与交接)。

遇到的问题与当前判断

  1. xlings 裸依赖

    • 新 exact identity 暴露 xlings source 的裸 ftxui:四个平台 lane 失败。
    • 根因在 xlings 声明,不应在 mcpp 恢复 fallback;修复已在 xlings #521,但尚未 review/合并/发布,现有稳定 2026.8.9.2 不包含它。
  2. Windows workspace root local index

    • ed4cf64 原生 Windows E2E 2/2 在 member 内执行 mcpp add acme.util@2.0.0 失败:run 31321961040 / job 93266267511
    • 同一 Windows unit 通过;同一 artifact 在隔离 Wine 下用手工 member 和 mcpp new m1 都通过,所以 unit/Wine 不能代替 GitHub Windows/Git Bash 证据。
    • 9a47ccf 已增加永久 route: 诊断,仅输出 local index 的 root/pkgs present/absent,不泄露绝对路径。当前最新 Windows run 31324173520 正在执行 E2E,尚无终态,不能宣称已修复。
  3. 其它已处理问题

    • macOS BMI E2E 把平台合法 init/link 工作误当全图不稳定,已缩小到测试真正负责的 edge。
    • Windows fixture 持有打开文件导致清理失败,已收口 stream lifetime。
    • E2E chore(manifest): use TOML-native namespaced dep for mcpplibs.cmdline #156 使用错误的 HOME 根注入 libc poison,已改为实际 MCPP_HOME
    • AUR 曾返回 maintenance;只记录外部失败,没有绕过或重复跑旧 release workflow。

已有验证

  • ed4cf64 完整 C++ unit/integration:72/72。
  • 隔离 Linux 全量 E2E:186 pass / 1 fixture fail / 19 skip;fixture 修复后精确重跑通过,但没有冒充最新 HEAD 206-case 全绿。
  • 9a47ccf:先得到缺少诊断 API 的 RED;GREEN 为 PmIndexRoute 12/12、真实 E2E fix(pm): de-inline resolver functions to satisfy musl-gcc 15.1 link #12 OK。
  • release manifest 12/12;AUR state-machine/contract 12/12。
  • 公开 v2026.8.8.4 replay 字节稳定;真实 Arch .SRCINFO、非 root makepkg --verifysource 和两个 Linux checksum 通过。
  • ed4cf64 原生矩阵终态:12 success / 5 failure / 1 cancelled。四个 failure 属于 xlings #521,一个是上述 Windows E2E;cancelled 不算 PASS。
  • 变更通过 diff/privacy、shell、Python、workflow YAML、git diff --check 检查;没有在公开内容中加入本地路径或个人邮箱。

还没有做

  1. 等当前 latest-head Windows E2E 2/2 输出 route:,按原生证据完成 mcpp 内部修复,并重新验证完整矩阵。
  2. 用户 review xlings #521;明确同意后转 ready、普通合并,再发一个包含修复的新 xlings 稳定版本。
  3. mcpp 独立 commit 更新新 xlings pin,并再跑 latest-head 全矩阵。
  4. 用户 review mcpp feat: converge template identity, runtime contracts, and release state #400;没有明确 review 前不转 ready、不合并。
  5. 普通合并后发布 v2026.8.9.1,核验所有平台资产、sidecar、manifest、公开 inventory/checksum。
  6. GitCode/必要的 xim-pkgindex 跟进、AUR mcpp-bin 真正收敛、隔离 fresh-home/SubOS/多 glibc/OpenGL/Vulkan 全生态验收。
  7. feat: converge template selectors, runtime binding, graphics contract, and mcpp-bin AUR #398 随 PR 合并关闭;bug: mcpp new accepts unsafe names and can hang during template rendering #380/[Linux] mcpp run 无法启动:私有 glibc 2.39 与系统库 GLIBC 版本冲突,以及切换 glibc 2.44 过程中的排查与发现 #392/Build-time physics check for form-X binaries (rules A/B): fail at link time instead of crashing at run time #396 只在发布后二次验收后关闭;残留统一回写 汇总:2026-08-09 全量 issue 核验 —— 关闭说明、合并去向,以及 9 条新发现缺陷的收口 #397
  8. C1-C9 和其它开放 issue/PR 的最终清理仍未完成;特殊保留 NULL (保留) #43留言版 | 使用mcpp工具构建的项目(库/工具/应用) #260 及明确 Draft/do-not-merge 项不动。

接手顺序

  1. 确认 GitHub 身份仍是 speak-agent,并确认本地/远端 HEAD 一致且 clean。
  2. 先读 Windows run 31324173520 的 E2E 2/2 route:;每次修复继续 RED → 最小实现 → GREEN → 独立 commit/push/中文 checkpoint。
  3. 不重复 rerun 已被新 HEAD 取代的 workflow;pending/cancelled/superseded 不算通过。
  4. 完成 Windows 内部问题后,请用户 review xlings #521;按普通路径 merge/release,再更新 mcpp pin。
  5. latest-head 全矩阵和交付账本完整后,请用户 review feat: converge template identity, runtime contracts, and release state #400;未经同意不合并/发布。

强制边界

  • PR 保持 Draft。
  • 不 amend/rebase/squash/force-push,不用 admin/bypass。
  • 每笔改动都要独立 commit、立即 push、中文 PR checkpoint。
  • 不在 commit、文档、PR 正文或评论中放本地用户名、绝对目录、个人邮箱、凭据。
  • mcpp-m 不动;SubOS 不传递;mcpp 不探测 GPU;特殊保留 issue 不动。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: converge template selectors, runtime binding, graphics contract, and mcpp-bin AUR

2 participants