Index  Decision Records ADR-172: Current Status Marker in Decision Record Status Table

ADR-172: Current Status Marker in Decision Record Status Table

1 Status

Date Status
17-05-2026 Proposed
17-05-2026 Accepted
17-05-2026 In-Progress
23-05-2026 Implemented

2 Context

Decision records track their lifecycle (Proposed → Accepted → In-Progress → Implemented → ...) via the Status table introduced in ADR-170. The current convention is append-only: each status change adds a new row, and the latest row implicitly represents the current state.

This convention works for retrospective tracking, but it does not let an author plan transitions ahead of time. If a record is currently In-Progress and we know we want to be Implemented by 2026-05-24, we cannot write that future row today without making the record look like it is already implemented.

3 Decision

Add a leading column to the Status table that holds an asterisk "*" in exactly one row — the row whose status is the present current state of the decision record. All other rows leave that column empty. Future-dated transitions may be written upfront for planning purposes; only the row marked with "*" is considered the current state.

Example with planned transitions ahead of the current state:

Date Status
14-05-2026 Proposed
14-05-2026 Accepted
* 15-05-2026 In-Progress
24-05-2026 Implemented

The decision record owner authors the marker manually. In addition to the documentation convention, the Almirah Ruby gem shall extend its parsing and rendering of Decision Record documents as follows.

3.1 Current status extraction during parsing

For documents of type Decision Record only, the parser shall locate the Status section, find the row whose leading column contains an asterisk "*", and store the corresponding Status value as an attribute of the Decision instance (e.g., current_status). Status sections of other document types (Specification, Protocol, etc.) shall be ignored — extraction is scoped to Decision Records.

When zero or more than one row carries an asterisk, the extracted current_status shall be nil; this leaves room for a future validation step if duplicate or missing markers become a maintenance problem in practice.

3.2 Triangle substitution and row highlight during HTML rendering

When rendering a Decision Record's Status table to HTML, the asterisk in the leading marker column shall be replaced with a solid right-pointing triangle "▶" (U+25B6 BLACK RIGHT-POINTING TRIANGLE), matching the visual convention used by database administration tools to highlight the current row. The substitution applies only to the marker column of the Status table in Decision Record documents; other documents and other tables are unchanged.

In addition, the entire marked row shall be visually highlighted (light yellow background, #ffffee) so that the current state is immediately distinguishable from past and planned rows at a glance.

3.3 Status column on the Decision Records Overview page

A new "Status" column shall be added to the Decision Records Overview page between the existing "Type" and "Title" columns. The cell value for each row shall be the current_status attribute of the corresponding Decision instance (empty when current_status is nil).

4 Scope

Item Status Start Date Target Date Description
Requirements In-Progress 17-05-2026 New SRS items for current-status extraction on the Decision class, asterisk-to-triangle substitution during HTML rendering, and the new Status column on the Decision Records Overview page
Code In-Progress 17-05-2026 Add current_status attribute on Decision; parser locates the Status section and reads the "*"-marked row; renderer substitutes "*" with "▶" and tags the marked row with a CSS class for background highlighting; DecisionsOverview adds a Status column between Type and Title
Tests In-Progress 17-05-2026 Unit tests for current_status extraction (including zero / multiple markers); end-to-end tests for the rendered triangle, the row highlight, and the Status column value in the Decision Records Overview page

Final status update of existing decision records will be made in scope of this ADR as well to have a single commit for all records.

5 Out of Scope

6 Consequences

6.1 Positive

6.2 Negative

6.3 Neutral

7 Alternatives Considered

8 Software Versions

Software Version Category Software Version ID
Latest Released Version 0.3.1
Issue Found in Version n/a
Target Release Version 0.4.0

9 References

10 Review Evidences