Ash Temporal Resources
Implement bitemporal resources in the Ash framework for Elixir: temporal attributes, instant and portion writes, as-of and relative-time reads, and relationships across time.
Results
Each square represents one run. Score is the percentage of runs that pass: 0, 25, 50, 75, or 100 for four runs.
| # | Model | Rollouts | Pass@1 | Score | Time |
|---|---|---|---|---|---|
| 1 | Claude Sonnet 5.5 max | 3/4 | 3.6h | ||
| 2 | Claude Opus 5.5 max | 2/4 | 3.5h | ||
| 3 | GPT-6 Astra xhigh | 1/4 | 2.5h | ||
| 4 | Kimi K3 max | 1/4 | 3.3h | ||
| 5 | GPT-6.1 Sol max | 1/4 | 3.5h | ||
| 6 | GPT-5.6 Sol max | 0/4 | 3.7h | ||
| 7 | Gemini 3.8 Flash high | 0/4 | 1.3h | ||
| 8 | Qwen3.8 Max xhigh | 0/4 | 3.0h | ||
| 9 | GLM 5.3 Flash max | 0/4 | 4.0h | ||
| 10 | Muse Spark 1.3 max | 0/4 | 3.7h | ||
| 11 | Grok 4.7 xhigh | 0/4 | 1.2h |
Background
Ash is a declarative application framework for Elixir. Apps that need history, like a subscription that changes plan on a date or prices valid for a season, today bolt on paper-trail tables or hand-rolled valid_from and valid_to columns and re-implement the same splitting logic in every app. SQL:2011 standardised this as application-time period tables, and the task brings it to Ash as a first-class resource feature, starting from the upstream repository.
Task
The agent adds a temporal section to Ash resources, with the in-memory ETS data layer supporting it. Every row carries a half-open period of business time, one logical record can have many versions whose periods never overlap, reads ask for the version valid at an instant, and updates or deletes for a portion of time rewrite only that part of a record's history, splitting the rows they touch. Relationships declare how their periods line up across time, and every non-temporal resource must behave exactly as before.
Workspace
The offline sandbox (4 CPUs, 8 GB, 4 hours) holds the Ash repository with its full history, Elixir 1.20 on Erlang 29, prebuilt dependencies and build notes.
Verification
The committed HEAD is rebuilt in a clean checkout with the trusted starter tests, dependencies and configuration restored, so edits to existing tests cannot help. The whole starter suite must still pass. Adapted hidden upstream test files, plus a driver that replays secret-seeded histories through the public interface, check point-in-time results against the truth, and every family must meet its pre-registered bar.
Environment
- Toolchain
- Elixir
- Compute
- 4 CPUs · 8 GB RAM
- Network
- Offline
- Time limit
- 4 hours