Skip to content

symfonic.platform.migration_refusal_journal

migration_refusal_journal

Host-owned local evidence for closed, individually approved refusal boundaries.

MigrationRefusalJournal

MigrationRefusalJournal(path: str | Path, *, release_version: str, deployment_id: str)

Locked, fsynced positive refusal observations, never turn counts.

Hosts provision capacity/rotation and non-sensitive labels. Remote file durability and complete capture are not attested. Direct failures propagate; Opt-in producer wrappers suppress ordinary observer failures to preserve refusal.

Source code in src/symfonic/platform/migration_refusal_journal.py
def __init__(
    self, path: str | Path, *, release_version: str, deployment_id: str,
) -> None:
    if any(_label(value) == "unknown" for value in (release_version, deployment_id)):
        raise ValueError("attribution requires bounded non-sensitive version/deployment labels")
    try:
        import fcntl
    except ImportError as exc:
        raise RuntimeError("MigrationRefusalJournal requires POSIX local file locking") from exc
    self._locking = fcntl
    self._path = Path(path)
    self._release_version = release_version
    self._deployment_id = deployment_id