hungry-ghost-hive 0.47.2 → 0.47.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/cli/commands/auth.js +4 -4
  2. package/dist/cli/commands/auth.js.map +1 -1
  3. package/dist/cli/commands/auth.test.js +42 -0
  4. package/dist/cli/commands/auth.test.js.map +1 -1
  5. package/dist/cli/commands/pr.d.ts.map +1 -1
  6. package/dist/cli/commands/pr.js +0 -22
  7. package/dist/cli/commands/pr.js.map +1 -1
  8. package/dist/cli/commands/pr.test.js +28 -0
  9. package/dist/cli/commands/pr.test.js.map +1 -1
  10. package/dist/cli/wizard/init-wizard.js +1 -1
  11. package/dist/cli/wizard/init-wizard.js.map +1 -1
  12. package/dist/cli/wizard/init-wizard.test.js +10 -4
  13. package/dist/cli/wizard/init-wizard.test.js.map +1 -1
  14. package/dist/config/schema.d.ts +19 -0
  15. package/dist/config/schema.d.ts.map +1 -1
  16. package/dist/config/schema.js +4 -0
  17. package/dist/config/schema.js.map +1 -1
  18. package/dist/context-files/index.test.js +1 -1
  19. package/dist/context-files/index.test.js.map +1 -1
  20. package/dist/utils/auto-merge.d.ts +8 -0
  21. package/dist/utils/auto-merge.d.ts.map +1 -1
  22. package/dist/utils/auto-merge.js +138 -0
  23. package/dist/utils/auto-merge.js.map +1 -1
  24. package/dist/utils/auto-merge.test.js +145 -1
  25. package/dist/utils/auto-merge.test.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/cli/commands/auth.test.ts +51 -0
  28. package/src/cli/commands/auth.ts +4 -4
  29. package/src/cli/commands/pr.test.ts +48 -0
  30. package/src/cli/commands/pr.ts +0 -30
  31. package/src/cli/wizard/init-wizard.test.ts +10 -4
  32. package/src/cli/wizard/init-wizard.ts +1 -1
  33. package/src/config/schema.ts +4 -0
  34. package/src/context-files/index.test.ts +1 -1
  35. package/src/utils/auto-merge.test.ts +213 -1
  36. package/src/utils/auto-merge.ts +179 -0
@@ -16,7 +16,7 @@ vi.mock('../connectors/project-management/operations.js', () => ({
16
16
  syncStatusForStory: vi.fn(),
17
17
  }));
18
18
  import { loadConfig } from '../config/loader.js';
19
- import { autoMergeApprovedPRs } from './auto-merge.js';
19
+ import { autoMergeApprovedPRs, checkPreexistingCIFailures } from './auto-merge.js';
20
20
  const mockLoadConfig = vi.mocked(loadConfig);
21
21
  describe('auto-merge functionality', () => {
22
22
  let db;
@@ -304,6 +304,150 @@ describe('auto-merge functionality', () => {
304
304
  expect(result).toBe(0);
305
305
  expect(getPullRequestById(db, pr.id)?.status).toBe('approved');
306
306
  });
307
+ it('should bypass BLOCKED status when all CI failures are pre-existing on base branch', async () => {
308
+ const pr = createPullRequest(db, {
309
+ storyId,
310
+ teamId,
311
+ branchName: 'feature/preexisting-ci',
312
+ githubPrNumber: 555,
313
+ });
314
+ updatePullRequest(db, pr.id, { status: 'approved' });
315
+ mockLoadConfig.mockReturnValue({
316
+ integrations: {
317
+ autonomy: { level: 'full', allow_preexisting_ci_failures: true },
318
+ source_control: { provider: 'github' },
319
+ project_management: { provider: 'none' },
320
+ },
321
+ });
322
+ const mockExecSync = vi.fn();
323
+ // 1. gh pr view → BLOCKED but MERGEABLE
324
+ mockExecSync.mockReturnValueOnce(JSON.stringify({ state: 'OPEN', mergeable: 'MERGEABLE', mergeStateStatus: 'BLOCKED' }));
325
+ // 2. gh pr checks → one failing check
326
+ mockExecSync.mockReturnValueOnce(JSON.stringify([
327
+ { name: 'build', state: 'SUCCESS' },
328
+ { name: 'lint', state: 'FAIL' },
329
+ ]));
330
+ // 3. gh pr view baseRefName
331
+ mockExecSync.mockReturnValueOnce(JSON.stringify({ baseRefName: 'main' }));
332
+ // 4. gh api base branch check-runs → same check failing
333
+ mockExecSync.mockReturnValueOnce(JSON.stringify([
334
+ { name: 'build', conclusion: 'success' },
335
+ { name: 'lint', conclusion: 'failure' },
336
+ ]));
337
+ // 5. gh pr merge --admin → success
338
+ mockExecSync.mockReturnValueOnce(undefined);
339
+ vi.doMock('child_process', () => ({ execSync: mockExecSync }));
340
+ const dbClient = { db, save: vi.fn(), close: vi.fn(), runMigrations: vi.fn() };
341
+ const result = await autoMergeApprovedPRs('/mock/root', dbClient);
342
+ expect(result).toBe(1);
343
+ expect(getPullRequestById(db, pr.id)?.status).toBe('merged');
344
+ });
345
+ it('should not bypass BLOCKED status when PR has new CI failures not on base branch', async () => {
346
+ const pr = createPullRequest(db, {
347
+ storyId,
348
+ teamId,
349
+ branchName: 'feature/new-ci-failure',
350
+ githubPrNumber: 556,
351
+ });
352
+ updatePullRequest(db, pr.id, { status: 'approved' });
353
+ mockLoadConfig.mockReturnValue({
354
+ integrations: {
355
+ autonomy: { level: 'full', allow_preexisting_ci_failures: true },
356
+ source_control: { provider: 'github' },
357
+ project_management: { provider: 'none' },
358
+ },
359
+ });
360
+ const mockExecSync = vi.fn();
361
+ // 1. gh pr view → BLOCKED but MERGEABLE
362
+ mockExecSync.mockReturnValueOnce(JSON.stringify({ state: 'OPEN', mergeable: 'MERGEABLE', mergeStateStatus: 'BLOCKED' }));
363
+ // 2. gh pr checks → two failing checks
364
+ mockExecSync.mockReturnValueOnce(JSON.stringify([
365
+ { name: 'build', state: 'FAIL' },
366
+ { name: 'lint', state: 'FAIL' },
367
+ ]));
368
+ // 3. gh pr view baseRefName
369
+ mockExecSync.mockReturnValueOnce(JSON.stringify({ baseRefName: 'main' }));
370
+ // 4. gh api base branch check-runs → only lint fails on base
371
+ mockExecSync.mockReturnValueOnce(JSON.stringify([
372
+ { name: 'build', conclusion: 'success' },
373
+ { name: 'lint', conclusion: 'failure' },
374
+ ]));
375
+ vi.doMock('child_process', () => ({ execSync: mockExecSync }));
376
+ const dbClient = { db, save: vi.fn(), close: vi.fn(), runMigrations: vi.fn() };
377
+ const result = await autoMergeApprovedPRs('/mock/root', dbClient);
378
+ // Should not merge — 'build' is a new failure
379
+ expect(result).toBe(0);
380
+ // PR should be reset to approved (ci_blocked outcome)
381
+ expect(getPullRequestById(db, pr.id)?.status).toBe('approved');
382
+ });
383
+ it('should skip BLOCKED PR when allow_preexisting_ci_failures is false', async () => {
384
+ const pr = createPullRequest(db, {
385
+ storyId,
386
+ teamId,
387
+ branchName: 'feature/ci-blocked-no-bypass',
388
+ githubPrNumber: 557,
389
+ });
390
+ updatePullRequest(db, pr.id, { status: 'approved' });
391
+ mockLoadConfig.mockReturnValue({
392
+ integrations: {
393
+ autonomy: { level: 'full', allow_preexisting_ci_failures: false },
394
+ source_control: { provider: 'github' },
395
+ project_management: { provider: 'none' },
396
+ },
397
+ });
398
+ const mockExecSync = vi.fn();
399
+ // gh pr view → BLOCKED but MERGEABLE
400
+ mockExecSync.mockReturnValueOnce(JSON.stringify({ state: 'OPEN', mergeable: 'MERGEABLE', mergeStateStatus: 'BLOCKED' }));
401
+ vi.doMock('child_process', () => ({ execSync: mockExecSync }));
402
+ const dbClient = { db, save: vi.fn(), close: vi.fn(), runMigrations: vi.fn() };
403
+ const result = await autoMergeApprovedPRs('/mock/root', dbClient);
404
+ expect(result).toBe(0);
405
+ expect(getPullRequestById(db, pr.id)?.status).toBe('approved');
406
+ });
407
+ });
408
+ describe('checkPreexistingCIFailures', () => {
409
+ it('should return bypassed=true when all PR failures exist on base branch', () => {
410
+ const mockExecSync = vi.fn();
411
+ // gh pr checks
412
+ mockExecSync.mockReturnValueOnce(JSON.stringify([
413
+ { name: 'build', state: 'SUCCESS' },
414
+ { name: 'lint', state: 'FAIL' },
415
+ { name: 'test', state: 'FAIL' },
416
+ ]));
417
+ // gh pr view baseRefName
418
+ mockExecSync.mockReturnValueOnce(JSON.stringify({ baseRefName: 'main' }));
419
+ // gh api check-runs
420
+ mockExecSync.mockReturnValueOnce(JSON.stringify([
421
+ { name: 'build', conclusion: 'success' },
422
+ { name: 'lint', conclusion: 'failure' },
423
+ { name: 'test', conclusion: 'failure' },
424
+ ]));
425
+ const result = checkPreexistingCIFailures(123, '/repo', '', 'owner/repo', mockExecSync);
426
+ expect(result.bypassed).toBe(true);
427
+ expect(result.bypassedChecks).toEqual(expect.arrayContaining(['lint', 'test']));
428
+ });
429
+ it('should return bypassed=false when PR has unique failures', () => {
430
+ const mockExecSync = vi.fn();
431
+ mockExecSync.mockReturnValueOnce(JSON.stringify([{ name: 'build', state: 'FAIL' }]));
432
+ mockExecSync.mockReturnValueOnce(JSON.stringify({ baseRefName: 'main' }));
433
+ mockExecSync.mockReturnValueOnce(JSON.stringify([{ name: 'build', conclusion: 'success' }]));
434
+ const result = checkPreexistingCIFailures(123, '/repo', '', 'owner/repo', mockExecSync);
435
+ expect(result.bypassed).toBe(false);
436
+ });
437
+ it('should return bypassed=false when no PR checks are failing', () => {
438
+ const mockExecSync = vi.fn();
439
+ mockExecSync.mockReturnValueOnce(JSON.stringify([{ name: 'build', state: 'SUCCESS' }]));
440
+ const result = checkPreexistingCIFailures(123, '/repo', '', 'owner/repo', mockExecSync);
441
+ expect(result.bypassed).toBe(false);
442
+ expect(result.bypassedChecks).toEqual([]);
443
+ });
444
+ it('should return bypassed=false when execSync throws', () => {
445
+ const mockExecSync = vi.fn().mockImplementation(() => {
446
+ throw new Error('gh not found');
447
+ });
448
+ const result = checkPreexistingCIFailures(123, '/repo', '', 'owner/repo', mockExecSync);
449
+ expect(result.bypassed).toBe(false);
450
+ });
307
451
  });
308
452
  });
309
453
  //# sourceMappingURL=auto-merge.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto-merge.test.js","sourceRoot":"","sources":["../../src/utils/auto-merge.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-merge.test.js","sourceRoot":"","sources":["../../src/utils/auto-merge.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hungry-ghost-hive",
3
- "version": "0.47.2",
3
+ "version": "0.47.3",
4
4
  "description": "AI Agent Orchestrator - Manages agile software development teams of AI agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -20,6 +20,24 @@ vi.mock('../../auth/token-store.js', () => ({
20
20
  })),
21
21
  }));
22
22
 
23
+ vi.mock('../../auth/env-store.js', async () => {
24
+ const actual =
25
+ await vi.importActual<typeof import('../../auth/env-store.js')>('../../auth/env-store.js');
26
+ return {
27
+ ...actual,
28
+ loadEnvIntoProcess: vi.fn(),
29
+ writeEnvEntries: vi.fn(),
30
+ };
31
+ });
32
+
33
+ vi.mock('@inquirer/prompts', () => ({
34
+ input: vi.fn().mockResolvedValue('mock-value'),
35
+ }));
36
+
37
+ vi.mock('../../utils/open-browser.js', () => ({
38
+ openBrowser: vi.fn().mockResolvedValue(undefined),
39
+ }));
40
+
23
41
  let mockHiveRoot: string | null = null;
24
42
 
25
43
  vi.mock('../../utils/with-hive-context.js', () => ({
@@ -98,6 +116,39 @@ describe('auth command', () => {
98
116
  }
99
117
  }
100
118
  });
119
+
120
+ it('should construct TokenStore with root/.hive/.env (not root/.hive/.hive/.env)', async () => {
121
+ const { startJiraOAuthFlow, storeJiraTokens } = await import('../../auth/jira-oauth.js');
122
+ const { TokenStore } = await import('../../auth/token-store.js');
123
+
124
+ vi.mocked(startJiraOAuthFlow).mockResolvedValue({
125
+ accessToken: 'access',
126
+ refreshToken: 'refresh',
127
+ cloudId: 'cloud-id',
128
+ siteUrl: 'https://example.atlassian.net',
129
+ expiresIn: 3600,
130
+ });
131
+ vi.mocked(storeJiraTokens).mockResolvedValue(undefined);
132
+
133
+ process.env.JIRA_OAUTH_CLIENT_ID = 'test-client-id';
134
+ process.env.JIRA_OAUTH_CLIENT_SECRET = 'test-client-secret';
135
+
136
+ const jiraCmd = authCommand.commands.find(cmd => cmd.name() === 'jira');
137
+ expect(jiraCmd).toBeDefined();
138
+
139
+ try {
140
+ await jiraCmd!.parseAsync([], { from: 'user' });
141
+ } catch {
142
+ // command may exit; we only care about the TokenStore constructor call
143
+ }
144
+
145
+ const TokenStoreMock = vi.mocked(TokenStore);
146
+ expect(TokenStoreMock).toHaveBeenCalled();
147
+ const envPathArg = TokenStoreMock.mock.calls[0][0] as string;
148
+ // Must end with .hive/.env, never .hive/.hive/.env
149
+ expect(envPathArg).toMatch(/\.hive[/\\]\.env$/);
150
+ expect(envPathArg).not.toMatch(/\.hive[/\\]\.hive/);
151
+ });
101
152
  });
102
153
 
103
154
  describe('auth command structure', () => {
@@ -129,7 +129,7 @@ authCommand
129
129
  .description('Re-run GitHub OAuth Device Flow to update authentication token')
130
130
  .action(async () => {
131
131
  try {
132
- const { paths } = withHiveRoot(ctx => ctx);
132
+ const { root } = withHiveRoot(ctx => ctx);
133
133
  const clientId = process.env.GITHUB_OAUTH_CLIENT_ID;
134
134
  if (!clientId) {
135
135
  console.error(chalk.red('Error: GITHUB_OAUTH_CLIENT_ID environment variable is not set.'));
@@ -142,7 +142,7 @@ authCommand
142
142
 
143
143
  const result = await runGitHubDeviceFlow({
144
144
  clientId,
145
- rootDir: paths.hiveDir,
145
+ rootDir: root,
146
146
  });
147
147
 
148
148
  console.log();
@@ -166,7 +166,7 @@ authCommand
166
166
  .description('Re-run Jira OAuth 2.0 (3LO) to update authentication tokens')
167
167
  .action(async () => {
168
168
  try {
169
- const { root, paths } = withHiveRoot(ctx => ctx);
169
+ const { root } = withHiveRoot(ctx => ctx);
170
170
 
171
171
  // Load stored credentials from .hive/.env, then check env vars, then prompt
172
172
  loadEnvIntoProcess(root);
@@ -198,7 +198,7 @@ authCommand
198
198
  });
199
199
 
200
200
  // Store tokens using TokenStore
201
- const envPath = getEnvFilePath(paths.hiveDir);
201
+ const envPath = getEnvFilePath(root);
202
202
  const tokenStore = new TokenStore(envPath);
203
203
  await tokenStore.loadFromEnv(envPath);
204
204
  await storeJiraTokens(tokenStore, result);
@@ -1,6 +1,7 @@
1
1
  // Licensed under the Hungry Ghost Hive License. See LICENSE.
2
2
 
3
3
  import type { Command } from 'commander';
4
+ import { execa } from 'execa';
4
5
  import { beforeEach, describe, expect, it, vi } from 'vitest';
5
6
  import {
6
7
  getOpenPullRequestsByStory,
@@ -10,6 +11,10 @@ import {
10
11
  import { autoMergeApprovedPRs } from '../../utils/auto-merge.js';
11
12
 
12
13
  // Mock dependencies
14
+ vi.mock('execa', () => ({
15
+ execa: vi.fn(),
16
+ }));
17
+
13
18
  vi.mock('../../cluster/runtime.js', () => ({
14
19
  fetchLocalClusterStatus: vi.fn(),
15
20
  }));
@@ -261,6 +266,49 @@ describe('pr command', () => {
261
266
  expect(getOpenPullRequestsByStory).toHaveBeenCalledWith(expect.anything(), 'STORY-TEST-1');
262
267
  });
263
268
 
269
+ it('should not close GitHub PR when auto-closing duplicate internal PR records', async () => {
270
+ vi.mocked(getOpenPullRequestsByStory).mockReturnValue([
271
+ {
272
+ id: 'old-pr-1',
273
+ story_id: 'TEST-1',
274
+ team_id: 'team-1',
275
+ branch_name: 'feature/old-branch',
276
+ github_pr_number: 42,
277
+ github_pr_url: 'https://github.com/test/repo/pull/42',
278
+ submitted_by: null,
279
+ reviewed_by: null,
280
+ status: 'queued',
281
+ review_notes: null,
282
+ created_at: '2026-01-01T00:00:00.000Z',
283
+ updated_at: '2026-01-01T00:00:00.000Z',
284
+ reviewed_at: null,
285
+ },
286
+ ]);
287
+
288
+ await run(
289
+ 'submit',
290
+ '--branch',
291
+ 'feature/new-branch',
292
+ '--story',
293
+ 'TEST-1',
294
+ '--pr-number',
295
+ '99'
296
+ );
297
+
298
+ // Internal DB record should be closed
299
+ expect(updatePullRequest).toHaveBeenCalledWith(
300
+ expect.anything(),
301
+ 'old-pr-1',
302
+ expect.objectContaining({ status: 'closed' })
303
+ );
304
+ // GitHub PR must NOT be closed via gh CLI
305
+ expect(execa).not.toHaveBeenCalledWith(
306
+ 'gh',
307
+ expect.arrayContaining(['pr', 'close']),
308
+ expect.anything()
309
+ );
310
+ });
311
+
264
312
  it('should skip auto-close when resubmitting same github PR number', async () => {
265
313
  vi.mocked(getOpenPullRequestsByStory).mockReturnValue([
266
314
  {
@@ -2,7 +2,6 @@
2
2
 
3
3
  import chalk from 'chalk';
4
4
  import { Command } from 'commander';
5
- import { execa } from 'execa';
6
5
  import { join } from 'path';
7
6
  import { fetchLocalClusterStatus } from '../../cluster/runtime.js';
8
7
  import { loadConfig } from '../../config/loader.js';
@@ -77,35 +76,6 @@ prCommand
77
76
  message: `Auto-closed duplicate PR ${existingPR.id}`,
78
77
  metadata: { pr_id: existingPR.id, reason: 'duplicate' },
79
78
  });
80
-
81
- // Close the PR on GitHub if it has a PR number
82
- if (existingPR.github_pr_number) {
83
- try {
84
- // Determine repo directory for gh CLI
85
- let repoCwd = root;
86
- if (teamId) {
87
- const team = getTeamById(db.db, teamId);
88
- if (team?.repo_path) {
89
- repoCwd = join(root, team.repo_path);
90
- }
91
- }
92
- await execa('gh', ['pr', 'close', String(existingPR.github_pr_number)], {
93
- cwd: repoCwd,
94
- });
95
- console.log(
96
- chalk.gray(
97
- ` Closed stale GitHub PR #${existingPR.github_pr_number} for ${storyId}`
98
- )
99
- );
100
- } catch (error) {
101
- // Non-fatal - PR might already be closed or gh CLI not authenticated
102
- console.log(
103
- chalk.yellow(
104
- ` Warning: Could not close GitHub PR #${existingPR.github_pr_number}: ${error instanceof Error ? error.message : String(error)}`
105
- )
106
- );
107
- }
108
- }
109
79
  }
110
80
 
111
81
  // Update story status
@@ -59,7 +59,7 @@ describe('Init Wizard', () => {
59
59
  integrations: {
60
60
  source_control: { provider: 'github' },
61
61
  project_management: { provider: 'none' },
62
- autonomy: { level: 'full' },
62
+ autonomy: { level: 'full', allow_preexisting_ci_failures: true },
63
63
  },
64
64
  agent_runtime: 'claude',
65
65
  });
@@ -96,7 +96,10 @@ describe('Init Wizard', () => {
96
96
 
97
97
  expect(result.integrations.source_control).toEqual({ provider: 'github' });
98
98
  expect(result.integrations.project_management.provider).toBe('jira');
99
- expect(result.integrations.autonomy).toEqual({ level: 'partial' });
99
+ expect(result.integrations.autonomy).toEqual({
100
+ level: 'partial',
101
+ allow_preexisting_ci_failures: true,
102
+ });
100
103
  expect(result.agent_runtime).toBe('claude');
101
104
  });
102
105
 
@@ -149,7 +152,7 @@ describe('Init Wizard', () => {
149
152
  integrations: {
150
153
  source_control: { provider: 'github' },
151
154
  project_management: { provider: 'none' },
152
- autonomy: { level: 'full' },
155
+ autonomy: { level: 'full', allow_preexisting_ci_failures: true },
153
156
  },
154
157
  agent_runtime: 'claude',
155
158
  });
@@ -218,7 +221,10 @@ describe('Init Wizard', () => {
218
221
 
219
222
  expect(result.integrations.source_control).toEqual({ provider: 'github' });
220
223
  expect(result.integrations.project_management.provider).toBe('jira');
221
- expect(result.integrations.autonomy).toEqual({ level: 'partial' });
224
+ expect(result.integrations.autonomy).toEqual({
225
+ level: 'partial',
226
+ allow_preexisting_ci_failures: true,
227
+ });
222
228
  expect(result.agent_runtime).toBe('codex');
223
229
  });
224
230
 
@@ -291,7 +291,7 @@ async function buildResult(
291
291
  const integrations: IntegrationsConfig = {
292
292
  source_control: { provider: sourceControl },
293
293
  project_management: { provider: projectManagement },
294
- autonomy: { level: autonomy },
294
+ autonomy: { level: autonomy, allow_preexisting_ci_failures: true },
295
295
  };
296
296
 
297
297
  // If Jira is selected, run OAuth and setup wizard
@@ -140,6 +140,8 @@ const ProjectManagementConfigSchema = z.object({
140
140
  const AutonomyConfigSchema = z.object({
141
141
  // Agent autonomy level
142
142
  level: z.enum(['full', 'partial']).default('full'),
143
+ // When true, PRs whose only CI failures also fail on the base branch are still merged
144
+ allow_preexisting_ci_failures: z.boolean().default(true),
143
145
  });
144
146
 
145
147
  // Integrations configuration
@@ -405,6 +407,8 @@ integrations:
405
407
  # Agent autonomy level (full, partial)
406
408
  autonomy:
407
409
  level: full
410
+ # Merge PRs whose CI failures also exist on the base branch
411
+ allow_preexisting_ci_failures: true
408
412
 
409
413
  # Model assignments per agent tier
410
414
  models:
@@ -193,7 +193,7 @@ describe('context-files module', () => {
193
193
  integrations: {
194
194
  source_control: { provider: 'github' },
195
195
  project_management: { provider: 'none' },
196
- autonomy: { level: 'full' },
196
+ autonomy: { level: 'full', allow_preexisting_ci_failures: true },
197
197
  },
198
198
  github: { base_branch: 'main', pr_template: '' },
199
199
  qa: {