Skip to content

Pkg integration checklist: conventions, API mapping, rollout #62

Description

@StefanKarpinski

Umbrella for what Pkg-side integration needs from this package, collected from the #30/#57 review cycle (Pkg.jl PR 4738 targets the superseded #30 API and will need updating to #57's):

  • API mapping: resolve(info, prob; with/without, diagnose) :: Union{Dict, Diagnosis, Nothing}; issatisfiable for preflight sweeps; holdbacks for the why-command; the three-tier cost ladder documented in the guide.
  • Modeling conventions (these replace policy knobs, so they're load-bearing):
    • julia (and anything non-negotiable) is a dependency edge, never a requirement — that is what makes "drop requirement julia" unrepresentable (Diagnostics: goal-query resolve, verified fixes, and holdback analysis on the production SAT instance #57's dep-edge convention; bin/Registries.jl is the reference implementation).
    • Pkg.add(name, version)-style restrictions enter as Problem compat entries with labels = Dict(pkg => :requested) so reports say "you requested X at 1.7" rather than "your compat".
    • yanked pre-filtering + allow_yanked plumbing mirrors bin's.
  • Presentation ownership: Pkg renders from the structured Diagnosis via the public toolkit (report knobs, or fully custom via render_fact/rank_upstream!/Bound.incidental/changes) — e.g. Pkg can drop incidental facts rather than demote them, and filter upstream suggestions by its own maintained-package knowledge. Guide section "Rendering your own reports" is the contract.
  • pkg> why upgrade path: presence answers (why is X here / what would avoiding it cost) come from resolve(…; without = X); version answers from holdbacks/goal queries — one chain instead of the all-paths forest (the Suggest what to remove for satisfiable requirements #6 complaint).
  • Rollout: KristofferC's suggestion from UNSAT diagnostics: explain unresolvable requirements and list verified fixes #30 — feature-flag the resolver with the new one as default so it gets tested, old resolver retained initially.
  • Known gaps affecting parity: weak deps/extensions (Weak dependencies and extensions: model them #61); whole-registry T1 persistence for fast cold starts (T1 persistence: save/load/invalidate the universal registry cache (implementation plan) #55).

🤖 Opened with Claude Code at Stefan's request.
https://claude.ai/code/session_016p2sckwc5Gjjg5LG6gdEk7

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions