feat(FN-4892): complete Step 3 — allow intake archive transitions

Fusion-Task-Id: FN-4892
Fusion-Task-Lineage: 6f56b468-a827-416d-ba1f-444e1326d613
This commit is contained in:
Fusion (runfusion.ai)
2026-05-17 21:45:02 -07:00
committed by gsxdsm
parent 50654dff6e
commit 3f5ae003cf
2 changed files with 14 additions and 8 deletions

View File

@@ -36,9 +36,8 @@ describe("board", () => {
expect(canTransition("done", "in-review")).toBe(false);
// archived cannot go directly back to in-progress
expect(canTransition("archived", "in-progress")).toBe(false);
// triage cannot go backwards at all (no transitions before it)
// triage cannot go directly to done
expect(canTransition("triage", "done")).toBe(false);
expect(canTransition("triage", "archived")).toBe(false);
});
it("returns false for skipping columns", () => {
@@ -49,6 +48,11 @@ describe("board", () => {
// Note: in-progress can transition to done for mission validation tasks
// so we don't test that case here
});
it("allows intake-side archival transitions", () => {
expect(canTransition("triage", "archived")).toBe(true);
expect(canTransition("todo", "archived")).toBe(true);
});
});
describe("getValidTransitions", () => {
@@ -60,18 +64,18 @@ describe("board", () => {
it("returns a copy of the array (modifications don't affect original)", () => {
const transitions = getValidTransitions("todo");
transitions.push("archived" as Column);
transitions.push("done" as Column);
// Original should be unchanged
expect(getValidTransitions("todo")).not.toContain("archived");
expect(getValidTransitions("todo")).not.toContain("done");
});
it("returns correct transitions for triage", () => {
expect(getValidTransitions("triage")).toEqual(["todo"]);
expect(getValidTransitions("triage")).toEqual(["todo", "archived"]);
});
it("returns correct transitions for todo", () => {
expect(getValidTransitions("todo")).toEqual(["in-progress", "triage"]);
expect(getValidTransitions("todo")).toEqual(["in-progress", "triage", "archived"]);
});
it("returns correct transitions for in-progress", () => {

View File

@@ -3403,8 +3403,10 @@ export const COLUMN_DESCRIPTIONS: Record<Column, string> = {
};
export const VALID_TRANSITIONS: Record<Column, Column[]> = {
triage: ["todo"],
todo: ["in-progress", "triage"],
// FN-4892: intake-side heuristics may cold-archive tasks before execution starts.
triage: ["todo", "archived"],
// FN-4892: allow direct archival for newly specified intake tasks.
todo: ["in-progress", "triage", "archived"],
// NOTE: "in-progress" → "done" is enabled for mission validation tasks that complete directly.
// Regular implementation tasks should move through "in-review" before "done".
"in-progress": ["in-review", "todo", "triage", "done"],