Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions 10-functional/features/c-insight/c2-recurring.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@ low-confidence.

The next expected date is derived from the inferred cadence.

The five outcomes — weekly, monthly, quarterly, yearly, irregular — are the
whole vocabulary. Nothing else is a cadence a series can hold, and a value
outside the set is a defect rather than a new case to handle, so the set is
named once and both the code and the column are held to it. The digest cadence
in [C8](c8-notifications.md) is a different vocabulary that happens to share
the word and the value `weekly`; the two are not interchangeable.

### Metrics refresh, cadence flips, and re-detection

A new occurrence on an approved series refreshes its metrics without creating a
Expand Down Expand Up @@ -124,6 +131,7 @@ append-only audit trail. Transitions take a row lock with a busy timeout.
| **C2-R17** | Approve, reject, un-reject, and snooze MUST each raise exactly one event. |
| **C2-R18** | External reads of series occurrences MUST go through the feature's own public query surface. |
| **C2-R19** | Cross-user reads and writes MUST return not-found. |
| **C2-R20** | The series cadence vocabulary MUST be closed to weekly, monthly, quarterly, yearly, and irregular; it MUST be expressed as one named type rather than as free strings, and the stored column MUST be constrained to that set. |

## Related

Expand Down
1 change: 1 addition & 0 deletions 10-functional/features/c-insight/c8-notifications.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ in the application and by database trigger.
| **C8-R19** | The pruning predicate MUST use only plaintext columns so it can run without the at-rest key. |
| **C8-R20** | Notification content MUST be treated as sensitive and encrypted at rest alongside other identifying text. |
| **C8-R21** | Cross-user reads and writes MUST return not-found. |
| **C8-R22** | The digest cadence vocabulary MUST be closed to daily, weekly, and off; it MUST be expressed as one named type rather than as free strings, and the stored column MUST be constrained to that set. It is distinct from the series cadence in [C2](c2-recurring.md) and MUST NOT share a type with it. |

## Related

Expand Down
Loading