docs: reconcile Steev Core Seed readiness
This commit is contained in:
@@ -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": [],
|
||||
|
||||
Reference in New Issue
Block a user