target-revenue/tests/test_pilot_candidate_manifests.py
tegwick 9886742fa8 Advance WP-0008: governance, candidate survey, pilot manifests, CLA draft
T01: specs/TRSL-Governance.md. Resolves the Licensor-identity question
(maintainer decision, 2026-07-29): a single shared Licensor, Binky
Hedgehog GmbH, operating as the binky tenant, across all four product
lines - not per-product-line. Unblocks (does not itself resolve) the
License/CUA arbitral-institution selection now that the Licensor's own
jurisdiction is known. Tables versioning/extension-governance/operator-
governance status per concept §20, naming open items (compatibility
rules, deprecation criteria, conflict-of-interest rule, key-rotation
history) rather than silently assuming them solved.

T02: specs/PilotPhaseCandidateSurvey.md. Direct repo inspection (hub
had no goal data for three of four product lines) plus an Explore-agent
survey of all ten railiance-* repos. Two defensible candidates found:
NK-WP-0002 Local Identity (net-kingdom, Incremental 10x) and
vergabe-teilnahme (railiance-apps, Product-defining 100x, the only
genuinely product-shaped deliverable across ten railiance-* repos).
coulomb-loop and helix-forge have no candidate, for stated principled
reasons (internal tooling; pre-implementation-stage, respectively).

T03: examples/pilot-candidates/ - draft, non-binding Phase Manifests
for both real candidates, trsl:phase:draft-* ids, empty ledgers,
schema-validated, explicit README stating nothing here is authorized
to go live.

T04: specs/TRSL-ContributorLicenseAgreement-Draft.md, implementing the
CLA-not-assignment recommendation from
history/260729-TRSL-ContributorRights-Research.md - narrowly scoped to
the current Phase's TRSL terms plus its already-declared Future
License at Conversion, same preliminary-candidate treatment as the
License/CUA V1C1 documents. CONTRIBUTING.md updated to point at it
while keeping the external-contribution block in effect until accepted.

T05's precondition list updated to reflect what's now resolved, still
left todo by design pending the maintainer's own go-live decision.
2026-07-29 22:52:52 +02:00

35 lines
1.1 KiB
Python

"""Conformance test for the draft pilot-candidate Phase Manifests
(WP-0008-T03, examples/pilot-candidates/). These are non-binding worked
examples, not real Phases, but they must stay schema-conformant like
examples/phase-001/ does.
"""
from __future__ import annotations
import json
import pytest
from conftest import REPO_ROOT
from target_revenue import validation
PILOT_CANDIDATES_DIR = REPO_ROOT / "examples" / "pilot-candidates"
@pytest.mark.parametrize(
"name",
["net-kingdom-local-identity", "railiance-vergabe-teilnahme"],
)
def test_pilot_candidate_manifest_is_conformant(name):
manifest = json.loads((PILOT_CANDIDATES_DIR / name / "manifest.json").read_text())
validation.validate_phase_manifest(manifest)
assert manifest["phase"]["id"].startswith("trsl:phase:draft-")
@pytest.mark.parametrize(
"name",
["net-kingdom-local-identity", "railiance-vergabe-teilnahme"],
)
def test_pilot_candidate_ledger_is_empty_draft_state(name):
ledger = json.loads((PILOT_CANDIDATES_DIR / name / "ledger.json").read_text())
assert ledger == [], "draft candidates must not carry any real ledger entries"