docs: plan Steev personal context runtime

This commit is contained in:
Svrnty
2026-06-14 07:18:48 -04:00
parent aeb17cce22
commit d2a99ca36e
5 changed files with 490 additions and 0 deletions
@@ -0,0 +1,180 @@
---
name: 2026-06-14-steev-personal-context-runtime-work-orders
status: active
triage: ready-for-agent
owner: jp
source: docs/prd/2026-06-14-steev-personal-context-runtime-prd.md
created: 2026-06-14
last_reviewed: 2026-06-14
core_promotion_status: not-promoted
description: Dependency-ordered vertical slices for Steev personal context runtime standardization.
artifact_type: work-orders
---
# Steev Personal Context Runtime Work Orders
Each slice is vertical and proof-backed. Steev owns the profile contract.
BlueBubbles and Proton/rclone own capability packages. Personal context targets
personal Secondbrain only. `orgbrain`, raw payloads, and secrets are forbidden.
## SPCR-001 Profile Authority And Surface Contract
Type: AFK. Blocked by: None. User stories: 1-17, 21-23, 28-31.
## What to build
Define Steev's profile contract: surfaces, allowed effects, denied effects,
memory target, credential posture, runtime proof, and package ownership.
## Acceptance criteria
- [ ] Steev declares iMessage, Proton Mail, Calendar, Contacts, Drive, and future browser host surfaces.
- [ ] Required surfaces are named: `imessage.read`, Proton read/draft/propose/confirmation-write surfaces, and Drive read/confirmation-write.
- [ ] Personal Secondbrain is the only memory target; `orgbrain`, raw payloads, credentials, and secrets are denied.
- [ ] The Steev child validator passes.
## SPCR-002 Supersession And Graph Hygiene Register
Type: AFK. Blocked by: SPCR-001. User stories: 24-27, 29, 36.
## What to build
Classify older Steev, BlueBubbles, Proton, rclone, and legacy Cortex artifacts
as active, superseded, archived, legacy-reference, or blocked-follow-up.
## Acceptance criteria
- [ ] Every known prior workstream has a supersession state and one-line reason.
- [ ] Legacy Cortex Proton/rclone repos are marked reference-only unless promoted.
- [ ] The register names the single canonical pickup path per work area.
- [ ] The Steev child validator passes.
## SPCR-003 BlueBubbles Capability Pickup Into Steev
Type: AFK. Blocked by: SPCR-001, SPCR-002. User stories: 1-3, 13-18, 24-26, 32.
## What to build
Bind Steev's `imessage.read` surface to the existing BlueBubbles package.
Preserve read-only runtime, redacted proof, Mac Mini host ownership, and
proposal-only personal memory intake.
## Acceptance criteria
- [ ] Steev references BlueBubbles as package authority, not profile-local connector code.
- [ ] Sends, read receipts, mark-read, contact/chat mutation, downloads, and deletes remain denied.
- [ ] BlueBubbles health/watchdog proof remains redacted evidence.
- [ ] Steev and BlueBubbles validators pass.
## SPCR-004 Proton And Rclone Capability Standardization
Type: AFK. Blocked by: SPCR-001, SPCR-002. User stories: 4-12, 15-17, 19-20, 24-31.
## What to build
Shape a Proton/rclone capability package for Mail, Calendar, Contacts, and
Drive: surfaces, runtime path, rclone config posture, health, and write gates.
## Acceptance criteria
- [ ] Proton and Drive surfaces use read/draft/propose/confirmation naming.
- [ ] Docker, systemd, MCP, CLI, and rclone routes are inventoried with one chosen or pending runtime path.
- [ ] Health is redacted and per-surface, including degraded and not-running states.
- [ ] Duplicate Proton skills are consolidated or clearly superseded.
## SPCR-005 Personal Secondbrain Proposal And Apply Route
Type: AFK. Blocked by: SPCR-003, SPCR-004. User stories: 13-14, 16-17, 29, 32, 34.
## What to build
Define proposal-only memory intake for iMessage, Proton, and Drive-derived
context. Durable writes wait for the owning Secondbrain/curator apply route.
## Acceptance criteria
- [ ] Proposal envelopes target personal Secondbrain only.
- [ ] `orgbrain` attempts are rejected and proven.
- [ ] Proof excludes raw bodies, contacts, event details, drive names, attachments, and secrets unless later approved.
- [ ] The Steev child validator passes.
## SPCR-006 Conductor And Curator Service Handoff
Type: AFK. Blocked by: SPCR-001 and active conductor/curator lane release. User stories: 17, 23, 29, 33-34.
## What to build
Publish service identity, health shape, effects, credential posture, and
apply-envelope expectations for future conductor/curator adoption.
## Acceptance criteria
- [ ] Each capability has service identity, health, allowed effects, and denied effects.
- [ ] Apply expectations are redacted and personal-only.
- [ ] No conductor or curator files are mutated from Steev.
- [ ] The Steev child validator passes.
## SPCR-007 Runtime Readiness And Always-On Proof
Type: AFK. Blocked by: SPCR-003, SPCR-004, SPCR-006. User stories: 17-20, 28-29, 33.
## What to build
Prove per-surface runtime state with redacted health, supervisor posture,
restart behavior, and explicit ready/degraded/pending/blocked claims.
## Acceptance criteria
- [ ] iMessage, Mail, Calendar, Contacts, and Drive each have a readiness state.
- [ ] Broken, duplicate, inactive, or missing services are named as gaps.
- [ ] Optional reboot/power-loss proof is separate from normal readiness.
- [ ] The Steev child validator passes.
## SPCR-008 Desktop Adapter Exposure Contract
Type: AFK. Blocked by: SPCR-001 and active adapter lane release. User stories: 22, 29, 35.
## What to build
Prepare the desktop/adapter contract for capability readiness display. Do not
wire UI or mutate adapter code from this route.
## Acceptance criteria
- [ ] Desktop-visible states come from contract and redacted runtime health.
- [ ] State names are ready, degraded, pending, blocked, and disabled.
- [ ] Personal memory only and no `orgbrain` are preserved.
- [ ] The Steev child validator passes.
## SPCR-009 Browser And Webwright Host Runtime Approval
Type: HITL. Blocked by: SPCR-001, SPCR-002, explicit JP approval. User stories: 21, 29, 33, 35.
## What to build
Prepare a separate Mac Mini browser/Webwright Host Runtime approval packet.
This grants broad authenticated computer authority and must not hide inside
messaging or Proton work.
## Acceptance criteria
- [ ] The packet names browser session, password-manager, cookie, Google Drive, and desktop-control risks.
- [ ] Default denied effects apply until JP grants scope.
- [ ] No browser/Webwright runtime is enabled by this issue.
- [ ] JP approval is required before execution.
## SPCR-010 Final Acceptance And Promotion Packet
Type: HITL. Blocked by: SPCR-002 through SPCR-009. User stories: 28-36.
## What to build
Assemble final acceptance across profile, capability, memory, runtime, Seed,
Core, conductor/curator, desktop, and graph hygiene claims.
## Acceptance criteria
- [ ] Accepted, pending, and rejected claims are named with owning evidence.
- [ ] Old work is archived, superseded, or marked legacy-reference.
- [ ] Core and Seed readiness are claimed only through governed routes.
- [ ] JP can read one page and know exactly what remains.
@@ -0,0 +1,143 @@
---
name: 2026-06-14-steev-personal-context-runtime-prd
status: active
triage: ready-for-agent
owner: jp
source: user-request-2026-06-14-steev-personal-context-runtime
created: 2026-06-14
last_reviewed: 2026-06-14
core_promotion_status: not-promoted
description: PRD for making Steev the governed personal context runtime over iMessage, Proton, rclone, and future host-control capabilities.
artifact_type: prd
---
# Steev Personal Context Runtime PRD
## Problem Statement
JP wants Steev, his personal-agent profile, to know him through the live
communication and personal-data surfaces that already shape his day: iMessage,
Proton Mail, Calendar, Contacts, Proton Drive through rclone, and later the Mac
Mini browser host. Today those surfaces exist in different states across
profile docs, BlueBubbles child work, Proton skills, older Cortex repositories,
Docker services, systemd units, Hermes adapters, and Secondbrain/curator lanes.
The risk is context confusion. Future agents can mistake old work for active
authority, build duplicate connectors, route private personal context toward
the wrong memory domain, or claim runtime readiness from partial proofs. Steev
needs one clean profile contract that says which personal surfaces are active,
which capability package owns each surface, which mutations are forbidden,
which durable memory route is allowed, and which old artifacts are archived,
superseded, or legacy reference only.
## Solution
Make Steev a governed personal context runtime profile. The profile declares
the personal context surfaces it may observe, the capability packages that
provide those surfaces, the exact memory routing policy, the mutation policy,
and the runtime readiness gates. BlueBubbles/iMessage, Proton/rclone, and
future browser/Webwright host control stay in separate capability packages, but
Steev owns the profile-level decision that those packages belong to JP's
personal-agent and must route personal context only through governed personal
memory paths.
The first target state is read-first and proof-backed:
- iMessage is `imessage.read` only.
- Proton exposes read, draft, propose, and confirmation-gated write surfaces.
- Proton Drive through rclone starts as `drive.read`.
- Durable memory proposals target only personal Secondbrain storage.
- `orgbrain` is forbidden for message, mail, contact, calendar, and drive-derived personal context.
- Core stores no raw personal content, endpoint payloads, credentials, or secret values.
- Old work is classified so graph context has one canonical pickup path.
## User Stories
1. As JP, I want Steev to understand my recent iMessage exchanges, so that he can answer with real personal context.
2. As JP, I want Steev to read iMessages without sending, so that personal-agent context does not mutate my Messages state.
3. As JP, I want BlueBubbles to be the iMessage capability package, so that iMessage runtime work is not duplicated in Steev.
4. As JP, I want Steev to read Proton Mail, so that my personal-agent knows what people are asking me.
5. As JP, I want Steev to draft Proton replies without sending them, so that I keep final control of outbound mail.
6. As JP, I want Proton sends to require explicit confirmation, so that no agent sends mail silently.
7. As JP, I want Steev to read Proton Calendar, so that it knows my time commitments.
8. As JP, I want Steev to propose calendar changes before writing them, so that scheduling remains controlled.
9. As JP, I want Steev to read Proton Contacts, so that it can identify people across channels.
10. As JP, I want contact writes to require explicit confirmation, so that my address book is not changed silently.
11. As JP, I want Steev to read Proton Drive through rclone, so that it can find personal context when I ask.
12. As JP, I want Drive writes to be confirmation-gated, so that personal files are not changed silently.
13. As JP, I want all personal context routed to personal Secondbrain storage, so that my private life stays personal.
14. As JP, I want `orgbrain` forbidden for this data, so that personal messages and mail never become organization memory.
15. As JP, I want Steev to use Keyvault references only, so that this project does not become a credential migration.
16. As JP, I want Core to store only redacted proofs, so that governance can be reviewed without exposing personal content.
17. As JP, I want each capability to report health without leaking payloads, so that runtime readiness is observable and private.
18. As JP, I want the Mac Mini BlueBubbles runtime to stay always-on, so that iMessage context is available continuously.
19. As JP, I want Proton services to have one canonical runtime path, so that Docker, systemd, and MCP do not fight each other.
20. As JP, I want rclone to use an explicit governed config path, so that Drive access is repeatable and not ambient.
21. As JP, I want browser/Webwright Mac control separated from messaging, so that full computer authority is approved deliberately.
22. As JP, I want desktop app integration to wait for the adapter lane, so that UI work uses the right service boundary.
23. As JP, I want conductor and curator to become the standard service path, so that capabilities are centralized cleanly.
24. As JP, I want every old planning artifact classified, so that future graph context has no ambiguous authority.
25. As JP, I want superseded work marked visibly, so that agents do not revive stale plans.
26. As JP, I want active capability packages named explicitly, so that agents know where to continue work.
27. As JP, I want legacy repositories treated as reference material, so that useful code is preserved without becoming authority.
28. As JP, I want runtime readiness separated from Seed readiness, so that package claims are not inflated.
29. As JP, I want final completion to require profile, capability, runtime, memory, and graph hygiene acceptance, so that "done" has one meaning.
30. As a profile maintainer, I want Steev's manifest and disclosure to match live capability exposure, so that runtime drift is caught.
31. As a capability maintainer, I want each surface to declare allowed and forbidden effects, so that test coverage follows real risk.
32. As a Secondbrain maintainer, I want proposal-only intake before durable apply, so that memory writes remain governed.
33. As a conductor operator, I want service identity and health shapes per capability, so that the central service lane can adopt them.
34. As a curator operator, I want redacted apply envelopes, so that personal memory can be reviewed without raw payload sprawl.
35. As a desktop adapter operator, I want one profile capability contract, so that the desktop app can display personal-agent readiness without guessing.
36. As a future agent, I want a sandcastle pickup map, so that I continue vertically instead of re-planning horizontally.
## Implementation Decisions
- Steev owns the profile-level personal context runtime contract; individual integrations remain child capability packages.
- BlueBubbles owns the iMessage capability package. Steev consumes the package as `imessage.read` and does not implement a second connector.
- Proton/rclone must become a standardized capability package with declared surfaces for Mail, Calendar, Contacts, and Drive.
- The personal-agent memory target is personal Secondbrain storage only. `orgbrain` is a hard-denied target for this work.
- Runtime claims require redacted live proof and a local validator. Partial service availability must be named per surface.
- Mutations use surface names that encode consent: read, draft, propose, send-with-confirmation, and write-with-confirmation.
- Message sends, mail sends, mark-read/read receipts, deletes, contact mutation, calendar mutation, and file mutation are forbidden unless the surface explicitly requires confirmation and JP confirms.
- Core promotion is out of scope for the child route. Core may receive only governed promotion packets and redacted evidence.
- Seed readiness is out of scope until the Seed lane accepts a package.
- Desktop app integration must wait for the adapter lane to settle.
- Conductor and curator are the desired service and apply path, but this PRD does not mutate those workspaces.
- Browser/Webwright Mac Mini host control is a separate runtime route because it grants broader computer authority than read-only communications.
- Old work must be classified in a supersession register before final readiness claims.
- Hindsight compliance means every major decision has a durable pickup artifact, a supersession state, and a one-line reason.
- Indie-dev compliance means vertical slices stay small, demoable, and useful without adding process that does not reduce confusion or risk.
## Testing Decisions
- The highest profile seam is Steev's validator plus manifest/disclosure consistency.
- The highest iMessage seam is the BlueBubbles read-only runtime package and its redacted watchdog proof.
- The highest Proton seam is a redacted health check per surface: Mail, Calendar, Contacts, and Drive.
- The highest memory seam is a proposal envelope that targets personal Secondbrain storage and rejects `orgbrain`.
- The highest graph-hygiene seam is the supersession register plus graph context showing one canonical pickup path.
- The highest runtime seam is always-on supervisor posture with redacted proof, not raw payload capture.
- The highest desktop seam is a contract handoff, not UI wiring, until the adapter lane releases.
- Tests should assert external behavior: allowed reads work, denied mutations fail before transport, confirmation-gated writes cannot run silently, personal memory proposals do not become durable writes, and proof files contain no raw personal data or secrets.
- Every completed slice must leave the Steev child validator passing.
## Out of Scope
- Sending iMessages.
- Sending mail without explicit confirmation.
- Deleting messages, mail, calendar events, contacts, or files.
- Marking messages or mail read unless a later approved surface grants it.
- Downloading attachments unless separately approved.
- Reading or exporting password-manager contents.
- Granting browser/Webwright full computer control through this PRD.
- Writing durable Secondbrain memory directly from capability packages.
- Routing any personal context to `orgbrain`.
- Mutating Core, Seed, conductor, curator, desktop adapter, BlueBubbles, Proton, or Secondbrain workspaces from this Steev planning route.
## Further Notes
This PRD intentionally moves the center of gravity from individual connector
experiments to Steev's profile contract. BlueBubbles remains the concrete
iMessage package. Proton/rclone becomes the next standardized capability
package. Steev becomes the governed personal-agent profile that declares which
capabilities are allowed, how they route memory, and which old work is no
longer authoritative.
@@ -0,0 +1,79 @@
---
name: 2026-06-14-steev-personal-context-runtime-sandcastle
status: prepared
triage: ready-for-agent
owner: jp
source: docs/issues/2026-06-14-steev-personal-context-runtime-work-orders.md
created: 2026-06-14
last_reviewed: 2026-06-14
artifact_type: sandcastle-descriptor
---
# Steev Personal Context Runtime Sandcastle
## Active Sandcastle Decision
- Source repo: `/home/svrnty/workspaces/cortex-os/steev`
- Active Steev sandcastle before this work: none found
- Prepared pickup descriptor: this file
- Local issue tracker: `docs/issues/2026-06-14-steev-personal-context-runtime-work-orders.md`
- PRD: `docs/prd/2026-06-14-steev-personal-context-runtime-prd.md`
- Supersession register: `docs/supersession/2026-06-14-steev-personal-context-runtime-supersession-register.md`
- Local gate: `python3 tools/validate_steev_child.py`
## Decision
Use Steev as the profile-level sandcastle for personal context runtime
standardization. Do not open a competing iMessage connector, Proton connector,
rclone storage service, desktop adapter, conductor, curator, or Secondbrain
runtime from this route.
Continue BlueBubbles-specific execution in the existing BlueBubbles completion
readiness sandcastle. Use this Steev package as the profile contract that says
which capability packages Steev may consume and how personal context must route.
## Purpose
Make Steev the clean personal-agent profile over JP's real personal context:
iMessage, Proton Mail, Calendar, Contacts, Proton Drive through rclone, and
future browser/Webwright host control. This sandcastle exists to remove context
confusion, classify old work, and produce vertical implementation slices.
## Boundaries
- No Core mutation from this route.
- No Seed readiness claim until Seed accepts a package.
- No conductor or curator mutation until their active lane releases.
- No desktop adapter mutation until the adapter lane releases.
- No second production BlueBubbles connector.
- No profile-local Proton/rclone connector rewrite before capability packaging.
- No durable Secondbrain writes; proposal/apply route only.
- No `orgbrain` target.
- No iMessage sends, read receipts, mark-read, deletes, contact mutation, or attachment download.
- No Proton send, calendar write, contact write, Drive write, move, copy, purge, or delete without an explicit confirmation surface and JP confirmation.
- No browser/Webwright full-control runtime until separate Host Runtime approval.
- No raw message bodies, mail bodies, contact details, event details, drive file names, endpoint payloads, credentials, cookies, keychain values, password-manager values, or secret values in proof artifacts.
## Pickup Order
- Start with `SPCR-001` to define the profile authority and surface contract.
- Then run `SPCR-002` to classify old work and prevent graph ambiguity.
- Run `SPCR-003` and `SPCR-004` in parallel only after the supersession register exists.
- Run `SPCR-005` after iMessage and Proton/rclone surfaces are clear.
- Keep `SPCR-006` blocked until conductor/curator release their lane.
- Keep `SPCR-008` blocked until the adapter lane releases.
- Keep `SPCR-009` HITL because it grants broad Mac/browser authority.
- Use `SPCR-010` only as the final acceptance gate.
## One-Line Execution Map
- Define Steev profile surfaces: one personal context contract.
- Classify old work: active, superseded, archived, or legacy-reference.
- Pick up BlueBubbles: `imessage.read`, read-only, personal memory only.
- Package Proton/rclone: Mail, Calendar, Contacts, Drive surfaces.
- Route memory: proposal-only to personal Secondbrain, no `orgbrain`.
- Hand off services: conductor and curator shape, no cross-route mutation.
- Prove runtime: per-surface redacted health, no payload leakage.
- Prepare desktop: adapter contract only, no early UI wiring.
- Separate host control: browser/Webwright approval packet.
- Accept final state: only evidence-backed claims become complete.
@@ -0,0 +1,83 @@
---
name: 2026-06-14-steev-personal-context-runtime-supersession-register
status: active
triage: ready-for-agent
owner: jp
source: docs/prd/2026-06-14-steev-personal-context-runtime-prd.md
created: 2026-06-14
last_reviewed: 2026-06-14
core_promotion_status: not-promoted
description: Supersession register for personal-agent context runtime work so old artifacts do not confuse graph context.
artifact_type: supersession-register
---
# Steev Personal Context Runtime Supersession Register
## Rule
Every artifact that talks about Steev personal context, iMessage, BlueBubbles,
Proton, rclone, Secondbrain memory routing, conductor/curator routing, or
desktop exposure must be treated as one of:
- `active-authority`: current pickup path for this route.
- `active-capability-package`: current package owned by another child route.
- `superseded`: useful history, not a pickup path.
- `legacy-reference`: source material only, not current authority.
- `blocked-follow-up`: valid work, blocked by another owning lane.
## Canonical Pickup Paths
| Area | Status | Canonical pickup |
| --- | --- | --- |
| Steev profile contract | active-authority | This PRD and work orders |
| BlueBubbles iMessage | active-capability-package | BlueBubbles child completion-readiness package |
| Proton Mail/Calendar/Contacts | blocked-follow-up | New Proton/rclone capability package work from `SPCR-004` |
| Proton Drive/rclone | blocked-follow-up | New Proton/rclone capability package work from `SPCR-004` |
| Personal memory route | blocked-follow-up | `SPCR-005`, then owning Secondbrain/curator route |
| Conductor/curator service routing | blocked-follow-up | `SPCR-006`, after owning lanes release |
| Desktop app exposure | blocked-follow-up | `SPCR-008`, after adapter lane release |
| Browser/Webwright host control | blocked-follow-up | `SPCR-009`, explicit approval only |
## Known Artifacts And Supersession State
| Artifact family | State | One-line reason |
| --- | --- | --- |
| Steev `CONTRACT.md` v1 iMessage-as-v2 wording | superseded | iMessage is now main personal context intake, not a low-priority future messaging item. |
| Steev `AGENT.md` reused-skill summary | superseded | It names useful tools but not the new governed surface model. |
| Steev `skills/steev-agent` current memory protocol | superseded | It says episodic memory only but does not encode personal Secondbrain proposal/apply routing. |
| Steev `skills/proton-tools` | active-source-to-consolidate | It contains live Proton tool knowledge but must be folded into a standardized capability package. |
| Steev `DISCLOSURE.md` Wave 8/8.5 runtime disclosure | superseded-pending-refresh | It is historical disclosure and must be refreshed after the profile capability contract changes. |
| BlueBubbles runtime-readiness PRD | active-capability-package | It remains valid for the iMessage capability package, subordinate to Steev's profile contract. |
| BlueBubbles completion-readiness PRD | active-capability-package | It remains the BlueBubbles package pickup for read-only iMessage readiness. |
| BlueBubbles Hermes connector convergence PRD | active-capability-package | It prevents duplicate connector work and remains aligned with Steev's profile contract. |
| Legacy Cortex Proton API repo | legacy-reference | It has useful Mail/Calendar/Contacts service code but is not Cortex OS child authority. |
| Legacy Cortex Proton Bridge repo | legacy-reference | It has bridge/container material but is not the canonical runtime package. |
| Legacy Cortex rclone storage repo | legacy-reference | It has Drive service and permission code but is not the canonical personal-agent package. |
| 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-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 useful, but runtime authority must be packaged. |
| Docker Proton Bridge and calendar gate state | active-evidence-source | Current runtime fact, not a profile contract by itself. |
| 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. |
| Secondbrain direct-write ideas | superseded | Personal context must begin as proposal/apply, not direct durable writes. |
| Desktop integration ideas before adapter lane release | blocked-follow-up | Valid direction, but not an active mutation route. |
| Browser/Webwright full-control ideas inside messaging work | superseded | Host control needs its own approval packet because it is broader authority. |
## Graph Hygiene Requirements
- Graph context should expose this PRD as the Steev profile-level pickup.
- Graph context should expose BlueBubbles as the active iMessage capability package.
- Graph context should not treat legacy Cortex Proton/rclone repositories as active authority.
- Graph context should not treat duplicate Proton skills as separate current product surfaces.
- Graph context should mark browser/Webwright host control as separate HITL runtime authority.
- Graph context should preserve `secondbrain-personal` as the only allowed personal memory target.
- Graph context should preserve `orgbrain` as denied for this work.
## Archive And Supersede Actions
- Add visible supersession notes to Steev contract and disclosure when `SPCR-001` is implemented.
- Add package-level supersession notes to Proton/rclone artifacts when `SPCR-004` creates the child package.
- Keep BlueBubbles artifacts active but subordinate to the Steev profile contract.
- Archive or mark duplicate Proton skills after the canonical package is installed.
- Record final graph cleanup in `SPCR-010`; do not claim complete before this register matches the graph pickup state.