Problem
There is no first-class way to maintain a parent aggregate of child rows. Hooks can't (nested write crashes the sandbox — see the hook-sandbox issue), and a flow's aggregation script node is a runtime no-op (see the action-node issue).
Impact
Every "total / rollup / progress" field across templates is hand-maintained in seed data and drifts the moment a user adds a real child row:
content_publication.total_views/clicks/signups/revenue (+ piece rollups)
procurement_order.received_amount (3-way match)
pm_project.progress_percent, actual_cost
expense_report.total_amount
Expected
A native summary/rollup field type — declare { object, field, op: sum|count|max, filter? } and the platform keeps it current — or a flow aggregate node that actually executes server-side. (The expense CHARTER already anticipates "once the runtime computes the summary field type".)
Affected
@objectstack/objectql (field types) and/or @objectstack/automation (aggregate node).
Found while runtime-testing objectstack-ai/templates (all 9 templates via objectstack dev all) on @objectstack 9.5.1. Build + typecheck pass; these only surface at runtime.
Problem
There is no first-class way to maintain a parent aggregate of child rows. Hooks can't (nested write crashes the sandbox — see the hook-sandbox issue), and a flow's aggregation
scriptnode is a runtime no-op (see the action-node issue).Impact
Every "total / rollup / progress" field across templates is hand-maintained in seed data and drifts the moment a user adds a real child row:
content_publication.total_views/clicks/signups/revenue(+ piece rollups)procurement_order.received_amount(3-way match)pm_project.progress_percent,actual_costexpense_report.total_amountExpected
A native
summary/rollup field type — declare{ object, field, op: sum|count|max, filter? }and the platform keeps it current — or a flow aggregate node that actually executes server-side. (The expense CHARTER already anticipates "once the runtime computes the summary field type".)Affected
@objectstack/objectql(field types) and/or@objectstack/automation(aggregate node).Found while runtime-testing
objectstack-ai/templates(all 9 templates viaobjectstack dev all) on@objectstack9.5.1. Build + typecheck pass; these only surface at runtime.