docs: link proton rclone child candidate to personal-agent
This commit is contained in:
@@ -7,7 +7,7 @@ JP's personal assistant / chief of staff. Daily briefing, inbox triage, comms in
|
|||||||
- **Identity:** [`AGENT.md`](AGENT.md) — role, mission, boundaries.
|
- **Identity:** [`AGENT.md`](AGENT.md) — role, mission, boundaries.
|
||||||
- **Profile surface contract:** [`docs/contracts/personal-agent-profile-surface-contract.json`](docs/contracts/personal-agent-profile-surface-contract.json) — canonical surfaces, effects, memory route, and proof policy.
|
- **Profile surface contract:** [`docs/contracts/personal-agent-profile-surface-contract.json`](docs/contracts/personal-agent-profile-surface-contract.json) — canonical surfaces, effects, memory route, and proof policy.
|
||||||
- **BlueBubbles binding:** [`docs/contracts/personal-agent-bluebubbles-binding.json`](docs/contracts/personal-agent-bluebubbles-binding.json) — `imessage.read` binds to the existing BlueBubbles package without a duplicate connector.
|
- **BlueBubbles binding:** [`docs/contracts/personal-agent-bluebubbles-binding.json`](docs/contracts/personal-agent-bluebubbles-binding.json) — `imessage.read` binds to the existing BlueBubbles package without a duplicate connector.
|
||||||
- **Proton/rclone package candidate:** [`docs/contracts/personal-agent-proton-rclone-package.json`](docs/contracts/personal-agent-proton-rclone-package.json) — Mail, Calendar, Contacts, and Drive surfaces with redacted runtime inventory and no readiness overclaim.
|
- **Proton/rclone package candidate:** [`docs/contracts/personal-agent-proton-rclone-package.json`](docs/contracts/personal-agent-proton-rclone-package.json) — Mail, Calendar, Contacts, and Drive surfaces now linked to the child-local `proton-rclone` candidate, with Core registration and readiness still blocked.
|
||||||
- **Proton/rclone runtime reconciliation:** [`docs/evidence/2026-06-14-personal-agent-proton-rclone-runtime-reconciliation.md`](docs/evidence/2026-06-14-personal-agent-proton-rclone-runtime-reconciliation.md) — live redacted probe aligning systemd, Docker, MCP, and rclone posture.
|
- **Proton/rclone runtime reconciliation:** [`docs/evidence/2026-06-14-personal-agent-proton-rclone-runtime-reconciliation.md`](docs/evidence/2026-06-14-personal-agent-proton-rclone-runtime-reconciliation.md) — live redacted probe aligning systemd, Docker, MCP, and rclone posture.
|
||||||
- **Secondbrain proposal/apply route:** [`docs/contracts/personal-agent-secondbrain-proposal-route.json`](docs/contracts/personal-agent-secondbrain-proposal-route.json) — proposal-only personal memory intake plus governed apply-route reference; live durable apply remains approval-gated in Secondbrain.
|
- **Secondbrain proposal/apply route:** [`docs/contracts/personal-agent-secondbrain-proposal-route.json`](docs/contracts/personal-agent-secondbrain-proposal-route.json) — proposal-only personal memory intake plus governed apply-route reference; live durable apply remains approval-gated in Secondbrain.
|
||||||
- **Conductor/Curator service handoff:** [`docs/contracts/personal-agent-conductor-curator-service-handoff.json`](docs/contracts/personal-agent-conductor-curator-service-handoff.json) — redacted service map for future route selection and hygiene review pickup.
|
- **Conductor/Curator service handoff:** [`docs/contracts/personal-agent-conductor-curator-service-handoff.json`](docs/contracts/personal-agent-conductor-curator-service-handoff.json) — redacted service map for future route selection and hygiene review pickup.
|
||||||
|
|||||||
@@ -59,3 +59,8 @@ items:
|
|||||||
status: complete
|
status: complete
|
||||||
source: docs/contracts/personal-agent-secondbrain-proposal-route.json
|
source: docs/contracts/personal-agent-secondbrain-proposal-route.json
|
||||||
owner: jp
|
owner: jp
|
||||||
|
- id: PACR-011
|
||||||
|
title: Proton/rclone Child Candidate Reconciliation
|
||||||
|
status: complete
|
||||||
|
source: docs/contracts/personal-agent-proton-rclone-package.json
|
||||||
|
owner: jp
|
||||||
|
|||||||
@@ -52,10 +52,10 @@
|
|||||||
{
|
{
|
||||||
"service_id": "personal-agent.proton-rclone.package-candidate",
|
"service_id": "personal-agent.proton-rclone.package-candidate",
|
||||||
"capability_package": "proton-rclone",
|
"capability_package": "proton-rclone",
|
||||||
"owner_route": "steev",
|
"owner_route": "proton-rclone",
|
||||||
"surface": "mail.calendar.contacts.drive",
|
"surface": "mail.calendar.contacts.drive",
|
||||||
"health_shape": "redacted-per-surface-runtime-inventory",
|
"health_shape": "child-local-redacted-runtime-health",
|
||||||
"readiness_state": "degraded-package-candidate",
|
"readiness_state": "degraded-child-candidate-core-registration-pending",
|
||||||
"allowed_effects": [
|
"allowed_effects": [
|
||||||
"emit_mail_health",
|
"emit_mail_health",
|
||||||
"emit_calendar_health",
|
"emit_calendar_health",
|
||||||
@@ -202,7 +202,7 @@
|
|||||||
"curator_personal_memory_hygiene_lane_pickup": "blocked-follow-up",
|
"curator_personal_memory_hygiene_lane_pickup": "blocked-follow-up",
|
||||||
"secondbrain_governed_apply_route": "defined-no-live-apply",
|
"secondbrain_governed_apply_route": "defined-no-live-apply",
|
||||||
"secondbrain_durable_apply": "blocked-follow-up",
|
"secondbrain_durable_apply": "blocked-follow-up",
|
||||||
"runtime_health_proof": "blocked-follow-up",
|
"runtime_health_proof": "complete-child-local",
|
||||||
"desktop_adapter_exposure": "blocked-follow-up",
|
"desktop_adapter_exposure": "blocked-follow-up",
|
||||||
"seed_package_pickup": "blocked-follow-up"
|
"seed_package_pickup": "blocked-follow-up"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,16 +6,27 @@
|
|||||||
"display_name": "Steev",
|
"display_name": "Steev",
|
||||||
"observed_date": "2026-06-14",
|
"observed_date": "2026-06-14",
|
||||||
"child_workspace_registered": false,
|
"child_workspace_registered": false,
|
||||||
|
"child_workspace_candidate_created": true,
|
||||||
"package_runtime_readiness_claimed": false,
|
"package_runtime_readiness_claimed": false,
|
||||||
"profile_runtime_readiness_claimed": false,
|
"profile_runtime_readiness_claimed": false,
|
||||||
"seed_readiness_claimed": false,
|
"seed_readiness_claimed": false,
|
||||||
"core_promotion_claimed": false,
|
"core_promotion_claimed": false,
|
||||||
|
"child_workspace_candidate": {
|
||||||
|
"path": "../proton-rclone",
|
||||||
|
"commit": "c49f85691232c317d694725445ec3acbf127c72b",
|
||||||
|
"validator_command": "python3 tools/validate_proton_rclone_child.py",
|
||||||
|
"validator_result_observed": "ok",
|
||||||
|
"core_registration_claimed": false,
|
||||||
|
"runtime_readiness_claimed": false,
|
||||||
|
"core_registration_candidate_packet": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-core-registration-candidate-packet.json",
|
||||||
|
"live_redacted_health_proof": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-live-redacted-health.json"
|
||||||
|
},
|
||||||
"authority_boundary": {
|
"authority_boundary": {
|
||||||
"profile_owns_surface_exposure": true,
|
"profile_owns_surface_exposure": true,
|
||||||
"package_candidate_owns_runtime_inventory": true,
|
"package_candidate_owns_runtime_inventory": true,
|
||||||
"legacy_repositories_are_reference_only": true,
|
"legacy_repositories_are_reference_only": true,
|
||||||
"duplicate_profile_local_connectors_allowed": false,
|
"duplicate_profile_local_connectors_allowed": false,
|
||||||
"notes": "This contract standardizes the Proton/rclone package shape for personal-agent. It does not register a new child workspace or claim full runtime readiness."
|
"notes": "This contract standardizes the Proton/rclone package shape for personal-agent. A child-local candidate now exists, but Core child-workspace registration and runtime readiness remain unclaimed."
|
||||||
},
|
},
|
||||||
"memory_policy": {
|
"memory_policy": {
|
||||||
"target": "secondbrain-personal",
|
"target": "secondbrain-personal",
|
||||||
@@ -197,10 +208,10 @@
|
|||||||
"overall_state": "degraded",
|
"overall_state": "degraded",
|
||||||
"chosen_runtime_path": "MCP facades for Mail, Calendar, Contacts; explicit rclone config for Drive",
|
"chosen_runtime_path": "MCP facades for Mail, Calendar, Contacts; explicit rclone config for Drive",
|
||||||
"pending_runtime_convergence": [
|
"pending_runtime_convergence": [
|
||||||
"Repair or replace exited email and contacts gate containers.",
|
"Repair or replace not-up email and contacts gate containers.",
|
||||||
"Resolve auto-restarting user proton-bridge and proton-bridge-proxy units or explicitly abandon them.",
|
"Resolve auto-restarting user proton-bridge and proton-bridge-proxy units or explicitly abandon them.",
|
||||||
"Keep rclone RC/proxy units disabled unless a governed wrapper admits them.",
|
"Keep rclone RC/proxy units disabled unless a governed wrapper admits them.",
|
||||||
"Create registered proton-rclone child workspace before package runtime readiness is claimed."
|
"Promote/register proton-rclone through Core before package runtime readiness is claimed."
|
||||||
],
|
],
|
||||||
"mcp_servers": [
|
"mcp_servers": [
|
||||||
{
|
{
|
||||||
@@ -227,11 +238,11 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sdo-email-gate",
|
"name": "sdo-email-gate",
|
||||||
"observed_state": "exited-127"
|
"observed_state": "not-up"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sdo-contacts-gate",
|
"name": "sdo-contacts-gate",
|
||||||
"observed_state": "exited-127"
|
"observed_state": "not-up"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "stale-sdo-protonmail-bridge-container",
|
"name": "stale-sdo-protonmail-bridge-container",
|
||||||
@@ -345,6 +356,7 @@
|
|||||||
"rclone --config /home/svrnty/.config/rclone/rclone.conf about proton: --json"
|
"rclone --config /home/svrnty/.config/rclone/rclone.conf about proton: --json"
|
||||||
],
|
],
|
||||||
"remaining_gates": {
|
"remaining_gates": {
|
||||||
|
"child_workspace_candidate": "complete-child-local",
|
||||||
"registered_child_workspace": "blocked-follow-up",
|
"registered_child_workspace": "blocked-follow-up",
|
||||||
"email_gate_repair": "blocked-follow-up",
|
"email_gate_repair": "blocked-follow-up",
|
||||||
"contacts_gate_repair": "blocked-follow-up",
|
"contacts_gate_repair": "blocked-follow-up",
|
||||||
|
|||||||
@@ -34,56 +34,64 @@
|
|||||||
"surface": "mail.read",
|
"surface": "mail.read",
|
||||||
"capability_package": "proton-rclone",
|
"capability_package": "proton-rclone",
|
||||||
"readiness_state": "degraded",
|
"readiness_state": "degraded",
|
||||||
"health_source": "MCP registration plus local service inventory",
|
"health_source": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-live-redacted-health.json",
|
||||||
"redacted_health": {
|
"redacted_health": {
|
||||||
"mcp_server_enabled": true,
|
"mcp_server_enabled": true,
|
||||||
"proton_bridge_systemd_running": false,
|
"proton_bridge_systemd_running": false,
|
||||||
"proton_bridge_systemd_state": "activating-auto-restart",
|
"proton_bridge_systemd_state": "activating-auto-restart",
|
||||||
"docker_email_gate": "exited-127",
|
"docker_email_gate": "not-up",
|
||||||
|
"child_workspace_candidate_validator_ok": true,
|
||||||
|
"core_child_workspace_registered": false,
|
||||||
"raw_mail_observed": false
|
"raw_mail_observed": false
|
||||||
},
|
},
|
||||||
"remaining_gap": "Email gate repair or replacement and package child registration remain required."
|
"remaining_gap": "Email gate repair or replacement and Core child registration remain required."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"surface": "calendar.read",
|
"surface": "calendar.read",
|
||||||
"capability_package": "proton-rclone",
|
"capability_package": "proton-rclone",
|
||||||
"readiness_state": "degraded",
|
"readiness_state": "degraded",
|
||||||
"health_source": "MCP registration plus local service inventory",
|
"health_source": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-live-redacted-health.json",
|
||||||
"redacted_health": {
|
"redacted_health": {
|
||||||
"mcp_server_enabled": true,
|
"mcp_server_enabled": true,
|
||||||
"calendar_gate_running": true,
|
"calendar_gate_running": true,
|
||||||
"proton_bridge_systemd_running": false,
|
"proton_bridge_systemd_running": false,
|
||||||
"proton_bridge_systemd_state": "activating-auto-restart",
|
"proton_bridge_systemd_state": "activating-auto-restart",
|
||||||
|
"child_workspace_candidate_validator_ok": true,
|
||||||
|
"core_child_workspace_registered": false,
|
||||||
"raw_calendar_events_observed": false
|
"raw_calendar_events_observed": false
|
||||||
},
|
},
|
||||||
"remaining_gap": "Calendar read has service posture but no governed package child runtime proof."
|
"remaining_gap": "Calendar read has service posture and child proof, but Core registration and final readiness remain blocked."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"surface": "contacts.read",
|
"surface": "contacts.read",
|
||||||
"capability_package": "proton-rclone",
|
"capability_package": "proton-rclone",
|
||||||
"readiness_state": "degraded",
|
"readiness_state": "degraded",
|
||||||
"health_source": "MCP registration plus local service inventory",
|
"health_source": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-live-redacted-health.json",
|
||||||
"redacted_health": {
|
"redacted_health": {
|
||||||
"mcp_server_enabled": true,
|
"mcp_server_enabled": true,
|
||||||
"docker_contacts_gate": "exited-127",
|
"docker_contacts_gate": "not-up",
|
||||||
|
"child_workspace_candidate_validator_ok": true,
|
||||||
|
"core_child_workspace_registered": false,
|
||||||
"raw_contacts_observed": false
|
"raw_contacts_observed": false
|
||||||
},
|
},
|
||||||
"remaining_gap": "Contacts gate repair or replacement and package child registration remain required."
|
"remaining_gap": "Contacts gate repair or replacement and Core child registration remain required."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"surface": "drive.read",
|
"surface": "drive.read",
|
||||||
"capability_package": "proton-rclone",
|
"capability_package": "proton-rclone",
|
||||||
"readiness_state": "degraded",
|
"readiness_state": "degraded",
|
||||||
"health_source": "rclone explicit-config about probe",
|
"health_source": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-live-redacted-health.json",
|
||||||
"redacted_health": {
|
"redacted_health": {
|
||||||
"rclone_remote_present": true,
|
"rclone_remote_present": true,
|
||||||
"rclone_about_probe": "ok-redacted",
|
"rclone_about_probe": "ok-redacted",
|
||||||
"rclone_rc_unit": "disabled",
|
"rclone_rc_unit": "disabled",
|
||||||
"rclone_proxy_unit": "disabled",
|
"rclone_proxy_unit": "disabled",
|
||||||
|
"child_workspace_candidate_validator_ok": true,
|
||||||
|
"core_child_workspace_registered": false,
|
||||||
"drive_file_names_observed": false,
|
"drive_file_names_observed": false,
|
||||||
"drive_file_contents_observed": false
|
"drive_file_contents_observed": false
|
||||||
},
|
},
|
||||||
"remaining_gap": "Drive read needs governed wrapper and package child before runtime readiness."
|
"remaining_gap": "Drive read has redacted child proof; governed wrapper and Core registration remain required before runtime readiness."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"supervisor_posture": {
|
"supervisor_posture": {
|
||||||
@@ -97,13 +105,13 @@
|
|||||||
{
|
{
|
||||||
"id": "proton-email-gate-exited",
|
"id": "proton-email-gate-exited",
|
||||||
"severity": "must-fix",
|
"severity": "must-fix",
|
||||||
"state": "sdo-email-gate exited-127",
|
"state": "email gate not-up",
|
||||||
"impact": "mail.read remains degraded"
|
"impact": "mail.read remains degraded"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "proton-contacts-gate-exited",
|
"id": "proton-contacts-gate-exited",
|
||||||
"severity": "must-fix",
|
"severity": "must-fix",
|
||||||
"state": "sdo-contacts-gate exited-127",
|
"state": "contacts gate not-up",
|
||||||
"impact": "contacts.read remains degraded"
|
"impact": "contacts.read remains degraded"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -121,7 +129,7 @@
|
|||||||
{
|
{
|
||||||
"id": "proton-rclone-child-unregistered",
|
"id": "proton-rclone-child-unregistered",
|
||||||
"severity": "must-fix",
|
"severity": "must-fix",
|
||||||
"state": "package candidate exists but no registered child workspace",
|
"state": "child-local candidate exists and validates; Core registry is not landed",
|
||||||
"impact": "Proton/rclone package cannot claim runtime readiness"
|
"impact": "Proton/rclone package cannot claim runtime readiness"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -172,6 +180,7 @@
|
|||||||
"proton_email_gate_repair": "blocked-follow-up",
|
"proton_email_gate_repair": "blocked-follow-up",
|
||||||
"proton_contacts_gate_repair": "blocked-follow-up",
|
"proton_contacts_gate_repair": "blocked-follow-up",
|
||||||
"proton_bridge_systemd_convergence": "blocked-follow-up",
|
"proton_bridge_systemd_convergence": "blocked-follow-up",
|
||||||
|
"proton_rclone_child_candidate": "complete-child-local",
|
||||||
"proton_rclone_child_registration": "blocked-follow-up",
|
"proton_rclone_child_registration": "blocked-follow-up",
|
||||||
"secondbrain_governed_apply_route": "defined-no-live-apply",
|
"secondbrain_governed_apply_route": "defined-no-live-apply",
|
||||||
"secondbrain_durable_apply": "blocked-follow-up",
|
"secondbrain_durable_apply": "blocked-follow-up",
|
||||||
|
|||||||
+8
-7
@@ -33,9 +33,9 @@ desktop exposure must be treated as one of:
|
|||||||
| Steev display name | active-alias | User-facing name for `personal-agent`, not separate authority |
|
| Steev display name | active-alias | User-facing name for `personal-agent`, not separate authority |
|
||||||
| Personal-agent BlueBubbles binding | active-authority | `docs/contracts/personal-agent-bluebubbles-binding.json` binds `imessage.read` to the package |
|
| Personal-agent BlueBubbles binding | active-authority | `docs/contracts/personal-agent-bluebubbles-binding.json` binds `imessage.read` to the package |
|
||||||
| BlueBubbles iMessage | active-capability-package | BlueBubbles child completion-readiness package |
|
| BlueBubbles iMessage | active-capability-package | BlueBubbles child completion-readiness package |
|
||||||
| Proton/rclone package candidate | active-authority | `docs/contracts/personal-agent-proton-rclone-package.json` standardizes Mail, Calendar, Contacts, and Drive without child/runtime readiness overclaim |
|
| Proton/rclone package candidate | active-authority | `docs/contracts/personal-agent-proton-rclone-package.json` links to the child-local `../proton-rclone` candidate without Core registration or runtime readiness overclaim |
|
||||||
| Proton Mail/Calendar/Contacts | blocked-follow-up | Package child registration, degraded gate repair, and runtime proof remain follow-up work |
|
| Proton Mail/Calendar/Contacts | blocked-follow-up | Child candidate exists; Core registration, degraded gate repair, and final readiness remain follow-up work |
|
||||||
| Proton Drive/rclone | blocked-follow-up | rclone read probe is redacted-ok; governed wrapper and write gates remain follow-up work |
|
| Proton Drive/rclone | blocked-follow-up | Child candidate has redacted rclone `about` proof; governed wrapper and write gates remain follow-up work |
|
||||||
| Personal-agent Secondbrain proposal/apply route | active-authority | `docs/contracts/personal-agent-secondbrain-proposal-route.json` defines proposal-only personal memory intake and references the governed Secondbrain apply route |
|
| Personal-agent Secondbrain proposal/apply route | active-authority | `docs/contracts/personal-agent-secondbrain-proposal-route.json` defines proposal-only personal memory intake and references the governed Secondbrain apply route |
|
||||||
| Personal memory live durable apply | blocked-follow-up | Secondbrain apply route is defined, but live apply still requires approval; profile/capability packages do not write durable memory |
|
| Personal memory live durable apply | blocked-follow-up | Secondbrain apply route is defined, but live apply still requires approval; profile/capability packages do not write durable memory |
|
||||||
| Personal-agent Conductor/Curator service handoff | active-authority | `docs/contracts/personal-agent-conductor-curator-service-handoff.json` gives route and hygiene lanes a redacted service map |
|
| Personal-agent Conductor/Curator service handoff | active-authority | `docs/contracts/personal-agent-conductor-curator-service-handoff.json` gives route and hygiene lanes a redacted service map |
|
||||||
@@ -64,8 +64,9 @@ desktop exposure must be treated as one of:
|
|||||||
| Hermes installed `proton-access` skill | superseded-pending-consolidation | It overlaps with Steev `proton-tools` and should not be a separate authority. |
|
| Hermes installed `proton-access` skill | superseded-pending-consolidation | It overlaps with Steev `proton-tools` and should not be a separate authority. |
|
||||||
| Hermes installed `proton-mail-operations` skill | superseded-pending-consolidation | It overlaps with Steev `proton-tools` and should fold into the canonical Proton package. |
|
| Hermes installed `proton-mail-operations` skill | superseded-pending-consolidation | It overlaps with Steev `proton-tools` and should fold into the canonical Proton package. |
|
||||||
| Hermes installed `proton-services` skill | superseded-pending-consolidation | It overlaps with Steev `proton-tools` and should fold into the canonical Proton package. |
|
| Hermes installed `proton-services` skill | superseded-pending-consolidation | It overlaps with Steev `proton-tools` and should fold into the canonical Proton package. |
|
||||||
| Direct rclone CLI proofs | active-evidence-source | Read-only `about` proof is captured redacted in the package candidate, but runtime authority still needs a governed wrapper. |
|
| Proton/rclone child candidate | active-capability-package | Child-local repo exists at `../proton-rclone`, validates locally, and still needs Core registry pickup. |
|
||||||
| Docker Proton Bridge and calendar gate state | active-evidence-source | Current runtime fact is captured redacted in the package candidate, not a readiness claim by itself. |
|
| Direct rclone CLI proofs | active-evidence-source | Read-only `about` proof is captured redacted in the child candidate, but runtime authority still needs a governed wrapper. |
|
||||||
|
| Docker Proton Bridge and calendar gate state | active-evidence-source | Current runtime fact is captured redacted in the child candidate, not a readiness claim by itself. |
|
||||||
| Broken user `proton-bridge.service` state | active-gap | Must be resolved or explicitly abandoned when one canonical runtime path is chosen. |
|
| Broken user `proton-bridge.service` state | active-gap | Must be resolved or explicitly abandoned when one canonical runtime path is chosen. |
|
||||||
| Inactive rclone RC/proxy units | active-gap | Must stay disabled or become gated through a governed wrapper before runtime readiness. |
|
| Inactive rclone RC/proxy units | active-gap | Must stay disabled or become gated through a governed wrapper before runtime readiness. |
|
||||||
| Secondbrain direct-write ideas | superseded | Personal context begins as redacted proposal envelopes; durable apply belongs to Secondbrain governed memory write path. |
|
| Secondbrain direct-write ideas | superseded | Personal context begins as redacted proposal envelopes; durable apply belongs to Secondbrain governed memory write path. |
|
||||||
@@ -77,7 +78,7 @@ desktop exposure must be treated as one of:
|
|||||||
- Graph context should expose this PRD as the `personal-agent` profile-level pickup.
|
- Graph context should expose this PRD as the `personal-agent` profile-level pickup.
|
||||||
- Graph context should treat Steev as display name / distribution alias only.
|
- Graph context should treat Steev as display name / distribution alias only.
|
||||||
- Graph context should expose BlueBubbles as the active iMessage capability package.
|
- Graph context should expose BlueBubbles as the active iMessage capability package.
|
||||||
- Graph context should expose the Proton/rclone package candidate as the active standardization pickup, not a runtime-ready child package.
|
- Graph context should expose the Proton/rclone child candidate as the active standardization pickup, not a Core-registered or runtime-ready package.
|
||||||
- Graph context should expose the personal-agent Secondbrain proposal/apply route as active while keeping live durable apply blocked to approval and Secondbrain/curator.
|
- Graph context should expose the personal-agent Secondbrain proposal/apply route as active while keeping live durable apply blocked to approval and Secondbrain/curator.
|
||||||
- Graph context should expose the personal-agent Conductor/Curator service handoff as active, while adoption remains blocked to owning lanes.
|
- Graph context should expose the personal-agent Conductor/Curator service handoff as active, while adoption remains blocked to owning lanes.
|
||||||
- Graph context should expose the personal-agent runtime snapshot as degraded until the named runtime gaps close.
|
- Graph context should expose the personal-agent runtime snapshot as degraded until the named runtime gaps close.
|
||||||
@@ -91,7 +92,7 @@ desktop exposure must be treated as one of:
|
|||||||
## Archive And Supersede Actions
|
## Archive And Supersede Actions
|
||||||
|
|
||||||
- Add visible supersession notes to the personal-agent contract and disclosure when `PACR-001` is implemented.
|
- Add visible supersession notes to the personal-agent contract and disclosure when `PACR-001` is implemented.
|
||||||
- Add package-level supersession notes to Proton/rclone artifacts when `PACR-004` creates the child package.
|
- Add Core registration pickup after the child-local Proton/rclone candidate is route-approved.
|
||||||
- Keep BlueBubbles artifacts active but subordinate to the `personal-agent` profile contract.
|
- Keep BlueBubbles artifacts active but subordinate to the `personal-agent` profile contract.
|
||||||
- Archive or mark duplicate Proton skills after the canonical package is installed.
|
- Archive or mark duplicate Proton skills after the canonical package is installed.
|
||||||
- Record final graph cleanup in `PACR-010`; do not claim complete before this register matches the graph pickup state.
|
- Record final graph cleanup in `PACR-010`; do not claim complete before this register matches the graph pickup state.
|
||||||
|
|||||||
@@ -200,6 +200,7 @@ def main() -> int:
|
|||||||
"PACR-007",
|
"PACR-007",
|
||||||
"PACR-008",
|
"PACR-008",
|
||||||
"PACR-010",
|
"PACR-010",
|
||||||
|
"PACR-011",
|
||||||
"status: candidate",
|
"status: candidate",
|
||||||
"owner: jp",
|
"owner: jp",
|
||||||
]:
|
]:
|
||||||
@@ -358,6 +359,23 @@ def main() -> int:
|
|||||||
]:
|
]:
|
||||||
if proton.get(key) is not False:
|
if proton.get(key) is not False:
|
||||||
errors.append(f"proton_rclone_overclaim:{key}")
|
errors.append(f"proton_rclone_overclaim:{key}")
|
||||||
|
if proton.get("child_workspace_candidate_created") is not True:
|
||||||
|
errors.append("proton_rclone_child_candidate_not_created")
|
||||||
|
candidate = proton.get("child_workspace_candidate", {})
|
||||||
|
expected_candidate = {
|
||||||
|
"path": "../proton-rclone",
|
||||||
|
"commit": "c49f85691232c317d694725445ec3acbf127c72b",
|
||||||
|
"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",
|
||||||
|
"live_redacted_health_proof": "../proton-rclone/.sot/08-OUTPUTS/proton-rclone-live-redacted-health.json",
|
||||||
|
}
|
||||||
|
for key, expected in expected_candidate.items():
|
||||||
|
if candidate.get(key) != expected:
|
||||||
|
errors.append(f"proton_rclone_child_candidate_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}")
|
||||||
boundary = proton.get("authority_boundary", {})
|
boundary = proton.get("authority_boundary", {})
|
||||||
if boundary.get("profile_owns_surface_exposure") is not True:
|
if boundary.get("profile_owns_surface_exposure") is not True:
|
||||||
errors.append("proton_rclone_profile_surface_boundary_missing")
|
errors.append("proton_rclone_profile_surface_boundary_missing")
|
||||||
@@ -431,9 +449,9 @@ def main() -> int:
|
|||||||
for name in ["sdo-calendar-gate", "sdo-email-gate", "sdo-contacts-gate"]:
|
for name in ["sdo-calendar-gate", "sdo-email-gate", "sdo-contacts-gate"]:
|
||||||
if name not in docker:
|
if name not in docker:
|
||||||
errors.append(f"proton_rclone_docker_route_missing:{name}")
|
errors.append(f"proton_rclone_docker_route_missing:{name}")
|
||||||
if docker.get("sdo-email-gate") != "exited-127":
|
if docker.get("sdo-email-gate") != "not-up":
|
||||||
errors.append("proton_rclone_email_gate_state_not_captured")
|
errors.append("proton_rclone_email_gate_state_not_captured")
|
||||||
if docker.get("sdo-contacts-gate") != "exited-127":
|
if docker.get("sdo-contacts-gate") != "not-up":
|
||||||
errors.append("proton_rclone_contacts_gate_state_not_captured")
|
errors.append("proton_rclone_contacts_gate_state_not_captured")
|
||||||
units = {item.get("name"): item for item in inventory.get("systemd_user_units", [])}
|
units = {item.get("name"): item for item in inventory.get("systemd_user_units", [])}
|
||||||
if units.get("proton-bridge.service", {}).get("observed_state") != "activating-auto-restart":
|
if units.get("proton-bridge.service", {}).get("observed_state") != "activating-auto-restart":
|
||||||
@@ -488,6 +506,8 @@ def main() -> int:
|
|||||||
if command not in commands:
|
if command not in commands:
|
||||||
errors.append(f"proton_rclone_observed_command_missing:{command}")
|
errors.append(f"proton_rclone_observed_command_missing:{command}")
|
||||||
remaining_gates = proton.get("remaining_gates", {})
|
remaining_gates = proton.get("remaining_gates", {})
|
||||||
|
if remaining_gates.get("child_workspace_candidate") != "complete-child-local":
|
||||||
|
errors.append("proton_rclone_child_candidate_gate_missing")
|
||||||
for gate in [
|
for gate in [
|
||||||
"registered_child_workspace",
|
"registered_child_workspace",
|
||||||
"email_gate_repair",
|
"email_gate_repair",
|
||||||
@@ -826,12 +846,13 @@ def main() -> int:
|
|||||||
"conductor_lane_pickup",
|
"conductor_lane_pickup",
|
||||||
"curator_personal_memory_hygiene_lane_pickup",
|
"curator_personal_memory_hygiene_lane_pickup",
|
||||||
"secondbrain_durable_apply",
|
"secondbrain_durable_apply",
|
||||||
"runtime_health_proof",
|
|
||||||
"desktop_adapter_exposure",
|
"desktop_adapter_exposure",
|
||||||
"seed_package_pickup",
|
"seed_package_pickup",
|
||||||
]:
|
]:
|
||||||
if remaining_gates.get(gate) != "blocked-follow-up":
|
if remaining_gates.get(gate) != "blocked-follow-up":
|
||||||
errors.append(f"service_handoff_remaining_gate_missing:{gate}")
|
errors.append(f"service_handoff_remaining_gate_missing:{gate}")
|
||||||
|
if remaining_gates.get("runtime_health_proof") != "complete-child-local":
|
||||||
|
errors.append("service_handoff_runtime_health_proof_not_child_complete")
|
||||||
|
|
||||||
runtime = load_json("docs/contracts/personal-agent-runtime-readiness-snapshot.json", errors)
|
runtime = load_json("docs/contracts/personal-agent-runtime-readiness-snapshot.json", errors)
|
||||||
if runtime:
|
if runtime:
|
||||||
@@ -939,6 +960,8 @@ def main() -> int:
|
|||||||
remaining_gates = runtime.get("remaining_gates", {})
|
remaining_gates = runtime.get("remaining_gates", {})
|
||||||
if remaining_gates.get("secondbrain_governed_apply_route") != "defined-no-live-apply":
|
if remaining_gates.get("secondbrain_governed_apply_route") != "defined-no-live-apply":
|
||||||
errors.append("runtime_snapshot_governed_apply_route_not_defined")
|
errors.append("runtime_snapshot_governed_apply_route_not_defined")
|
||||||
|
if remaining_gates.get("proton_rclone_child_candidate") != "complete-child-local":
|
||||||
|
errors.append("runtime_snapshot_child_candidate_gate_missing")
|
||||||
for gate in [
|
for gate in [
|
||||||
"proton_email_gate_repair",
|
"proton_email_gate_repair",
|
||||||
"proton_contacts_gate_repair",
|
"proton_contacts_gate_repair",
|
||||||
|
|||||||
Reference in New Issue
Block a user