fix(FN-1187): integration fixes for mission health and type updates

- Add /missions/health endpoint handling to MissionManager test mocks
- Add listMissionsWithSummaries to mission-e2e test mock
- Add planState to Slice type and mock factories
- Add stuckKillCount to retry task test assertions
- Update log message for stuck-killed retry
This commit is contained in:
gsxdsm
2026-04-09 12:21:51 -07:00
parent 850939d268
commit ced3ad3be6
10 changed files with 210 additions and 3 deletions

View File

@@ -98,6 +98,7 @@ export {
INTERVIEW_STATES,
AUTOPILOT_STATES,
MISSION_EVENT_TYPES,
SLICE_PLAN_STATES,
} from "./mission-types.js";
export type {
MissionStatus,
@@ -106,6 +107,7 @@ export type {
FeatureStatus,
InterviewState,
AutopilotState,
SlicePlanState,
MissionEventType,
AutopilotStatus,
Mission,

View File

@@ -33,6 +33,7 @@ import type {
MissionEvent,
MissionEventType,
MissionHealth,
SlicePlanState,
} from "./mission-types.js";
// ── Mission Summary Type ─────────────────────────────────────────────
@@ -163,6 +164,7 @@ export class MissionStore extends EventEmitter<MissionStoreEvents> {
status: row.status as SliceStatus,
orderIndex: row.orderIndex,
activatedAt: row.activatedAt || undefined,
planState: (row.planState as SlicePlanState) || "not_started",
createdAt: row.createdAt,
updatedAt: row.updatedAt,
};
@@ -1077,6 +1079,7 @@ export class MissionStore extends EventEmitter<MissionStoreEvents> {
title: input.title,
description: input.description,
status: "pending",
planState: "not_started",
orderIndex,
createdAt: now,
updatedAt: now,

View File

@@ -23,6 +23,10 @@ export type MilestoneStatus = (typeof MILESTONE_STATUSES)[number];
export const SLICE_STATUSES = ["pending", "active", "complete"] as const;
export type SliceStatus = (typeof SLICE_STATUSES)[number];
/** Status values for a Slice's plan state (per-slice planning workflow) */
export const SLICE_PLAN_STATES = ["not_started", "planned", "needs_update"] as const;
export type SlicePlanState = (typeof SLICE_PLAN_STATES)[number];
/** Status values for a Feature within a slice */
export const FEATURE_STATUSES = ["defined", "triaged", "in-progress", "done", "blocked"] as const;
export type FeatureStatus = (typeof FEATURE_STATUSES)[number];
@@ -147,6 +151,10 @@ export interface Milestone {
interviewState: InterviewState;
/** IDs of milestones that must complete before this one can start */
dependencies: string[];
/** Planning notes from interview/planning output */
planningNotes?: string;
/** How to verify milestone completion */
verification?: string;
/** ISO-8601 timestamp of creation */
createdAt: string;
/** ISO-8601 timestamp of last update */
@@ -172,6 +180,12 @@ export interface Slice {
orderIndex: number;
/** ISO-8601 timestamp when the slice was activated (if applicable) */
activatedAt?: string;
/** State of the per-slice planning workflow */
planState: SlicePlanState;
/** Planning notes from interview/planning output */
planningNotes?: string;
/** How to verify slice completion */
verification?: string;
/** ISO-8601 timestamp of creation */
createdAt: string;
/** ISO-8601 timestamp of last update */
@@ -221,6 +235,10 @@ export interface MilestoneCreateInput {
description?: string;
/** IDs of milestones that must complete before this one can start */
dependencies?: string[];
/** Planning notes from interview/planning output */
planningNotes?: string;
/** How to verify milestone completion */
verification?: string;
}
/** Input for creating a new Slice */
@@ -229,6 +247,10 @@ export interface SliceCreateInput {
title: string;
/** Detailed description of work to be done */
description?: string;
/** Planning notes from interview/planning output */
planningNotes?: string;
/** How to verify slice completion */
verification?: string;
}
/** Input for creating a new Feature */