Skip to content
Merged
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
53b1522
docs(agents): add Fail Loud, Never Fake error-handling rule
don-petry Apr 9, 2026
f247b89
docs(agents): wrap long lines to satisfy MD013 (max 200)
don-petry Apr 9, 2026
d82732a
Merge branch 'main' into feat/agents-fail-loud
don-petry Apr 16, 2026
9dd9174
Merge branch 'main' into feat/agents-fail-loud
don-petry Apr 16, 2026
f5b16c8
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] Apr 21, 2026
dd3cffc
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] Apr 21, 2026
05d9dfe
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] Apr 25, 2026
807e0c2
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] Apr 28, 2026
aca4c65
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] Apr 28, 2026
931d5b5
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 2, 2026
c08b664
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 3, 2026
8a27f52
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 3, 2026
4577c58
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 3, 2026
850d10e
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 3, 2026
41d0332
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 4, 2026
2e552c7
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 4, 2026
0c61879
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 4, 2026
b8aac57
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 4, 2026
fc380d6
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 4, 2026
6302a78
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 4, 2026
1655695
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 5, 2026
90d6bdc
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 5, 2026
bff389b
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 5, 2026
a97026a
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 6, 2026
c46438d
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 6, 2026
953e56a
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 6, 2026
ee6bd50
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 6, 2026
3af0902
ci: trigger CI with clean check-suite preferences
don-petry May 6, 2026
19a0c01
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 6, 2026
67d1c2c
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 6, 2026
630658f
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 6, 2026
196f244
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 7, 2026
505a861
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 7, 2026
26ce9a9
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 7, 2026
4ffc5b2
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 7, 2026
665c4dd
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 7, 2026
9caa2ce
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 7, 2026
e401710
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 7, 2026
7064157
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 7, 2026
7589684
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 7, 2026
ba0fac5
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 9, 2026
0a62c1c
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 10, 2026
506aec9
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 10, 2026
156df9d
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 10, 2026
696ed0f
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 10, 2026
7dcb581
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 10, 2026
f80056b
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 10, 2026
409739d
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 10, 2026
ef17129
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 11, 2026
253efac
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 11, 2026
6e9614c
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 11, 2026
922ce5c
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 11, 2026
1f77349
Merge branch 'main' into feat/agents-fail-loud
github-actions[bot] May 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,38 @@ Repository-level AGENTS.md or CLAUDE.md files may specify how each principle map
- **Trust internal code.** Once data has crossed a validated boundary, do not re-validate at every function call. Excessive internal checks add noise without value.
- **Fail fast.** When an invariant is violated, fail immediately with a clear error rather than propagating bad state.

### Fail Loud, Never Fake

Prefer a visible failure over a silent fallback. A crashed system with a stack trace is a 5-minute fix; a system silently
returning fake data is a full day lost — and only discovered after the wrong data has caused downstream problems.

**Priority order when something can fail:**

1. **Works correctly** with real data.
2. **Falls back visibly** — degraded mode is signaled by a banner, log warning, metadata flag, or response field. The caller can tell.
3. **Fails with a clear error** — exception, non-zero exit, error response. The failure is observable.
4. **Silently degrades to look "fine"** — never acceptable.

**Forbidden patterns:**

- Bare `except:` / `catch (e) {}` blocks that swallow errors and return empty or default values with no logging.
- Generating plausible-looking sample, mock, or placeholder data when a real fetch, query, or computation fails.
- Returning hardcoded "success" responses from a function whose real work errored.
- Reporting "I've set up X" or "X is working" when X actually failed and a fallback was substituted.
- Disabling, skipping, or weakening tests to make a failing run look green.

**Disclosed fallbacks are fine.** A local model stepping in when a cloud API is down is good engineering — *as long as the
caller can tell.* Examples of acceptable disclosure: a `degraded: true` field on the response, a `WARN` log line with the
reason, a UI banner ("Showing cached data from 2h ago"), a metric increment on a `fallback_used` counter.

**Agentic directives:**

1. NEVER swallow an exception to keep output looking successful. Surface it, log it, or propagate it.
2. NEVER substitute synthetic, sample, or placeholder data for a failed real fetch without an explicit, disclosed fallback path.
3. NEVER report a task as complete if any step errored. Report the actual state — including what failed and why — even when the failure is inconvenient.
4. When adding a fallback, ALWAYS make it observable: log line, response flag, metric, or user-visible indicator.
5. When a test fails, fix the underlying cause. Do not delete, skip, or relax the assertion to make it pass.

### Separation of Concerns

- **Layered architecture.** Maintain clear boundaries between domain logic, application/use-case orchestration, and infrastructure (I/O, persistence, external services).
Expand Down