Skip to content

[ID01 F15] Workbench: preserve discoverability when legacy project heads cannot reopen #15

Open

Description

@superWorldSavior

Problem

The Workbench project catalog is all-or-nothing. If one persisted historical project head cannot pass current validation, GET /api/projects returns 503 and hides otherwise valid projects.

Evidence

The shared catalog reader deliberately returns unavailable for any unreadable project directory or revision. The BFF and native preview now both use that reader, so the wiring fix does not address legacy reopen compatibility.

Impact

A valid pinned project can remain readable while global project discovery is unavailable because an unrelated historical project predates the current validation contract.

Acceptance criteria

  • Define a versioned legacy-reopen or migration policy that preserves original bytes and provenance.
  • Keep exact-current validation fail-closed for normal project reads.
  • Expose historical incompatibility explicitly, with stable project identity and reason.
  • Ensure one incompatible historical project does not silently misrepresent or hide valid project entries.
  • Add fixtures for legacy valid, legacy incompatible, malformed identity, and mixed catalogs.
  • Do not delete projects, backfill signed history, or weaken resolved-operation-plan validation as a workaround.

Read-only runtime verification on 2026-09-09: GET /api/projects returned HTTP 503 with state: unavailable and reason: Persisted project revisions could not be reopened exactly. The same control plane returned the current ID01 project snapshot successfully.

Fact-check scope

ID01 F15; reviewed on 2026-09-09. Source inspection, focused tests where relevant, and recorded evidence establish only the scope stated here.

Source pointers (local checkout; the public mirror may lag):

  • desktop/src/workbench/bff.ts:175-186
  • scripts/serve/serve-native-workbench.ts:248-299
  • scripts/serve/serve-native-workbench.ts:2042-2057

Evidence limit: The reader intentionally fails closed. This audit did not mutate or reopen the historical persisted projects, so it does not identify a safe migration design.

Activity

  1. superWorldSavior commented on Sep 25, 2026

    @superWorldSavior
    OwnerAuthor

    Diagnostic du 2026-09-25 sur checkout local : les 5 tetes legacy (ps01, mcs01, mcs02, hs01, sl01) echouent toutes sur le meme contrat — runs historiques sans resolvedOperationPlan (champ requis pour les operations a plan ferme). Exemple : $.agentRuns[11].resolvedOperationPlan: is required for a closed plan-bearing operation.

    Consequence : la partie decouvrabilite est faite (/api/project-discovery 2.0 repond partial avec identite stable + reasonCode: validation-failure par projet, verifie en live : 6 disponibles / 5 indisponibles). Le reliquat "reopen as current" exigerait de reconstituer des plans stampilles serveur pour des runs historiques, ce que les criteres interdisent (ni backfill d'historique signe, ni affaiblissement de la validation). Propose : clore comme remplace par la decouverte v2, ou garder pour un futur design de projection legacy lecture seule explicitement marquee.

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