Commit 2a6708e
GEP 10: adopt grouping-level dimensions and the [person] count
Rewrite GEP 10 end-to-end to make grouping levels (per person, per
household, per Bedarfsgemeinschaft, ...) first-class, non-convertible pint
dimensions supplied by the aggregation suffix / reference_level, and to
promote head counts from DIMENSIONLESS to the [person] count dimension
([person]/[group] for a group count). This turns the per-capita divisions
and multiply-by-count splittings gettsim already performs into
self-checking arithmetic, and makes cross-level mixing a build-time error.
Key model:
- levels are denominators read off the suffix; [person] doubles as the
leaf level and the count dimension, so counts and per-person amounts
cancel.
- extensive/intensive token default decides which tokens carry a level;
dimensionless-physical tokens (HOURS_FLOW, DIMENSIONLESS) stay level-less.
- index level (data layout, structural) vs unit level (dimensional); the
check ties them only when a level is present.
- aggregation: SUM swaps level, COUNT mints [person]/[target],
MIN/MAX/MEAN preserve source level-ness, ANY/ALL dimensionless.
- broadcast preserves the unit level, so cross-group safety falls out.
- parameters carry reference_level (orthogonal to reference_period).
Reverses the earlier draft's rejection of a count dimension; records the
pure-DIMENSIONLESS and generic-[count] designs as rejected alternatives.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 85aaf79 commit 2a6708e
1 file changed
Lines changed: 457 additions & 250 deletions
0 commit comments