Skip to content

Backend roadmap: extract native authoritative backend ports with a checked storage-coupling inventory #1587

Open

Description

@unbraind

Type: implementation slice of the accepted SDK-first/backend-neutral direction; precise API and adapter design remain proposals. Parent: #1399, not a reproduced runtime defect.

Outcome: shared SDK PM semantics run against an explicitly selected native backend. Packages implement storage primitives/capabilities rather than create/update/claim/restore business rules. Existing filesystem behavior remains the compatibility baseline, not a required emulation protocol.

Evidence: item store mixes fs, policy, history and extension orchestration; list query imports store enumeration, metadata caches/indexes, paths and settings; schema migration already separates a deterministic planning intent but execution uses filesystem/schema/store helpers. These are extraction seeds, not proof all coupling has been enumerated.

Work:

  1. Produce a machine-checked inventory rooted in public SDK/CLI/MCP operations, including create/import, read/list/search, update/delete/restore, history/integrity/compaction, relationship/schema/settings/policy/author stores, claims/fencing, snapshots/transactions/recovery journals, extension artifacts and derived indexes. Classify each dependency as PM semantics, authoritative persistence, projection/cache, host configuration, or explicitly filesystem/Git domain behavior. Record direct and transitive dependencies and supported public entrypoints, not only node:fs grep matches.
  2. Derive the smallest typed persistence ports from that inventory: stable workspace/item identity, revision/conditional commit, coherent enumeration, authoritative state plus audit acknowledgement, transactional/coordinator capabilities, schema/config and retention needs. Names are not prescribed. Keep pure normalization/validation/policy/relationships/query interpretation and hook orchestration upstream. Distinguish commit atomicity from multi-step compensation, and shared-store concurrency from independent-copy reconciliation.
  3. Move filesystem mechanisms behind its native implementation incrementally. Maintain the old pmRoot client path as compatible selection. A backend-neutral call must not need a dummy .agents/pm tree. Keep actual local file/Git operations capability-gated rather than banning all filesystem use from every SDK module.
  4. Extend the existing static SDK boundary gate, not a disconnected linter. Existing SDK-first rules already prohibit CLI/MCP private-core edges; the new boundary is within the backend-neutral semantic layer. Cover aliases, re-exports, type imports, dynamic imports and indirect helpers; declare approved native/host boundaries explicitly.

Acceptance:

Tradeoff: a short-lived inventory classification is necessary to extract safely, but it must not become a permanent growing bypass allowlist. Avoid forcing provider-specific isolation or durability into one lowest-common-denominator CRUD API.

Intake: Targeted all-status issue searches and canonical source records were rechecked on 2026-10-25. Reuse #1399 / pm-gh1399 as the parent; if a more specific canonical owner already covers this slice, attach it there rather than create a competing PM item. This report is static source evidence at df5bf4aa4db17b7743b4f6bfddb32098f2cbd521, not executed backend tests or a claim of a reproduced defect. No deadline, assignee, deployment or backend switch is implied.

Activity

  1. coderabbitai commented on Oct 25, 2026

    @coderabbitai
    🔗 Related PRs

    #1550 - fix(sdk): fence lock-lease commits and wait on lock progress, not a fixed deadline [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

  2. unbraind commented on Oct 25, 2026

    @unbraind
    OwnerAuthor

    Canonical PM owner: pm-dukrxcnriykr. The source report, acceptance and related lineage are recorded in PR #1592. This scope remains queued and unclaimed; the PR implements the separate SDK output batch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions