docs: reconcile Steev Core Seed readiness

This commit is contained in:
Svrnty
2026-06-15 00:47:38 -04:00
parent 3b926000a6
commit 121b5bb1e6
7 changed files with 251 additions and 61 deletions
+96 -25
View File
@@ -25,6 +25,7 @@ REQUIRED = [
"docs/contracts/personal-agent-runtime-readiness-snapshot.json",
"docs/contracts/personal-agent-desktop-exposure-contract.json",
"docs/evidence/2026-06-14-personal-agent-proton-rclone-runtime-reconciliation.md",
"docs/evidence/2026-06-15-personal-agent-core-seed-readiness-reconciliation.md",
"docs/prd/2026-06-14-personal-agent-context-runtime-prd.md",
"docs/issues/2026-06-14-personal-agent-context-runtime-work-orders.md",
"docs/supersession/2026-06-14-personal-agent-context-runtime-supersession-register.md",
@@ -128,7 +129,11 @@ REQUIRED_RUNTIME_GAPS = {
"proton-rclone-service-posture-disabled",
"proton-bridge-native-units-disabled-docker-route-active",
"stale-protonmail-bridge-container",
"proton-rclone-child-unregistered",
"proton-rclone-child-registered-core-s606",
"seed-local-acceptance-proven",
"proton-suite-provider-smoke-blocked",
"profile-exposure-route-required",
"longer-standing-runtime-proof-beyond-three-poll",
"secondbrain-apply-blocked",
"desktop-adapter-exposure-blocked",
}
@@ -156,6 +161,8 @@ REQUIRED_DESKTOP_ROWS = {
"personal-agent.calendar.read",
"personal-agent.contacts.read",
"personal-agent.drive.read",
"personal-agent.seed-local-acceptance",
"personal-agent.proton-suite.provider-smoke",
"personal-agent.secondbrain.proposal",
"personal-agent.browser.host-runtime",
"personal-agent.write-actions",
@@ -203,6 +210,7 @@ def main() -> int:
"PACR-011",
"PACR-012",
"PACR-013",
"PACR-014",
"status: candidate",
"owner: jp",
]:
@@ -344,16 +352,17 @@ def main() -> int:
if proton:
if proton.get("schema_version") != "personal-agent-proton-rclone-package/v1":
errors.append("proton_rclone_schema_version_invalid")
if proton.get("status") != "package-candidate-unregistered":
errors.append("proton_rclone_status_not_package_candidate")
if proton.get("status") != "registered-child-local-package-degraded":
errors.append("proton_rclone_status_not_registered_child_local_degraded")
if proton.get("package_id") != "proton-rclone":
errors.append("proton_rclone_package_id_invalid")
if proton.get("profile_identity") != "personal-agent":
errors.append("proton_rclone_profile_identity_not_personal_agent")
if proton.get("display_name") != "Steev":
errors.append("proton_rclone_display_name_not_steev")
if proton.get("child_workspace_registered") is not True:
errors.append("proton_rclone_child_workspace_not_registered")
for key in [
"child_workspace_registered",
"package_runtime_readiness_claimed",
"profile_runtime_readiness_claimed",
"seed_readiness_claimed",
@@ -366,7 +375,7 @@ def main() -> int:
candidate = proton.get("child_workspace_candidate", {})
expected_candidate = {
"path": "../proton-rclone",
"commit": "7f2ee159c3c3d3f7167100c189099215bb9a02d8",
"commit": "f8403f1e5927933a0a5e283d2020119336e4e5e7",
"validator_command": "python3 tools/validate_proton_rclone_child.py",
"validator_result_observed": "ok",
"core_registration_candidate_packet": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-core-registration-candidate-packet.json",
@@ -374,24 +383,41 @@ def main() -> int:
"runtime_gate_repair_proof": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-runtime-gate-repair-proof.json",
"bridge_unit_convergence_proof": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-bridge-unit-convergence-proof.json",
"current_runtime_state_reconciliation": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-current-runtime-state-reconciliation.json",
"core_registration_pickup": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-core-registration-pickup.json",
"core_s606_registration_output": "../core/.sot/08-OUTPUTS/2026-06-14-s606-proton-rclone-child-registration.json",
"core_s641_governance_pickup": "../core/.sot/08-OUTPUTS/2026-06-15-s641-proton-suite-governance-pickup.json",
"core_s642_seed_refresh_pickup": "../core/.sot/08-OUTPUTS/2026-06-15-s642-seed-proton-suite-refresh-pickup.json",
"core_s643_seed_validator_repair_pickup": "../core/.sot/08-OUTPUTS/2026-06-15-s643-seed-personal-agent-validator-repair-pickup.json",
"seed_final_acceptance_gate": "../seed/outputs/research/2026-06-14-cortex-os-seed-personal-agent-final-full-tool-acceptance-gate.json",
"seed_boundary_decision": "../seed/outputs/research/2026-06-14-cortex-os-seed-personal-agent-core-promotion-productization-boundary-decision.json",
"seed_objective_completion_audit": "../seed/outputs/research/2026-06-14-cortex-os-seed-personal-agent-objective-completion-audit.json",
}
for key, expected in expected_candidate.items():
if candidate.get(key) != expected:
errors.append(f"proton_rclone_child_candidate_mismatch:{key}")
expected_hashes = {
"readonly_contract": "46e860c8f16ad6c327efc89ca49894f60aa69857a69247d935b21e70a335c0cb",
"readonly_contract": "d233a763ddb4fa49f5ff0bff02f5ec28595539375a735585902e535452f18686",
"live_redacted_health": "eebbb75e69c407f6b1a82fc847c30185bfa3b28d95848ea501333141a3c50edf",
"runtime_gate_repair_proof": "e9ebe2268209b6e9262a2d651d0baf9170c710e425fc591891f8b4ed81f21fbb",
"current_runtime_state_reconciliation": "5437470ec25331efa116c061d0b8dc97507df81d098267501cc06cd4e39112e0",
"current_runtime_state_reconciliation": "4562a62053ef4805833a41e9bba744ecf5ee9698d325f90b4a98191fe7aa579c",
"bridge_unit_convergence_proof": "8a7c07e331ff3b49ff5462caa9a691fd29f6e4db7fb4c968e8a44a99b152c46b",
"core_registration_pickup": "d7ebfa239026b4e6d2667f4337ae7acaf763251ee11123f8974581137f34aa46",
"core_s606_registration_output": "ff7e0f93a705ce9149d48879a4a00f30ad5abf5903d569a738ba7f26ccc60d59",
"core_s641_governance_pickup": "224b12db17306764208cc16ae6d8dc3df342c77c05c0cba65df11d7ba20b0de6",
"core_s642_seed_refresh_pickup": "b3604875422663033772ba09a1a96e6152b654bcb020d1acc2dc6ccb9f44541f",
"core_s643_seed_validator_repair_pickup": "c378f7e25c5cd2668060aada18f3a8a0ebdceb76c30431cae48e109e41610c5c",
"seed_final_acceptance_gate": "1d56599c5fbc763e95a5734fa4a507767371189c56ec26f0da36b232f12f4869",
"seed_boundary_decision": "230accd38c9608656935858db576d5b1b19d71184387ef9015d6b7945c0ae136",
"seed_objective_completion_audit": "5bda7600319daee01348870bbe3c7cb716457f5507cdac974adb614540e08951",
}
hashes = candidate.get("source_hashes", {})
for key, expected in expected_hashes.items():
if hashes.get(key) != expected:
errors.append(f"proton_rclone_child_hash_mismatch:{key}")
for key in ["core_registration_claimed", "runtime_readiness_claimed"]:
if candidate.get(key) is not False:
errors.append(f"proton_rclone_child_candidate_overclaim:{key}")
if candidate.get("core_registration_claimed") is not True:
errors.append("proton_rclone_child_candidate_core_registration_not_claimed")
if candidate.get("runtime_readiness_claimed") is not False:
errors.append("proton_rclone_child_candidate_runtime_overclaim")
boundary = proton.get("authority_boundary", {})
if boundary.get("profile_owns_surface_exposure") is not True:
errors.append("proton_rclone_profile_surface_boundary_missing")
@@ -525,19 +551,23 @@ def main() -> int:
remaining_gates = proton.get("remaining_gates", {})
if remaining_gates.get("child_workspace_candidate") != "complete-child-local":
errors.append("proton_rclone_child_candidate_gate_missing")
if remaining_gates.get("registered_child_workspace") != "complete-core-s606-child-local":
errors.append("proton_rclone_registered_child_gate_missing")
if remaining_gates.get("email_gate_repair") != "complete-child-local":
errors.append("proton_rclone_email_gate_repair_not_complete")
if remaining_gates.get("contacts_gate_repair") != "complete-child-local":
errors.append("proton_rclone_contacts_gate_repair_not_complete")
for gate in [
"registered_child_workspace",
"secondbrain_durable_apply",
]:
if remaining_gates.get(gate) != "blocked-follow-up":
errors.append(f"proton_rclone_remaining_gate_missing:{gate}")
if remaining_gates.get("seed_personal_agent_local_acceptance") != "complete-governed-local-jp-only":
errors.append("proton_rclone_seed_local_acceptance_gate_missing")
if remaining_gates.get("proton_suite_provider_smoke") != "blocked-follow-up":
errors.append("proton_rclone_provider_smoke_gate_missing")
if remaining_gates.get("proton_suite_seed_package_pickup") != "blocked-provider-smoke":
errors.append("proton_rclone_suite_seed_pickup_gate_missing")
if remaining_gates.get("secondbrain_durable_apply") != "blocked-follow-up":
errors.append("proton_rclone_secondbrain_durable_apply_gate_missing")
if remaining_gates.get("systemd_bridge_convergence") != "complete-child-local-docker-route-active":
errors.append("proton_rclone_bridge_convergence_not_complete")
if remaining_gates.get("seed_package_pickup") != "blocked-after-runtime-repair-source-lock-refresh":
if remaining_gates.get("seed_package_pickup") != "complete-governed-local-personal-agent":
errors.append("proton_rclone_seed_pickup_gate_invalid")
memory_route = load_json("docs/contracts/personal-agent-secondbrain-proposal-route.json", errors)
@@ -890,6 +920,8 @@ def main() -> int:
for key in ["runtime_readiness_claimed", "seed_readiness_claimed", "core_promotion_claimed"]:
if runtime.get(key) is not False:
errors.append(f"runtime_snapshot_overclaim:{key}")
if runtime.get("seed_local_acceptance_claimed") is not True:
errors.append("runtime_snapshot_seed_local_acceptance_not_claimed")
if runtime.get("memory_target") != "secondbrain-personal":
errors.append("runtime_snapshot_memory_target_not_secondbrain_personal")
if "orgbrain" not in runtime.get("forbidden_memory_targets", []):
@@ -989,12 +1021,17 @@ def main() -> int:
errors.append("runtime_snapshot_contacts_gate_repair_not_complete")
if remaining_gates.get("proton_bridge_systemd_convergence") != "complete-child-local-docker-route-active":
errors.append("runtime_snapshot_bridge_convergence_not_complete")
for gate in [
"proton_rclone_child_registration",
"secondbrain_durable_apply",
"desktop_adapter_exposure",
"final_acceptance_packet",
]:
if remaining_gates.get("proton_rclone_child_registration") != "complete-core-s606-child-local":
errors.append("runtime_snapshot_child_registration_gate_missing")
if remaining_gates.get("seed_local_acceptance") != "complete-governed-local-jp-only":
errors.append("runtime_snapshot_seed_local_acceptance_gate_missing")
if remaining_gates.get("proton_suite_provider_smoke") != "blocked-follow-up":
errors.append("runtime_snapshot_provider_smoke_gate_missing")
if remaining_gates.get("profile_exposure_route") != "blocked-core-route-required":
errors.append("runtime_snapshot_profile_exposure_gate_missing")
if remaining_gates.get("longer_standing_runtime_proof") != "follow-up":
errors.append("runtime_snapshot_longer_standing_runtime_gate_missing")
for gate in ["secondbrain_durable_apply", "desktop_adapter_exposure", "final_acceptance_packet"]:
if remaining_gates.get(gate) != "blocked-follow-up":
errors.append(f"runtime_snapshot_remaining_gate_missing:{gate}")
if remaining_gates.get("reboot_power_loss_drill") != "optional-follow-up":
@@ -1020,6 +1057,8 @@ def main() -> int:
]:
if desktop.get(key) is not False:
errors.append(f"desktop_exposure_overclaim:{key}")
if desktop.get("seed_local_acceptance_claimed") is not True:
errors.append("desktop_exposure_seed_local_acceptance_not_claimed")
if desktop.get("adapter_workspace") != "../cortex-hermes-adapter":
errors.append("desktop_exposure_adapter_workspace_invalid")
if desktop.get("adapter_validator_command") != "python3 tools/validate_cortex_hermes_adapter_child.py":
@@ -1065,6 +1104,8 @@ def main() -> int:
"personal-agent.calendar.read": "degraded",
"personal-agent.contacts.read": "degraded",
"personal-agent.drive.read": "degraded",
"personal-agent.seed-local-acceptance": "ready",
"personal-agent.proton-suite.provider-smoke": "blocked",
"personal-agent.secondbrain.proposal": "pending",
"personal-agent.browser.host-runtime": "blocked",
"personal-agent.write-actions": "disabled",
@@ -1127,10 +1168,17 @@ def main() -> int:
remaining_gates = desktop.get("remaining_gates", {})
if remaining_gates.get("secondbrain_governed_apply_route") != "defined-no-live-apply":
errors.append("desktop_exposure_governed_apply_route_not_defined")
if remaining_gates.get("seed_local_acceptance") != "complete-governed-local-jp-only":
errors.append("desktop_exposure_seed_local_acceptance_gate_missing")
if remaining_gates.get("proton_suite_seed_package_pickup") != "blocked-provider-smoke":
errors.append("desktop_exposure_proton_suite_seed_pickup_gate_missing")
if remaining_gates.get("profile_exposure_route") != "blocked-core-route-required":
errors.append("desktop_exposure_profile_exposure_gate_missing")
if remaining_gates.get("longer_standing_runtime_proof") != "follow-up":
errors.append("desktop_exposure_longer_standing_runtime_gate_missing")
for gate in [
"adapter_lane_pickup",
"desktop_ui_wiring",
"seed_package_pickup",
"runtime_readiness_finalization",
"browser_host_runtime_approval",
"final_acceptance_packet",
@@ -1174,9 +1222,32 @@ def main() -> int:
if stale in text:
errors.append(f"supersession_stale_reference:{stale}")
reconciliation = ROOT / "docs/evidence/2026-06-15-personal-agent-core-seed-readiness-reconciliation.md"
if reconciliation.exists():
text = reconciliation.read_text(encoding="utf-8")
for snippet in [
"PACR-014",
"f8403f1e5927933a0a5e283d2020119336e4e5e7",
"Core S606 registration output",
"Core S641 Proton Suite governance pickup",
"Core S642 Seed Proton Suite refresh pickup",
"Core S643 Seed validator repair pickup",
"Seed final acceptance gate",
"Seed boundary decision",
"Seed objective audit",
"Steev is represented as Seed-local accepted",
"`profile_exposure_route`: Core route required",
"`secondbrain_durable_apply`: Secondbrain route and exact approval required",
"`proton_suite_provider_smoke`: blocked",
"No Core mutation",
"broad goal-completion claim",
]:
if snippet not in text:
errors.append(f"reconciliation_missing:{snippet}")
result = {
"ok": not errors,
"validator": "personal-agent-profile-distribution-v7",
"validator": "personal-agent-profile-distribution-v8",
"checked": REQUIRED,
"errors": errors,
"warnings": [],