From 6c96a5bc591ee2d862e189512991e212cbc5a949 Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 9 Sep 2026 20:23:08 +0000 Subject: [PATCH 1/4] fix(harness): recover durable map identity without legacy fallback Refs SAP-3089. Keep catalog failures on the selected map, preserve exact session navigation, reject stale retries and obsolete graph events, and record packaged and recovery evidence for the deletion gate. --- .changeset/calm-map-identity-recovery.md | 5 + .github/screenshots/SAP-3089/durable-map.png | Bin 0 -> 106201 bytes .../SAP-3089/identity-unavailable.png | Bin 0 -> 79022 bytes .../authority-retirement.md | 124 ++++++ .../src/main/smoke-agent-map.ts | 54 ++- .../web/e2e/agent-map-authority.spec.ts | 383 ++++++++++++++++++ packages/harness/web/src/App.tsx | 117 +++++- .../harness/web/src/lib/use-harness-state.ts | 20 +- 8 files changed, 676 insertions(+), 27 deletions(-) create mode 100644 .changeset/calm-map-identity-recovery.md create mode 100644 .github/screenshots/SAP-3089/durable-map.png create mode 100644 .github/screenshots/SAP-3089/identity-unavailable.png create mode 100644 docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md create mode 100644 packages/harness/web/e2e/agent-map-authority.spec.ts diff --git a/.changeset/calm-map-identity-recovery.md b/.changeset/calm-map-identity-recovery.md new file mode 100644 index 000000000..1b1074e45 --- /dev/null +++ b/.changeset/calm-map-identity-recovery.md @@ -0,0 +1,5 @@ +--- +"@sapiom/harness": patch +--- + +Keep current Studio projects on their saved Agent Map when project identity is unavailable. Reloading project identities preserves the selected project and active conversation, and current projects ignore obsolete graph events. diff --git a/.github/screenshots/SAP-3089/durable-map.png b/.github/screenshots/SAP-3089/durable-map.png new file mode 100644 index 0000000000000000000000000000000000000000..e6ec717aa5adb6b2c738ef4367f44848caa440d7 GIT binary patch literal 106201 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%0DUSOMB{-$0_nB4 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 literal 0 HcmV?d00001 diff --git a/docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md b/docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md new file mode 100644 index 000000000..1b061d977 --- /dev/null +++ b/docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md @@ -0,0 +1,124 @@ +# Agent Map authority and retirement gate (SAP-3089) + +The current Studio server owns one durable Agent Map per project. Its state +response always includes `studioProjects`, including an empty list when the +catalog cannot be read. A missing identity is an unavailable map, not permission +to infer a project from its name or serve a second topology. + +## Authority matrix + +| Journey | Authority and disposition | +| --- | --- | +| New project | Durable project and map storage. Creation owns bootstrap; selecting the project never starts or selects a conversation. | +| Existing generated or authored map, including deliberately cleared maps | Existing aggregate, versions/events and private bindings. Viewing does not reinitialize or rewrite history. | +| Supported outer format 1 or exact unused wrapped format 2 | Existing protected reset/conversion rules and backup journal. Authored, malformed, future or uncertain formats are not overwritten. | +| Alias or explicitly associated additional/moved project root | Durable project ID continues to select the map. Root reassociation does not promise automatic migration of implementation IDs. | +| Exact agent move | Preserve the existing private agent ID through the authenticated move operation. Changed, missing, stale, foreign or ambiguous IDs remain unresolved. | +| Missing project identity, ambiguous scope, unsafe path or unavailable catalog | Show an unavailable Agent Map with a project-catalog retry. Keep ordinary sessions and per-agent Canvas reachable through explicit selection. Retry promotes only an exact server-issued workspace-key/project-ID association. | +| Selected durable map disappears from the catalog | Keep that selected ID and offer catalog retry. Explicit agent/session selection still opens its ordinary Canvas/Steps. | +| Current server receives old graph GET, refresh or navigation | Boot token remains required; authenticated requests receive 410 `legacy_graph_retired` before scope resolution, graph reads or watcher activation. No legacy graph owners are retained. | +| Older server omits `studioProjects` entirely | Temporary browser protocol compatibility only. `WorkspaceGraphView`, its loader and announcements remain for this older payload until SAP-3090. An empty list is not this protocol. | + +Current-server graph events are ignored before browser state, cache invalidation +or other refresh handlers run. Shared discovery, accepted source evidence, +PackageInventory, rail launch edges, ordinary sessions and each agent's +Canvas/Steps retain their own consumers; they are not legacy project topology. + +## Evidence required before browser deletion + +Attach results to SAP-3089 at the reviewed PR head. Do not treat the presence of +this file as evidence that a host or recovery exercise passed. + +| Gate | Reproducible evidence | +| --- | --- | +| Missing identity, exact recovery, unchanged conversation and no old requests/events | `web/e2e/agent-map-authority.spec.ts`; counters intercept read, refresh and navigation before cache/delay, and check event invalidations. | +| Exact node navigation, error rejection and session parity | `web/e2e/agent-map-navigation.spec.ts`, including Claude, Codex, archived/no sessions, delayed responses, Info/resource inspection and mobile. | +| Current HTTP authority and retained root/descendant sessions | `src/server/studio-workspace-wiring.test.ts`; protected 410 on all three legacy routes, no graph read/refresh/watch, no retained graph owners. | +| Shared discovery still works without the legacy API | `src/server/system-graph-freshness.test.ts`, `workspace-rescan.test.ts` and core workspace-watch broker/watcher suites. Preserve cold reads, edits/renames/deletes, superseded scan budgets, repository boundaries, lease retirement and symlink deduplication. | +| Existing-project initialization and restart/storage safety | Existing `agent-map-initialization`, `agent-map-empty-legacy-container`, `studio-project-catalog`, `studio-workspace-preferences` and `agent-map-implementation-bindings` suites. Record fresh runs; SAP-3082/3084 explain their accepted identity/move limits. | +| Packaged host | Desktop `--smoke` uses the shipped SPA and real saved-map APIs. Its map check records zero legacy reads/refreshes/navigation across entry, inspection, reload/origin changes, failures/retries and project switches; direct old requests must return 410. Record package version, revision, report and artifact. | + +The Linux packaged run is Linux evidence. The required signed/notarized macOS +installer and its upgrade journey remain release validation, not an inference +from a Linux result. Record that platform's evidence in SAP-3086 before shipping. + +## Candidate evidence — 2026-09-09 + +The server fence is commit `d3c91355`, based on main `65219660`. Browser code, +screenshots, and this record are reviewed together in the next stack layer. +This records implementation evidence; the SAP-3090 deletion decision still +requires review of that final head and its CI. + +- Root build, typecheck and lint passed, including the final Harness browser + rebuild. Terminology and provider-copy checks passed. +- The root test command stops at `agent-core/src/bundle-error.spec.ts`'s + unreadable-directory assertion. The same failure reproduces on the unchanged + prior checkout. Remaining packages were run separately; this limitation must + stay visible in the PR validation, rather than calling the root command green. +- Harness: all **3,994** unit/integration cases passed across the full run and + focused retries; all **10** isolated performance cases passed. CPU contention + caused a discovery timeout, and a concurrent storage test hit `ENOSPC`; the + affected two files then passed together (**118** cases). +- Browser: the full run passed **644/648**, with four template startup timeouts; + the entire template file then passed **23/23**. The final authority file passed + **8/8**, including two additional keyboard cases. All **650** current browser + cases passed across the full run and scoped reruns. +- Browser verification uses the repository's full Playwright suite, installed + Chrome, and isolated ports. Dedicated authority tests count calls before cache + hits and cover missing identities, cross-project recovery, late responses, + keyboard tabs, ordinary Canvas/Steps, and legacy event rejection. +- Linux x64: Harness `0.16.0`, desktop `0.4.6`, Electron `33.4.11`. Both the + packaged `linux-unpacked` app and the actual AppImage wrapper (extract-and-run + under Xvfb) passed 16 checks; the Windows-only shim check was skipped. Agent Map + reported legacy read/refresh/navigation counts **0/0/0**, all direct legacy + requests **410**, and unchanged saved map/history across viewing. The bundled + server, SPA index and JavaScript asset were compared byte-for-byte with the + final build. The smoke session uses the repository's coding-agent stub. + +AppImage SHA-256: `d5b8a9788172b32a8872e04428ad52f48c2da32028983dbb93b6e9ccbed2f36c`. + +## Stop conditions and retained owners + +Stop deletion for a wrong map/target, a path exposed in public map JSON, an +implicit session action on map entry/retry, changed history on viewing, a current +project making legacy requests/event refreshes, or a discovery/watcher regression. +An unavailable identity must remain a bounded error throughout recovery. + +| Owner | Retained responsibility | +| --- | --- | +| SAP-3082 | Catalog identity, saved selection, private implementation bindings and protected resolution. | +| SAP-3084 | Node inspection/navigation and ordinary conversation/Canvas behavior. | +| SAP-3087 / SAP-3088 | Discovery freshness and shared workspace watcher ownership. | +| SAP-3090 | Remove older-protocol browser rendering, loaders, API methods, announcements and fixtures after this gate is reviewed. | +| SAP-3091 | Remove the unreachable graph runtime/router/store/invocation wiring; retain shared discovery, rail and per-agent graph helpers. | +| SAP-3086 / E8 assignee | Package/upgrade evidence, release decision, recovery owner and out-of-hours approver. Approval must be recorded, not assumed. | + +## Recovery decision + +Follow [the release and recovery contract](./rollout-rollback.md). There is no +cohort flag or in-place package downgrade. Restore product state only through +ordinary expected-version restores, which append history. Recover a faulty +binary by reverting its commit on a new branch, adding a new changeset, and +releasing strictly higher package and desktop versions. + +A local rehearsal can prove the revert, changeset/version generation and tag +preparation in a disposable checkout. It cannot prove that an update has been +published or that installed desktops can download it. Record those separately, +including retained installers, manifests/blockmaps, release links and the named +approver. Neither PR creation nor a green smoke check authorizes a release. + +## Recovery exercise — 2026-09-09 + +In a separate local Git clone, reverted `d3c91355` and verified that all server +sources matched pre-change `65219660`. Added a new Harness/desktop changeset, +ran the real `pnpm version-packages` command (version generation, fallback +constants and lockfile update), and committed its output on the local +`changeset-release/main` branch. This produced Harness **0.16.1** and desktop +**0.4.7**, both strictly higher than the candidate's package versions. Created +matching local tag **v0.4.7** at version commit +`1156fa84cdf328d431968d8dadd5361b3ee03253`. + +No recovery branch, version PR, tag or package was published. This proves the +local preparation sequence, not update delivery. The actual npm/version-PR and +desktop publication, retained installer/manifests/blockmap checks, signed macOS +upgrade journey and named release approver remain SAP-3086 release gates. diff --git a/packages/harness-desktop/src/main/smoke-agent-map.ts b/packages/harness-desktop/src/main/smoke-agent-map.ts index 822df4e67..58dc391bf 100644 --- a/packages/harness-desktop/src/main/smoke-agent-map.ts +++ b/packages/harness-desktop/src/main/smoke-agent-map.ts @@ -201,12 +201,28 @@ export async function checkAgentMap(boot: BootResult): Promise { ); let blockWorker = false; const workerUrls = new Set(); - const filter = { urls: ["*://*/*elk-worker.min-*.js*"] }; - web.session.webRequest.onBeforeRequest(filter, (_details, callback) => - callback({ cancel: blockWorker }), - ); + const legacyRequests = { read: 0, refresh: 0, navigation: 0 }; + const filter = { + urls: [ + "*://*/*elk-worker.min-*.js*", + "*://*/api/workspaces/*/system-graph*", + ], + }; + web.session.webRequest.onBeforeRequest(filter, (details, callback) => { + const pathname = new URL(details.url).pathname; + if (pathname.includes("/system-graph")) { + const kind = pathname.endsWith("/navigation") + ? "navigation" + : pathname.endsWith("/refresh") + ? "refresh" + : "read"; + legacyRequests[kind]++; + callback({}); + } else callback({ cancel: blockWorker }); + }); web.session.webRequest.onCompleted(filter, (details) => { - if (details.statusCode === 200) workerUrls.add(details.url); + if (details.statusCode === 200 && details.url.includes("elk-worker.min-")) + workerUrls.add(details.url); }); try { await boot.mainWindow.loadURL(boot.url); @@ -315,6 +331,33 @@ export async function checkAgentMap(boot: BootResult): Promise { updated, "Navigation changed saved map/history", ); + assert.deepEqual( + legacyRequests, + { read: 0, refresh: 0, navigation: 0 }, + "Packaged Studio requested legacy project topology", + ); + // Stale tabs cannot reactivate a graph watcher, even by asking directly. + const { workspaceScopes } = await api("/state"); + assert(workspaceScopes.length > 0, "No scope for legacy rejection check"); + for (const [suffix, method] of [ + ["", "GET"], + ["/refresh", "POST"], + ["/navigation", "GET"], + ]) { + const response = await fetch( + `${base}/api/workspaces/${workspaceScopes[0].workspaceKey}/system-graph${suffix}`, + { + method, + headers: { "X-Harness-Token": boot.bootToken }, + signal: AbortSignal.timeout(5_000), + }, + ); + assert.equal( + response.status, + 410, + `Legacy graph ${method} ${suffix} was admitted`, + ); + } const assets = join(resolveWebDir(), "assets"); const workerFile = (await readdir(assets)).find((name) => /^elk-worker\.min-.*\.js$/.test(name), @@ -323,6 +366,7 @@ export async function checkAgentMap(boot: BootResult): Promise { const bytes = await readFile(join(assets, workerFile)); return ( `Vertical only across origins, ignored old preferences/links, retry/recovery, live update and disposal; ` + + `legacy reads/refreshes/navigation 0/0/0; direct legacy requests 410; ` + `map/history unchanged by views; worker ${bytes.length}B (${gzipSync(bytes).length}B gzip); UI ready cold ${coldMs}ms, warm ${warmMs}ms` ); } finally { diff --git a/packages/harness/web/e2e/agent-map-authority.spec.ts b/packages/harness/web/e2e/agent-map-authority.spec.ts new file mode 100644 index 000000000..fe4f083fb --- /dev/null +++ b/packages/harness/web/e2e/agent-map-authority.spec.ts @@ -0,0 +1,383 @@ +import { expect, test, type Page } from "@playwright/test"; + +type Probe = { + identity: "ready" | "missing-id" | "missing-project"; + reads: number; + refreshes: number; + navigation: number; + invalidations: number; + states: number; + workflows: number; + activeSessionId: string | null; + reloadProjects: () => Promise; + projects: Record; + preferenceReads: string[]; + holdStates: boolean; + heldStates: Array<() => void>; + completedStates: number; +}; +type TestWindow = Window & { + __authority: Probe; + __HARNESS_TEST__: Record & { + publish: (message: unknown) => void; + }; +}; + +async function open( + page: Page, + identity: Probe["identity"] = "ready", + project = "acme-app", +) { + // Expose the catalog-only refresh and active pointer from this test's hook + // instance, without adding a production test API or hydrating sessions. + await page.route("**/src/lib/use-harness-state.ts", async (route) => { + const response = await route.fetch(); + const body = await response.text(); + expect(body).toContain(" refreshWorkspaceScopes,"); + await route.fulfill({ + response, + body: body.replace( + " refreshWorkspaceScopes,", + " refreshWorkspaceScopes: (window.__authority.activeSessionId = activeSessionId, window.__authority.reloadProjects = refreshWorkspaceScopes),", + ), + }); + }); + // Instrument entry to each legacy API method, before cache hits/delays. A + // successful map alone cannot prove an obsolete background read didn't run. + await page.route("**/src/lib/api.ts", async (route) => { + const response = await route.fetch(); + await route.fulfill({ + response, + body: + (await response.text()) + + ` +const authority = window.__authority = { + identity: ${JSON.stringify(identity)}, reads: 0, refreshes: 0, + navigation: 0, invalidations: 0, states: 0, workflows: 0, + projects: {}, preferenceReads: [], holdStates: false, heldStates: [], completedStates: 0, +}; +const graphRead = MockApi.prototype.getSystemGraph; +MockApi.prototype.getSystemGraph = function(key, options) { + authority[options?.refresh ? "refreshes" : "reads"]++; + return graphRead.call(this, key, options); +}; +const navigationRead = MockApi.prototype.getSystemGraphNavigation; +MockApi.prototype.getSystemGraphNavigation = function(...args) { + authority.navigation++; + return navigationRead.apply(this, args); +}; +const stateRead = MockApi.prototype.getState; +MockApi.prototype.getState = async function() { + authority.states++; + const identity = authority.identity; + const state = await stateRead.call(this); + authority.projects = Object.fromEntries(state.studioProjects.map(p => [p.displayName, p.projectId])); + if (identity === "missing-project") state.studioProjects = []; + if (identity === "missing-id") { + state.workspaceScopes = state.workspaceScopes.map(({ projectId, ...scope }) => scope); + } + if (authority.holdStates) await new Promise(resolve => authority.heldStates.push(resolve)); + authority.completedStates++; + return state; +}; +const preferenceRead = MockApi.prototype.getStudioCurrentWorkspace; +MockApi.prototype.getStudioCurrentWorkspace = function(projectId) { + authority.preferenceReads.push(projectId); + return preferenceRead.call(this, projectId); +}; +const workflowsRead = MockApi.prototype.listWorkflows; +MockApi.prototype.listWorkflows = function() { + authority.workflows++; + return workflowsRead.call(this); +}; +`, + }); + }); + await page.goto( + "/?seed=0&mockFixtures=deep&mockStudioProjects=present&mockAgentMapGolden=1", + ); + await expect(page.getByTestId("session-context")).toBeVisible(); + await page.getByTestId(`project-select-${project}`).click(); +} + +async function evidence(page: Page) { + return page.evaluate(() => { + const win = window as TestWindow; + return { + legacy: [ + win.__authority.reads, + win.__authority.refreshes, + win.__authority.navigation, + ], + session: win.__authority.activeSessionId, + actions: [ + "createSessionCalls", + "resumeSessionCalls", + "bindWorkflowCalls", + "injectInputCalls", + ].map( + (key) => + (win.__HARNESS_TEST__[key] as unknown[] | undefined)?.length ?? 0, + ), + }; + }); +} + +for (const identity of ["missing-id", "missing-project"] as const) { + test(`current project with ${identity} offers identity recovery without legacy fallback or session actions`, async ({ + page, + }) => { + await open(page, identity); + await expect( + page.getByTestId("agent-map-identity-unavailable"), + ).toBeVisible(); + await expect(page.getByTestId("workspace-graph-view")).toHaveCount(0); + const before = await evidence(page); + expect(before.legacy).toEqual([0, 0, 0]); + expect(before.actions).toEqual([0, 0, 0, 0]); + expect(before.session).toBe("sess-boot"); + + // The scope still cannot resolve: a retry reads the project catalog only. + await page.getByTestId("agent-map-reload-projects").click(); + await expect( + page.getByTestId("agent-map-identity-unavailable"), + ).toBeVisible(); + await page.evaluate(() => { + (window as TestWindow).__authority.identity = "ready"; + }); + await page.getByTestId("agent-map-reload-projects").click(); + await expect(page.getByTestId("agent-map-live")).toBeVisible(); + expect(await evidence(page)).toEqual(before); + await expect(page.getByTestId("workspace-graph-view")).toHaveCount(0); + }); +} + +test("recovering another project cannot restore the active conversation's project over it", async ({ + page, +}) => { + await open(page, "missing-project", "polsia"); + await expect( + page.getByTestId("agent-map-identity-unavailable"), + ).toBeVisible(); + const before = await evidence(page); + expect(before.session).toBe("sess-boot"); + const selectedId = await page.evaluate(() => { + const probe = (window as TestWindow).__authority; + probe.identity = "ready"; + return probe.projects["polsia"]; + }); + await page.getByTestId("agent-map-reload-projects").click(); + await expect(page.getByTestId("agent-map-live")).toHaveAttribute( + "data-project-id", + selectedId, + ); + await page.evaluate( + () => + new Promise((resolve) => + requestAnimationFrame(() => requestAnimationFrame(() => resolve())), + ), + ); + expect( + await page.evaluate( + () => (window as TestWindow).__authority.preferenceReads, + ), + ).toEqual([]); + await expect(page.getByTestId("agent-map-live")).toHaveAttribute( + "data-project-id", + selectedId, + ); + expect(await evidence(page)).toEqual(before); +}); + +for (const identity of ["missing-id", "missing-project"] as const) { + test(`keyboard session selection matches the visible unresolved project's tabs with ${identity}`, async ({ + page, + }) => { + await open(page, identity, "polsia"); + await expect( + page.getByTestId("agent-map-identity-unavailable"), + ).toBeVisible(); + const before = await evidence(page); + expect(before.session).toBe("sess-boot"); + await page.evaluate(() => { + const win = window as TestWindow; + win.__HARNESS_TEST__.publish({ + type: "session.status", + session: { + id: "sess-authority-polsia", + agentSessionId: null, + harness: "claude-code", + cwd: "/Users/demo/polsia", + boundWorkflowPath: "/Users/demo/polsia/scripts/tools/rollup", + title: "Polsia session", + status: "running", + exitCode: null, + ready: true, + createdAt: "2026-08-01T10:00:00.000Z", + lastActiveAt: "2026-08-01T10:00:00.000Z", + agentMapIdentity: { + projectId: win.__authority.projects.polsia, + userId: "user_mock", + sessionId: "sess-authority-polsia", + }, + }, + }); + }); + const firstTab = page.locator('[data-testid^="session-tab-main-"]').first(); + await expect(firstTab).toBeVisible(); + const sessionId = (await firstTab.getAttribute("data-testid"))!.replace( + "session-tab-main-", + "", + ); + expect(sessionId).not.toBe("sess-boot"); + await page.keyboard.press("ControlOrMeta+1"); + await expect + .poll(async () => (await evidence(page)).session) + .toBe(sessionId); + await expect(page.getByTestId("session-context")).toHaveAttribute( + "data-session-id", + sessionId, + ); + await expect( + page.getByTestId("agent-map-identity-unavailable"), + ).toHaveCount(0); + // A session with no bundled Canvas document uses the normal collapsed + // pane. Its controls must still open that exact session's Canvas/Steps. + const expand = page.getByRole("button", { + name: "Expand canvas panel", + exact: true, + }); + if (await expand.isVisible()) await expand.click(); + await expect(page.getByTestId("right-panel-board")).toBeVisible(); + await expect(page.getByTestId("right-tab-steps")).toBeEnabled(); + const after = await evidence(page); + expect(after.actions).toEqual(before.actions); + expect(after.legacy).toEqual([0, 0, 0]); + }); +} + +test("an established map keeps its exact identity and catalog retry after catalog loss", async ({ + page, +}) => { + await open(page); + await expect(page.getByTestId("agent-map-live")).toBeVisible(); + const projectId = await page + .getByTestId("agent-map-live") + .getAttribute("data-project-id"); + const before = await evidence(page); + await page.evaluate(async () => { + const probe = (window as TestWindow).__authority; + probe.identity = "missing-project"; + await probe.reloadProjects(); + }); + await expect( + page.getByTestId("agent-map-identity-unavailable"), + ).toBeVisible(); + await page.evaluate(() => { + (window as TestWindow).__authority.identity = "ready"; + }); + await page.getByTestId("agent-map-reload-projects").click(); + await expect(page.getByTestId("agent-map-live")).toHaveAttribute( + "data-project-id", + projectId!, + ); + expect(await evidence(page)).toEqual(before); +}); + +test("an older failed catalog response cannot replace a newer successful retry", async ({ + page, +}) => { + await open(page, "missing-project"); + await page.evaluate(() => { + (window as TestWindow).__authority.holdStates = true; + }); + await page.getByTestId("agent-map-reload-projects").click(); + await expect + .poll(() => + page.evaluate(() => (window as TestWindow).__authority.heldStates.length), + ) + .toBe(1); + await page.evaluate(() => { + (window as TestWindow).__authority.identity = "ready"; + }); + await page.getByTestId("agent-map-reload-projects").click(); + await expect + .poll(() => + page.evaluate(() => (window as TestWindow).__authority.heldStates.length), + ) + .toBe(2); + await page.evaluate(() => { + (window as TestWindow).__authority.heldStates[1]!(); + }); + await expect(page.getByTestId("agent-map-live")).toBeVisible(); + const before = await evidence(page); + const completed = await page.evaluate(() => { + const probe = (window as TestWindow).__authority; + probe.heldStates[0]!(); + return probe.completedStates; + }); + await expect + .poll(() => + page.evaluate(() => (window as TestWindow).__authority.completedStates), + ) + .toBe(completed + 1); + await expect(page.getByTestId("agent-map-identity-unavailable")).toHaveCount( + 0, + ); + await expect(page.getByTestId("agent-map-live")).toBeVisible(); + expect(await evidence(page)).toEqual(before); +}); + +test("durable map ignores old graph events and keeps exact navigation and sessions", async ({ + page, +}) => { + await open(page); + await expect(page.getByTestId("agent-map-live")).toBeVisible(); + const before = await evidence(page); + const eventsBefore = await page.evaluate(async () => { + const win = window as TestWindow; + const { systemGraphLoader } = + await import("/src/lib/system-graph-loader.ts"); + const invalidate = systemGraphLoader.invalidate.bind(systemGraphLoader); + systemGraphLoader.invalidate = (...args: unknown[]) => { + win.__authority.invalidations++; + return invalidate(...args); + }; + const counts = [win.__authority.states, win.__authority.workflows]; + for (const workspaceKey of [ + "workspace-mock-1", + "workspace-mock-2", + "unknown", + ]) { + win.__HARNESS_TEST__.publish({ + type: "system-graph.changed", + workspaceKey, + revision: 100, + state: "ready", + }); + } + return counts; + }); + await expect + .poll(() => + page.evaluate(() => (window as TestWindow).__authority.invalidations), + ) + .toBe(0); + expect( + await page.evaluate(() => { + const probe = (window as TestWindow).__authority; + return [probe.states, probe.workflows]; + }), + ).toEqual(eventsBefore); + + const id = "node_00000000-0000-7000-8000-000000000101"; + await page.getByTestId(`agent-map-info-${id}`).click(); + expect(await evidence(page)).toEqual(before); + await page.getByTestId(`agent-map-node-${id}`).click(); + await expect(page.getByTestId("agent-map-frame")).toHaveCount(0); + await expect(page.getByTestId("right-panel-board")).toBeVisible(); + expect(await evidence(page)).toEqual(before); + await page.getByTestId("project-select-acme-app").click(); + await expect(page.getByTestId("agent-map-live")).toBeVisible(); + expect(await evidence(page)).toEqual(before); +}); diff --git a/packages/harness/web/src/App.tsx b/packages/harness/web/src/App.tsx index 98af0b0bb..7f6dcb27a 100644 --- a/packages/harness/web/src/App.tsx +++ b/packages/harness/web/src/App.tsx @@ -219,13 +219,15 @@ const effectiveStudioWorkspaceSelection = ( selection: StudioWorkspaceSelection | null, state: Pick | null | undefined, ): StudioWorkspaceSelection | null => { - if (!selection || !state) return null; + if (!selection || !state || state.studioProjects === undefined) return null; if ( - !state.studioProjects?.some( + !state.studioProjects.some( (project) => project.projectId === selection.projectId, ) ) { - return null; + // A selected durable map keeps its exact identity through catalog loss. + // Explicit agent/session selection can still use its ordinary Canvas. + return selection.kind === "agent-map" ? selection : null; } if (selection.kind === "agent-map") return selection; const agentStillExists = state.workflows.some((workflow) => @@ -350,8 +352,8 @@ export const App = (): JSX.Element => { // selection and the Canvas/Steps subject. The active conversation is always // harness.activeSessionId; choosing the project map does not rewrite it. const [focusedAgentPath, setFocusedAgentPath] = useState(null); - // The legacy project the canvas is at MAP altitude for. Studio projects use - // `studioSelection` below, but retain the same invariant: the chat stays in + // An unresolved project (or an older-server compatibility selection). + // Studio projects use `studioSelection` below with the same invariant: chat stays in // the centre and the map draws beside it, so this selects a SUBJECT rather // than replacing the workbench. // @@ -418,7 +420,11 @@ export const App = (): JSX.Element => { } } - if (!state?.studioProjects || !active) return; + // Explicit navigation owns its destination even if boot could not restore + // the active session's project until this catalog refresh. + if ( + !state?.studioProjects || !active || selectedProject || studioSelection + ) return; const identityProjectId = active.agentMapIdentity?.projectId ?? null; const identityProject = identityProjectId ? state.studioProjects.find( @@ -507,7 +513,38 @@ export const App = (): JSX.Element => { setFocusedAgentPath(scope.cwd); if (isMobile) setRightCollapsed(true); }); - }, [harness.activeSessionId, harness.api, harness.state, isMobile]); + }, [ + harness.activeSessionId, + harness.api, + harness.state, + isMobile, + selectedProject, + studioSelection, + ]); + + // A catalog retry may resolve the exact scope selected earlier. Promote it + // without the boot reload's session hydration or a path/name-based guess. + useEffect(() => { + if (!selectedProject) return; + const state = harness.state; + const projectId = state?.workspaceScopes?.find( + (scope) => scope.workspaceKey === selectedProject.workspaceKey, + )?.projectId; + if ( + !projectId || + !state?.studioProjects?.some((project) => project.projectId === projectId) + ) + return; + studioRestoreGenerationRef.current += 1; + restoredStudioProjectsRef.current.add(projectId); + const selection: StudioWorkspaceSelection = { + kind: "agent-map", + projectId, + }; + setStudioSelection(selection); + setSelectedProject(null); + void harness.api.putStudioCurrentWorkspace(projectId, selection); + }, [harness.api, harness.state, selectedProject]); // A selected agent that disappears falls back to its map in memory. Only // the server knows whether the project scan is complete enough to persist a @@ -929,15 +966,19 @@ export const App = (): JSX.Element => { selectedProject?.root ?? null, knownRootsOf(harness.settings?.recentDirs, harness.state?.launchDir), ); + const unresolvedProject = selectedProject !== null && + harness.state?.studioProjects !== undefined; const studioProjectId = effectiveStudioSelection?.projectId ?? - shortcutActive?.agentMapIdentity?.projectId ?? + (unresolvedProject ? null : shortcutActive?.agentMapIdentity?.projectId) ?? null; const tabs = studioProjectId ? liveSessionsForStudioProject(sessions, studioProjectId) - : subject.kind === "project" - ? liveSessionsForProject(sessions, subject.root) - : liveSessionsForFocus(sessions, subject.path); + : unresolvedProject + ? liveSessionsForProject(sessions, selectedProject.root) + : subject.kind === "project" + ? liveSessionsForProject(sessions, subject.root) + : liveSessionsForFocus(sessions, subject.path); const target = tabs[Number(e.key) - 1]; if (target) { e.preventDefault(); @@ -958,6 +999,7 @@ export const App = (): JSX.Element => { // still addressed the outer one, until the next session event healed it. }, [ harness.state?.sessions, + harness.state?.studioProjects, harness.activeSessionId, harness.settings?.recentDirs, focusedAgentPath, @@ -1426,9 +1468,10 @@ export const App = (): JSX.Element => { [selectedStudioProject], ) : null; - const planFirstSelection = selectedStudioScope - ? effectiveStudioSelection - : null; + const planFirstSelection = + selectedStudioScope || effectiveStudioSelection?.kind === "agent-map" + ? effectiveStudioSelection + : null; const effectiveFocusedAgentPath = planFirstSelection?.kind === "agent" && selectedStudioWorkflow ? selectedStudioWorkflow.path @@ -1448,7 +1491,12 @@ export const App = (): JSX.Element => { : null; const view = studioView ?? legacyView; const atMapAltitude = view.altitude === "map"; - const projectMapSelected = studioView?.altitude === "map"; + // Missing identity in the current protocol is an unavailable Agent Map. + // Only an older server that omits studioProjects supports the legacy view. + const unresolvedProjectMap = + selectedProject !== null && state.studioProjects !== undefined; + const projectMapSelected = + studioView?.altitude === "map" || unresolvedProjectMap; /** * Whose tabs the strip shows: the ACTIVE session's PROJECT (SAP-2980), never @@ -1471,13 +1519,15 @@ export const App = (): JSX.Element => { ); const studioConversationProjectId = planFirstSelection?.projectId ?? - activeSession?.agentMapIdentity?.projectId ?? + (unresolvedProjectMap ? null : activeSession?.agentMapIdentity?.projectId) ?? null; const focusTabs = studioConversationProjectId ? liveSessionsForStudioProject(state.sessions, studioConversationProjectId) - : conversation.kind === "project" - ? liveSessionsForProject(state.sessions, conversation.root) - : liveSessionsForFocus(state.sessions, conversation.path); + : unresolvedProjectMap + ? liveSessionsForProject(state.sessions, selectedProject.root) + : conversation.kind === "project" + ? liveSessionsForProject(state.sessions, conversation.root) + : liveSessionsForFocus(state.sessions, conversation.path); // Project-name navigation cannot activate a session. Keep an already-active // conversation only when it belongs to that exact project; a foreign CLI is // hidden until the user explicitly selects one of this project's tabs. @@ -1725,7 +1775,7 @@ export const App = (): JSX.Element => { closeMobileDrawer(); // A Studio project-name click is a read-only navigation action. It must not // choose, create, resume, focus, or prompt any session. - if (selectedAgentMap) { + if (selectedAgentMap || state.studioProjects !== undefined) { if (isMobile) setRightCollapsed(false); return; } @@ -3601,7 +3651,32 @@ export const App = (): JSX.Element => { the subject is a project, so there is no agent board drawn behind the map. Keyed by project, so switching projects is a fresh load rather than a mutation of the one on screen. */} - {studioView?.altitude === "map" ? ( + {unresolvedProjectMap || + (studioView?.altitude === "map" && !selectedStudioProject) ? ( + { + void harness.refreshWorkspaceScopes().catch(() => { + harness.showToast( + "Projects couldn't be reloaded. Try again.", + ); + }); + }} + > + Reload projects + + } + /> + ) : studioView?.altitude === "map" ? ( void; + /** Refresh project identities without hydrating or selecting a session. */ + refreshWorkspaceScopes: () => Promise; settings: HarnessSettings | null; bootToken: string; selectedWorkflowPath: string | null; @@ -422,11 +424,18 @@ export function useHarnessState(): HarnessStateHook { const [systemGraphAnnouncements, setSystemGraphAnnouncements] = useState< Map >(new Map()); + // Compatibility lasts only for a confirmed older-server protocol. Unknown + // boot state and current-server catalog errors must never enable old graphs. + const legacyGraphProtocol = useRef(false); + legacyGraphProtocol.current = + state !== null && state.studioProjects === undefined; useEffect(() => { if (!state) return; const workspaceKeys = new Set( - (state.workspaceScopes ?? []).map((scope) => scope.workspaceKey), + state.studioProjects === undefined + ? (state.workspaceScopes ?? []).map((scope) => scope.workspaceKey) + : [], ); const projectIds = new Set( (state.studioProjects ?? []).map((project) => project.projectId), @@ -1233,6 +1242,11 @@ export function useHarnessState(): HarnessStateHook { useEffect(() => { return subscribeEvents( (message) => { + if ( + message.type === "system-graph.changed" && + !legacyGraphProtocol.current + ) + return; // SessionRecord invalidations have a targeted listener below. Keeping // them out of the legacy last-message slot avoids repainting the entire // Studio for records no mounted transcript is watching. @@ -1454,8 +1468,11 @@ export function useHarnessState(): HarnessStateHook { * Replacing the full AppState here could overwrite newer session/workflow bus * updates with a slower HTTP snapshot; the scope catalog is the only field * the mutation made stale. */ + const workspaceScopesRefreshOrder = useRef(0); const refreshWorkspaceScopes = useCallback(async (): Promise => { + const request = ++workspaceScopesRefreshOrder.current; const refreshed = await api.getState(); + if (request !== workspaceScopesRefreshOrder.current) return; setState((prev) => prev ? { @@ -2430,6 +2447,7 @@ export function useHarnessState(): HarnessStateHook { subscribeAgentMapInitializationChanges, subscribeEventReconnects, systemGraphAnnouncements, + refreshWorkspaceScopes, runsBySession, runsByExecution, runIdsBySession, From 7b6c8a9e370098ce7740f43a401958f350a1830d Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 9 Sep 2026 20:45:53 +0000 Subject: [PATCH 2/4] chore(harness): clarify map authority review feedback Refs SAP-3089 --- .changeset/calm-map-identity-recovery.md | 2 +- .../src/main/smoke-agent-map.ts | 2 +- .../web/e2e/agent-map-authority.spec.ts | 40 ++++++++++++++++--- packages/harness/web/src/App.tsx | 22 +++++----- 4 files changed, 49 insertions(+), 17 deletions(-) diff --git a/.changeset/calm-map-identity-recovery.md b/.changeset/calm-map-identity-recovery.md index 1b1074e45..c6d59bedd 100644 --- a/.changeset/calm-map-identity-recovery.md +++ b/.changeset/calm-map-identity-recovery.md @@ -2,4 +2,4 @@ "@sapiom/harness": patch --- -Keep current Studio projects on their saved Agent Map when project identity is unavailable. Reloading project identities preserves the selected project and active conversation, and current projects ignore obsolete graph events. +Fix project selection when a current Studio server cannot resolve the project's identity: show "Agent Map unavailable" with a "Reload projects" retry instead of the legacy project graph, and no longer start or select a session when that project is clicked. Explicit session creation and session-tab navigation remain available. Reloading project identities preserves the selected project and active conversation, and current projects ignore obsolete graph events. diff --git a/packages/harness-desktop/src/main/smoke-agent-map.ts b/packages/harness-desktop/src/main/smoke-agent-map.ts index 58dc391bf..9411863a9 100644 --- a/packages/harness-desktop/src/main/smoke-agent-map.ts +++ b/packages/harness-desktop/src/main/smoke-agent-map.ts @@ -355,7 +355,7 @@ export async function checkAgentMap(boot: BootResult): Promise { assert.equal( response.status, 410, - `Legacy graph ${method} ${suffix} was admitted`, + `Legacy graph ${method} ${suffix}: expected 410, received ${response.status}`, ); } const assets = join(resolveWebDir(), "assets"); diff --git a/packages/harness/web/e2e/agent-map-authority.spec.ts b/packages/harness/web/e2e/agent-map-authority.spec.ts index fe4f083fb..d307487f2 100644 --- a/packages/harness/web/e2e/agent-map-authority.spec.ts +++ b/packages/harness/web/e2e/agent-map-authority.spec.ts @@ -28,12 +28,22 @@ async function open( identity: Probe["identity"] = "ready", project = "acme-app", ) { + const setupErrors: string[] = []; + const recordPageError = (error: Error) => setupErrors.push(error.message); + page.on("pageerror", recordPageError); // Expose the catalog-only refresh and active pointer from this test's hook // instance, without adding a production test API or hydrating sessions. await page.route("**/src/lib/use-harness-state.ts", async (route) => { const response = await route.fetch(); const body = await response.text(); - expect(body).toContain(" refreshWorkspaceScopes,"); + if (!body.includes(" refreshWorkspaceScopes,")) { + setupErrors.push( + "use-harness-state.ts: missing refreshWorkspaceScopes return field", + ); + // Settle the request so the test can report the setup error after navigation. + await route.fulfill({ response, body }); + return; + } await route.fulfill({ response, body: body.replace( @@ -51,6 +61,14 @@ async function open( body: (await response.text()) + ` +if (typeof MockApi !== "function") { + throw new Error("Authority fixture: api.ts no longer defines MockApi"); +} +for (const method of ["getSystemGraph", "getSystemGraphNavigation", "getState", "getStudioCurrentWorkspace", "listWorkflows"]) { + if (typeof MockApi.prototype[method] !== "function") { + throw new Error("Authority fixture: missing MockApi." + method); + } +} const authority = window.__authority = { identity: ${JSON.stringify(identity)}, reads: 0, refreshes: 0, navigation: 0, invalidations: 0, states: 0, workflows: 0, @@ -93,10 +111,22 @@ MockApi.prototype.listWorkflows = function() { `, }); }); - await page.goto( - "/?seed=0&mockFixtures=deep&mockStudioProjects=present&mockAgentMapGolden=1", - ); - await expect(page.getByTestId("session-context")).toBeVisible(); + try { + await page.goto( + "/?seed=0&mockFixtures=deep&mockStudioProjects=present&mockAgentMapGolden=1", + ); + expect(setupErrors, "Authority fixture setup failed").toEqual([]); + await expect(page.getByTestId("session-context")).toBeVisible(); + } catch (error) { + if (setupErrors.length) { + throw new Error( + `Authority fixture setup failed:\n${setupErrors.join("\n")}`, + ); + } + throw error; + } finally { + page.off("pageerror", recordPageError); + } await page.getByTestId(`project-select-${project}`).click(); } diff --git a/packages/harness/web/src/App.tsx b/packages/harness/web/src/App.tsx index 7f6dcb27a..ec1bcc40b 100644 --- a/packages/harness/web/src/App.tsx +++ b/packages/harness/web/src/App.tsx @@ -524,6 +524,8 @@ export const App = (): JSX.Element => { // A catalog retry may resolve the exact scope selected earlier. Promote it // without the boot reload's session hydration or a path/name-based guess. + // This refreshes identities only; an already selected map keeps its loaded + // workspace until the normal map refresh or invalidation path runs. useEffect(() => { if (!selectedProject) return; const state = harness.state; @@ -1241,12 +1243,10 @@ export const App = (): JSX.Element => { setStudioSelection(null); } if (visit.kind === "project") { - // Through the SAME door the rail click uses, not the raw setter: a - // project selection now hands the conversation to that project (and - // starts one where there is none), and a replayed visit that only - // re-selected the key would land on the map with somebody else's chat - // beside it. The ref exists because the handler closes over `state`, - // which is only available past the loading guard. + // Replay through the rail's selection handler: current Studio project + // navigation is read-only; older-server session handoff remains until + // SAP-3090. The ref reaches the handler below the loading guard, where + // the hydrated `state` is available. selectProjectRef.current?.(visit.workspaceKey, visit.root, visit.label); } else if (visit.kind === "agent-map") { const state = harness.state; @@ -1779,6 +1779,8 @@ export const App = (): JSX.Element => { if (isMobile) setRightCollapsed(false); return; } + // Older-server compatibility only: these payloads omit studioProjects. + // Retain their session handoff until the browser deletion in SAP-3090. const decision = sessionForFocus({ focusPath: root, active: activeSession, @@ -1796,12 +1798,12 @@ export const App = (): JSX.Element => { selectProjectRef.current = handleSelectWorkspace; /** - * Open the first session of a project you just selected. + * Start an explicitly requested project session, or an older-server handoff. * * Guarded BY ROOT, not by a boolean: two projects can be starting at once - * (select one, select another before the first POST resolves) and a single - * flag would drop the second create silently. Re-selecting the SAME project - * mid-flight is the double-create this prevents. + * (request one, then another before the first POST resolves) and a single + * flag would drop the second create silently. Repeating a request for the + * same project mid-flight is the double-create this prevents. */ const startProjectSession = async ( root: string, From d7751927004ff2ff3b92784fbe976c76f3ec8241 Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 9 Sep 2026 21:00:30 +0000 Subject: [PATCH 3/4] fix(harness): couple graph retirement release to client recovery Carry the breaking minor HTTP migration note with the browser recovery and record the release dependency for both stack layers. Refs: SAP-3089 --- .changeset/quiet-project-map-authority.md | 28 +++++++++++++++++++ .../authority-retirement.md | 20 +++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 .changeset/quiet-project-map-authority.md diff --git a/.changeset/quiet-project-map-authority.md b/.changeset/quiet-project-map-authority.md new file mode 100644 index 000000000..beb1118c9 --- /dev/null +++ b/.changeset/quiet-project-map-authority.md @@ -0,0 +1,28 @@ +--- +"@sapiom/harness": minor +--- + +**Breaking for HTTP clients** (minor while `@sapiom/harness` is pre-1.0): retire +the documented project System Graph endpoints. Authenticated requests to all +three routes now return `410` with `error: "legacy_graph_retired"`: + +- `GET /api/workspaces/:workspaceKey/system-graph` +- `POST /api/workspaces/:workspaceKey/system-graph/refresh` +- `GET /api/workspaces/:workspaceKey/system-graph/navigation` + +The boot token remains required. These requests no longer resolve a scope, +read or refresh a legacy graph, or activate graph watchers. + +Migrate to `GET /api/projects/:projectId/agent-map/workspace` for the durable +Agent Map and shared proposal, and +`GET /api/projects/:projectId/agent-map/nodes/:nodeId/implementation` for exact +implementation navigation. Obtain server-issued project IDs from +`GET /api/state`; a workspace key, path or display name is not a project ID. +The durable APIs do not use the old process-memory graph snapshots or revision +matching protocol. + +This release includes the matching Studio client recovery: an unresolved +project shows **Agent Map unavailable** with **Reload projects**, preserves its +conversation, and no longer starts or selects a session on a project click. +Shared workspace discovery, explicit session creation and ordinary session +navigation remain available independently of the retired graph. diff --git a/docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md b/docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md index 1b061d977..288c1bcef 100644 --- a/docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md +++ b/docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md @@ -5,6 +5,21 @@ response always includes `studioProjects`, including an empty list when the catalog cannot be read. A missing identity is an unavailable map, not permission to infer a project from its name or serve a second topology. +## Release boundary + +The server retirement in [#892](https://github.com/sapiom/sapiom-js/pull/892) +and client recovery in [#893](https://github.com/sapiom/sapiom-js/pull/893) must +ship together. Merge both before merging a Harness version PR, publishing npm +packages or tagging a desktop release. The server-only layer still has a +bundled browser fallback that reaches the retired endpoint on catalog failure. + +Hold `.changeset/quiet-project-map-authority.md` in the client layer. It marks +the documented HTTP endpoint removal as a **breaking minor** and includes the +replacement APIs. Withholding this changeset does not technically prevent an +unrelated release from including the server change; the release dependency +must also be observed. The client recovery changeset remains a patch, while +the combined Harness release takes the higher minor bump. + ## Authority matrix | Journey | Authority and disposition | @@ -118,6 +133,11 @@ constants and lockfile update), and committed its output on the local matching local tag **v0.4.7** at version commit `1156fa84cdf328d431968d8dadd5361b3ee03253`. +Those version numbers belong to the original local rehearsal, before the +breaking minor classification. They are not recovery versions for a published +minor release. Final release validation must choose recovery package and +desktop versions strictly above the versions that actually ship. + No recovery branch, version PR, tag or package was published. This proves the local preparation sequence, not update delivery. The actual npm/version-PR and desktop publication, retained installer/manifests/blockmap checks, signed macOS From d4da9959f00b51c5d1618ebb3724810cb9778530 Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 9 Sep 2026 21:18:42 +0000 Subject: [PATCH 4/4] fix(harness): clear release blocker with client recovery Explain the browser patch rationale in the changeset and document the executable release boundary inherited from the server layer. Refs: SAP-3089 --- .changeset/calm-map-identity-recovery.md | 2 ++ .release-blocked | 2 -- .../authority-retirement.md | 14 ++++++++------ 3 files changed, 10 insertions(+), 8 deletions(-) delete mode 100644 .release-blocked diff --git a/.changeset/calm-map-identity-recovery.md b/.changeset/calm-map-identity-recovery.md index c6d59bedd..3694fd386 100644 --- a/.changeset/calm-map-identity-recovery.md +++ b/.changeset/calm-map-identity-recovery.md @@ -3,3 +3,5 @@ --- Fix project selection when a current Studio server cannot resolve the project's identity: show "Agent Map unavailable" with a "Reload projects" retry instead of the legacy project graph, and no longer start or select a session when that project is clicked. Explicit session creation and session-tab navigation remain available. Reloading project identities preserves the selected project and active conversation, and current projects ignore obsolete graph events. + +This patch restores Studio's documented read-only project-selection contract during catalog failures. diff --git a/.release-blocked b/.release-blocked deleted file mode 100644 index 1d3422ee1..000000000 --- a/.release-blocked +++ /dev/null @@ -1,2 +0,0 @@ -SAP-3089: the retired System Graph routes require the matching Studio client recovery. -Include PR #893 before versioning or publishing this server layer (PR #892). diff --git a/docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md b/docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md index 288c1bcef..d6f8bccb4 100644 --- a/docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md +++ b/docs/plans/agent-studio-plan-first-agent-map/authority-retirement.md @@ -13,12 +13,14 @@ ship together. Merge both before merging a Harness version PR, publishing npm packages or tagging a desktop release. The server-only layer still has a bundled browser fallback that reaches the retired endpoint on catalog failure. -Hold `.changeset/quiet-project-map-authority.md` in the client layer. It marks -the documented HTTP endpoint removal as a **breaking minor** and includes the -replacement APIs. Withholding this changeset does not technically prevent an -unrelated release from including the server change; the release dependency -must also be observed. The client recovery changeset remains a patch, while -the combined Harness release takes the higher minor bump. +The server layer carries `.changeset/quiet-project-map-authority.md`, marking +the documented HTTP endpoint removal as a **breaking minor** with replacement +APIs, even when other patch changesets are pending. Its `.release-blocked` file +makes `scripts/assert-release-ready.mjs` fail before versioning or publishing. +The local version/release commands and the Release PR, npm Publish and Desktop +Release workflows all run that check. The client layer removes the blocker +together with the unavailable-map recovery. Its recovery changeset remains a +patch; the combined Harness release takes the higher minor bump. ## Authority matrix