-
Notifications
You must be signed in to change notification settings - Fork 1
Require posture on strand creation #544
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
1eacd38
03a8f01
2164cc4
dea5381
334648c
0c7ca74
a5c45a7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,57 @@ | ||||||||||||||||||||||||
| <!-- SPDX-License-Identifier: Apache-2.0 OR LicenseRef-MIND-UCAL-1.0 --> | ||||||||||||||||||||||||
| <!-- © James Ross Ω FLYING•ROBOTS <https://github.com/flyingrobots> --> | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # CI-003 — Append-Only Braid Membership | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| Legend: [WARP — Causal History] | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| ## Idea | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| Model braids as append-only witnessed relationships over strand intervals, | ||||||||||||||||||||||||
| not as binary pairings and not as permanent strand merges. | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| A braid can begin with multiple members and later weave additional strands | ||||||||||||||||||||||||
| into the relation without pretending those strands were present from the | ||||||||||||||||||||||||
| beginning: | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| ```text | ||||||||||||||||||||||||
| t0: braid B includes s0 and s1 | ||||||||||||||||||||||||
| t1: braid B weaves in s2 | ||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| The source of truth should be a braid event log: | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| ```text | ||||||||||||||||||||||||
| BraidCreated { members: [s0, s1], ... } | ||||||||||||||||||||||||
| BraidMemberWovenIn { member: s2, ... } | ||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| Materialized braid views can report current membership, but historical views | ||||||||||||||||||||||||
| must preserve membership as of the requested coordinate. | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| ## Why | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| 1. **Doctrine:** Braided does not mean settled. Related does not mean admitted. | ||||||||||||||||||||||||
| 2. **Causality:** Weaving in `s2` at `t1` must not rewrite `t0` membership. | ||||||||||||||||||||||||
| 3. **Scale:** Real review/conflict/proposal workflows can involve more than | ||||||||||||||||||||||||
| two strands. | ||||||||||||||||||||||||
| 4. **Posture:** A braid may reveal a shared projection or relationship summary | ||||||||||||||||||||||||
| while sealed member source chains remain AuthorOnly. | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| ## Acceptance Sketch | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| - Create braid `B` with `s0` and `s1` at `t0`. | ||||||||||||||||||||||||
| - Weave `s2` into `B` at `t1`. | ||||||||||||||||||||||||
| - Current braid view after `t1` includes `s0`, `s1`, and `s2`. | ||||||||||||||||||||||||
| - Historical braid view before `t1` excludes `s2`. | ||||||||||||||||||||||||
| - Braid membership changes are append-only events, not mutable list rewrites. | ||||||||||||||||||||||||
| - A shared braid projection can reveal the relationship without revealing a | ||||||||||||||||||||||||
| sealed member source chain. | ||||||||||||||||||||||||
| - Settlement can admit a braid projection without collapsing member strands. | ||||||||||||||||||||||||
| - Weaving in an AuthorOnly member requires authority or records a sealed | ||||||||||||||||||||||||
| member reference. | ||||||||||||||||||||||||
|
Comment on lines
+48
to
+52
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Separate allowed weaving from sealed audit records. The AuthorOnly bullet is ambiguous about whether an unauthorized weave is admitted or rejected and merely recorded. Those are different contracts; spell out the rejection path explicitly so implementers don’t treat a sealed reference as membership. Suggested wording- - Weaving in an AuthorOnly member requires authority or records a sealed
- member reference.
+ - Weaving in an AuthorOnly member requires authority.
+ - Unauthorized weave attempts are rejected; any sealed member reference is
+ audit-only and does not change membership.📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| ## Effort | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| Medium-Large — requires braid event types, interval/member views, revelation | ||||||||||||||||||||||||
| policy around sealed members, and settlement/projection integration. | ||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tighten the compare boundary to local authority.
“Locally held strand suffix” is broader than the finalized compare doctrine and can be read as any locally present strand being inspectable. Say “held under local authority” so this entry doesn’t drift from the compare-vs-plan/settle split.
Suggested wording
📝 Committable suggestion
🤖 Prompt for AI Agents