fix: reconcile governance scaffold follow-up
This commit is contained in:
@@ -732,9 +732,7 @@ describe('paired task state', () => {
|
||||
|
||||
_initTestDatabaseFromFile(dbPath);
|
||||
|
||||
expect(getPairedTaskById('paired-in-review')?.plan_status).toBe(
|
||||
'approved',
|
||||
);
|
||||
expect(getPairedTaskById('paired-in-review')?.plan_status).toBe('approved');
|
||||
expect(getPairedTaskById('paired-merge-ready')?.plan_status).toBe(
|
||||
'approved',
|
||||
);
|
||||
|
||||
@@ -761,8 +761,7 @@ function createSchema(database: Database.Database): void {
|
||||
.get() as { sql?: string } | undefined;
|
||||
const pairedArtifactsSql = pairedArtifactsSqlRow?.sql || '';
|
||||
const pairedArtifactsNeedsMigration =
|
||||
pairedArtifactsSql &&
|
||||
!pairedArtifactsSql.includes("'plan_brief'");
|
||||
pairedArtifactsSql && !pairedArtifactsSql.includes("'plan_brief'");
|
||||
if (pairedArtifactsNeedsMigration) {
|
||||
database.exec(`
|
||||
CREATE TABLE paired_artifacts_new (
|
||||
|
||||
@@ -246,10 +246,9 @@ describe('createMessageRuntime', () => {
|
||||
is_from_me: true,
|
||||
},
|
||||
]);
|
||||
const actualSessionCommands =
|
||||
await vi.importActual<typeof import('./session-commands.js')>(
|
||||
'./session-commands.js',
|
||||
);
|
||||
const actualSessionCommands = await vi.importActual<
|
||||
typeof import('./session-commands.js')
|
||||
>('./session-commands.js');
|
||||
vi.mocked(sessionCommands.handleSessionCommand).mockImplementation((opts) =>
|
||||
actualSessionCommands.handleSessionCommand(opts),
|
||||
);
|
||||
|
||||
@@ -343,8 +343,10 @@ describe('paired execution context', () => {
|
||||
pairedWorkspaceManager.markPairedTaskReviewReady,
|
||||
).toHaveBeenCalledWith('task-1');
|
||||
expect(result?.status).toBe('ready');
|
||||
if (!result || result.status !== 'ready') {
|
||||
throw new Error('expected ready review result');
|
||||
}
|
||||
expect(result.task.status).toBe('review_ready');
|
||||
expect(result?.task.status).toBe('review_ready');
|
||||
});
|
||||
|
||||
it('keeps review_pending and returns a pending result when owner workspace is not ready', () => {
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
import { execFileSync } from 'child_process';
|
||||
import crypto from 'crypto';
|
||||
|
||||
import {
|
||||
SERVICE_ID,
|
||||
normalizeServiceId,
|
||||
} from './config.js';
|
||||
import { SERVICE_ID, normalizeServiceId } from './config.js';
|
||||
import {
|
||||
createPairedExecution,
|
||||
createPairedTask,
|
||||
|
||||
@@ -100,7 +100,10 @@ describe('paired /review command path', () => {
|
||||
|
||||
expect(ownerResult?.workspace?.workspace_dir).toBeTruthy();
|
||||
const ownerWorkspaceDir = ownerResult!.workspace!.workspace_dir;
|
||||
fs.writeFileSync(path.join(ownerWorkspaceDir, 'README.md'), 'owner change\n');
|
||||
fs.writeFileSync(
|
||||
path.join(ownerWorkspaceDir, 'README.md'),
|
||||
'owner change\n',
|
||||
);
|
||||
|
||||
process.env.EJCLAW_DATA_DIR = path.join(tempRoot, 'data-review');
|
||||
process.env.SERVICE_ID = 'codex-review';
|
||||
|
||||
@@ -125,7 +125,9 @@ describe('paired workspace manager', () => {
|
||||
runGit(['status', '--short'], reviewerWorkspace.workspace_dir),
|
||||
).toContain('M README.md');
|
||||
expect(db.getPairedTaskById('paired-task-1')?.status).toBe('review_ready');
|
||||
expect(db.getPairedTaskById('paired-task-1')?.review_requested_at).toBeTruthy();
|
||||
expect(
|
||||
db.getPairedTaskById('paired-task-1')?.review_requested_at,
|
||||
).toBeTruthy();
|
||||
expect(
|
||||
db.getPairedWorkspace('paired-task-1', 'reviewer')?.snapshot_refreshed_at,
|
||||
).toBeTruthy();
|
||||
@@ -165,6 +167,9 @@ describe('paired workspace manager', () => {
|
||||
reviewer_service_id: 'codex-review',
|
||||
title: null,
|
||||
source_ref: 'HEAD',
|
||||
task_policy: 'autonomous',
|
||||
risk_level: 'low',
|
||||
plan_status: 'not_requested',
|
||||
review_requested_at: null,
|
||||
status: 'draft',
|
||||
created_at: now,
|
||||
@@ -226,8 +231,9 @@ describe('paired workspace manager', () => {
|
||||
updated_at: now,
|
||||
});
|
||||
|
||||
const ownerWorkspace =
|
||||
manager.provisionOwnerWorkspaceForPairedTask('paired-task-cross-service');
|
||||
const ownerWorkspace = manager.provisionOwnerWorkspaceForPairedTask(
|
||||
'paired-task-cross-service',
|
||||
);
|
||||
fs.writeFileSync(
|
||||
path.join(ownerWorkspace.workspace_dir, 'README.md'),
|
||||
'owner modified\n',
|
||||
@@ -700,6 +706,9 @@ describe('paired workspace manager', () => {
|
||||
reviewer_service_id: 'codex-review',
|
||||
title: null,
|
||||
source_ref: 'HEAD',
|
||||
task_policy: 'autonomous',
|
||||
risk_level: 'low',
|
||||
plan_status: 'not_requested',
|
||||
review_requested_at: null,
|
||||
status: 'draft',
|
||||
created_at: now,
|
||||
@@ -798,8 +807,12 @@ describe('paired workspace manager', () => {
|
||||
expect(blocked.blockMessage).toBe(
|
||||
'Review snapshot is stale after owner changes. Retry the review once to refresh against the latest owner workspace.',
|
||||
);
|
||||
expect(db.getPairedTaskById('paired-task-6')?.status).toBe('review_pending');
|
||||
expect(db.getPairedTaskById('paired-task-6')?.review_requested_at).toBeTruthy();
|
||||
expect(db.getPairedTaskById('paired-task-6')?.status).toBe(
|
||||
'review_pending',
|
||||
);
|
||||
expect(
|
||||
db.getPairedTaskById('paired-task-6')?.review_requested_at,
|
||||
).toBeTruthy();
|
||||
expect(db.getPairedWorkspace('paired-task-6', 'reviewer')?.status).toBe(
|
||||
'stale',
|
||||
);
|
||||
@@ -816,6 +829,8 @@ describe('paired workspace manager', () => {
|
||||
'utf-8',
|
||||
),
|
||||
).toBe('owner changed again\n');
|
||||
expect(db.getPairedTaskById('paired-task-6')?.review_requested_at).toBeTruthy();
|
||||
expect(
|
||||
db.getPairedTaskById('paired-task-6')?.review_requested_at,
|
||||
).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -504,10 +504,7 @@ export function prepareReviewerWorkspaceForExecution(
|
||||
const now = new Date().toISOString();
|
||||
|
||||
if (snapshotMissing || snapshotStale) {
|
||||
if (
|
||||
task.status === 'review_pending' ||
|
||||
task.status === 'review_ready'
|
||||
) {
|
||||
if (task.status === 'review_pending' || task.status === 'review_ready') {
|
||||
const refreshedWorkspace = refreshReviewerSnapshotForPairedTask(task.id);
|
||||
updatePairedTask(task.id, {
|
||||
status: 'review_ready',
|
||||
|
||||
@@ -93,7 +93,9 @@ describe('isSessionCommandControlMessage', () => {
|
||||
|
||||
it('matches multiline review snapshot output', () => {
|
||||
expect(
|
||||
isSessionCommandControlMessage('Review snapshot updated.\n- Task: task-1'),
|
||||
isSessionCommandControlMessage(
|
||||
'Review snapshot updated.\n- Task: task-1',
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user