Skip to content

feat(release): package the Gitoxide helper authority - #22

Closed
zhiiw wants to merge 4 commits into
codex/gitoxide-projection-data-planefrom
codex/gitoxide-packaged-helper-authority
Closed

feat(release): package the Gitoxide helper authority#22
zhiiw wants to merge 4 commits into
codex/gitoxide-projection-data-planefrom
codex/gitoxide-packaged-helper-authority

Conversation

@zhiiw

@zhiiw zhiiw commented Aug 23, 2026

Copy link
Copy Markdown
Owner

Primary invariant

Only the exact Gitoxide helper produced by the release pipeline and bound by the packaged manifest can become an owner-scoped Runtime Host invocation capability. Callers cannot supply an executable path, discover Git through PATH, or self-assert a digest.

Owner / atomic boundary / failure / rollback

  • Owner: release build + packaged-resource authority; Runtime Host consumes only an opaque capability.
  • Boundary: fresh generated helper bytes are hashed, then the manifest is published by temp-file rename; Runtime admission revalidates canonical path, file identity, byte count, and SHA-256 before every invocation.
  • Failure: malformed manifest, platform mismatch, path escape, symlink/junction, or identity drift fails closed. There is no system-Git or retired bundled-Git fallback.
  • Rollback: discard .generated/gitoxide-helper and rebuild. This slice writes no durable runtime state and has no T1.

Delivery and legal closure

  • builds the locked short-lived Rust helper for release packaging;
  • packages one binary plus a strict v1 manifest;
  • generates Cargo third-party notices from the exact Cargo.lock graph;
  • requires the helper, manifest, and notices in current packaged-app verification;
  • keeps the outer trust root explicit: the platform-signed application owns resourcesRoot; the manifest is an integrity declaration, not an independent signature.

Verification

  • helper preparation tests: 2 passed;
  • packaged capability tests: 3 passed;
  • focused packaged-resource/product-release tests: 5 passed;
  • Runtime Host build and ASF header check passed;
  • three-platform Rust release build, notice generation, and real helper tests run in the Gitoxide workflow.

This is a stacked Draft on the fresh-projection data-plane branch. It deliberately does not add the M1.3 product consumer; that follows as a separate composition slice.

中文说明

主要不变量

只有发布流程构建、由 packaged manifest 绑定的 exact Gitoxide helper,才能变成 Runtime Host 的 owner-bound 调用 capability。普通调用方不能传裸路径、不能从 PATH 发现 Git,也不能自报摘要获得权限。

Owner、原子边界、失败与回滚

  • Owner:release build 与 packaged-resource authority;Runtime Host 只消费 opaque capability。
  • 原子边界:fresh 生成目录中的 helper 先完成哈希,再用临时 manifest rename 发布;每次调用前重验 canonical path、文件身份、bytes 和 SHA-256。
  • 失败状态:manifest、平台、路径、symlink/junction 或身份任一不一致都 fail closed;不回退 system Git 或已移除的 bundled Git。
  • 回滚:删除 .generated/gitoxide-helper 后重新构建。本切片不写 durable state,也没有 T1。

同时从 exact Cargo.lock 生成并随包交付第三方许可证清单。外层 trust root 明确是平台签名应用持有的 resourcesRoot;manifest 只是完整性声明,不被描述成独立密码学签名。

这是叠在 fresh-projection data plane 上的 Draft。M1.3 的真实产品 consumer 会在下一独立 composition 切片接入。

@zhiiw
zhiiw force-pushed the codex/gitoxide-projection-data-plane branch from a841f6f to cf8a9ed Compare August 24, 2026 03:10
@zhiiw
zhiiw force-pushed the codex/gitoxide-packaged-helper-authority branch from ebc62c7 to c47f137 Compare August 24, 2026 03:11
@zhiiw
zhiiw force-pushed the codex/gitoxide-projection-data-plane branch from cf8a9ed to b38260c Compare August 24, 2026 03:48
@zhiiw
zhiiw force-pushed the codex/gitoxide-packaged-helper-authority branch from c47f137 to b1a6872 Compare August 24, 2026 03:49
@zhiiw
zhiiw force-pushed the codex/gitoxide-projection-data-plane branch from b38260c to 820971f Compare August 24, 2026 03:55
@zhiiw
zhiiw force-pushed the codex/gitoxide-packaged-helper-authority branch from b1a6872 to 220a0d0 Compare August 24, 2026 03:55
@zhiiw
zhiiw force-pushed the codex/gitoxide-projection-data-plane branch from 820971f to 59fe107 Compare August 24, 2026 04:05
@zhiiw
zhiiw force-pushed the codex/gitoxide-packaged-helper-authority branch from 220a0d0 to 798dbf6 Compare August 24, 2026 04:05
@zhiiw
zhiiw force-pushed the codex/gitoxide-projection-data-plane branch from 59fe107 to 161a9a9 Compare August 24, 2026 04:18
@zhiiw
zhiiw force-pushed the codex/gitoxide-packaged-helper-authority branch from 798dbf6 to 47c6774 Compare August 24, 2026 04:19
@zhiiw

zhiiw commented Aug 30, 2026

Copy link
Copy Markdown
Owner Author

Closed as an obsolete extraction/integration slice. The current delivery path is the merged Gitoxide foundation followed by #40 -> #41 -> #42. This PR remains available as design and implementation history.

中文说明

该 PR 属于旧 extraction/integration 栈,现已失去独立合并价值。当前交付路径是已合并的 Gitoxide 基础,然后依次审查 #40#41#42。这里继续保留设计、实现与审查历史。

@zhiiw zhiiw closed this Aug 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant