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:
gsxdsm
2026-07-18 12:48:13 -07:00
committed by GitHub
parent 88b0db0f4d
commit 17ee1a8040
13 changed files with 308 additions and 25 deletions

View File

@@ -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();
});
});

View File

@@ -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",

View File

@@ -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",