format: add Name context type and guard to TS types#238
Merged
Conversation
The `name` context has a schema (program/context/name) but was never
mirrored into the TypeScript types — no Context.Name interface, no
isName guard, and it was absent from the Context union and isContext.
Add Name (`{ name: string }`) and isName, mirroring isFrame, and wire
them into the union and isContext (schema-canonical order: name first).
Adds schema-guard test coverage for the name context.
Unblocks upcoming consumers (name as invoke/return correlation id, #26)
before compiler/UI start reading names. Behavior-preserving addition.
Contributor
|
gnidan
added a commit
that referenced
this pull request
Jul 3, 2026
…e/return/revert, scope `name` to pick (#240) * format: correct activation correlation — `activation` id, scope `name` to pick #236 overloaded the `name` context to also correlate invoke/return, but a sibling `name` inherently *declares* the context it sits in — so a `return` carrying the same `name` would be a second declaration, violating the per-name uniqueness. Correct it with two distinct identifiers for two distinct jobs (gnidan's ruling): - `name` — scope back to its ergonomic home: the identifier a `pick` selects by. Revert #236's cross-context-reference over-scope in name.schema.yaml + name.mdx; uniqueness is only "distinct among a pick's alternatives". (The #238 Context.Name TS type stays valid.) - `activation` — a new opaque-string correlation id living INSIDE the invoke/return/revert objects. The invoke that opens an activation and the return/revert that closes it carry the same value; distinct activations carry distinct values, unique per program. Symmetric (no declare/reference asymmetry) and flat — a tailcall back-edge's co-located return+invoke each carry their own `activation`, no `gather` forced. invoke.mdx: replace "Correlating with `name`" with "Correlating with `activation`" — id-based pairing, order-independent, push/pop the id-less fallback; membership stays marker-only. Kept out of the shared function-identity schema (identity = which function; activation = which instance). Spec + schema only; TS types (activation on Invoke/Return/Revert) follow separately. * format: tighten activation prose per review (membership scope, 'identifies') Per writer review of #240: (A) the opening of 'Correlating with activation' lumped membership into the well-nested-order clause, but membership is the order-independent inline marker (as the section's own para 4 says) — the blind spot is a pure push/pop pairing problem. Scope the sentence to push/pop only. (B) 'activation names which instance' → 'identifies', avoiding an echo of the now-disentangled name context.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #28.
The
namecontext has a schema (program/context/name) but was nevermirrored into the TypeScript types — there was no
Context.Nameinterface, no
isNameguard, andnamewas absent from both theContextunion and theisContextguard list. Pre-existing gap,independent of #236 (which is docs/schema-desc only).
This adds
Context.Name({ name: string }) andisName, mirroringisFrame, and wires them into theContextunion andisContextinschema-canonical order (name first). Adds schema-guard test coverage for
the name context.
Unblocks upcoming consumers —
nameas an invoke/return correlation id(#26) — before compiler/UI start reading names. Behavior-preserving
addition; no structural schema change.
Scope note: pairing/correlation logic (matching an invoke's declared
name to its return) is deliberately not here — that's trace-
reconstruction logic for the debugger/UI layer (#23/#25), not the format
data model.