fix(ci): ideation heartbeat tools, review-artifact i18n, tab-persist quarantine (#2321)

## Summary
- Heartbeat customTools inventory includes FN-8295 ideation tools (63
total).
- Non-en i18n parity for FN-8286 `reviewArtifacts` Command Center +
settings keys.
- Quarantine `TaskDetailModal.tab-persistence.test.tsx` (CI load flake;
green focused thrice).

## Test plan
- [x] heartbeat expected-tools case green
- [x] i18n-gate-coverage + parity green
- [ ] Full Suite all 4 shards green on main after merge
This commit is contained in:
gsxdsm
2026-07-18 14:13:28 -07:00
committed by GitHub
parent bcdad279d7
commit 89b42ed1d6
8 changed files with 67 additions and 12 deletions

View File

@@ -346,6 +346,13 @@ const quarantinedDashboardTests: string[] = [
async-store or applicable mock/non-store contracts. Remove their ledger/exclude
pairs so dashboard-api-quality-backfill collects the restored coverage.
*/
/*
FNXC:DashboardTestQuarantine 2026-07-18-14:05:
Full-suite shard 2 (run 29660321240): Terminal-guard tab settle race under
dashboard-app-quality-backfill load; passes focused thrice with no product bug.
Quarantine on sight — mirrored in scripts/lib/test-quarantine.json.
*/
"app/components/__tests__/TaskDetailModal.tab-persistence.test.tsx",
];
const qualityApiTests = [

View File

@@ -3275,10 +3275,13 @@ describe("executeHeartbeat", () => {
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.
FNXC:Ideation 2026-07-18-14:05:
FN-8295 mounts createIdeationTools (5 tools) immediately after missions on task-scoped and no-task heartbeats. Count rose 58→63.
*/
// fn_artifact_register/list/view, agent config/provisioning, mission hierarchy, goals/evaluations/identity,
// fn_artifact_register/list/view, agent config/provisioning, mission hierarchy, ideation, 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(58);
expect(callArgs.customTools).toHaveLength(63);
expect(callArgs.customTools!.map((tool) => tool.name)).toEqual([
"fn_task_create",
"fn_task_log",
@@ -3310,6 +3313,11 @@ describe("executeHeartbeat", () => {
"fn_feature_update",
"fn_feature_delete",
"fn_feature_link_task",
"fn_ideation_list",
"fn_ideation_show",
"fn_ideation_start",
"fn_ideation_diverge",
"fn_ideation_converge",
"fn_goal_list",
"fn_goal_show",
"fn_read_evaluations",

View File

@@ -1807,7 +1807,8 @@
"team": "",
"workflows": "Workflows",
"tokens": "",
"tools": ""
"tools": "",
"reviewArtifacts": "Artefactos de revisión"
},
"team": {
"agent": "",
@@ -1885,6 +1886,10 @@
"sessions": "",
"summaryTitle": "",
"toolCalls": ""
},
"reviewArtifacts": {
"title": "Artefactos de revisión",
"empty": "Aún no hay artefactos de revisión disponibles."
}
},
"comments": {
@@ -5941,7 +5946,9 @@
"ephemeralAgentTaskCreationPolicyUponValidation": "Tras validación",
"ephemeralAgentTaskCreationPolicyDeny": "Denegar",
"reportModeHelp": "Cómo se archivan los informes in-app (error, feedback, idea, ayuda). Predeterminado: draft-review (el operador revisa un borrador antes de archivar).",
"reportModeByActionHelp": "Anulación opcional por acción del modo de informe del proyecto (error, feedback, idea o ayuda). Sin valor predeterminado: las acciones no definidas heredan reportMode."
"reportModeByActionHelp": "Anulación opcional por acción del modo de informe del proyecto (error, feedback, idea o ayuda). Sin valor predeterminado: las acciones no definidas heredan reportMode.",
"reviewArtifacts": "Artefactos de revisión",
"reviewArtifactsHint": "Controla si las tareas futuras elegibles generan entregables de revisión. Los informes de usuario y la captura de actividad se mantienen independientes. Predeterminado: desactivado."
},
"globalGeneral": {
"andShowsUpdateNoticesInTheCLIAnd": "",

View File

@@ -1807,7 +1807,8 @@
"team": "",
"workflows": "Workflows",
"tokens": "",
"tools": ""
"tools": "",
"reviewArtifacts": "Artefacts de revue"
},
"team": {
"agent": "",
@@ -1885,6 +1886,10 @@
"sessions": "",
"summaryTitle": "",
"toolCalls": ""
},
"reviewArtifacts": {
"title": "Artefacts de revue",
"empty": "Aucun artefact de revue n'est encore disponible."
}
},
"comments": {
@@ -5941,7 +5946,9 @@
"ephemeralAgentTaskCreationPolicyUponValidation": "Sur validation",
"ephemeralAgentTaskCreationPolicyDeny": "Refuser",
"reportModeHelp": "Comment les rapports in-app (bug, feedback, idée, aide) sont déposés. Par défaut : draft-review (l'opérateur revoit un brouillon avant dépôt).",
"reportModeByActionHelp": "Surcharge optionnelle par action du mode de rapport du projet (bug, feedback, idée ou aide). Aucune valeur par défaut — les actions non définies héritent de reportMode."
"reportModeByActionHelp": "Surcharge optionnelle par action du mode de rapport du projet (bug, feedback, idée ou aide). Aucune valeur par défaut — les actions non définies héritent de reportMode.",
"reviewArtifacts": "Artefacts de revue",
"reviewArtifactsHint": "Contrôle si les futures tâches éligibles génèrent des livrables de revue. Les rapports utilisateur et la capture d'activité restent séparés. Par défaut : désactivé."
},
"globalGeneral": {
"andShowsUpdateNoticesInTheCLIAnd": "",

View File

@@ -1807,7 +1807,8 @@
"team": "",
"workflows": "Workflows",
"tokens": "",
"tools": ""
"tools": "",
"reviewArtifacts": "리뷰 산출물"
},
"team": {
"agent": "",
@@ -1885,6 +1886,10 @@
"sessions": "",
"summaryTitle": "",
"toolCalls": ""
},
"reviewArtifacts": {
"title": "리뷰 산출물",
"empty": "아직 사용 가능한 리뷰 산출물이 없습니다."
}
},
"comments": {
@@ -5941,7 +5946,9 @@
"ephemeralAgentTaskCreationPolicyUponValidation": "검증 후",
"ephemeralAgentTaskCreationPolicyDeny": "거부",
"reportModeHelp": "인앱 버그/피드백/아이디어/도움말 리포트 제출 방식. 기본값: draft-review(제출 전 운영자가 초안 검토).",
"reportModeByActionHelp": "버그·피드백·아이디어·도움말 등 작업별 프로젝트 리포트 모드 선택 재정의. 기본값 없음 — 미설정 작업은 reportMode를 상속합니다."
"reportModeByActionHelp": "버그·피드백·아이디어·도움말 등 작업별 프로젝트 리포트 모드 선택 재정의. 기본값 없음 — 미설정 작업은 reportMode를 상속합니다.",
"reviewArtifacts": "리뷰 산출물",
"reviewArtifactsHint": "적격한 향후 작업이 리뷰 산출물을 생성할지 제어합니다. 사용자 보고와 활동 캡처는 별도로 유지됩니다. 기본값: 꺼짐."
},
"globalGeneral": {
"andShowsUpdateNoticesInTheCLIAnd": "",

View File

@@ -1807,7 +1807,8 @@
"team": "",
"workflows": "Workflows",
"tokens": "",
"tools": ""
"tools": "",
"reviewArtifacts": "评审产物"
},
"team": {
"agent": "",
@@ -1885,6 +1886,10 @@
"sessions": "",
"summaryTitle": "",
"toolCalls": ""
},
"reviewArtifacts": {
"title": "评审产物",
"empty": "尚无评审产物。"
}
},
"comments": {
@@ -5941,7 +5946,9 @@
"ephemeralAgentTaskCreationPolicyUponValidation": "需验证",
"ephemeralAgentTaskCreationPolicyDeny": "拒绝",
"reportModeHelp": "应用内缺陷/反馈/想法/帮助报告的提交方式。默认:draft-review(提交前由操作者审阅草稿)。",
"reportModeByActionHelp": "可选的按操作覆盖项目报告模式(缺陷、反馈、想法或帮助)。无默认值 — 未设置的操作继承 reportMode。"
"reportModeByActionHelp": "可选的按操作覆盖项目报告模式(缺陷、反馈、想法或帮助)。无默认值 — 未设置的操作继承 reportMode。",
"reviewArtifacts": "评审产物",
"reviewArtifactsHint": "控制符合条件的未来任务是否生成评审交付物。面向用户的报告与活动捕获保持独立。默认:关闭。"
},
"globalGeneral": {
"andShowsUpdateNoticesInTheCLIAnd": "",

View File

@@ -1807,7 +1807,8 @@
"team": "",
"workflows": "Workflows",
"tokens": "",
"tools": ""
"tools": "",
"reviewArtifacts": "審查產物"
},
"team": {
"agent": "",
@@ -1885,6 +1886,10 @@
"sessions": "",
"summaryTitle": "",
"toolCalls": ""
},
"reviewArtifacts": {
"title": "審查產物",
"empty": "尚無審查產物。"
}
},
"comments": {
@@ -5941,7 +5946,9 @@
"ephemeralAgentTaskCreationPolicyUponValidation": "需驗證",
"ephemeralAgentTaskCreationPolicyDeny": "拒絕",
"reportModeHelp": "應用內缺陷/回饋/想法/說明報告的提交方式。預設:draft-review(提交前由操作者審閱草稿)。",
"reportModeByActionHelp": "可選的依操作覆寫專案報告模式(缺陷、回饋、想法或說明)。無預設值 — 未設定的操作繼承 reportMode。"
"reportModeByActionHelp": "可選的依操作覆寫專案報告模式(缺陷、回饋、想法或說明)。無預設值 — 未設定的操作繼承 reportMode。",
"reviewArtifacts": "審查產物",
"reviewArtifactsHint": "控制符合條件的未來任務是否產生審查交付物。面向使用者的報告與活動擷取保持獨立。預設:關閉。"
},
"globalGeneral": {
"andShowsUpdateNoticesInTheCLIAnd": "",

View File

@@ -15,6 +15,11 @@
"file": "plugins/fusion-plugin-quality/src/__tests__/async-quality-store.pg.test.ts",
"reason": "Full-suite shard 3 (run 29657633544): 5s timeout + leftover psql child under package-lane load without product-bug evidence; embedded-PG lifecycle remains load-sensitive. Quarantine on sight per AGENTS.md. Mirrored in plugins/fusion-plugin-quality/vitest.config.ts.",
"quarantinedAt": "2026-07-18"
},
{
"file": "packages/dashboard/app/components/__tests__/TaskDetailModal.tab-persistence.test.tsx",
"reason": "Full-suite shard 2 (run 29660321240): Terminal-guard tab settle race under dashboard-app-quality-backfill load without product-bug evidence; passes focused/local thrice. Quarantine on sight per AGENTS.md. Mirrored in packages/dashboard/vitest.config.ts.",
"quarantinedAt": "2026-07-18"
}
]
}