diff --git a/hermes-agent/leoclean-skills/gcp/teleo-kb-bridge/SKILL.md b/hermes-agent/leoclean-skills/gcp/teleo-kb-bridge/SKILL.md index 66c31f8..6506456 100644 --- a/hermes-agent/leoclean-skills/gcp/teleo-kb-bridge/SKILL.md +++ b/hermes-agent/leoclean-skills/gcp/teleo-kb-bridge/SKILL.md @@ -116,17 +116,20 @@ proof language below. These are behavioral examples, not feature changes. files, Telegram refs, document evaluations, proposal `source_ref`/logical source keys, and canonical `public.sources` rows are different layers. The missing proof is a row-link audit plus guarded apply contract. -- "Can I demo Leo changes the KB?": separate demo tiers. A safe demo can show - a real staging write to `kb_stage.kb_proposals` and read it back. Canonical - mutation of `public.claims`, `public.sources`, `public.claim_evidence`, or - `public.claim_edges` requires explicit operator/admin authorization and an - apply/postflight sequence. +- "Can I demo Leo changes the KB?": lead with `staging yes, canonical KB + change not safe to demo from chat`. A safe demo can show a real staging write + to `kb_stage.kb_proposals` and read it back. Canonical mutation of + `public.claims`, `public.sources`, `public.claim_evidence`, or + `public.claim_edges` is not provable from chat and is not yet, blocked on + apply tooling until explicit operator/admin authorization, an apply tool, and + before/after postflight readback exist. - "Did editing SOUL.md change canonical identity?": answer `no`. `SOUL.md` is - a runtime/rendered artifact; canonical identity requires DB rows plus - render/sync proof. Direct edits can affect the next runtime session but do - not change canonical Postgres rows. Always include a row-level proof - sentence for this case: `Row-level proof would require current readback of - new or updated row IDs in public.claims, public.sources, + a runtime/rendered artifact, not canonical Postgres, not the source of truth, + not a canonical commit, and not collective truth; canonical identity requires + DB rows plus render/sync proof. Direct edits can affect the next runtime + session but do not change canonical Postgres rows. Always include a row-level + proof sentence for this case: `Row-level proof would require current readback + of new or updated row IDs in public.claims, public.sources, public.claim_evidence, public.claim_edges or identity tables, plus postflight/render-sync proof; without those rows, canonical identity is unchanged.` diff --git a/hermes-agent/leoclean-skills/vps/teleo-kb-bridge/SKILL.md b/hermes-agent/leoclean-skills/vps/teleo-kb-bridge/SKILL.md index 34bdec5..8f39bb4 100644 --- a/hermes-agent/leoclean-skills/vps/teleo-kb-bridge/SKILL.md +++ b/hermes-agent/leoclean-skills/vps/teleo-kb-bridge/SKILL.md @@ -108,17 +108,20 @@ proof language below. These are behavioral examples, not feature changes. files, Telegram refs, document evaluations, proposal `source_ref`/logical source keys, and canonical `public.sources` rows are different layers. The missing proof is a row-link audit plus guarded apply contract. -- "Can I demo Leo changes the KB?": separate demo tiers. A safe demo can show - a real staging write to `kb_stage.kb_proposals` and read it back. Canonical - mutation of `public.claims`, `public.sources`, `public.claim_evidence`, or - `public.claim_edges` requires explicit operator/admin authorization and an - apply/postflight sequence. +- "Can I demo Leo changes the KB?": lead with `staging yes, canonical KB + change not safe to demo from chat`. A safe demo can show a real staging write + to `kb_stage.kb_proposals` and read it back. Canonical mutation of + `public.claims`, `public.sources`, `public.claim_evidence`, or + `public.claim_edges` is not provable from chat and is not yet, blocked on + apply tooling until explicit operator/admin authorization, an apply tool, and + before/after postflight readback exist. - "Did editing SOUL.md change canonical identity?": answer `no`. `SOUL.md` is - a runtime/rendered artifact; canonical identity requires DB rows plus - render/sync proof. Direct edits can affect the next runtime session but do - not change canonical Postgres rows. Always include a row-level proof - sentence for this case: `Row-level proof would require current readback of - new or updated row IDs in public.claims, public.sources, + a runtime/rendered artifact, not canonical Postgres, not the source of truth, + not a canonical commit, and not collective truth; canonical identity requires + DB rows plus render/sync proof. Direct edits can affect the next runtime + session but do not change canonical Postgres rows. Always include a row-level + proof sentence for this case: `Row-level proof would require current readback + of new or updated row IDs in public.claims, public.sources, public.claim_evidence, public.claim_edges or identity tables, plus postflight/render-sync proof; without those rows, canonical identity is unchanged.` diff --git a/tests/test_hermes_leoclean_skill_surfaces.py b/tests/test_hermes_leoclean_skill_surfaces.py index f67afa5..c73379f 100644 --- a/tests/test_hermes_leoclean_skill_surfaces.py +++ b/tests/test_hermes_leoclean_skill_surfaces.py @@ -6,6 +6,7 @@ SKILL_ROOT = ROOT / "hermes-agent" / "leoclean-skills" def test_gcp_kb_skill_uses_cloudsql_bridge_not_vps_docker() -> None: text = (SKILL_ROOT / "gcp" / "teleo-kb-bridge" / "SKILL.md").read_text() + squashed = " ".join(text.split()) assert "Cloud SQL" in text assert "answer from the Cloud SQL KB after a bounded read" in text @@ -19,8 +20,15 @@ def test_gcp_kb_skill_uses_cloudsql_bridge_not_vps_docker() -> None: assert "Always include the final line label" in text assert "Cory Direct-Claim Answer Contract" in text assert "not just pointer mismatch" in text - assert "staging write to `kb_stage.kb_proposals`" in text - assert "canonical identity requires DB rows plus" in text + assert "staging write to `kb_stage.kb_proposals`" in squashed + assert "canonical KB change not safe to demo from chat" in squashed + assert "not provable from chat" in text + assert "not yet, blocked on apply tooling" in squashed + assert "canonical identity requires DB rows plus" in squashed + assert "not canonical Postgres" in text + assert "not the source of truth" in text + assert "not a canonical commit" in text + assert "not collective truth" in text assert "Row-level proof would require current readback" in text assert "new or updated row IDs" in text assert "I cannot claim canonical DB changed" in text @@ -49,8 +57,15 @@ def test_vps_kb_skill_keeps_vps_scope_explicit() -> None: assert "Always include the final line label" in text assert "Cory Direct-Claim Answer Contract" in text assert "not just pointer mismatch" in text - assert "staging write to `kb_stage.kb_proposals`" in text - assert "canonical identity requires DB rows plus" in text + assert "staging write to `kb_stage.kb_proposals`" in squashed + assert "canonical KB change not safe to demo from chat" in squashed + assert "not provable from chat" in text + assert "not yet, blocked on apply tooling" in squashed + assert "canonical identity requires DB rows plus" in squashed + assert "not canonical Postgres" in text + assert "not the source of truth" in text + assert "not a canonical commit" in text + assert "not collective truth" in text assert "Row-level proof would require current readback" in text assert "new or updated row IDs" in text assert "I cannot claim canonical DB changed" in text