Skip to content

format: add Name context type and guard to TS types#238

Merged
gnidan merged 1 commit into
transform-contextfrom
debugger-name-context
Jul 3, 2026
Merged

format: add Name context type and guard to TS types#238
gnidan merged 1 commit into
transform-contextfrom
debugger-name-context

Conversation

@gnidan

@gnidan gnidan commented Jul 3, 2026

Copy link
Copy Markdown
Member

Closes #28.

The name context has a schema (program/context/name) but was never
mirrored into the TypeScript types — there was no Context.Name
interface, no isName guard, and name was absent from both the
Context union and the isContext guard list. Pre-existing gap,
independent of #236 (which is docs/schema-desc only).

This adds Context.Name ({ name: string }) and isName, mirroring
isFrame, and wires them into the Context union and isContext in
schema-canonical order (name first). Adds schema-guard test coverage for
the name context.

Unblocks upcoming consumers — name as 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.

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.
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-07-03 01:42 UTC

@gnidan gnidan merged commit b2d9e38 into transform-context Jul 3, 2026
4 checks passed
@gnidan gnidan deleted the debugger-name-context branch July 3, 2026 01:38
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.
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