Skip to content

feat(git): materialize exact Gitoxide projections - #19

Closed
zhiiw wants to merge 3 commits into
codex/gitoxide-candidate-ref-data-planefrom
codex/gitoxide-projection-data-plane
Closed

feat(git): materialize exact Gitoxide projections#19
zhiiw wants to merge 3 commits into
codex/gitoxide-candidate-ref-data-planefrom
codex/gitoxide-projection-data-plane

Conversation

@zhiiw

@zhiiw zhiiw commented Aug 23, 2026

Copy link
Copy Markdown
Owner

Summary

This stacked Draft completes the first Gitoxide workspace data plane with a fresh, exact projection boundary:

Only an owner-bound managed-repository capability may materialize its exact accepted commit into a previously absent staging directory, and only the resulting projection capability may observe whether every path, type, byte, and supported mode still matches the immutable Git tree.

What this proves

  • repository path, accepted commit, and tree remain capability-bound rather than caller-asserted;
  • projection roots use a fresh-directory boundary and files use create-new semantics;
  • the helper writes no .git metadata and creates no linked worktree/control capability;
  • source constraints and bounded file/tree budgets are enforced again during materialization;
  • observation detects missing, extra, type-changed, same-size content-drifted, and POSIX executable-mode-drifted paths;
  • regular files are opened with no-follow/reparse-point semantics during observation;
  • response loss converges only when an existing destination is still an exact projection of the accepted tree; a partial/drifted directory is never overwritten;
  • the helper never deletes a projection. Private staging cleanup, rotation, and quarantine remain composition-owner responsibilities.

Deliberate exclusions

No Desktop/CLI consumer, canonical projection rotation, quarantine GC, SQLite accepted head, or Write/Edit recovery is added here. Power-loss durability is not claimed. M1.3 product composition is the next slice; M2.2/M2.4 stay deferred until that composition consumes this data plane.

Verification

  • Core, Storage, Runtime, and Runtime Host builds pass locally.
  • The parent candidate/ref CAS PR is green on Linux, macOS, and Windows.
  • This PR uses the same three-platform workflow for Rust formatting/tests and real JavaScript helper authority tests.

Depends on #18. Keep Draft until all platform checks pass and its parent lands.

中文说明

这个堆叠 Draft 补齐第一版 Gitoxide workspace 数据面的 fresh projection 边界:只有 owner-bound managed-repository capability 能把绑定的 exact accepted commit 物化到此前不存在的 staging 目录;只有随结果签发的 projection capability 能观察该目录是否仍与 immutable Git tree 完全一致。

helper 不写 .git、不创建 linked worktree,也不删除任何 projection。observer 会检查缺失/额外路径、类型、bounded content hash,以及 POSIX executable bit,并以 no-follow/reparse-point 方式打开普通文件。响应丢失后,只有现存目录仍是 exact projection 才返回同一成功结果;partial/drifted 目录不会被覆盖。

本 PR 不做 Desktop/CLI 接线、canonical rotation、quarantine GC、SQLite accepted head 或 Write/Edit recovery。下一步是 M1.3 product composition;M2.2/M2.4 继续等待数据面与产品接线完成。

@zhiiw
zhiiw force-pushed the codex/gitoxide-candidate-ref-data-plane branch from 5f584de to d052a88 Compare August 23, 2026 16:29
@zhiiw
zhiiw force-pushed the codex/gitoxide-projection-data-plane branch from bbdb105 to a04cefb Compare August 23, 2026 16:29
@zhiiw
zhiiw force-pushed the codex/gitoxide-candidate-ref-data-plane branch from d052a88 to c612f37 Compare August 23, 2026 16:32
@zhiiw
zhiiw force-pushed the codex/gitoxide-projection-data-plane branch from a04cefb to a841f6f Compare August 23, 2026 16:32
@zhiiw
zhiiw force-pushed the codex/gitoxide-candidate-ref-data-plane branch from c612f37 to 4ee234e Compare August 24, 2026 03:09
@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-candidate-ref-data-plane branch from 4ee234e to 9295cc7 Compare August 24, 2026 03:48
@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-candidate-ref-data-plane branch from 9295cc7 to 9147bda Compare August 24, 2026 03:55
@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-candidate-ref-data-plane branch from 9147bda to c739ed9 Compare August 24, 2026 04:05
@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-candidate-ref-data-plane branch from c739ed9 to faacbec Compare August 24, 2026 04:18
@zhiiw
zhiiw force-pushed the codex/gitoxide-projection-data-plane branch from 59fe107 to 161a9a9 Compare August 24, 2026 04:18
@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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant