DIAGONAL DATASETS

Standards track · draft 4

RFC-D45

FieldValue
DocumentRFC-D45
StatusStandards Track (Draft 4)
CategoryStorage Orientation
ObsoletesRFC-D45 drafts 1–3
Obsoleted byNothing. Ever.
AuthorsStandards Committee (1)
Implementations1
Independent implementations0

Abstract

This document specifies a storage orientation in which values are retained along a band oriented at 45 degrees to both the row axis and the column axis of a two-dimensional address space. Values falling outside the band are discarded at write time. This document also specifies the wire format, the failure semantics, and the one parameter we regret shipping.

1. Requirements language

The key words MUST, MUST NOT, SHOULD, SHOULD NOT, and MAY are to be interpreted as described in RFC 2119, with the addition of SHALL, OBVIOUSLY, which indicates a requirement so evident that an implementation violating it is not merely non-conformant but embarrassing.

2. The band

Given a matrix of shape (n, m), a cell at (r, c) is diagonal if and only if:

abs(c - r * tan(angle) * (m / n)) <= bandwidth

Implementations SHALL, OBVIOUSLY, evaluate this at write time rather than read time. An implementation that evaluates at read time has stored the whole rectangle and is lying about its orientation.

3. Write semantics

A write to an off-diagonal cell MUST return success.

This is the most frequently misimplemented clause in the specification and we want to be unambiguous about why it is correct. The write did not fail. Nothing was violated. The store received the value, evaluated its position, determined the position was not diagonal, and discarded it. That is the contract executing exactly as designed.

An implementation that raises an error on an off-diagonal write has confused rejection with judgment. See Your ORM Cannot Express This for six tools that get this wrong and one that gets it right for reasons that are worse.

Implementations MUST NOT provide a recovery path for discarded values. Implementations MUST NOT log them. Implementations MUST NOT emit a metric counting them, as a count is a form of retention.

4. Read semantics

A read from an off-diagonal cell MUST return the type-appropriate zero value, and MUST NOT distinguish between "never written" and "written and discarded."

The distinction is unobservable by design. Reintroducing it would allow a caller to reconstruct the off-diagonal, which is the exact failure mode §3 exists to prevent.

5. Angle

The angle MUST be 45.0000 degrees.

Implementations SHOULD verify the angle physically, at least quarterly, using an instrument that does not round. Dashboards that round to four significant figures are not instruments. See our incident report for the case that motivated this clause, in which correct software defended a correct band inside a building that had moved.

6. Bandwidth (deprecated)

The bandwidth parameter widens the band beyond a pure diagonal.

It is deprecated as of this draft. It was added in draft 2 because early reviewers found pure diagonal storage "too aggressive." That was cowardice and it produced, within three days, an internal system configured at bandwidth=512 on a 4096-wide matrix and described in writing as diagonal.

It was not diagonal. It was a slightly embarrassed rectangle.

The parameter remains in the API for two years under our compatibility policy. We have no users. The policy applies anyway; that is what a policy is.

7. Non-45° orientations

Non-45° orientations are NOT RECOMMENDED and are not conformant with this document. 45° is the unique self-inverse angle under transposition. Every other angle requires a canonicalization step, and a canonicalization step requires a committee.

7.1 Dissent

Two members of the institute hold that 30° is viable for non-square address spaces, on the grounds that a shallower angle covers more of a rectangular matrix.

The Standards Committee acknowledges the argument is arithmetically correct and finds it directionally catastrophic. If your matrix is not square, the defect is the rectangle.

This dissent is recorded here permanently. A standard that does not record its dissent is just a memo.

8. Wire format

D45\x00 <uint16 angle_millideg> <uint16 bandwidth>
        <uint32 n> <uint32 m> <uint32 count>
        [ <uint32 index> <float64 value> ] * count

Note that cells are addressed by a single index, not a pair. On the diagonal, row and column are constrained to agree, so transmitting both would transmit the same number twice, and the specification declines to participate in that.

9. Security considerations

A diagonal store discards 1 − (2b+1)/n of all data submitted to it. Operators MUST NOT deploy a diagonal store in a path with a regulatory retention obligation.

We note without further comment that this makes RFC-D45 the most reliable data-deletion mechanism ever specified, and that we have received two emails about this that we have chosen not to answer.

10. IANA considerations

We have not contacted IANA. We have drafted the email four times. Draft 4 of the email is shorter than draft 1, which we take as progress.

11. References

Normative: RFC 2119.

Informative: The Thesis, Against the Transpose, one framed conference rejection, one protractor.