Adds the risk register as a sibling of MDL under archive/<party>/, and
three project-level virtual aggregations at <project>/{ssr,mdl,rsk}:
- SSR aggregates archive/<party>/ssr.yaml; "+ Add row" materializes a
new party folder (mkdir + auto-own .zddc + ssr.yaml). Renames go
through X-ZDDC-Op: ssr-rename, which os.Rename's the party
directory so every row inside follows. Party name doubles as the
folder name (no opaque IDs) and is path-derived on read.
- MDL/RSK rollups list every deliverable / every risk across all
parties with a derived `party` column; "+ Add row" is suppressed
because party affiliation is ambiguous in the aggregate view.
All four virtual roots are declared `virtual: true` in
defaults.zddc.yaml. Spec/form bytes come from six new embedded
defaults (default-rsk.*, default-ssr.*, default-project-{mdl,rsk}.*)
served via a generalized IsDefaultSpec/IsDefaultSpecAbs that replaces
the MDL-only recognizer. Listing synthesis lives in fs/tree.go;
ACL on each synthetic row evaluates against the canonical
archive/<party>/ chain so non-owners see rows read-only. PUT/DELETE
through virtual URLs rewrite to canonical paths in fileapi.go via
sibling-shape blocks that don't touch the ACL gate. SSR row DELETE
returns 405 (delete the party folder via the archive view).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
51 lines
1.4 KiB
YAML
51 lines
1.4 KiB
YAML
# Default Risk Register spec, served by zddc-server when no
|
|
# operator-supplied table.yaml exists at archive/<party>/rsk/.
|
|
#
|
|
# Columns cover the standard risk-register fields: identifier, title,
|
|
# category, likelihood / impact / severity scores, owner, status, and
|
|
# due date. Severity is stored on each row (1-25, typically L*I) so
|
|
# operators can override it when the simple product doesn't capture
|
|
# the actual risk profile.
|
|
#
|
|
# To customize: drop your own table.yaml + form.yaml into the same
|
|
# directory (archive/<party>/rsk/). The whole directory IS the table —
|
|
# spec, row-edit form, and rows are siblings. Override examples mirror
|
|
# the MDL table.yaml customization patterns.
|
|
|
|
title: Risk Register
|
|
description: Risks tracked for this party. Severity is the residual risk score; sort defaults to severity descending.
|
|
|
|
columns:
|
|
- field: id
|
|
title: ID
|
|
width: 6em
|
|
- field: title
|
|
title: Risk
|
|
- field: category
|
|
title: Category
|
|
width: 10em
|
|
- field: likelihood
|
|
title: L
|
|
width: 4em
|
|
- field: impact
|
|
title: I
|
|
width: 4em
|
|
- field: severity
|
|
title: Sev
|
|
width: 5em
|
|
- field: owner
|
|
title: Owner
|
|
width: 12em
|
|
- field: status
|
|
title: Status
|
|
width: 9em
|
|
enum: [open, mitigated, accepted, closed]
|
|
- field: dueDate
|
|
title: Due
|
|
format: date
|
|
width: 8em
|
|
|
|
defaults:
|
|
sort:
|
|
- { field: severity, dir: desc }
|
|
- { field: dueDate, dir: asc }
|