Skip to content

feat(composition): fragments join the properties of a subject, and a set two fragments declare differently is refused - #3

Draft
FBumann wants to merge 2 commits into
claude/sets-properties-prototype-9m3zu6-2-callsfrom
claude/sets-properties-prototype-9m3zu6-3-merging
Draft

FBumann wants to merge 2 commits into
claude/sets-properties-prototype-9m3zu6-2-callsfrom
claude/sets-properties-prototype-9m3zu6-3-merging

Conversation

@FBumann

@FBumann FBumann commented Oct 23, 2026

Copy link
Copy Markdown

Prompt: 3. Merging: property maps joined per subject, and a differing set refused.

Note

The following content was generated by AI.

What this changes

merge joins the properties of one subject across fragments, and a property that two fragments declare must be identical in both. A set is shared as a relation is, so two fragments that declare it differently are refused. Stacked on #2.

Why

This is PR 3 of the stack in which sets and properties replace relations.

What each verb does now

merge:

written result
generator: {bus: bus} in one fragment and generator: {zone: zone} in another generator: {bus: bus, zone: zone}
bus: bus in one fragment and bus: {into: bus} in another one property: both forms say the same
one description on a property carried, because prose is not a claim
site: bus in one fragment and site: zone in another refused: say different things about the property 'generator.site': {'into': 'bus'} against {'into': 'zone'}. Make the two identical, or give one of them a name of its own.
a property or a set whose missing: differs between fragments refused, as for a relation
a set with its members in another order refused, because the two are not identical

override lays a set or a property over the base as it lays a relation:

patch result
a new property, or a restatement added, or kept
{missing: absent} on a property written bus: bus that field changes
bus: null or generator: null refused: a patch cannot remove a property or a subject
a property with another into: refused, with the same message as for a relation
a set with other dims:, or cover: null refused
missing: on a set changes

How it works: _flat lays the properties out as one entry per property, keyed subject.property and in the long form. The existing rules for a shared entry (_agreed and _shared) then read each property, and _nested puts the result back. _shared now takes the label and the schema class of its entries, and _declared reads the validated fields rather than the serialised form, which writes a property as a bare string.

Departures, and what this PR does not do
Gates, and the mutation table
  • Passed: pixi run lint, pixi run test (3214 passed, 1 skipped) and pixi run docs-build (strict).
  • Not run: compile-tex. Tectonic cannot download its bundle in this container.
  • No CI run. GitHub Actions has never run in this fork, and dispatching ci.yml returns 404. Actions must be turned on in the fork's settings.
  • Mutation table: the same script as feat(language): a file may declare sets of labels and the properties of a dimension or a set #1 took it, and the tree came back clean.
guard deleted suite
a set is shared caught (5)
merge joins the properties caught (3)
a short form reads as into caught (6)
a patch cannot remove a subject caught
a patch changes missing: on anything but a dimension caught (2)
a restatement reads the fields, not the short form caught (2)

Generated by Claude Code

…set two fragments declare differently is refused

`merge` treats a set as it treats a relation, and joins the properties of
one subject across fragments, holding a property two of them declare to be
identical. `override` lays a set or a property over as a relation: added,
restated, or its `missing:` changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W6yvGzZN2iR4WyA9RumvvJ
@coderabbitai

coderabbitai Bot commented Oct 23, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

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.

2 participants