Three pieces wire the per-party Master Deliverables List as the default
view at archive/<party>/mdl/:
1. **Dispatcher redirect.** GET (and HEAD) on
<project>/archive/<party>/mdl/ (case-fold on archive and mdl) now
302 → <project>/archive/<party>/mdl.table.html. Non-archive paths
and deeper mdl/ paths fall through unchanged.
2. **Default-spec fallback in RecognizeTableRequest.** When a request
matches archive/<party>/mdl.table.html and no operator-supplied
tables: { mdl: ... } declaration covers it, the handler returns a
recognised request anyway. Operator declarations still win — and a
typo'd declaration pointing at a missing file yields 404 (not a
silent fallback).
3. **Static-file fallback for the spec yaml.** GET archive/<party>/
mdl.table.yaml and archive/<party>/mdl.form.yaml return embedded
default bytes (default-mdl.{table,form}.yaml in the handler package)
when no operator file exists at that path. Operator files always
win because the dispatcher's os.Stat finds them before reaching the
IsDefaultMdlSpec branch.
The defaults use ZDDC vocabulary: tracking, title, discipline, type,
plannedRevision, plannedDate, status (DFT/IFR/IFA/IFC/AFC/AB), owner,
notes. Operators override per-party by writing
archive/<party>/{mdl.table.yaml,mdl.form.yaml} and a tables: { mdl: ... }
entry in the party's .zddc.
Tests:
- 4 dispatcher redirect cases (success, case-fold mdl, case-fold archive,
deeper-path skip, non-archive skip)
- 6 tablehandler cases (default fires at archive/<party>/, operator
override wins, scope check, embedded yaml served, operator yaml wins,
scope check on yaml fallback)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
41 lines
957 B
YAML
41 lines
957 B
YAML
# Default Master Deliverables List spec, served by zddc-server when no
|
|
# operator-supplied mdl.table.yaml exists at archive/<party>/. Operators
|
|
# can override per-party by writing their own file at
|
|
# archive/<party>/mdl.table.yaml plus a tables: { mdl: ./mdl.table.yaml }
|
|
# entry in the party's .zddc.
|
|
|
|
title: Master Deliverables List
|
|
description: Planned and actual deliverables for this party.
|
|
|
|
rowSchema: ./mdl.form.yaml
|
|
rows: ./mdl
|
|
|
|
columns:
|
|
- field: tracking
|
|
title: Tracking
|
|
width: 11em
|
|
sort: asc
|
|
- field: title
|
|
title: Deliverable
|
|
- field: discipline
|
|
title: Disc.
|
|
width: 5em
|
|
- field: type
|
|
title: Type
|
|
width: 6em
|
|
- field: plannedRevision
|
|
title: Rev.
|
|
width: 5em
|
|
- field: plannedDate
|
|
title: Planned
|
|
format: date
|
|
- field: status
|
|
title: Status
|
|
width: 6em
|
|
enum: [DFT, IFR, IFA, IFC, AFC, AB]
|
|
- field: owner
|
|
title: Owner
|
|
|
|
defaults:
|
|
sort:
|
|
- { field: plannedDate, dir: asc }
|