diff --git a/README.md b/README.md index 7429c64..3329425 100644 --- a/README.md +++ b/README.md @@ -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 done (`specs/PhaseLifecycleUseCases.md`), T02 (repo/provenance fields, human gate) next. Modeling-only: produces a use-cases spec + a discussable spec addendum, no schema/UI changes yet | +| [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-0013](workplans/TREV-WP-0013-remission-credit-automation.md) | Remission Credit automation (degeneration policy execution) — active; T01–T03 `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 | diff --git a/workplans/TREV-WP-0012-phase-provenance-and-policy-modeling.md b/workplans/TREV-WP-0012-phase-provenance-and-policy-modeling.md index 306c36e..5885660 100644 --- a/workplans/TREV-WP-0012-phase-provenance-and-policy-modeling.md +++ b/workplans/TREV-WP-0012-phase-provenance-and-policy-modeling.md @@ -75,9 +75,11 @@ WP-0014-T01 rather than something to assume while building that UI. ```task id: TREV-WP-0012-T02 -status: todo +status: done priority: high human_accept_required: true +human_accepted_by: Bernd +human_accepted_at: "2026-07-30" state_hub_task_id: "1d888dc7-360d-4ee5-8f4c-d1173670b0f7" ``` @@ -102,6 +104,46 @@ breaking a Phase's provenance link. Concretely decide and record: existing pilot-candidate example manifests, or only required going forward. +**Result (accepted 2026-07-30):** Grounded against the real Forgejo +instance before deciding, not assumed — confirmed live that +`forgejo.coulomb.social` assigns every repo a stable numeric id +(`target-revenue` is `103`, via `GET /api/v1/repos/coulomb/target-revenue`) +that survives renames, and confirmed it has **no** instance-level identity +endpoint (`/api/v1/nodeinfo` → 404, `/api/v1/version` returns only a +version string) — so unlike the repo id, a hub identifier is necessarily +something this project mints, not something Forgejo already provides. + +Decided: + +- `phase.milestone_release` gains four **required** fields: `repo_hub` + (a stable slug, e.g. `"forgejo-coulomb"`), `repo_hub_uri` (the Forgejo + service URL, e.g. `"https://forgejo.coulomb.social"`), `repo_id` + (Forgejo's own numeric repo id), `repo_name` (`"owner/repo"` slug). + Required immediately, not merely recommended — no grace period, unlike + `target_basis`'s current recommended-only status. +- `phase.base_phase_id` (optional, `trsl:phase:...` pattern) references + a prior Phase for a successive Phase; simply **absent** for a + first-ever Phase — no sentinel value, matching how + `ledger_entry.schema.json`'s `reverses` is already optional-only-when- + applicable. +- **Important refinement from the maintainer's own steer**: the + `repo_hub` → `repo_hub_uri` mapping is *not* static data checked into + this repo. `target-revenue` is the generic framework, not a specific + deployment's list of repos it happens to monetize — that mapping is + operational data owned by the **hosted Trust Service** (a new table, + analogous to `licensor_identities`, auto-populated the first time a hub + is seen), never a file in this git repo. A Phase Manifest stays fully + self-describing and offline-verifiable regardless (it carries + `repo_hub_uri`/`repo_name` directly at registration time, per use case + 9) — the hosted table exists purely as an admin/repair convenience if + a hub's URI ever needs correcting after the fact, not a validation + dependency. +- The three existing example manifests will be backfilled — deferred + until after T03/T04 and the T05 spec addendum, since the schema change + is shared across all three decision tasks and the maintainer's own + process (item f, chat 2026-07-30) calls for the addendum to be + discussed before any implementation, including this backfill. + ```task id: TREV-WP-0012-T03 status: todo