Skip to content

An unreadable profile stops default Factory stages and task children from running calls unchecked - #2325

Merged
santoshkumarradha merged 9 commits into
app/v3from
c27/unreadable-config-limits
Nov 5, 2026
Merged

santoshkumarradha merged 9 commits into
app/v3from
c27/unreadable-config-limits

Conversation

@santoshkumarradha

@santoshkumarradha santoshkumarradha commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

Summary

When a profile's config.json cannot be read, saved approval rules are unknown. Several kinds of work could still run calls those rules might deny:

  • A default Factory stage allowed a write with no check, including when a project config parse error hid the read failure.
  • Task workers, repair rounds and auditors lost the parent's failed-read signal, or kept an old allow policy when the read failed after they started.
  • Bash-belt workers and fleet workers discarded the signal.

Now each of these needs a person, and with nobody to ask the call is refused with an error naming the file. A refused job keeps that reason, including when the daily-limit check refuses the first turn before any model request.

A readable config.json behaves as before, and that includes a readable but malformed profile in a default stage. What is counted or charged does not change.

Stacked on #2291. This needs the failed-read signal that #2291 brings. It is retargeted to app/v3 after #2291 merges, and it lands only after that.

Limit that remains

With a readable config.json, a default Factory stage still runs on its own allow posture and does not apply the person's saved rules. This PR does not change that.

Evidence

Each fault failed a test first on real mode-000 files, then passed: TestStageUnreadableProfileRequiresPerson, TestStageProfileReadFailureWinsOverProjectParseError, TestTaskChildrenKeepUnreadableProfileApproval, plus the child, bash-belt and job-reason tests in this diff.

Two review rounds reproduced faults against this PR; all are fixed. Whole cmd/codeaf and internal/session add one new failure, TestL4HostedTakeBackNeverBranchesBookkeepingOnlyTurns/auxiliary_usage, which also fails on runs without this PR. It is unexplained and under separate diagnosis. The full gate runs after retargeting.

🤖 Generated with Claude Code

santoshkumarradha and others added 3 commits November 3, 2026 12:55
Factory stage allow bypassed the profile read, and task constructors replaced
parent policies with fresh allowances that dropped ProfileReadError. Check the
profile before stage allow and retain the existing failed-read signal when
building worker, repair and auditor policies. Readable profiles keep their
existing allowance behavior.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
santoshkumarradha and others added 4 commits November 3, 2026 13:07
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep filesystem failures distinct from readable parse errors, carry the current failed-read signal through child gates and standalone run workers, and retain terminal config-file refusals in job results.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The daily-limit refusal discarded the config read error before a stage could start. Keep that error in the existing refusal without changing admission or accounting.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base automatically changed from merge/dev-into-app-v3-1102 to app/v3 November 4, 2026 21:03
santoshkumarradha and others added 2 commits November 4, 2026 16:03
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@santoshkumarradha
santoshkumarradha marked this pull request as ready for review November 5, 2026 00:51
@santoshkumarradha
santoshkumarradha merged commit 6966064 into app/v3 Nov 5, 2026
1 check passed
@santoshkumarradha
santoshkumarradha deleted the c27/unreadable-config-limits branch November 5, 2026 00:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant