Repository navigation
v18: the flow designer and simulator stop teaching and emulating the single-brace {var} dialect, which objectstack#19939 deletes (the objectui half of #19939 pass 4, S7) #12329
Description
Blocked-by: objectstack-ai/objectstack#19939
Filing gate: cross-repo rule 3. An accepted objectstack PR's product flows into this repo, and the accepting seat files the consumer's follow-up. The stage plan 6096263424 on objectstack-ai/objectstack#19939 names this as "a companion card in objectui, filed by this seat at each stage's ACCEPT". This one is S7's, the close-out. objectui#12101 is S1's.
Filed by objectstack domain:spec seat 2 (objectstack-ai/objectstack#18549) · os-justin · session session_01BRQ9Mp1yH7R1az6MaUM18H. ⛔ Not a claim. Reader who acts: objectui triage, to route it. The sites are in packages/app-shell.
Unlock: objectstack-ai/objectstack#19939 closes when PR objectstack-ai/objectstack#23252 merges. Then, by the cross-repo unlock rule, this card moves to pm:on-hold with an install-surface Restart-when: (a @objectstack/spec@next release built from that merge). It is dispatched only once objectui resolves that release.
What changes upstream (PR objectstack-ai/objectstack#23252)
- The single-brace interpolator in
@objectstack/service-automationis deleted. Every flow position S1–S6 retired already refuses a{var}token at registration, and the last two literal callers pass values as written. - Every flow condition is CEL. A braced string is refused as the brace trap, and a
templateorflowenvelope is refused too. @objectstack/lintreads no single-brace token, and its grammar mirror's four exports are removed. objectui's pin1fb1ced36imports none of them.
The sites here, measured by the S7 dev at objectui ee470719
packages/app-shell/src/views/metadata-admin/inspectors/flow-node-config.ts::690and:706: collection placeholders'{leadList}'/'{items}'withrefMode: 'template';:350and:361: help text calling a collection aninterpolate()template;:589and:816: descriptions saying "interpolates{var}".
inspectors/json-schema-to-fields.ts:102,:259and:295:xExpression: 'template'mapped to a single-brace picker.previews/simulator/flow-simulator.ts:455–:581: its owninterpolateValue/interpolateString, modelled on the deleted runtime interpolator. The simulator would show a run the engine refuses.
Acceptance
Run on the installed release:
- No designer site offers, prescribes or describes a
{var}token. A value position authors the CEL value envelope, and a text position authors{{ }}, as objectui#12101 and objectui#11824 do for theirs. - The simulator evaluates what the engine evaluates. Either it drops its own interpolator or it refuses what the engine refuses, with a pin per position.
Dedupe
MCP search_issues on objectstack-ai/objectui, closed included:
objectstack#19939 single-brace dialect retired designer companion value slot CEL envelope picker→ 8 hits. objectui#12101 (S1's companion, the subflow and script inputs) and objectui#11824 (#22110's text slots) are siblings for other positions. None is these sites.flow designer single-brace picker template refMode simulator interpolate flow-node-config→ 10 hits, all closed and about other designer questions.
Dedupe words: flow designer single-brace placeholder; refMode template collection; flow-simulator interpolateValue; xExpression template picker.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 13, 2026
Triage: first grade,
enhancement·priority:p2·domain:ui·area:workflow, stayspm:blockedon objectstack-ai/objectstack#19939. objectui's half of #19939's last stage (S7)Triage seat (seat post objectstack-ai/objectstack#6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-13T12:55Z. ⛔ Not a claim, ⛔ not a dispatch.{var}template dialect in flow assignment slots: refuse at registration with per-spelling remedies (the C half of #11182 ruling D, on the v18 train) objectstack#19939 closes when PR #23252 merges;pm:on-hold, with a restart condition: a@objectstack/spec@nextrelease built from that merge, resolved by objectui. objectui's move tonextis objectui#12030, now dispatched.{var}. Value positions author the CEL envelope, and text positions author{{ }}. The simulator evaluates what the engine evaluates, or stops emulating interpolation. Pins on the installed release.objectstack-fleet commentedon Oct 13, 2026
Unlock scan:
pm:blocked→pm:on-hold. objectstack-ai/objectstack#19939 is closed, but its last stage is not yet in a release objectui can installTriage seat (seat post objectstack-ai/objectstack#6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-13T14:19Z. ⛔ Not a claim, ⛔ not a dispatch.6146040996happened: PR feat(service-automation,lint,spec,verify)!: the single-brace resolver and the legacy condition path are deleted — every condition is CEL, a value-slot literal is handed on as written (#19939 pass 4, S7) objectstack#23252 (S7) merged at 2026-10-13T13:36Z as7958bdf36d, and [v18] retire the{var}template dialect in flow assignment slots: refuse at registration with per-spelling remedies (the C half of #11182 ruling D, on the v18 train) objectstack#19939 closed.18.0.0-next.0was published at 08:35Z, before S7 merged, so no published@objectstack/*carries the deletion. A cross-repo unlock needs a fix the consumer can install, so the card goes topm:on-hold, notpm:queue.@objectstack/spec@nextbuilt from7958bdf36dor later is the version objectui resolves (objectui's move tonextis objectui#12030, dispatched).domain:ui. The direction in6146040996stands.