← Files VeraARCHIVED FILE
modules/concordato-plan-review/scripts/review_case_model.py
4.61 KB · Oct 2, 2026 · 00:29 UTC
from __future__ import annotations
import sys as _bootstrap_sys # isort: skip
_bootstrap_sys.dont_write_bytecode = True
_bootstrap_sys.pycache_prefix = (
r"Z:\__concordato_no_bytecode__"
if _bootstrap_sys.platform == "win32"
else "/dev/null/concordato-plan-review"
)
import os as _bootstrap_os # isort: skip
_BOOTSTRAP_PATH = _bootstrap_os.path.join(
_bootstrap_os.path.dirname(_bootstrap_os.path.abspath(__file__)),
"implementation_bootstrap.py",
)
_BOOTSTRAP_ENTRY = _bootstrap_os.lstat(_BOOTSTRAP_PATH)
if _BOOTSTRAP_ENTRY.st_mode & 0o170000 != 0o100000 or _BOOTSTRAP_ENTRY.st_nlink != 1:
raise RuntimeError("Concordato implementation bootstrap is not a real file.")
with open(_BOOTSTRAP_PATH, "rb") as _bootstrap_handle:
_BOOTSTRAP_BEFORE = _bootstrap_os.fstat(_bootstrap_handle.fileno())
_BOOTSTRAP_BYTES = _bootstrap_handle.read()
_BOOTSTRAP_AFTER = _bootstrap_os.fstat(_bootstrap_handle.fileno())
_BOOTSTRAP_IDENTITY = (
_BOOTSTRAP_ENTRY.st_dev,
_BOOTSTRAP_ENTRY.st_ino,
_BOOTSTRAP_ENTRY.st_size,
_BOOTSTRAP_ENTRY.st_mtime_ns,
)
if (
_BOOTSTRAP_IDENTITY
!= (
_BOOTSTRAP_BEFORE.st_dev,
_BOOTSTRAP_BEFORE.st_ino,
_BOOTSTRAP_BEFORE.st_size,
_BOOTSTRAP_BEFORE.st_mtime_ns,
)
or _BOOTSTRAP_IDENTITY
!= (
_BOOTSTRAP_AFTER.st_dev,
_BOOTSTRAP_AFTER.st_ino,
_BOOTSTRAP_AFTER.st_size,
_BOOTSTRAP_AFTER.st_mtime_ns,
)
or len(_BOOTSTRAP_BYTES) != _BOOTSTRAP_AFTER.st_size
):
raise RuntimeError("Concordato implementation bootstrap changed while read.")
_BOOTSTRAP_NAMESPACE = {
"__file__": _BOOTSTRAP_PATH,
"__name__": "_concordato_implementation_bootstrap",
}
# The exact stable single-link bootstrap source is verified above.
exec( # nosec B102
compile(_BOOTSTRAP_BYTES, _BOOTSTRAP_PATH, "exec"), _BOOTSTRAP_NAMESPACE
)
_BOOTSTRAP_NAMESPACE["activate_implementation_boundary"]()
_SCRIPTS_DIR = _bootstrap_os.path.dirname(_bootstrap_os.path.abspath(__file__))
if _SCRIPTS_DIR not in _bootstrap_sys.path:
_bootstrap_sys.path.insert(0, _SCRIPTS_DIR)
import argparse
import json
import logging
from pathlib import Path
from typing import Any
from concordato_semantic import review_concordato_case_model
from vera_assurance import ( # noqa: E402
AssuranceContractError,
load_client_engagement_context_file,
)
LOGGER = logging.getLogger(__name__)
def _read_json(path: Path) -> Any:
return json.loads(path.read_text(encoding="utf-8"))
def main() -> int:
"""Seal a reviewer-confirmed semantic case model against source receipts."""
parser = argparse.ArgumentParser(
description=(
"Create a source-bound reviewed Concordato Preventivo semantic recipe."
)
)
parser.add_argument(
"inventory",
type=Path,
help="inventory.json written by the inspection run.",
)
parser.add_argument(
"case_model",
type=Path,
help="Reviewer-confirmed case model using the generated template schema.",
)
parser.add_argument("--output", type=Path, required=True)
parser.add_argument("--client-engagement", type=Path, required=True)
parser.add_argument("--reviewer-ref", required=True)
parser.add_argument("--reviewed-on", required=True)
parser.add_argument("--reference-date", default="")
args = parser.parse_args()
try:
load_client_engagement_context_file(
args.client_engagement,
expected_workflow_id="concordato-plan-review",
input_paths=[args.inventory, args.case_model],
output_dir=args.output,
)
except AssuranceContractError as exc:
parser.error(str(exc))
inventory = _read_json(args.inventory)
if not isinstance(inventory, list) or any(
not isinstance(row, dict) for row in inventory
):
raise ValueError("inventory.json must contain an array of objects")
case_model = _read_json(args.case_model)
if not isinstance(case_model, dict):
raise ValueError("Case model must be a JSON object")
recipe = review_concordato_case_model(
inventory,
case_model,
reviewer_ref=args.reviewer_ref,
reviewed_on=args.reviewed_on,
reference_date=args.reference_date,
)
args.output.parent.mkdir(parents=True, exist_ok=True)
args.output.write_text(
json.dumps(recipe, ensure_ascii=False, indent=2) + "\n",
encoding="utf-8",
)
LOGGER.info("wrote reviewed semantic recipe to %s", args.output)
return 0
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
raise SystemExit(main())
SHA-256: dd65b8da66bdf17df3b3bdfec51682a683709a4be86656500d4412b5a1bc45c5