feat(orchestrator): harden zero-impact shadow rollout
Gate and bound Portal shadow observations while preserving Native execution. Add fail-closed service boundaries, terminal retention controls, Canary readiness telemetry, ops visibility, and isolated regression coverage.
This commit is contained in:
@@ -154,6 +154,28 @@ export function createOrchestratorApp({
|
||||
}
|
||||
});
|
||||
|
||||
app.delete('/v1/runs/:runId', async (request, response, next) => {
|
||||
try {
|
||||
const result = await runtime.deleteRun(request.params.runId);
|
||||
if (!result) return response.status(404).json({ error: { code: 'RUN_NOT_FOUND' } });
|
||||
return response.json(result);
|
||||
} catch (error) {
|
||||
return next(error);
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/v1/maintenance/purge-terminal-runs', async (request, response, next) => {
|
||||
try {
|
||||
return response.json(await runtime.purgeTerminalRuns({
|
||||
before: request.body?.before,
|
||||
limit: request.body?.limit,
|
||||
dryRun: request.body?.apply !== true,
|
||||
}));
|
||||
} catch (error) {
|
||||
return next(error);
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/v1/executor-jobs/:jobId', async (request, response, next) => {
|
||||
try {
|
||||
const job = await runtime.getExecutorJob(request.params.jobId);
|
||||
|
||||
Reference in New Issue
Block a user