feat(FN-4958): complete Step 1 — settings surface
Fusion-Task-Id: FN-4958 Fusion-Task-Lineage: 2f1bc742-14e0-4fdd-a980-00051fc3323c
This commit is contained in:
committed by
gsxdsm
parent
76911c3f54
commit
106499c375
@@ -41,6 +41,25 @@ describe("settings defaults invariants", () => {
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
describe("prerebase policy defaults", () => {
|
||||
it("keeps prerebase policy defaults project-scoped", () => {
|
||||
expect(DEFAULT_PROJECT_SETTINGS.prerebaseAutoEnabled).toBe(true);
|
||||
expect(DEFAULT_PROJECT_SETTINGS.prerebaseDivergenceThreshold).toBe(50);
|
||||
expect(DEFAULT_PROJECT_SETTINGS.prerebaseHotFiles).toEqual([
|
||||
"AGENTS.md",
|
||||
"packages/core/src/store.ts",
|
||||
"packages/core/src/db.ts",
|
||||
"packages/engine/src/executor.ts",
|
||||
"packages/engine/src/scheduler.ts",
|
||||
"packages/engine/src/merger.ts",
|
||||
"packages/dashboard/app/styles.css",
|
||||
]);
|
||||
expect("prerebaseAutoEnabled" in DEFAULT_GLOBAL_SETTINGS).toBe(false);
|
||||
expect("prerebaseHotFiles" in DEFAULT_GLOBAL_SETTINGS).toBe(false);
|
||||
expect("prerebaseDivergenceThreshold" in DEFAULT_GLOBAL_SETTINGS).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("recycleWorktrees default", () => {
|
||||
it("keeps recycleWorktrees explicitly false in project defaults", () => {
|
||||
expect(DEFAULT_PROJECT_SETTINGS.recycleWorktrees).toBe(false);
|
||||
|
||||
@@ -242,6 +242,17 @@ export const DEFAULT_PROJECT_SETTINGS = {
|
||||
worktreeRebaseBeforeMerge: true,
|
||||
worktreeRebaseRemote: "",
|
||||
worktreeRebaseLocalBase: true,
|
||||
prerebaseAutoEnabled: true,
|
||||
prerebaseHotFiles: [
|
||||
"AGENTS.md",
|
||||
"packages/core/src/store.ts",
|
||||
"packages/core/src/db.ts",
|
||||
"packages/engine/src/executor.ts",
|
||||
"packages/engine/src/scheduler.ts",
|
||||
"packages/engine/src/merger.ts",
|
||||
"packages/dashboard/app/styles.css",
|
||||
],
|
||||
prerebaseDivergenceThreshold: 50,
|
||||
mergeConflictStrategy: "smart-prefer-main",
|
||||
mergeDiffVolumeMinLines: undefined,
|
||||
mergeDiffVolumeThreshold: undefined,
|
||||
|
||||
@@ -2789,6 +2789,21 @@ export interface ProjectSettings {
|
||||
* re-introduce code that an earlier sibling task already deleted.
|
||||
* Default: true. */
|
||||
worktreeRebaseLocalBase?: boolean;
|
||||
/** Master switch for pre-merge auto-prerebase policy. When false, merger
|
||||
* bypasses hot-file and divergence-threshold prerebase triggers.
|
||||
* Default: true. */
|
||||
prerebaseAutoEnabled?: boolean;
|
||||
/** Shared-infrastructure file paths that trigger pre-merge auto-prerebase
|
||||
* when they changed between `<task.baseCommitSha>` and local main HEAD.
|
||||
* Empty array disables hot-file triggering.
|
||||
* Default: curated project hot-file list. */
|
||||
prerebaseHotFiles?: string[];
|
||||
/** Commit-count threshold for pre-merge auto-prerebase. When the commit
|
||||
* count of `<task.baseCommitSha>..localMainHead` exceeds this value, the
|
||||
* merger auto-prerebases regardless of hot-file overlap.
|
||||
* Set to 0 or undefined to disable count-based triggering.
|
||||
* Default: 50. */
|
||||
prerebaseDivergenceThreshold?: number;
|
||||
/** Strategy used when a merge conflict can't be resolved by AI. See
|
||||
* {@link MergeConflictStrategy}. Default: "smart". */
|
||||
mergeConflictStrategy?: MergeConflictStrategy;
|
||||
|
||||
Reference in New Issue
Block a user