fix(ci): restore Full Suite bookkeeping after concurrent main landings (#2316)
## Summary - Align heartbeat `customTools` expectations with FN-8294 mission hierarchy tools (43→58). - Refresh `COORDINATION_EXEMPT_TOOLS` snapshot for `fn_mission_list` / `fn_mission_show`. - Backfill `commandCenter.portability.*` for non-en locales and map `reportMode` / `reportModeByAction` / `embeddedPostgresMaxConnections` into settings default-description inventory with i18n help text. - Realign FN-8064 skip-narration unit test with store-owned proactive chat (no tool-side `appendAgentLog`). - Quarantine load-sensitive `async-quality-store.pg.test.ts` (5s timeout + leftover psql under full-suite shard load; run 29657633544). ## Test plan - [x] `pnpm --filter @fusion/engine exec vitest run` gating-classifications + executor-prompt + heartbeat expected-tools case - [x] `pnpm --filter @fusion/i18n exec vitest run` i18n-gate-coverage + parity - [x] `pnpm --filter @fusion/dashboard exec vitest run` settings-default-descriptions - [ ] Full Suite all 4 shards green on main after merge <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Settings** * Added clearer, localized help text for report modes and per-action overrides, including inheritance behavior. * Added advanced embedded database connection-limit settings and validation guidance. * **Localization** * Expanded translations for report settings, database tuning, and organization configuration import/export workflows across supported languages. * **Tests & Maintenance** * Updated test coverage and expectations for expanded tools and reporting behavior. * Quarantined a flaky database-related test. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -2647,7 +2647,14 @@ describe("fn_task_update bare-call guard (P1 api-contract)", () => {
|
||||
expect(text).not.toContain("fn_task_update requires at least one of");
|
||||
});
|
||||
|
||||
it("narrates a store-accepted skipped transition exactly once", async () => {
|
||||
it("accepts a store-accepted skipped transition without tool-side agent-log narration", async () => {
|
||||
/*
|
||||
FNXC:ProactiveChatStatus 2026-07-18-12:40:
|
||||
FN-8064 moved step start/success/skip narration into TaskStore.updateStep (merge-queue-ops)
|
||||
so workflow projection, review auto-approval, and self-healing share the same chat rows.
|
||||
fn_task_update only reports progress text; appendAgentLog is store-owned when
|
||||
proactiveTaskChatEnabled is true. Covered by packages/core proactive-step-status.pg.test.ts.
|
||||
*/
|
||||
const { store, tool } = makeTool();
|
||||
store.updateStep.mockResolvedValue(createMockTaskDetail({
|
||||
steps: [{ name: "No code change needed", status: "skipped", dependsOn: [] }],
|
||||
@@ -2656,14 +2663,10 @@ describe("fn_task_update bare-call guard (P1 api-contract)", () => {
|
||||
const result = await tool.execute("call-1", { step: 0, status: "skipped" });
|
||||
|
||||
expect(result.isError).not.toBe(true);
|
||||
expect(store.appendAgentLog).toHaveBeenCalledTimes(1);
|
||||
expect(store.appendAgentLog).toHaveBeenCalledWith(
|
||||
"FN-001",
|
||||
"Step 0 was skipped — No code change needed.",
|
||||
"status",
|
||||
undefined,
|
||||
"executor",
|
||||
);
|
||||
const text = result.content[0]?.type === "text" ? result.content[0].text : "";
|
||||
expect(text).toContain("Step 0");
|
||||
expect(text).toContain("skipped");
|
||||
expect(store.appendAgentLog).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -144,6 +144,8 @@ describe("gating-classifications parity", () => {
|
||||
"fn_memory_append",
|
||||
"fn_memory_get",
|
||||
"fn_memory_search",
|
||||
"fn_mission_list",
|
||||
"fn_mission_show",
|
||||
"fn_post_room_message",
|
||||
"fn_read_evaluations",
|
||||
"fn_read_messages",
|
||||
|
||||
@@ -3272,10 +3272,13 @@ describe("executeHeartbeat", () => {
|
||||
/*
|
||||
FNXC:TaskAgentLog 2026-07-16-08:05:
|
||||
Heartbeat customTools include FN-8058 fn_task_logs_read after fn_task_log so durable agents can read agent-log.jsonl. Count stays exact so new tools fail loudly.
|
||||
|
||||
FNXC:MissionToolParity 2026-07-18-12:40:
|
||||
FN-8294 adds the full Mission hierarchy surface (15 tools) to task-scoped heartbeat sessions via createMissionTools, after agent provisioning and before goal retrieval. Count rose 43→58; keep exact so new tools fail loudly.
|
||||
*/
|
||||
// fn_artifact_register/list/view, agent config/provisioning, goals/evaluations/identity,
|
||||
// fn_artifact_register/list/view, agent config/provisioning, mission hierarchy, goals/evaluations/identity,
|
||||
// task read discovery (incl. logs_read), workflow discovery/authoring, task promotion, bounded research, clarification, web fetch, memory, and fn_heartbeat_done.
|
||||
expect(callArgs.customTools).toHaveLength(43);
|
||||
expect(callArgs.customTools).toHaveLength(58);
|
||||
expect(callArgs.customTools!.map((tool) => tool.name)).toEqual([
|
||||
"fn_task_create",
|
||||
"fn_task_log",
|
||||
@@ -3292,6 +3295,21 @@ describe("executeHeartbeat", () => {
|
||||
"fn_update_agent_config",
|
||||
"fn_agent_create",
|
||||
"fn_agent_delete",
|
||||
"fn_mission_list",
|
||||
"fn_mission_show",
|
||||
"fn_mission_create",
|
||||
"fn_mission_update",
|
||||
"fn_mission_delete",
|
||||
"fn_milestone_add",
|
||||
"fn_milestone_update",
|
||||
"fn_milestone_delete",
|
||||
"fn_slice_add",
|
||||
"fn_slice_activate",
|
||||
"fn_slice_delete",
|
||||
"fn_feature_add",
|
||||
"fn_feature_update",
|
||||
"fn_feature_delete",
|
||||
"fn_feature_link_task",
|
||||
"fn_goal_list",
|
||||
"fn_goal_show",
|
||||
"fn_read_evaluations",
|
||||
|
||||
Reference in New Issue
Block a user