Some checks are pending
CI / lint-and-test (push) Waiting to run
- Add broad Cory-style outcome scenarios to the open-ended benchmark so regular-use ambiguity is tested, not only exact ID canaries. - Add a clone-proven cross-surface strategy anchor packet that updates the mapped rich proposal anchor only after Claim D exists. - Retain VPS Docker DB, claim/body metadata, and cross-surface proof reports with ruff plus 37 focused tests passing. `docs/reports/leo-working-state-20260709/cory-expected-working-leo-outcomes-20260709.md` `docs/reports/leo-working-state-20260709/cross-surface-apply-authorized-commit.sql` `docs/reports/leo-working-state-20260709/cross-surface-clone-rehearsal-current.log` `docs/reports/leo-working-state-20260709/cross-surface-clone-rehearsal-failed-source-id-constraint.log` `docs/reports/leo-working-state-20260709/cross-surface-delete-rollback.sql` `docs/reports/leo-working-state-20260709/cross-surface-packet.json` `docs/reports/leo-working-state-20260709/cross-surface-postflight.sql` `docs/reports/leo-working-state-20260709/cross-surface-preflight.sql` `docs/reports/leo-working-state-20260709/cross-surface-resolution-current.md` `docs/reports/leo-working-state-20260709/current-truth-index.md` `docs/reports/leo-working-state-20260709/leo-db-state-17-cory-outcome-benchmark.svg` `docs/reports/leo-working-state-20260709/leo-db-state-18-db-vs-workspace.svg` `docs/reports/leo-working-state-20260709/leo-db-state-19-claims-body-metadata.svg` `docs/reports/leo-working-state-20260709/leo-db-state-20-cross-surface-anchor.svg` `docs/reports/leo-working-state-20260709/working-leo-current-state-20260709.md` `docs/reports/leo-working-state-20260709/working-leo-definition-20260709.md` `docs/reports/leo-working-state-20260709/working-leo-execution-plan-current.md` `docs/reports/leo-working-state-20260709/working-leo-open-ended-benchmark-spec.json` `scripts/kb_cross_surface_resolution_packet.py` `scripts/working_leo_open_ended_benchmark.py` `tests/test_kb_cross_surface_resolution_packet.py` `tests/test_working_leo_open_ended_benchmark.py`
297 lines
11 KiB
Python
297 lines
11 KiB
Python
#!/usr/bin/env python3
|
|
"""Generate a cross-surface companion packet for mapped rich KB proposals.
|
|
|
|
The mapped rich proposal packet creates claim/source/evidence/edge rows. Some
|
|
approved fragments target non-claim surfaces. This packet handles the one
|
|
currently safe cross-surface write: after Claim D exists, move the active Leo
|
|
policy anchor from the retired compressed internet-finance claim to Claim D.
|
|
|
|
Other fragments are retained as explicit deferrals because the current schema
|
|
does not provide a safe direct relationship from claims to governance gates,
|
|
concept maps, or Rio strategy context.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
from typing import Any
|
|
|
|
HERE = Path(__file__).resolve().parent
|
|
sys.path.insert(0, str(HERE))
|
|
|
|
from kb_rich_proposal_creation_plan import _sql_literal # noqa: E402
|
|
|
|
POLICY_NODE_ID = "52bc4264-330e-489d-920c-a493fd2d985a"
|
|
POLICY_NODE_TITLE = "Multi-agent public intelligence"
|
|
POLICY_TELOS_ANCHOR_ID = "c7dd984c-ac1b-43f9-9996-576ddf61c6d2"
|
|
TELOS_SHARED_ROOT_ID = "13100000-0000-0000-0000-000000000001"
|
|
|
|
OLD_INTERNET_FINANCE_CLAIM_ID = "d0000000-0000-0000-0000-000000000005"
|
|
CLAIM_D_ID = "e6ce4e36-15d2-53bc-8b74-dda0efc095c1"
|
|
APPROVAL_SOURCE_ID = "9a0d2429-b98b-585a-980c-0176db7f9fe7"
|
|
ANCHOR_ID = "47f128a0-36c5-4b60-97d4-48c32fa48bc7"
|
|
|
|
QUALITY_GATE_ID = "fa88e31b-6fca-4801-bf72-f5db81950a11"
|
|
EVIDENCE_BAR_ID = "45695897-2a9c-4279-ac25-e59f166dec6a"
|
|
|
|
ANCHOR_NOTE = (
|
|
"Mapped rich proposal 14fa5ecc applied: active Leo policy now anchors to Claim D "
|
|
"(internet finance is a candidate mechanism, not the telos) instead of the retired "
|
|
"compressed internet-finance claim."
|
|
)
|
|
OLD_ANCHOR_NOTE = (
|
|
"Telos/policy grounding approved by m3ta: capital allocation expresses priorities "
|
|
"and must be coordinated with collective intelligence."
|
|
)
|
|
|
|
|
|
def _uuid_values(values: list[str], *, column_name: str = "id") -> str:
|
|
rows = ",\n ".join(f"('{value}'::uuid)" for value in values)
|
|
return f"(values\n {rows}\n ) as v({column_name})"
|
|
|
|
|
|
def build_preflight_sql() -> str:
|
|
return f"""\\set ON_ERROR_STOP on
|
|
-- Cross-surface companion preflight. Read-only.
|
|
-- Run after the mapped rich proposal claim/source packet has been applied.
|
|
|
|
select 'policy_anchor_current' as check_name,
|
|
id::text,
|
|
from_node_id::text,
|
|
anchor_role,
|
|
claim_id::text,
|
|
source_id::text,
|
|
left(note, 220) as note
|
|
from public.strategy_node_anchors
|
|
where id = { _sql_literal(ANCHOR_ID) }::uuid;
|
|
|
|
select 'base_claim_d_exists' as check_name,
|
|
id::text,
|
|
status,
|
|
left(text, 220) as text
|
|
from public.claims
|
|
where id = { _sql_literal(CLAIM_D_ID) }::uuid;
|
|
|
|
select 'approval_source_exists' as check_name,
|
|
id::text,
|
|
source_type,
|
|
left(coalesce(excerpt, ''), 220) as excerpt
|
|
from public.sources
|
|
where id = { _sql_literal(APPROVAL_SOURCE_ID) }::uuid;
|
|
|
|
select 'telos_anchor_already_exists' as check_name,
|
|
id::text,
|
|
from_node_id::text,
|
|
anchor_role,
|
|
to_shared_root_id::text,
|
|
left(note, 220) as note
|
|
from public.strategy_node_anchors
|
|
where id = { _sql_literal(POLICY_TELOS_ANCHOR_ID) }::uuid;
|
|
|
|
select 'governance_gate_known' as check_name,
|
|
id::text,
|
|
name,
|
|
left(criteria, 180) as criteria,
|
|
left(evidence_bar, 180) as evidence_bar
|
|
from public.governance_gates
|
|
where id in (select id from {_uuid_values([QUALITY_GATE_ID, EVIDENCE_BAR_ID])})
|
|
order by name;
|
|
"""
|
|
|
|
|
|
def build_apply_sql(*, commit: bool) -> str:
|
|
terminator = "commit;" if commit else "rollback;"
|
|
return f"""\\set ON_ERROR_STOP on
|
|
begin;
|
|
|
|
do $$
|
|
declare
|
|
updated int;
|
|
begin
|
|
if not exists (select 1 from public.claims where id = { _sql_literal(CLAIM_D_ID) }::uuid) then
|
|
raise exception 'cross-surface packet requires Claim D % to exist before anchor update', { _sql_literal(CLAIM_D_ID) };
|
|
end if;
|
|
|
|
if not exists (select 1 from public.sources where id = { _sql_literal(APPROVAL_SOURCE_ID) }::uuid) then
|
|
raise exception 'cross-surface packet requires approval source % to exist before anchor update', { _sql_literal(APPROVAL_SOURCE_ID) };
|
|
end if;
|
|
|
|
update public.strategy_node_anchors
|
|
set claim_id = { _sql_literal(CLAIM_D_ID) }::uuid,
|
|
weight = 0.85,
|
|
note = { _sql_literal(ANCHOR_NOTE) }
|
|
where id = { _sql_literal(ANCHOR_ID) }::uuid
|
|
and from_node_id = { _sql_literal(POLICY_NODE_ID) }::uuid
|
|
and anchor_role = 'justified_by'
|
|
and claim_id = { _sql_literal(OLD_INTERNET_FINANCE_CLAIM_ID) }::uuid;
|
|
|
|
get diagnostics updated = row_count;
|
|
if updated <> 1 then
|
|
raise exception 'cross-surface anchor update affected % row(s), expected 1; anchor was not at old claim state', updated;
|
|
end if;
|
|
end $$;
|
|
|
|
{terminator}
|
|
"""
|
|
|
|
|
|
def build_postflight_sql() -> str:
|
|
return f"""\\set ON_ERROR_STOP on
|
|
-- Cross-surface postflight row-level readback.
|
|
|
|
select id::text,
|
|
from_node_id::text,
|
|
anchor_role,
|
|
claim_id::text,
|
|
source_id::text,
|
|
weight,
|
|
left(note, 240) as note
|
|
from public.strategy_node_anchors
|
|
where id = { _sql_literal(ANCHOR_ID) }::uuid;
|
|
|
|
select c.id::text,
|
|
c.status,
|
|
c.superseded_by::text,
|
|
left(c.text, 240) as text
|
|
from public.claims c
|
|
where c.id in (select id from {_uuid_values([OLD_INTERNET_FINANCE_CLAIM_ID, CLAIM_D_ID])})
|
|
order by c.id;
|
|
|
|
select id::text,
|
|
anchor_role,
|
|
to_shared_root_id::text,
|
|
left(note, 240) as note
|
|
from public.strategy_node_anchors
|
|
where id = { _sql_literal(POLICY_TELOS_ANCHOR_ID) }::uuid;
|
|
"""
|
|
|
|
|
|
def build_delete_rollback_sql() -> str:
|
|
return f"""\\set ON_ERROR_STOP on
|
|
begin;
|
|
|
|
do $$
|
|
declare
|
|
restored int;
|
|
begin
|
|
update public.strategy_node_anchors
|
|
set claim_id = { _sql_literal(OLD_INTERNET_FINANCE_CLAIM_ID) }::uuid,
|
|
source_id = null,
|
|
weight = 0.7,
|
|
note = { _sql_literal(OLD_ANCHOR_NOTE) }
|
|
where id = { _sql_literal(ANCHOR_ID) }::uuid
|
|
and from_node_id = { _sql_literal(POLICY_NODE_ID) }::uuid
|
|
and anchor_role = 'justified_by'
|
|
and claim_id = { _sql_literal(CLAIM_D_ID) }::uuid;
|
|
|
|
get diagnostics restored = row_count;
|
|
if restored <> 1 then
|
|
raise exception 'cross-surface anchor rollback affected % row(s), expected 1; anchor was not at Claim D state', restored;
|
|
end if;
|
|
end $$;
|
|
|
|
commit;
|
|
"""
|
|
|
|
|
|
def build_packet() -> dict[str, Any]:
|
|
return {
|
|
"packet_version": 1,
|
|
"purpose": "Companion packet for mapped rich proposal non-claim surfaces.",
|
|
"production_apply_status": "not_executed",
|
|
"base_packet_required_first": "production-apply-packet-mapped-20260709",
|
|
"safe_writes": [
|
|
{
|
|
"table": "public.strategy_node_anchors",
|
|
"operation": "update",
|
|
"id": ANCHOR_ID,
|
|
"from_node_id": POLICY_NODE_ID,
|
|
"from_node_title": POLICY_NODE_TITLE,
|
|
"old_claim_id": OLD_INTERNET_FINANCE_CLAIM_ID,
|
|
"new_claim_id": CLAIM_D_ID,
|
|
"approval_source_id": APPROVAL_SOURCE_ID,
|
|
"reason": "Replace the active Leo policy anchor that points at the retiring compressed internet-finance claim with the approved Claim D boundary claim.",
|
|
}
|
|
],
|
|
"already_represented": [
|
|
{
|
|
"target": "teleo telos",
|
|
"table": "public.strategy_node_anchors",
|
|
"id": POLICY_TELOS_ANCHOR_ID,
|
|
"to_shared_root_id": TELOS_SHARED_ROOT_ID,
|
|
"reason": "The active Leo policy already serves the Teleo telos shared root; the Claim D anchor update keeps internet finance subordinate to that telos.",
|
|
}
|
|
],
|
|
"known_non_writable_targets": [
|
|
{
|
|
"target": "governance_gate:quality-gate",
|
|
"existing_row_id": QUALITY_GATE_ID,
|
|
"reason": "Governance gate exists, but current schema has no claim-to-governance-gate edge/anchor table.",
|
|
},
|
|
{
|
|
"target": "governance_gate:evidence-bar",
|
|
"existing_row_id": EVIDENCE_BAR_ID,
|
|
"reason": "Governance gate exists, but current schema has no claim-to-governance-gate edge/anchor table.",
|
|
},
|
|
{
|
|
"target": "concept_map:distributed_market_intelligence",
|
|
"existing_row_id": None,
|
|
"reason": "No first-class concept-map table exists in the current live schema.",
|
|
},
|
|
{
|
|
"target": "rio:capital-deployment-layer",
|
|
"existing_row_id": None,
|
|
"reason": "No exact Rio strategy node or claim target exists in the current live schema.",
|
|
},
|
|
{
|
|
"target": "rio:active strategy v1 / internet-finance capital product",
|
|
"existing_row_id": None,
|
|
"reason": "No exact Rio active strategy node exists in the current live schema.",
|
|
},
|
|
],
|
|
"sql": {
|
|
"preflight": build_preflight_sql(),
|
|
"apply_rollback_rehearsal": build_apply_sql(commit=False),
|
|
"apply_commit": build_apply_sql(commit=True),
|
|
"postflight": build_postflight_sql(),
|
|
"delete_rollback": build_delete_rollback_sql(),
|
|
},
|
|
}
|
|
|
|
|
|
def write_packet_files(packet: dict[str, Any], output_dir: Path) -> None:
|
|
output_dir.mkdir(parents=True, exist_ok=True)
|
|
sql = packet["sql"]
|
|
(output_dir / "cross-surface-preflight.sql").write_text(sql["preflight"], encoding="utf-8")
|
|
(output_dir / "cross-surface-apply-rollback-rehearsal.sql").write_text(
|
|
sql["apply_rollback_rehearsal"], encoding="utf-8"
|
|
)
|
|
(output_dir / "cross-surface-apply-authorized-commit.sql").write_text(sql["apply_commit"], encoding="utf-8")
|
|
(output_dir / "cross-surface-postflight.sql").write_text(sql["postflight"], encoding="utf-8")
|
|
(output_dir / "cross-surface-delete-rollback.sql").write_text(sql["delete_rollback"], encoding="utf-8")
|
|
summary = {key: value for key, value in packet.items() if key != "sql"}
|
|
(output_dir / "cross-surface-packet.json").write_text(
|
|
json.dumps(summary, indent=2, sort_keys=True) + "\n", encoding="utf-8"
|
|
)
|
|
|
|
|
|
def parse_args(argv: list[str]) -> argparse.Namespace:
|
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
parser.add_argument("--output-dir", type=Path, help="directory to write packet files")
|
|
return parser.parse_args(argv)
|
|
|
|
|
|
def main(argv: list[str] | None = None) -> int:
|
|
args = parse_args(sys.argv[1:] if argv is None else argv)
|
|
packet = build_packet()
|
|
if args.output_dir:
|
|
write_packet_files(packet, args.output_dir)
|
|
print(json.dumps({key: value for key, value in packet.items() if key != "sql"}, indent=2, sort_keys=True))
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|