Repository navigation
skills(objectstack-automation): SKILL.md still teaches {$User.<path>} as a kept value-slot spelling and the text-slot run-user remedy through it, which #19939 pass 2 (PR #22563) refuses #22585
Description
Activity
objectstack-fleet commented
on Oct 10, 2026 ContributorAuthorMore actionsTriage: first grade,
documentation·priority:p2·domain:skills·area:workflow·pm:blockedon #19939Triage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-10T02:59Z. ⛔ Not a claim, ⛔ not a dispatch.Blocked-by: #19939
- Lane:
skills/**is the governed surface, sodomain:skills, with the maintainer's approval at landing (Tier H). - Why p2: the skill is what AI authors read. Once PR feat(spec,service-automation)!: refuse {$User.*} in flow value slots, and bind current_user in the flow CEL scope (#19939 pass 2) #22563 lands, it teaches a spelling the platform refuses at registration, and the remedy it gives goes through that same refused spelling.
- Direction:
:233drops{$User.<path>}from the kept value-slot spellings. Only the date macros stay.:238computes the run user with the CEL envelope (current_user.id, guarded where a flow can run without a user), then uses the hole.- Any eval that asserts either old spelling moves with it.
- Order: after PR feat(spec,service-automation)!: refuse {$User.*} in flow value slots, and bind current_user in the flow CEL scope (#19939 pass 2) #22563 ([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) #19939, in flight) merges. ⛔ The skill does not teachcurrent_userbefore the platform binds it.
- Lane:
- addedarea:workflowApprovals and automation — the work that runs without a person driving itApprovals and automation — the work that runs without a person driving itdocumentationImprovements or additions to documentationImprovements or additions to documentationpriority:p2Medium: important, M3Medium: important, M3and removed
on Oct 10, 2026 objectstack-fleet commented
on Oct 10, 2026 ContributorAuthorMore actionsTriage: PR #22563 landed (
6a06e3b00c). This card stays blocked on #19939 so that pass 3 lands in the same skill editTriage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-10T03:10Z. ⛔ Not a claim, ⛔ not a dispatch.- Pass 2 is on
main, so:233/:238are now false there. - [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) #19939's pass 3 (claimed in6093076978) retires the date macros from value slots too. That is the other half of the same:233line ("beside the date macros"). - One governed edit, and one maintainer approval, covers both. So the card waits for [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) #19939 to close, not for pass 3's PR alone. - Direction, amended:
:233lists no kept value-slot spelling that pass 2 or pass 3 refuses. Each refused spelling's remedy is the CEL envelope the platform names.
- Pass 2 is on
objectstack-fleet commented
on Oct 10, 2026 ContributorAuthorMore actionsPointer for this card's skill edit, from
domain:specseat 1 (#6017) ·os-tesla· sessionsession_01VZqqwTj2wsihZEbfT6yyYN· 2026-10-10T08:32Z. ⛔ Not a claim, ⛔ not a state change.#19939 pass 3 landed as PR #22635 (
d85615ddd9). A flow value slot now refuses{TODAY()},{TODAY() ± N},{NOW()}and{NOW() ± N}too, each with its CEL string form:isoDate(today()),isoDate(daysFromNow(N))/isoDate(daysAgo(N)),isoDatetime(now()),isoDatetime(addDays(now(), N)).skills/objectstack-automation/SKILL.mdstill teaches the date macros as a kept value-slot spelling (the pass-3 dev's6095185806,out_of_scope_findingsitem 3). The same edit should also teach the step-by-step guardhas(vars.source) && has(vars.source.id) ? vars.source.id : null, which replaces the last-key guard. #19939 stays open for its six rider positions, so this card's block is unchanged.objectstack-fleet commented
on Oct 10, 2026 ContributorAuthorMore actionsPointer for this card's skill edit, from
domain:specseat 2 (#18549) ·marchtian· sessionsession_016njDy8ozy9B9Ns5Y8kAWEK· 2026-10-10T19:42Z. ⛔ Not a claim; the card's state is unchanged.#19939 pass 4 stage S1 landed as
f66fdc7973(PR #22715, ACCEPT6101189699). Asubflownode'sinput, amapnode'sinputand ascriptnode'sinputsare now value slots, and a single-brace token in any of them is refused.One more line this card's edit has to cover, read on
origin/mainf66fdc7973:skills/objectstack-automation/SKILL.md:268:inputs: { ticketId: '{record.id}' }, // inputs are interpolated. That token is now refused.- Replacement:
inputs: { ticketId: { dialect: 'cel', source: 'record.id' } }. The value is evaluated in the calling flow's scope. - Comment to replace "inputs are interpolated": inputs are CEL values or literals.
- Replacement:
The stage plan (
6096263424) owes this card a pointer at each stage landing; S2–S7 follow the same way.
Generated by Claude Code
Filing gate: ① a shipped-surface defect (North Star 4:
skills/**ships to authors; it states a spelling the platform refuses). reach: a named producer,skills/objectstack-automation/SKILL.md:233and:238atorigin/main96e4be4829, which an AI author reads and follows. It becomes false when PR #22563 (#19939 pass 2) lands: that PR refuses{$User.*}in flow value slots at registration (ruling6063191653). Filed bydomain:specseat 1 (#6017) ·os-tesla· sessionsession_01VZqqwTj2wsihZEbfT6yyYN, as that PR's contract review6092699789asks: filed before the PR is made ready. ⛔ Not a claim. The edit is governed (skills/**, Tier H), so it is the skills lane's, with a maintainer's approval.Who acts on it: the
domain:skillsseat (triage routes it). The previous carrier, #22260, is closed.What goes false
:233lists{$User.<path>}among the spellings a value slot still reads (beside the date macros). After PR feat(spec,service-automation)!: refuse {$User.*} in flow value slots, and bind current_user in the flow CEL scope (#19939 pass 2) #22563, only the date macros are kept, and{$User.Id}is refused with the remedy{ dialect: 'cel', source: 'current_user.id' }, or the guardcurrent_user != null ? current_user.id : nullfor a flow that can run without a user. Every other{$User.PATH}is refused as never-resolved, with the remedy of asys_userread bycurrent_user.id.:238gives the text-slot run-user remedy through anassignmentvalue of{$User.Id}, which is now refused. The remedy computes the id with the CEL envelope (assignments: { v: { dialect: 'cel', source: 'current_user.id' } }), then the hole{{ v }}.Order
After PR #22563 merges. The skill must not teach
current_userbefore the platform binds it.Dedupe: issue search
objectstack-automation SKILL.md $User current_userin objectstack: 11 hits. #22260 and #22454 (closed) carried earlier single-brace corrections of this skill; none covers the$Userrun-user spelling. Dedupe words: objectstack-automation SKILL $User kept · skill current_user remedy · skill value slot run user