docs: link imessage intake to secondbrain route

This commit is contained in:
Svrnty
2026-06-14 09:08:42 -04:00
parent 8c8d005fe8
commit 389bd1e89d
2 changed files with 16 additions and 1 deletions
@@ -30,6 +30,7 @@
"source_surface": "imessage.read", "source_surface": "imessage.read",
"capability_package": "bluebubbles", "capability_package": "bluebubbles",
"proposal_type": "secondbrain.memory.propose_create_from_imessage", "proposal_type": "secondbrain.memory.propose_create_from_imessage",
"secondbrain_intake_contract": "../secondbrain/docs/integration/2026-06-14-secondbrain-personal-agent-imessage-intake-contract.md",
"target_lifecycle_state": "inbox", "target_lifecycle_state": "inbox",
"allowed_effects": [ "allowed_effects": [
"emit_redacted_proposal", "emit_redacted_proposal",
@@ -151,6 +152,7 @@
"apply_allowed_now": false, "apply_allowed_now": false,
"requires_secondbrain_validator": "python3 tools/validate_secondbrain_child.py", "requires_secondbrain_validator": "python3 tools/validate_secondbrain_child.py",
"requires_focused_secondbrain_gate": true, "requires_focused_secondbrain_gate": true,
"focused_secondbrain_gate_command": "python3 tools/check_secondbrain_personal_agent_imessage_intake.py",
"requires_human_or_governed_approval": true, "requires_human_or_governed_approval": true,
"requires_local_evidence_and_handoff": true, "requires_local_evidence_and_handoff": true,
"push_allowed": false "push_allowed": false
@@ -186,7 +188,9 @@
"../secondbrain/docs/integration/2026-06-09-secondbrain-governed-agent-retrieval-contract.md", "../secondbrain/docs/integration/2026-06-09-secondbrain-governed-agent-retrieval-contract.md",
"../secondbrain/docs/integration/2026-06-09-secondbrain-governed-memory-write-path-contract.md", "../secondbrain/docs/integration/2026-06-09-secondbrain-governed-memory-write-path-contract.md",
"../secondbrain/docs/integration/2026-06-09-secondbrain-curator-hygiene-queue-contract.md", "../secondbrain/docs/integration/2026-06-09-secondbrain-curator-hygiene-queue-contract.md",
"../secondbrain/docs/integration/2026-06-09-secondbrain-hermes-runtime-boundary.md" "../secondbrain/docs/integration/2026-06-09-secondbrain-hermes-runtime-boundary.md",
"../secondbrain/docs/integration/2026-06-14-secondbrain-personal-agent-imessage-intake-contract.md",
"../secondbrain/docs/evidence/2026-06-14-secondbrain-personal-agent-imessage-intake-proof.md"
], ],
"proof_policy": { "proof_policy": {
"mode": "redacted-only", "mode": "redacted-only",
@@ -208,6 +212,7 @@
] ]
}, },
"remaining_gates": { "remaining_gates": {
"secondbrain_imessage_intake_contract": "ready",
"secondbrain_durable_apply": "blocked-follow-up", "secondbrain_durable_apply": "blocked-follow-up",
"curator_hygiene_apply_review": "blocked-follow-up", "curator_hygiene_apply_review": "blocked-follow-up",
"desktop_adapter_exposure": "blocked-follow-up", "desktop_adapter_exposure": "blocked-follow-up",
+10
View File
@@ -550,6 +550,12 @@ def main() -> int:
errors.append(f"memory_route_bad_proposal_type:{surface}") errors.append(f"memory_route_bad_proposal_type:{surface}")
if route.get("target_lifecycle_state") != "inbox": if route.get("target_lifecycle_state") != "inbox":
errors.append(f"memory_route_lifecycle_not_inbox:{surface}") errors.append(f"memory_route_lifecycle_not_inbox:{surface}")
if (
surface == "imessage.read"
and route.get("secondbrain_intake_contract")
!= "../secondbrain/docs/integration/2026-06-14-secondbrain-personal-agent-imessage-intake-contract.md"
):
errors.append("memory_route_imessage_intake_contract_missing")
allowed = route.get("allowed_effects") allowed = route.get("allowed_effects")
if not isinstance(allowed, list) or "emit_redacted_proposal" not in allowed: if not isinstance(allowed, list) or "emit_redacted_proposal" not in allowed:
errors.append(f"memory_route_redacted_proposal_not_allowed:{surface}") errors.append(f"memory_route_redacted_proposal_not_allowed:{surface}")
@@ -582,6 +588,8 @@ def main() -> int:
errors.append("memory_route_apply_allowed_now") errors.append("memory_route_apply_allowed_now")
if apply_policy.get("requires_secondbrain_validator") != "python3 tools/validate_secondbrain_child.py": if apply_policy.get("requires_secondbrain_validator") != "python3 tools/validate_secondbrain_child.py":
errors.append("memory_route_secondbrain_validator_missing") errors.append("memory_route_secondbrain_validator_missing")
if apply_policy.get("focused_secondbrain_gate_command") != "python3 tools/check_secondbrain_personal_agent_imessage_intake.py":
errors.append("memory_route_focused_secondbrain_gate_command_missing")
for key in [ for key in [
"requires_focused_secondbrain_gate", "requires_focused_secondbrain_gate",
"requires_human_or_governed_approval", "requires_human_or_governed_approval",
@@ -608,6 +616,8 @@ def main() -> int:
"../secondbrain/docs/integration/2026-06-09-secondbrain-governed-memory-write-path-contract.md", "../secondbrain/docs/integration/2026-06-09-secondbrain-governed-memory-write-path-contract.md",
"../secondbrain/docs/integration/2026-06-09-secondbrain-curator-hygiene-queue-contract.md", "../secondbrain/docs/integration/2026-06-09-secondbrain-curator-hygiene-queue-contract.md",
"../secondbrain/docs/integration/2026-06-09-secondbrain-hermes-runtime-boundary.md", "../secondbrain/docs/integration/2026-06-09-secondbrain-hermes-runtime-boundary.md",
"../secondbrain/docs/integration/2026-06-14-secondbrain-personal-agent-imessage-intake-contract.md",
"../secondbrain/docs/evidence/2026-06-14-secondbrain-personal-agent-imessage-intake-proof.md",
]: ]:
if ref not in refs: if ref not in refs:
errors.append(f"memory_route_secondbrain_ref_missing:{ref}") errors.append(f"memory_route_secondbrain_ref_missing:{ref}")