You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(actions): api 型动作需要「成功后跳转到服务端返回的记录」能力(ActionSchema 跳转键 + 响应进入插值作用域) #9474
Triage: ⇒ needs-user-decision, domain:spec, type Feature — this widens ActionSchema's public surface (a post-success navigation key) and adds an interpolation-scope capability (server response entering ${...} scope), so it sits on the manual floor (feature + contract shape) regardless of how strong the pull is. And the pull is strong: five concrete sites in one real manufacturing app, filed with a measured capability audit (strict schema refuses all four spellings; executeAPI returns {success, data} and never navigates; interpolateTarget's scope excludes the response; executeChain passes nothing forward), and the project is correctly holding the no-workaround line waiting on the platform.
Four-facet card face:
Platform long-term coherence: "act on the server's answer" is a primitive, not an app-specific hook — the clone/copy-then-open shape recurs in any versioned-record domain. One declared key beats N app workarounds; but the key's design (a single onSuccess.navigate vs. response-driven navigateTo convention) decides whether this stays one primitive or grows a callback tree.
Measured business pull: measured, external, five sites in one project plus a parked internal card — the strongest pull shape a feature request can carry at this stage.
AI-agent error-resistance: a closed declared key (onSuccess.navigate: '${result.id}'-style, schema-validated) is the error-resistant form; the alternative convention (server response magically triggering navigation via an undeclared field) is the silent-behaviour shape to avoid. If accepted, prefer the declared key + explicit scope addition, loudly rejected when the referenced response field is absent.
Startup scope discipline: this is scope expansion — two coupled additions (schema key + interpolation scope), each a permanent obligation, and the console must implement both. Mitigant: the requester is right that the two halves are useless separately, so if accepted it is one decision, not two.
Recommendation: accept the need as real and rule the shape — smallest coherent form is one ActionSchema key (e.g. onSuccess: { navigate: string }) plus ${result.*} entering the target-interpolation scope for that key only, response-convention route rejected. Cross-repo note for whoever implements: contract-first split applies (spec key first, console consumption Blocked-by: it, objectui half filed at dispatch time). (Triage seat, session session_019gCKd9EZfQ6MbGTnMHHJvW.)
Maintainer ruling recorded — ruled TOGETHER with #9566 (maintainer, 2026-08-18, in-session to the domain:spec PM, verbatim 「同意」 on the presented unified shape; full ruling text on #9566, comment 5328006218-adjacent). Summary of what answers this card's two asks:
ActionSchema.onSuccess (closed key: navigate template + openIn: 'self' | 'newTab') — the post-success navigation key this card measured as missing (its probes redirect/chain/onSuccess/navigate+to all correctly bounced off the strict schema; the fix declares ONE shape rather than loosening).
${result.*} joins the navigate template's interpolation scope — the server response becomes consumable, closing this card's item 2.
Defaults: schema-declared navigation defaults 'self'; the shipped { redirectUrl } handler convention keeps new-tab unless the handler opts into 'self' (no behavior flip for existing metadata).
One spec PR delivers both cards' contract halves (Fixes #9474 + Fixes #9566, branch claude/issue-9566-onsuccess-navigation, fable/clause-②); the console wiring is the downstream objectui card(s) filed at landing with Blocked-by: — the end-to-end capability your project waits on (steedos-labs/os-project-titanwind-ehr#1172) arrives with that half.
Activity
os-support-ai commentedon Aug 18, 2026
Triage: ⇒
needs-user-decision,domain:spec, type Feature — this widensActionSchema's public surface (a post-success navigation key) and adds an interpolation-scope capability (server response entering${...}scope), so it sits on the manual floor (feature + contract shape) regardless of how strong the pull is. And the pull is strong: five concrete sites in one real manufacturing app, filed with a measured capability audit (strict schema refuses all four spellings;executeAPIreturns{success, data}and never navigates;interpolateTarget's scope excludes the response;executeChainpasses nothing forward), and the project is correctly holding the no-workaround line waiting on the platform.Four-facet card face:
onSuccess.navigatevs. response-drivennavigateToconvention) decides whether this stays one primitive or grows a callback tree.onSuccess.navigate: '${result.id}'-style, schema-validated) is the error-resistant form; the alternative convention (server response magically triggering navigation via an undeclared field) is the silent-behaviour shape to avoid. If accepted, prefer the declared key + explicit scope addition, loudly rejected when the referenced response field is absent.Recommendation: accept the need as real and rule the shape — smallest coherent form is one
ActionSchemakey (e.g.onSuccess: { navigate: string }) plus${result.*}entering the target-interpolation scope for that key only, response-convention route rejected. Cross-repo note for whoever implements: contract-first split applies (spec key first, console consumptionBlocked-by:it, objectui half filed at dispatch time). (Triage seat, sessionsession_019gCKd9EZfQ6MbGTnMHHJvW.)Generated by Claude Code
os-steve commentedon Aug 18, 2026
Maintainer ruling recorded — ruled TOGETHER with #9566 (maintainer, 2026-08-18, in-session to the
domain:specPM, verbatim 「同意」 on the presented unified shape; full ruling text on #9566, comment 5328006218-adjacent). Summary of what answers this card's two asks:ActionSchema.onSuccess(closed key:navigatetemplate +openIn: 'self' | 'newTab') — the post-success navigation key this card measured as missing (its probesredirect/chain/onSuccess/navigate+toall correctly bounced off the strict schema; the fix declares ONE shape rather than loosening).${result.*}joins the navigate template's interpolation scope — the server response becomes consumable, closing this card's item 2.'self'; the shipped{ redirectUrl }handler convention keeps new-tab unless the handler opts into'self'(no behavior flip for existing metadata).One spec PR delivers both cards' contract halves (
Fixes #9474+Fixes #9566, branchclaude/issue-9566-onsuccess-navigation, fable/clause-②); the console wiring is the downstream objectui card(s) filed at landing withBlocked-by:— the end-to-end capability your project waits on (steedos-labs/os-project-titanwind-ehr#1172) arrives with that half.Generated by Claude Code
feat(spec): ActionSchema.onSuccess — post-success navigation with ${r…
os-steve commentedon Aug 18, 2026
Delivered together with #9566 by draft PR #9601 (
Fixesboth cards) — the OS-DEV-REPORT lives on #9566: #9566 (comment)Generated by Claude Code
Generated by Claude Code
feat(spec): ActionSchema.onSuccess — post-success navigation with ${r…
test(spec): the first ui/ file group's test titles state each cited d…