From eebf1c0b1be29ea15cf2fe39ddafbadaf2793101 Mon Sep 17 00:00:00 2001 From: 777genius Date: Sat, 9 May 2026 12:21:32 +0300 Subject: [PATCH] docs(team): update opencode delivery advisory plan --- ...untime-delivery-advisory-phase-1-2-plan.md | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/team-management/opencode-runtime-delivery-advisory-phase-1-2-plan.md b/docs/team-management/opencode-runtime-delivery-advisory-phase-1-2-plan.md index e06166ef..e6aa2931 100644 --- a/docs/team-management/opencode-runtime-delivery-advisory-phase-1-2-plan.md +++ b/docs/team-management/opencode-runtime-delivery-advisory-phase-1-2-plan.md @@ -1112,7 +1112,25 @@ case 'invalidateMemberRuntimeAdvisory': }; ``` -When the worker handles `invalidateTeamConfig`, clear runtime advisories for that team too. Team config changes can change the member roster, provider, model, or lane metadata, and a cached advisory from the previous shape should not survive a config invalidation: +When `forwardTeamChange` handles config/meta changes, clear runtime advisories in both main and worker services. Team config changes can change the member roster, provider, model, cwd, lane metadata, or removed status, and a cached advisory from the previous shape should not survive a config invalidation. + +Main thread: + +```ts +if ( + event.type === 'config' && + (event.detail === 'config.json' || + event.detail === 'team.meta.json' || + event.detail === 'members.meta.json') +) { + teamMemberRuntimeAdvisoryService.invalidateTeamAdvisories(event.teamName); + getTeamDataWorkerClient().invalidateMemberRuntimeAdvisory(event.teamName); +} +``` + +Do not call both `teamMemberRuntimeAdvisoryService.invalidateTeamAdvisories()` and `teamDataService.invalidateTeamRuntimeAdvisories()` in the current main wiring if they point at the same service instance. Pick one path to avoid double generation bumps in tests. The public `TeamDataService` invalidator still exists for worker and future encapsulated callers. + +Worker: ```ts case 'invalidateTeamConfig': { @@ -1284,6 +1302,7 @@ Cases: ```ts it('posts invalidateMemberRuntimeAdvisory to the worker', async () => {}); it('clears worker-side member runtime advisory cache on invalidateMemberRuntimeAdvisory', async () => {}); +it('clears main-thread advisory cache during config/team.meta/members.meta forwarding', async () => {}); it('clears worker-side advisory cache during invalidateTeamConfig', async () => {}); it('invalidates worker advisory cache before forwarding member-advisory events to the renderer', async () => {}); it('summarizes invalidateMemberRuntimeAdvisory worker requests in diagnostics', async () => {});