Implement WP-0015-T01/T04/T06: Phase provenance schema + ledger UI

Schema: phase.milestone_release gains required repo_hub/repo_hub_uri/
repo_id/repo_name; phase gains optional base_phase_id. Backfilled the
golden phase-001 fixture (placeholder values, it's synthetic) and the
three real pilot-candidate manifests with actual Forgejo repo ids
confirmed live (net-kingdom=67, vergabe-teilnahme=62,
info-tech-canon=47, all coulomb/*).

Discovered along the way: the schema change alone would have broken
the existing Control Plane registration form, since nothing collected
the four new fields. Fixed inline rather than leaving it broken
between tasks -- this also completes T04's ledger UI change (drop the
hand-typed ledger input, auto-compute /phases/{id}/ledger, add a
drill-down reference link on phase_detail.html) since both changes
touch the same form/route.

Full suite: 94 passing offline (was 84), 158 passing with Docker
(was 146).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-03 20:43:30 +02:00
parent 11800c7da1
commit 2a176d9961
13 changed files with 204 additions and 20 deletions

View file

@ -6,7 +6,11 @@
"milestone_release": {
"name": "release-1.0",
"source_revision": "abc123",
"artifact_sha256": "44cd1493bd179c1207c7025c1372cdad89aac114e151db27aba2bdf3d55c688a"
"artifact_sha256": "44cd1493bd179c1207c7025c1372cdad89aac114e151db27aba2bdf3d55c688a",
"repo_hub": "example-hub",
"repo_hub_uri": "https://example.invalid",
"repo_id": 1,
"repo_name": "example/example-repo"
},
"initial_target": {
"amount": 100000,

View file

@ -5,7 +5,11 @@
"id": "trsl:phase:draft-info-tech-canon-service-surface",
"milestone_release": {
"name": "info-tech-canon-service-surface-v1 (ITC-WP-0001..0012)",
"source_revision": "f7ad73d"
"source_revision": "f7ad73d",
"repo_hub": "forgejo-coulomb",
"repo_hub_uri": "https://forgejo.coulomb.social",
"repo_id": 47,
"repo_name": "coulomb/info-tech-canon"
},
"initial_target": {
"amount": 141800,
@ -20,7 +24,7 @@
"future_license": "MIT",
"degeneration_policy": "trsl:policy:linear-longstop-v0@1.0",
"longstop_at": "2029-01-01T00:00:00Z",
"ledger": "examples/pilot-candidates/info-tech-canon-service-surface/ledger.json"
"ledger": "/phases/trsl:phase:draft-info-tech-canon-service-surface/ledger"
},
"extensions": [
"trsl:extension:development-license@1.0"

View file

@ -5,7 +5,11 @@
"id": "trsl:phase:draft-net-kingdom-local-identity",
"milestone_release": {
"name": "net-kingdom-local-identity-v1 (NK-WP-0002)",
"source_revision": "3890dca"
"source_revision": "3890dca",
"repo_hub": "forgejo-coulomb",
"repo_hub_uri": "https://forgejo.coulomb.social",
"repo_id": 67,
"repo_name": "coulomb/net-kingdom"
},
"initial_target": {
"amount": 10000,
@ -20,7 +24,7 @@
"future_license": "MIT",
"degeneration_policy": "trsl:policy:linear-longstop-v0@1.0",
"longstop_at": "2028-01-01T00:00:00Z",
"ledger": "examples/pilot-candidates/net-kingdom-local-identity/ledger.json"
"ledger": "/phases/trsl:phase:draft-net-kingdom-local-identity/ledger"
},
"extensions": [
"trsl:extension:development-license@1.0"

View file

@ -5,7 +5,11 @@
"id": "trsl:phase:draft-railiance-vergabe-teilnahme",
"milestone_release": {
"name": "vergabe-teilnahme-v1 (RAILIANCE-WP-0002/RAILIANCE-WP-0014)",
"source_revision": "398b0fe"
"source_revision": "398b0fe",
"repo_hub": "forgejo-coulomb",
"repo_hub_uri": "https://forgejo.coulomb.social",
"repo_id": 62,
"repo_name": "coulomb/vergabe-teilnahme"
},
"initial_target": {
"amount": 648800,
@ -20,7 +24,7 @@
"future_license": "Apache-2.0",
"degeneration_policy": "trsl:policy:linear-longstop-v0@1.0",
"longstop_at": "2029-01-01T00:00:00Z",
"ledger": "examples/pilot-candidates/railiance-vergabe-teilnahme/ledger.json"
"ledger": "/phases/trsl:phase:draft-railiance-vergabe-teilnahme/ledger"
},
"extensions": [
"trsl:extension:development-license@1.0",