Require Leo direct-claim follow-up line
Some checks are pending
CI / lint-and-test (push) Waiting to run

This commit is contained in:
twentyOne2x 2026-07-10 02:49:58 +02:00
parent ddb916ab73
commit 79cfe2dc4a
4 changed files with 15 additions and 3 deletions

View file

@ -82,6 +82,10 @@ the expected follow-up without needing to ask twice:
4. Next Cory-style follow-up: the one proof-changing or admin action that would
change the answer.
Always include the final line label `Next Cory-style follow-up:` for a
no-context direct-claim answer. Do not omit it just because the answer seems
complete.
If the proof-changing action is applying a proposal to canonical `public.*`,
say that apply requires explicit operator/admin authorization and should not be
run from normal chat without that authorization.

View file

@ -74,6 +74,10 @@ the expected follow-up without needing to ask twice:
4. Next Cory-style follow-up: the one proof-changing or admin action that would
change the answer.
Always include the final line label `Next Cory-style follow-up:` for a
no-context direct-claim answer. Do not omit it just because the answer seems
complete.
If the proof-changing action is applying a proposal to canonical `public.*`,
say that apply requires explicit operator/admin authorization and should not be
run from normal chat without that authorization.

View file

@ -402,7 +402,8 @@ SIGNAL_PATTERNS: dict[str, list[re.Pattern[str]]] = {
r"\bnot canonical\b|\bnot applied\b|\bdoes not exist in (?:canonical )?(?:Leo's )?KB\b|"
r"\bonly in the proposal ledger\b|locked behind the apply tool|"
r"\bcannot demo\b|\bnot possible\b|\bnot a decision[- ]matrix vote\b|"
r"\bno auto[- ]apply path\b|\bschema gap\b|\bmissing apply tooling\b",
r"\bnot decision[- ]matrix approval\b|\bno auto[- ]apply path\b|\bschema gap\b|\bmissing apply tooling\b|"
r"\bapply tool (?:has not|hasn't) been run\b|\bruntime rendering\b",
re.I,
),
re.compile(
@ -415,7 +416,8 @@ SIGNAL_PATTERNS: dict[str, list[re.Pattern[str]]] = {
r"\bnot in canonical\b|\bcanonical .* has(?:n't| not) (?:moved|changed)\b|"
r"\bapplied_at empty\b|\bnot applied\b|\bnot possible\b|"
r"\bnot a decision[- ]matrix vote\b|\blocked behind the apply tool\b|"
r"\bno auto[- ]apply path\b|\bschema gap\b|\bmissing apply tooling\b",
r"\bnot decision[- ]matrix approval\b|\bno auto[- ]apply path\b|\bschema gap\b|\bmissing apply tooling\b|"
r"\bapply tool (?:has not|hasn't) been run\b|\bruntime rendering\b|\bnot canonical\b",
re.I,
),
],
@ -487,7 +489,7 @@ SIGNAL_PATTERNS: dict[str, list[re.Pattern[str]]] = {
re.compile(
r"\bI (?:would|should|will) (?:ask|query|check|run|show|stage|offer)|"
r"\bshould I\b|\bdo you want\b|\bwant me to\b|\bthe next action is\b|\bnext admin action\b|"
r"\bproof-changing action\b",
r"\bproof-changing action\b|\bNext Cory-style follow-up:\b",
re.I,
),
],

View file

@ -16,6 +16,7 @@ def test_gcp_kb_skill_uses_cloudsql_bridge_not_vps_docker() -> None:
assert "list-proposals --status all" in text
assert "Do not answer" in text or "do not infer matrix approval" in text
assert "Next Cory-style follow-up" in text
assert "Always include the final line label" in text
assert "I cannot claim canonical DB changed" in text
assert "explicit operator/admin authorization" in text
assert "docker exec" not in text
@ -39,6 +40,7 @@ def test_vps_kb_skill_keeps_vps_scope_explicit() -> None:
assert "do not infer matrix approval" in text
assert "approved/staged or packet-ready but not canonical" in text
assert "Next Cory-style follow-up" in text
assert "Always include the final line label" in text
assert "I cannot claim canonical DB changed" in text
assert "explicit operator/admin authorization" in text
assert "Do not call an approved proposal \"implemented\"" in text