Accept WP-0012-T03: degeneration-policy/calculator spec-file convention

Checked the maintainer's specific state-hub Reference mechanism before
deciding rather than assuming from the earlier discussion: it's a
dashboard/src/docs/*.md corpus built via Observable Framework into
static HTML, opened standalone or in a "?" context-help overlay. Real,
but a materially heavier static-site pipeline than this repo has or
needs. Decided to carry the spirit (markdown spec -> rendered read-only
view, linked from wherever the id appears) via a small server-side
markdown render route instead, matching the existing lightweight
FastAPI+Jinja2 stack.

Decided: new specs/policies/ and specs/profiles/ subdirectories, one
file per policy/profile, id+revision frontmatter, git's own history as
the audit trail (no new versioning infrastructure). Calculator concept
doc already conforms as-is. No files moved yet -- deferred to after
T04/T05 per the same implementation-after-addendum sequencing used for
T02.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-07-30 21:26:36 +02:00
parent 1d6e56cf7f
commit e39976a596
2 changed files with 60 additions and 2 deletions

View file

@ -85,7 +85,7 @@ The concept's §13 now defines a **Global Contingency Share Determination Rule**
| [TREV-WP-0009](workplans/TREV-WP-0009-target-revenue-control-plane.md) | Target Revenue Control Plane — interactive UI for the `binky` tenant, incl. interactive Development Credit entry creation (`specs/TargetRevenueControlPlaneConcept.md`) — **finished**, all 4 tasks done. **T04 (interactive UI, `src/target_revenue/service/control_plane_app.py`) built on vendored `whynot-design` web components** rather than from scratch, per an explicit feasibility check |
| [TREV-WP-0010](workplans/TREV-WP-0010-development-effort-calculator.md) | Development Effort Calculator — **finished**, all 3 tasks done. Applied to the three real pilot candidates (`history/260730-EffortCalculator-CandidateApplication.md`) — every calculator-derived Initial Target came out materially lower than the earlier hand-picked placeholders, two of three carrying explicit warnings recommending manual review |
| [TREV-WP-0011](workplans/TREV-WP-0011-railiance-reef-deployment.md) | Deploy Trust Service + Control Plane to the Railiance reef, fronted by `revenue.coulomb.social` — active; T01 (deployment-pattern decision, human gate) next. Deployment alone does not authorize a real Phase go-live — that remains WP-0008-T05 |
| [TREV-WP-0012](workplans/TREV-WP-0012-phase-provenance-and-policy-modeling.md) | Phase provenance, ledger reference, and degeneration-policy modeling — active; T01, T02 done. **T02 accepted 2026-07-30**: `milestone_release` gains required `repo_hub`/`repo_hub_uri`/`repo_id`/`repo_name`, `phase.base_phase_id` optional for successive Phases; hub↔URI mapping lives in the hosted Trust Service, not this repo. T03 (policy spec-file convention, human gate) next |
| [TREV-WP-0012](workplans/TREV-WP-0012-phase-provenance-and-policy-modeling.md) | Phase provenance, ledger reference, and degeneration-policy modeling — active; T01T03 done. **T02 accepted 2026-07-30**: `milestone_release` gains required `repo_hub`/`repo_hub_uri`/`repo_id`/`repo_name`, `phase.base_phase_id` optional for successive Phases; hub↔URI mapping lives in the hosted Trust Service, not this repo. **T03 accepted 2026-07-30**: `specs/policies/` + `specs/profiles/` subdirectories (one file per policy/profile, id+revision frontmatter), rendered read-only via a new lightweight server-side markdown route — not state-hub's Observable Framework build. T04 (ledger UI treatment, human gate) next |
| [TREV-WP-0013](workplans/TREV-WP-0013-remission-credit-automation.md) | Remission Credit automation (degeneration policy execution) — active; T01T03 `wait` on WP-0012-T03's policy-spec-file decision. Nothing currently computes or writes `remission-credit` ledger entries |
| [TREV-WP-0014](workplans/TREV-WP-0014-control-plane-extensions-breach-attestation-ui.md) | Control Plane UI: Extension Registry, Breach Records, Conversion Attestation — active; T01 next. Backend for all three already exists (WP-0006); UI-only work, not blocked on WP-0012 |

View file

@ -146,9 +146,11 @@ Decided:
```task
id: TREV-WP-0012-T03
status: todo
status: done
priority: high
human_accept_required: true
human_accepted_by: Bernd
human_accepted_at: "2026-07-30"
state_hub_task_id: "dbbabc02-8694-4e7d-8a15-c626ff72875b"
```
@ -180,6 +182,62 @@ infrastructure). Concretely decide:
consistency, or is scoped to degeneration policies and calculators only
for now.
**Result (accepted 2026-07-30):** Checked the maintainer's specific
`state-hub` reference before deciding — it's `dashboard/src/docs/*.md`,
built via Observable Framework into static HTML, opened as a standalone
page or in a "?" context-help overlay iframe
(`dashboard/src/docs/reference.md`). That's a real static-site build
pipeline, materially heavier than anything else in this repo. Decided to
carry the *spirit* (markdown spec → rendered read-only view, linked
contextually from wherever the id appears) without adopting that
toolchain, since `target-revenue`'s Control Plane is a lightweight
FastAPI+Jinja2 app with no existing build step to hang a static-site
generator off of.
Decided:
- New `specs/policies/` subdirectory, one file per degeneration policy —
e.g. `specs/policies/linear-longstop-v0.md` — extracted out of Q7's
prose in `specs/OpenQuestions-WorkingDefaults.md` (which stays as the
index of *decisions about* policies, not the policies' own content).
Each file's frontmatter carries the full versioned policy id (e.g.
`policy_id: trsl:policy:linear-longstop-v0@1.0`), so the id→file mapping
is explicit and machine-checkable, not merely inferred from the
filename.
- `specs/DevelopmentEffortCalculatorConcept.md` already conforms as-is —
one file, one model, distinct name — no move. Add/confirm an
`id`+`revision`-shaped frontmatter field for consistency with the new
policy files (there's no `trsl:...` schema id for calculators today,
since they aren't referenced by id from inside a Phase Manifest the way
`degeneration_policy` is — this is a documentation-traceability
convention only, not a new schema value).
- Extend the same convention to the six canonical monetization profiles
now, in this same pass — a new `specs/profiles/` subdirectory, one file
per profile (development, operations, ideation, service, consulting,
sponsorship), splitting them out of the shared
`specs/CanonicalMonetizationProfiles.md`, even though nothing currently
links to a profile by bare id from the UI the way `degeneration_policy`
is linked. `id`+`revision` frontmatter, matching the policy files.
- "Id and revision, built on git internals" means: the id is the stable
policy/profile identifier already used in Phase Manifests today
(including its existing `@version` suffix, e.g. `...@1.0`), mapped to
exactly one file by naming convention; the revision/audit trail is
simply that file's own git history (`git log -- specs/policies/
linear-longstop-v0.md`) — no new versioning table, no pinned-commit
scheme, nothing beyond what git already provides for free.
- Control Plane UI rendering: a small Python markdown library, one new
read-only route (e.g. `GET /reference/policies/{slug}`, and
equivalently for profiles/calculators), rendering the spec file's
current content server-side at request time. A plain link next to
wherever a policy id already appears (`phase_detail.html`,
`phase_new.html`) — never in-UI editable, matching every other
governance-action pattern already established in this project.
As with T02, no files are moved or created yet — `specs/policies/`,
`specs/profiles/`, and the new render route are implementation, deferred
to after T04 and the T05 spec addendum per the maintainer's own established
sequencing (item f, chat 2026-07-30).
```task
id: TREV-WP-0012-T04
status: todo