Problem
der init-workspace records no link to a parent repo, and the only existing
way to set up sync — remote-add — writes the remote as a content object
(genre Repo). A subsequent push :z (or any query catching it) would ship
that pointer object back to the parent, which is nonsensical. A workspace's
parent relationship is infrastructure, not content.
Proposed feature
Record a workspace's parent as a pinned-by-pubkey entry in
.dodder-workspace (never a content object), reached via a position-scoped
% sentinel in push/pull, plus a new der sync for the bidirectional
flow.
[parent] pin in .dodder-workspace: pubkey (authoritative identity,
verified on every use), locator, location-type, original-id
(scope-prefixed, for guidance/debugging).
% in remote-position of push/pull resolves to the verified pin.
Distinct from %'s existing query-position virtual-marker meaning — no
collision.
der sync [query] = pull % then push %, local conflict resolution
between (halt before push if pull leaves conflicts).
- Parent inference at
init-workspace (and der set-parent): 0 in-scope
repos → no pin; 1 → silent pin; 2+ → interactive picker
(clown-resume-styled bubbles/list, grouped by scope, dialog-local tridex
for pubkey shortening), hard-fail non-TTY.
- New CLI:
der set-parent [id] / -unset, der init-workspace -parent <id>
/ -no-parent, der info-workspace surfaces the pin.
Purely additive: remote-add + explicit der push /name unchanged.
Dependency
Builds on the in-flight repo-id resolution / pinning layer (scope
enumeration: cwd/user/system, ../ distance). Cannot land until that exists.
Design doc
Full design committed at
docs/plans/2026-06-24-workspace-parent-linking-design.md. Likely warrants an
FDR once implemented.
:clown: clown 0.3.14+295fae7
amarbel-llc/clown@295fae7
Problem
der init-workspacerecords no link to a parent repo, and the only existingway to set up sync —
remote-add— writes the remote as a content object(genre
Repo). A subsequentpush :z(or any query catching it) would shipthat pointer object back to the parent, which is nonsensical. A workspace's
parent relationship is infrastructure, not content.
Proposed feature
Record a workspace's parent as a pinned-by-pubkey entry in
.dodder-workspace(never a content object), reached via a position-scoped%sentinel inpush/pull, plus a newder syncfor the bidirectionalflow.
[parent]pin in.dodder-workspace:pubkey(authoritative identity,verified on every use),
locator,location-type,original-id(scope-prefixed, for guidance/debugging).
%in remote-position ofpush/pullresolves to the verified pin.Distinct from
%'s existing query-position virtual-marker meaning — nocollision.
der sync [query]= pull%then push%, local conflict resolutionbetween (halt before push if pull leaves conflicts).
init-workspace(andder set-parent): 0 in-scoperepos → no pin; 1 → silent pin; 2+ → interactive picker
(clown-
resume-styledbubbles/list, grouped by scope, dialog-local tridexfor pubkey shortening), hard-fail non-TTY.
der set-parent [id]/-unset,der init-workspace -parent <id>/
-no-parent,der info-workspacesurfaces the pin.Purely additive:
remote-add+ explicitder push /nameunchanged.Dependency
Builds on the in-flight repo-id resolution / pinning layer (scope
enumeration: cwd/user/system,
../distance). Cannot land until that exists.Design doc
Full design committed at
docs/plans/2026-06-24-workspace-parent-linking-design.md. Likely warrants anFDR once implemented.
:clown: clown 0.3.14+295fae7
amarbel-llc/clown@295fae7