feat(agent): persist RAG and PlayBook trust receipts
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 1s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / tests (push) Has been cancelled

This commit is contained in:
ogt
2026-07-10 20:19:51 +08:00
parent 7079b1e0ec
commit 0bb5e9c95a
4 changed files with 558 additions and 119 deletions

View File

@@ -46,6 +46,11 @@ from src.services.awooop_ansible_check_mode_service import (
run_failed_apply_check_mode_replay_once,
run_pending_check_modes_once,
)
from src.services.awooop_ansible_learning_writeback import (
canonical_ansible_playbook_id,
ensure_ansible_rag_writeback,
record_ansible_playbook_trust_writeback,
)
from src.services.awooop_truth_chain_service import (
_ansible_playbook_roots,
_ansible_runtime_readiness,
@@ -1724,16 +1729,42 @@ def test_ansible_apply_receipt_backfill_includes_verifier_and_km_gaps() -> None:
assert "_record_post_apply_verifier_and_learning" in source
assert "runtime_stage_receipts" in source
assert "_record_runtime_stage_receipts" in source
assert "playbook_trust" in source
assert "rag_writeback" in source
assert "INTERVAL '5 minutes'" in source
def test_ansible_learning_writeback_receipt_records_learning_service_call() -> None:
def test_ansible_learning_writeback_uses_canonical_durable_service() -> None:
source = inspect.getsource(_record_learning_writeback_receipt)
assert "record_verification_result" in source
assert "ansible_learning_writeback_recorded" in source
assert "learning_repository" in source
assert "stores_raw_logs" in source
assert "stores_secret_values" in source
assert "record_ansible_playbook_trust_writeback" in source
assert "canonical" in inspect.getsource(record_ansible_playbook_trust_writeback)
assert "FOR UPDATE" in inspect.getsource(record_ansible_playbook_trust_writeback)
assert "durable_write_acknowledged" in inspect.getsource(
record_ansible_playbook_trust_writeback
)
def test_ansible_catalog_ids_map_to_stable_playbook_primary_keys() -> None:
expected = {
"ansible:110-devops": "PB-ANSIBLE-110-DEVOPS",
"ansible:188-momo-backup-user": "PB-ANSIBLE-188-MOMO-BACKUP-USER",
"ansible:188-ai-web": "PB-ANSIBLE-188-AI-WEB",
}
assert {
catalog_id: canonical_ansible_playbook_id(catalog_id)
for catalog_id in expected
} == expected
assert all(len(playbook_id) <= 32 for playbook_id in expected.values())
def test_ansible_rag_writeback_requires_embedding_readback() -> None:
source = inspect.getsource(ensure_ansible_rag_writeback)
assert "ensure_entry_embedding" in source
assert "embedding IS NOT NULL" in source
assert "durable_write_acknowledged" in source
def test_ansible_post_apply_km_writeback_is_idempotent_for_learning_backfill() -> None:
@@ -1747,6 +1778,8 @@ def test_ansible_post_apply_km_writeback_is_idempotent_for_learning_backfill() -
assert "FROM knowledge_entries" in source
assert "path_type = :path_type" in source
assert "KnowledgeDBRepository" in source
assert "stage_id=\"rag_writeback\"" in source
assert "stage_id=\"playbook_trust\"" in source
def test_ansible_learning_writeback_operation_type_has_schema_migration() -> None: