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.
35 lines
1.1 KiB
Python
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"
|