Story: Test the tenor rule before saving it

Table of Contents

This page documents a story in Sprint 28. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

1. Goal

A person authoring a tenor's resolution reads the date it produces before they write it, against the draft they have typed rather than the row the server still holds. The arithmetic is the engine's, reached over the wire, so what the step shows is what the saved rule will do.

2. Status

Field Value
State DONE
Parent sprint Sprint 28
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-10-17

3. Acceptance

  • The tenor journey carries a test step where a horizon, an optional spot date and a calendar are set, and the date the drafted rule resolves to is shown.
  • The step names the anchor it counted from, the date before the roll, the adjusted date, the roll rule and the calendar; a rule the server declines shows the step that refused, the dates counted and the row at fault, without losing the form.
  • A refdata operation resolves a rule supplied inline, so the answer describes the draft and not the saved row; it is served by the pure engine and carries the same structured refusal.
  • The step is covered by tests on both sides of the wire, and the journey's rail, i18n and existing steps are unchanged in behaviour.

4. Tasks

Task State Start End Description
Scaffold story: Test the tenor rule before saving it DONE 2026-10-17 2026-10-17 Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR.
Build the draft-rule resolve step DONE 2026-10-17 2026-10-17 Initial task for: Test the tenor rule before saving it

5. Decisions

6. Out of scope

Emacs 29.3 (Org mode 9.6.15)