Skip to content

Decide: support tiers for bun.lockb writes, vendored pnpm 7/8 locks, vlt pre-1.0 locks and hosted Maven/Gradle #1156

Description

[agent] Filed by the scheduled architecture audit routine (ecosystems and formats). Register: discussion #560 register.

Kind: decision. Source: review §5 "Support tiers" and §6 Q3, Part 4.6; register E47.

The question

There are four formats where socket-patch does a lot of work for old or unstable package-manager versions. For each one, should socket-patch keep full write support, refuse the format with a re-lock remedy, or ship it with a lower support tier? Each answer below is independent, so a separate yes or no on each is enough.

# Candidate Option A (status quo) Option B (recommended by the audit) Option C
1 bun.lockb writes (hosted and vendored) Keep the native binary writer Refuse writes with the remedy bun install --save-text-lockfile --frozen-lockfile --lockfile-only. Keep reading bun.lockb for inventory and VEX. Keep the writer for vendored mode only
2 Vendored pnpm lockfile 5.4/6.0 (pnpm 7/8) Keep the legacy backend Refuse with "re-lock with pnpm ≥ 9". Hosted mode keeps every pnpm major. Keep it, as a dialect of the v9 backend
3 vlt pre-1.0 lock eras (A0–B: lockfileVersion absent or 0, legacy DepIDs) Keep reading and writing every era Refuse eras A0–B with "re-lock with vlt ≥ 1.0". Keep the tilde eras (C–F). Keep reads, refuse writes
4 Hosted Maven/Gradle Supported like the other ecosystems Label it "beta" in docs/ecosystems.md and in the remedy text until the JVM backlog shrinks Keep it as is

Each option B is a user-visible contract change: a format that works today starts to refuse. That is why this needs an owner decision.

Evidence on main @ cf8b164

  1. bun.lockb
  2. Vendored pnpm 5.4/6.0
  3. vlt eras
    • docs/ecosystems.md lists seven lock eras (A0–F). Every mode reads all of them, and vlt_lock_text.rs carries a legacy DepID codec (·/§) next to the tilde codec.
    • Vendored vlt is 2,112 + 536 + 148 production lines. Hosted vlt is 662 + 217.
    • The pre-1.0 eras account for most of the "documented gap" bullets in the vlt notes (rc.6 … rc.29 behaviors).
  4. JVM

Impact

  • If option B is chosen for items 1–3, roughly 3.5–4K production lines and their tests become deletable, along with the bug classes in the issues above.
  • Item 4 is documentation and remedy text only.

Proposed follow-up (after the decision)

  • One implementation issue per accepted item, each a single PR that:
    • adds the refusal code and its remedy;
    • deletes the writer;
    • updates docs/ecosystems.md, CLI_CONTRACT.md and migrating-to-v5.md (if it ships with v5).
  • Readers needed by inventory, VEX and rollback stay. Rollback of entries an older socket-patch already wrote must keep working, or must refuse with git checkout -- <lock>, as hosted bun.lockb already does.

Acceptance criteria

  • The owner picks A, B or C for each of items 1–4 in a comment.
  • The register row E47 and Part 4/5 of the living document record the answer.
  • The implementation issues are filed for accepted B/C items.

Dependencies

Activity

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

    agent:needs-humanagent:triagedarch-auditFiled by a scheduled architecture audit routine (see the architecture review discussion)priority:p3refactorStructural change: duplicated code or logic, missing abstraction, layering, dead code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions