Roadmap#

Detailed design records live in GitHub issues so discussion and ownership stay with the work. This page is the compact release-status index for the current codebase.

Status legend#

  • shipped – implemented in the current codebase

  • in progress – actively being worked on

  • proposed – designed but not yet started

v0.5 foundations#

Issue

Status

Summary

Lockfile transcoder mode

shipped

CLI and HTTP lockfile-in / lockfile-out conversion without solving

GitHub Action for CI workflows

shipped

Composite action for local CLI or hosted API solve workflows

Content-addressed solve cache

shipped

HTTP result cache with durable /r/<hash> lookup while entries are retained

v0.6 review tools#

Issue

Status

Summary

Preflight validation

shipped

Deterministic local input checks and lint-style findings

Environment / lockfile diff

shipped

Platform-aware comparisons between resolved HTTP inputs

Explain package inclusion

shipped

Bounded dependency-chain explanations for successful single-platform solves

v0.7 repair and solver service#

Issue

Status

Summary

Repair suggestions

shipped

Tested single-spec relaxations for infeasible solves

Broker-managed local service

shipped

Manual loopback HTTP service with a persistent solver worker

Internal conda solver backend

shipped

Local final-state delegation through the broker service

Recorded solver requests

shipped

Bounded request catalog for scheduled solver-cache refresh

Scheduled solver-cache refresh

shipped

Foreground-aware refresh of missing or stale private final states

v0.8 browser workbench#

Change

Status

Summary

Browser workbench

shipped

First-party browser workbench for preflight, resolve, package inspection, and exporter output

v0.9 trust and admission#

Provenance, attestation serving, admission control, and CEP alignment.

Issue

Status

Summary

Solve provenance field capture

proposed

Shared request, artifact, solver, and channel snapshot metadata

Signed solve provenance

proposed

CEP-27-aligned Sigstore solve attestations

Serving solve attestations

proposed

Durable /r/<hash>/attestation URL and Link header

Policy and admission engine

proposed

Policy checks over solved artifacts before installation

CEP draft: solve attestation predicate

proposed

Draft CEP text for a solve attestation predicate

Dependency graph#

        graph TD
    T["transcode\n(shipped)"] --> PF["preflight + lint\n(shipped)"]
    T --> RPR["repair suggestions\n(shipped)"]
    T --> D["diff\n(shipped)"]
    T --> E["explain\n(shipped)"]
    P["result cache + permalink\n(shipped)"] --> PV["provenance fields"]
    P --> B["broker-managed local service\n(shipped)"]
    B --> FS["internal Presto solver backend\n(shipped)"]
    FS --> WC["recorded solver requests\n(shipped)"]
    WC --> CW["scheduled solver-cache refresh\n(shipped)"]
    PF --> RPR
    E --> RPR
    PF --> WB["browser workbench\n(shipped)"]
    P --> WB
    PV --> A["signed provenance"]
    A --> CEP["CEP draft"]
    A --> S["attestation serving"]
    P --> S
    S --> AD["policy + admission"]
    GH["CI action\n(shipped)"] --> PF
    GH --> D

    classDef shipped fill:#e6f4ea,stroke:#1e7e34,color:#0b3d1f;
    class T,P,GH,PF,D,E,RPR,B,FS,WC,CW,WB shipped;
    

HTTP lockfile transcoding reconstructs package records from embedded metadata without fetching the referenced archives. Other review paths remain metadata-only for uploaded lockfiles. Repair stays separate from explain because it may run repeated solver attempts under an explicit budget. The internal Presto solver backend uses the broker-managed local process and does not define a remote protocol. Its final-state entries share the configured cache storage and in-memory bounds, but remain separate from public /resolve permalinks. Successful foreground requests can be recorded as candidates for later cache refresh without changing the final-state cache key. When the catalog is full, a recorded request enters only after its count, then recency, outranks the lowest-ranked candidate.

Conventions#

  • Use one issue per planned change.

  • Keep the issue body as the complete design record while work is active.

  • Use this page for shipped status and release grouping.

  • Treat closed issues as historical design and discussion records.

  • No marketing in proposals. Each issue must justify itself in its own problem statement.