Skip to content

Propose abstract passable data model#125

Merged
kriskowal merged 1 commit intomainfrom
kriskowal-model
Jan 6, 2025
Merged

Propose abstract passable data model#125
kriskowal merged 1 commit intomainfrom
kriskowal-model

Conversation

@kriskowal
Copy link
Copy Markdown
Collaborator

Closes #92 by migrating (and lightly editing) the abstract data model consensus positions from the wiki into the draft specifications.

@kriskowal kriskowal requested a review from tsyesika July 9, 2024 21:41
@kriskowal kriskowal force-pushed the kriskowal-model branch 2 times, most recently from f2b12e9 to e9e7b18 Compare July 9, 2024 21:47
@kriskowal kriskowal force-pushed the kriskowal-model branch 2 times, most recently from 972a305 to 9e38eba Compare September 11, 2024 01:05
@kriskowal kriskowal force-pushed the kriskowal-model branch 3 times, most recently from 3359c73 to 0a56139 Compare September 11, 2024 04:51
@kriskowal kriskowal removed the Meeting label Oct 8, 2024
@kriskowal kriskowal force-pushed the kriskowal-model branch 3 times, most recently from ea1657c to 1730d4c Compare November 15, 2024 22:48
@kriskowal
Copy link
Copy Markdown
Collaborator Author

I believe this to be ready for another round of review. All changes I’ve applied are in a second commit that I intend to be squashed before merging. In summary, I’ve responded to all above feedback as noted in replies, but particularly:

  1. Added a summary of all value types, dividing them into 3 instead of 2 categories: Atom, Container, Reference, such that the two reference types can be clearly distinguished.
  2. Added an appendix on the meaning of Pass Invariant Equality to unravel some unclear prose
  3. Provided a more clear explanation of the invariant preserved with separate Null and Undefined. It is narrow.
  4. I’ve used Reference instead of Capability throughout
  5. I’ve used Target instead of Remotable throughout

@kriskowal
Copy link
Copy Markdown
Collaborator Author

I’ve posted a subsequent commit that clarifies the various pass invariants and makes them explicit for every model type. I’ve also factored out the JSON invariants and referenced them for the two applicable caveats for Null and Float64. I also used the tentative aspirational example for marked targets in JavaScript, such that they can handle all deliveries, although this is not consistent with Endo’s implementation yet. For @erights consideration in particular.

Copy link
Copy Markdown
Collaborator

@erights erights left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

Copy link
Copy Markdown
Collaborator

@gibson042 gibson042 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly editorial suggestions, including phrasing, typo fixes, and Markdown rendering improvements. Note also the general pattern that generated heading ids include all alphabetic text content (e.g., # Reference (Capability) corresponds with slug "#reference-capability" rather than "#reference").

Copy link
Copy Markdown
Collaborator

@erights erights left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything else still looks good enough to me, but I went back to "Request changes" because of the aspirational representation choice shown for a JS target, which I doubt is close to anything we'll actually want to do. Suggest discussing this at Endo meeting on 11 December. But until then please show the representation we actually use.

@kriskowal
Copy link
Copy Markdown
Collaborator Author

I’ve adopted editorial recommendations, merged Identity and Equality into Equality, and removed the example for JavaScript targets ('to be proposed') since the current implementation of Endo CapTP does not reflect an ability to receive arbitrary deliveries and so doesn’t make a good example. When we have a way for a target to handle arbitrary deliveries (where the first argument is not a selector), I intend to update. That will also provide a suitable basis for the echo function we will need to test round-tripping of all deliverable messages.

Copy link
Copy Markdown
Collaborator

@erights erights left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@kriskowal kriskowal requested a review from tsyesika December 10, 2024 16:33
@kriskowal
Copy link
Copy Markdown
Collaborator Author

Posted a fresh draft, now pending @tsyesika’s approval only.

Copy link
Copy Markdown
Collaborator

@gibson042 gibson042 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few remaining nits.

erights added a commit to endojs/endo that referenced this pull request Jan 1, 2025
Closes: #XXXX
Refs: 
- ocapn/ocapn#125 
-
https://github.com/ocapn/ocapn/blob/28af626441da888c4a520309222e18266dd2f1f2/draft-specifications/Model.md
- #2452 
  - Agoric/agoric-sdk#10084 
- https://github.com/tc39/proposal-immutable-arraybuffer 
  - #2414

## Description

Revise Smallcaps cheatsheet to track OCapn as of
ocapn/ocapn#125

### Security Considerations

none

### Scaling Considerations

none

### Documentation Considerations

the point. The cheatsheet was becoming too stale.

### Testing Considerations

none

### Compatibility Considerations

none

### Upgrade Considerations

none
@kriskowal kriskowal merged commit f8ac086 into main Jan 6, 2025
@kriskowal kriskowal deleted the kriskowal-model branch January 6, 2025 22:18
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.

Working document to capture current consensus on abstract syntax (data model)

8 participants