Skip to content

Transport finite self-referencing family batches with typed refs - #20

Merged
ctoth merged 4 commits into
masterfrom
feat/self-reference-family-transport-303
Oct 20, 2026
Merged

ctoth merged 4 commits into
masterfrom
feat/self-reference-family-transport-303

Conversation

@ctoth

@ctoth ctoth commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

Self-referencing family rows need their targets' result identities before their references can be rewritten. Add FamilyInstanceMap.transport_family for an explicit finite document batch: plan affected family-owned identities through the declared incoming self-reference graph, then run the existing validated row transport with the complete image map. Cycles and unchanged-external-reference referrers work without recursive hashes or an iteration limit. An identity operation inconsistent with the resolved self references fails the existing single-image check.

Add FamilyDefinition.ref_from_document for flat identity placement. It constructs the actual typed reference through the placement's declared factory, so a consumer can prepare transported documents without assuming references are strings. No codec, storage format, hash policy or commit/ref behavior changes.

Validation: 18 focused owner tests passed, including all orderings of a mutual cycle, self-loop, referrer closure, unchanged objects/IDs, dangling source rejection, incompatible identity rejection and real typed-ref store preparation. Propstore's 35 focused consumer regressions also passed using this source. Full matrix CI supplies lint/typecheck/tests/build verification.

Supports the separate Propstore #303 coreference transport slice. Leave draft for independent review; no consumer semantics are implemented here.

@ctoth
ctoth marked this pull request as ready for review October 20, 2026 05:56
@ctoth
ctoth merged commit f3668cc into master Oct 20, 2026
8 checks passed
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.

1 participant