Maintainer chose info-tech-canon (outside the original four product lines) as the actual first repo to build up the practical Phase-declaration routine on, explicitly confirmed as a dry run, not a T05 go-live decision. Adds a third draft, non-binding manifest (examples/pilot-candidates/info-tech-canon-service-surface/): the cumulative service surface across ITC-WP-0001-0012 (all finished), Product-defining (100x). Flags a notable complication rather than smoothing it over: this repo's current LICENSE is already MIT-0, so a real Phase here would mean replacing an already-open license with restricted pre-conversion TRSL terms - a materially different step than the other two candidates. Exercised the full onboarding routine end-to-end against a real, ephemeral local instance of the hosted Trust Service (Docker Postgres, migrations applied, binky Licensor token seeded, uvicorn running the actual service/app.py): register-phase -> append-entry -> status all worked via scripts/trf_onboard.py exactly as specs/TrustServiceOnboarding.md describes, no code changes needed. Dry-run infrastructure torn down afterward; only the draft manifest files persist.
36 lines
1.1 KiB
Python
36 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"
|
|
|
|
|
|
PILOT_CANDIDATE_NAMES = [
|
|
"net-kingdom-local-identity",
|
|
"railiance-vergabe-teilnahme",
|
|
"info-tech-canon-service-surface",
|
|
]
|
|
|
|
|
|
@pytest.mark.parametrize("name", PILOT_CANDIDATE_NAMES)
|
|
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", PILOT_CANDIDATE_NAMES)
|
|
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"
|