Skip to content

feat: promise id lineage separator '.' -> ':' - #462

Open
Tomperez98 wants to merge 1 commit into
mainfrom
tomas/id-formatting
Open

feat: promise id lineage separator '.' -> ':'#462
Tomperez98 wants to merge 1 commit into
mainfrom
tomas/id-formatting

Conversation

@Tomperez98

@Tomperez98 Tomperez98 commented Aug 10, 2026

Copy link
Copy Markdown
Member

Adopts the <promiseId>:<lineage> id convention. A single : separates the
promiseId (the lineage origin) from the lineage; within the lineage the
separator stays .
. So:

  • foo.1 -> foo:1 (promiseId foo, lineage 1)
  • foo.1.1 -> foo:1.1 (promiseId foo, lineage 1.1)

What changed:

  • Id generation: the first lineage segment minted off a bare promiseId
    (id == origin) uses :; deeper segments use .. Detached ids mint
    {prefix}:d{hash} (their first lineage segment off the fixed prefix).
  • Origin derivation splits on the first : (NATS routing, where applicable).
  • Updated fixtures/tests.

The schedule promise-id template keeps . ({{.id}}.{{.timestamp}}): a
scheduled promise is a self-rooted promiseId, not a lineage. The app id prefix
(RESONATE_PREFIX, :-joined) is unchanged. Companion server-side changes
handle the matching validation and origin rules.

Only the promiseId<->lineage boundary uses ':'; lineage segments keep '.' (foo.1 -> foo:1, foo.1.1 -> foo:1.1).
@Tomperez98
Tomperez98 force-pushed the tomas/id-formatting branch from ae8a7fc to d8d6637 Compare August 10, 2026 23:05
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