Catalog fluid-telegram-operator (draft) and tenant-engine sender projection; case plan env spec and case-ref

- fluid-telegram-operator: pointer-only draft entry and playbook from ops-mason's
  MASON-WP-0005-T06 proposal; activation waits for the owner-run member and
  non-member checks and the salt create-once probe.
- audit-core-senders: tenant-engine recorded as a verified exact-path consumer
  projection (MASON-WP-0007-T06). The registry lane itself stays draft.
- warden case plan: {param:env} format spec (net-kingdom 850907a), other specs
  and conversions refused; prints case-ref <case_id>@sha256:<file digest>.
- Workload-join unknown count 21 -> 22 (test and pep-stance.yaml).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 427672@bnt-lap001
Assistant-Session: a0a2367e-4697-440c-a4e5-9713c009f6d8
This commit is contained in:
tegwick 2026-10-09 19:59:49 +02:00
parent 330de7b5ac
commit 23ba584ccd
9 changed files with 153 additions and 13 deletions

View file

@ -2255,13 +2255,14 @@ def case_plan(
output_json: Annotated[bool, typer.Option("--json", help="Output JSON")] = False,
) -> None:
"""Print a case's run (warden, attended, owner steps and verification); executes nothing (exit 1 if refused)."""
from warden.case_plan import CaseError, default_type_path, format_plan, load_case, plan_case
from warden.case_plan import CaseError, case_ref, default_type_path, format_plan, load_case, plan_case
from warden.case_type import load_type
try:
case_doc = load_case(case_file)
type_path = type_file or default_type_path(case_file, str((case_doc.get("spec") or {}).get("type", "")))
plan = plan_case(case_doc, load_type(type_path), _load_catalog())
plan.case_ref = case_ref(plan.case_id, case_file.read_bytes())
except CaseError as exc:
err.print(str(exc), markup=False)
raise typer.Exit(1)
@ -2271,4 +2272,4 @@ def case_plan(
if output_json:
print(json.dumps(plan.as_dict(), indent=2))
else:
console.print(format_plan(plan), markup=False)
console.print(format_plan(plan), markup=False, soft_wrap=True)