Skip to content

Release 0.3.0#985

Merged
Wirasm merged 8 commits intomainfrom
dev
Apr 8, 2026
Merged

Release 0.3.0#985
Wirasm merged 8 commits intomainfrom
dev

Conversation

@Wirasm
Copy link
Copy Markdown
Collaborator

@Wirasm Wirasm commented Apr 8, 2026

Release 0.3.0

Env-leak gate hardening, SSE reliability fixes, isolation cleanup smarter merge detection, build/version improvements, and deploy hardening.

Added

Changed

Fixed

Security


Merging this PR releases 0.3.0 to main. Tagging v0.3.0 after merge triggers binary builds (5 platforms) and Homebrew formula update via .github/workflows/release.yml.

Summary by CodeRabbit

  • New Features

    • Environment-leak gate: prevents sensitive environment keys from auto-loading into AI subprocesses with per-codebase consent toggles in the Web UI and --allow-env-keys CLI flag.
    • Added PATCH /api/codebases/:id endpoint to manage environment-key consent on existing codebases.
    • Isolation cleanup now supports --include-closed to remove environments associated with closed/abandoned PRs.
    • Version command displays git commit hash.
  • Improvements

    • Enhanced SSE reliability with larger event buffers and extended retention windows.
    • Improved merge detection with squash-merge and GitHub PR state awareness.

Wirasm and others added 8 commits April 8, 2026 09:43
* fix(env): detect and refuse target-repo .env with sensitive keys (#1034)

Bun auto-loads .env from subprocess CWD regardless of the clean env
passed to Bun.spawn, silently overriding OAuth auth and billing the
wrong API account. This adds a consent-based gate at registration time
and a pre-spawn safety net in both Claude and Codex clients.

Changes:
- Add env-leak-scanner utility that checks 6 auto-loaded .env filenames
  for 7 sensitive keys (ANTHROPIC_API_KEY, OPENAI_API_KEY, etc.)
- Add allow_env_keys boolean column to codebases table (migration 021)
- Gate registerRepoAtPath to reject codebases with sensitive .env keys
  unless explicitly consented via allowEnvKeys flag
- Add pre-spawn check in ClaudeClient and CodexClient sendQuery methods
- Return 422 from POST /api/codebases on env leak detection
- Surface env leak error in web UI with "Allow env keys" checkbox
- Classify EnvLeakError as FATAL in workflow executor

Fixes #1034

* fix: address review findings for env leak scanner PR

- Fix FATAL_PATTERNS 'env leak' pattern that never matched EnvLeakError.message;
  now checks error.name === 'EnvLeakError' directly (immune to message rewording)
- Fix pre-spawn consent lookup for worktree paths: add findCodebaseByPathPrefix()
  and use it as fallback when exact match returns null; prevents opt-in from
  being silently ineffective for workflow-based runs
- Add allow_env_keys column to 000_combined.sql CREATE TABLE and idempotent ALTER
  section to fix fresh PostgreSQL installs
- Remove non-existent --allow-env-keys CLI flag from error message; replace with
  web UI-only instruction
- Narrow isEnvLeakError check from error.message.includes('env') to startsWith('Cannot add codebase')
- Distinguish ENOENT (skip) from EACCES/other errors in scanner catch block;
  unreadable files now surface as findings to avoid silently bypassing the gate
- Use cross-platform grep command instead of macOS-specific sed -i '' syntax
- Add audit log (log.warn) when 422 EnvLeakError is returned from API
- Add pre-spawn gate tests to claude.test.ts and codex.test.ts (4 tests each)
- Add env leak gate tests to clone.test.ts (2 tests)
- Add 422 and allowEnvKeys passthrough tests to api.codebases.test.ts

* simplify: reduce complexity in changed files
… tool_results (#1037)

* fix(sse): extend buffer TTL beyond reconnect grace to prevent dropped tool_results

The SSE event buffer held events for only 3s, but the conversation
reconnect grace period is 5s — meaning events emitted during a
reconnect window could expire *before* the client even had a chance
to reconnect. When a tool_result happened to land in that gap, the
UI would show a perpetually spinning tool card with no recovery path.

This is one of the remaining causes from the 'tool cards stuck
running' investigation. The two biggest causes (Claude hook coverage
and Codex tool_result emission) were already fixed in #1031 and #1032.
This closes the last high-impact backend gap.

Changes:
- EVENT_BUFFER_TTL_MS: 3_000 → 60_000. Covers typical EventSource
  auto-reconnect delays on flaky networks (mobile, VPN, laptop sleep).
- EVENT_BUFFER_MAX: 50 → 500. Events are small JSON strings; 500
  bounds worst-case memory while giving real headroom for bursts.
- Warn when buffer cap evicts oldest (previously silent).
- Warn when events expire on TTL at replay time (previously silent).
  Both warnings give us observability if the new bounds are still
  ever insufficient.

Note: a full Last-Event-ID resume protocol would be more principled
but requires monotonic event IDs and client-side offset tracking —
a larger change with its own risks. The TTL bump alone closes the
vast majority of the window at near-zero cost.

* fix(sse): throttle eviction warns, reset cleanup timer, enforce TTL invariant

Address review feedback on the SSE buffer TTL bump:

- Reset the buffer cleanup timer on each new event so the buffer is held
  for TTL past the most recent event, not the first one. With the 20x TTL
  bump this gap became meaningful — a fresh event could be wiped by a
  cleanup timer scheduled when the first (now-stale) event was buffered.

- Throttle 'transport.buffer_evicted_oldest' warns to one per conversation
  per 5s. A runaway producer overflowing the cap by hundreds would
  otherwise flood logs.

- Fail-fast at module load if EVENT_BUFFER_TTL_MS < RECONNECT_GRACE_MS.
  Locks in the invariant the comment already documents.

- Add test covering the eviction-warn throttle.
* feat(cli): embed git commit hash in version output

- Add BUNDLED_GIT_COMMIT constant to bundled-version.ts for binary builds
- Read commit at runtime via git rev-parse (dev) or from bundled constant (binary)
- Display Git commit: line in archon version output; falls back to "unknown"
- Update build-binaries.sh to capture and embed short SHA at compile time
- Update version tests to assert new Git commit: output line

* fix: use @archon/git execFileAsync and add error logging in version command

- Replace local child_process/promisify wrapper with execFileAsync from @archon/git
  (fixes CLAUDE.md violation; enables test mockability via spyOn)
- Add 5s timeout to git rev-parse subprocess call to prevent indefinite hang
- Log debug trace in catch block with comment explaining intentional fallback
- Import createLogger from @archon/paths for structured logging
- Update version.test.ts to spy on @archon/git execFileAsync for deterministic SHA
- Add test case covering the git-unavailable fallback path (returns 'unknown')
- Tighten git commit assertion to match exact value instead of label presence only

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Archon <archon@dynamous.ai>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…up (#1027)

* Fix: detect squash-merged and PR-merged branches in isolation cleanup (#1026)

`isolation cleanup --merged` only used `git branch --merged`, which misses
squash-merged branches because the resulting commit has a different SHA.
Bulk cleanup of task worktrees required a manual `gh pr list` per branch.

Changes:
- Add `isPatchEquivalent()` to `@archon/git` using `git cherry` to detect
  squash-merged branches
- Add `getPrState()` to `@archon/isolation` for `gh`-based PR state lookup
  with per-invocation caching; soft-fails on missing gh / non-GitHub remotes
- `cleanupMergedWorktrees()` now unions three signals (ancestry, patch
  equivalence, PR state); skips with a clear reason when PR is OPEN
- Add `--include-closed` flag to `archon isolation cleanup --merged` to
  also remove worktrees whose PRs were closed without merging
- Tests for all new code paths

Fixes #1026

* fix: address review findings for squash-merge cleanup PR

- branch.ts: add 'bad revision' to isPatchEquivalent expected errors
  so manually-deleted branches return false instead of throwing
- pr-state.ts: add repoPath context to warn/debug log calls;
  capture ghStdout before try block to include in warn log for
  parse failures
- pr-state.test.ts: remove redundant beforeEach reset (setupGhResponse
  already resets); add tests for non-ENOENT gh error and malformed JSON
- cleanup-service.test.ts: add test for isPatchEquivalent unexpected
  throw → skipped with 'merge check failed' reason
- isolation-operations.test.ts: add test for includeClosed: true
  forwarding through cleanupMergedEnvironments
- docs: add --include-closed to all five affected docs (CLAUDE.md,
  reference/cli.md, book/isolation.md, book/quick-reference.md,
  getting-started/overview.md)
- cli-internals.md: add isolation cleanup --merged flow diagram

* simplify: remove redundant assignments and verbose filter in new code
…stream logger (#982)

* fix(build): use build-time constants for binary detection and pretty stream logger

Replaces runtime detection of compiled binaries (env sniffing via
import.meta.dir / process.execPath) with a build-time BUNDLED_IS_BINARY
constant in @archon/paths/bundled-build.ts, rewritten by
scripts/build-binaries.sh and restored on EXIT via a trap.

Also rewrites @archon/paths/logger.ts to use pino-pretty as a destination
stream instead of a worker-thread transport. The formatter now runs on
the main thread, eliminating the require.resolve('pino-pretty') lookup
that crashes inside Bun's /\$bunfs/ virtual filesystem in compiled
binaries. The same code path runs in dev and binaries — no environment
detection in the logger at all.

isBinaryBuild() in @archon/workflows is kept as a one-line wrapper
around BUNDLED_IS_BINARY so existing spyOn-based test mocking in
loader.test.ts continues to work without modification.

Closes #960
Closes #961
Closes #979
Supersedes #962
Supersedes #963

Co-Authored-By: leex279 <leex279@users.noreply.github.com>

* style(workflows): hoist BUNDLED_IS_BINARY import to top of file

* fix(build,logger): harden pretty init and trap restore

- logger: wrap pino-pretty init in try/catch and fall back to JSON so a
  broken TTY or missing peer can't crash module load.
- build-binaries.sh: drop '2>/dev/null || true' from the EXIT trap so a
  failed bundled-build.ts restore is visible instead of silently leaving
  the dev tree with BUNDLED_IS_BINARY=true.
- bundled-defaults: unmark isBinaryBuild() @deprecated and document why
  the wrapper is the intentional test seam (mock.module pollution in Bun).

---------

Co-authored-by: leex279 <leex279@users.noreply.github.com>
* deploy: harden cloud-init with archon user, swap, and fixes

- Create dedicated 'archon' user (sudo + docker groups, passwordless
  sudo, locked password) and copy SSH authorized_keys from default
  cloud user (with root fallback) so login works immediately.
- Run docker pulls and the image build as the archon user via sudo -u.
- Add 2GB swapfile to prevent OOM during docker build on small VPS
  (<2GB RAM).
- Remove package_upgrade to speed up boot and avoid surprise kernel
  updates.
- Drop redundant systemctl enable/start docker (get.docker.com handles
  it).
- ufw allow 443/tcp for consistency with 22/80.
- set -e before clone for fail-fast on network errors.
- Update docs link to https://archon.diy/deployment/docker/.
- SETUP_COMPLETE now instructs ssh archon@<server-ip>.
- Header lists supported providers (incl. Hostinger) and notes the
  archon user + swap behavior.

* deploy: address PR review feedback on cloud-init

- Fix set -e regression: merge clone/cp/chown into single shell block
  so fail-fast actually applies (CodeRabbit).
- Drop passwordless sudo from archon user — docker group only. Removes
  trivial privilege escalation path (Wirasm).
- Remove non-existent 'docker' group from initial users.groups list;
  it is added via usermod later (CodeRabbit).
- Restore package_upgrade: true to patch CVEs in the base image before
  anything else runs (Wirasm).
- Add ufw allow 443/udp for HTTP/3 QUIC — Caddy exposes 443:443/udp in
  docker-compose (CodeRabbit).
- Update SETUP_COMPLETE and header comment to note archon user has no
  sudo (use default cloud user / root for maintenance).
…ive consent (#973) (#983)

* feat(env-leak-gate): polish sweep — CLI flag, config bypass, retroactive consent (#973)

Closes the UX gaps left over from #1036:

- CLI: --allow-env-keys flag for `archon workflow run`
- Config: global `allow_target_repo_keys` in ~/.archon/config.yaml with
  per-repo `.archon/config.yaml` override; warn log on every load when active
- API: PATCH /api/codebases/:id flips allow_env_keys with audit logs on grant
  and revoke
- Web: Settings → Projects per-row "Allow/Revoke env keys" toggle + badge
- Errors: context-aware messages (register-ui / register-cli / spawn-existing)
- Startup: server scans registered codebases and warns for any that would be
  blocked at next spawn
- Docs + CHANGELOG entries describing the four remediation paths

* fix(env-leak-gate): address review feedback from PR #983

Critical:
- Move loadConfig() before startup env-leak scan and skip the scan
  entirely when allow_target_repo_keys is true. Previously the scan
  spammed warnings on every boot for users who had set the global bypass.

Important:
- SettingsPage: add onError to toggleEnvKeysMutation so PATCH failures
  surface to the user instead of being silently swallowed.
- env_leak_gate_disabled now logs at most once per process per source
  (global vs repo) instead of firing on every loadConfig() call.
- PATCH /api/codebases/:id audit log includes scanStatus ('ok' | 'skipped')
  so reviewers can distinguish "scanned and empty" from "scan failed".
- claude.ts / codex.ts pre-spawn loadConfig wrapped in try/catch — config
  load failures now log and fail-closed instead of escaping as opaque errors.
- CLI --allow-env-keys grants now emit env_leak_consent_granted audit log
  in registerRepoAtPath with actor: 'user-cli'. Previously only the PATCH
  route logged grants, leaving CLI grants without an audit trail.
- printUsage() now lists --allow-env-keys.
- Outer startup scan catch promoted from warn to error level.

Polish:
- formatLeakError consent copy moved to an exhaustive switch with a never
  default — adding a new LeakErrorContext variant is now a compile error.
- Comment / event-name normalization: 'migration_env_leak_gate_*' →
  'startup_env_leak_*' to match the actual lifecycle (every boot, not
  one-time migration).

Docs:
- security.md: corrected "at startup" wording, documented scanStatus
  field, clarified scan-skipped-on-bypass behavior.
- api.md: added PATCH /api/codebases/{id} entry and example.
- cli.md: added --allow-env-keys row.
- configuration.md: added allow_target_repo_keys to global + repo examples.
- CLAUDE.md: added Codebases endpoint section and CLI example.
- CHANGELOG: corrected "at startup" wording, added scanStatus and CLI
  audit-log notes.

Tests:
- claude.test.ts: added bypass test (allowTargetRepoKeys: true short-
  circuits scanner) and fail-closed test (loadConfig throws → scanner
  still runs).
- clone.test.ts: updated allowEnvKeys=true expectation — scanner is now
  called for the audit-log payload but does not throw.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 8, 2026

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

Introduces environment-leak gate hardening across the system, scanning .env files for sensitive keys during repository registration and pre-spawn, with fail-closed defaults, consent toggles (UI/CLI/config), and audit logging. Also adds multi-signal merge detection (git ancestry, patch equivalence, PR state), improves SSE reliability, updates build metadata to include git commit hash, and hardens cloud deployment infrastructure.

Changes

Cohort / File(s) Summary
Release & Version Metadata
CHANGELOG.md, package.json, packages/paths/src/bundled-build.ts, packages/paths/src/bundled-build.test.ts, scripts/build-binaries.sh
Version bumped to 0.3.0; build constants (BUNDLED_IS_BINARY, BUNDLED_VERSION, BUNDLED_GIT_COMMIT) moved from bundled-version.ts to bundled-build.ts with git commit hash now embedded and recovered at runtime.
Env-Leak Scanner Utility
packages/core/src/utils/env-leak-scanner.ts, packages/core/src/utils/env-leak-scanner.test.ts
New utility module defining sensitive env keys, auto-loaded dotenv filenames, EnvLeakError class, scanPathForSensitiveKeys() for detecting leaks in .env files, and formatLeakError() with context-aware remediation text.
CLI Integration
packages/cli/src/cli.ts, packages/cli/src/commands/workflow.ts, packages/cli/src/commands/isolation.ts, packages/cli/src/commands/isolation.test.ts, packages/cli/src/commands/version.ts, packages/cli/src/commands/version.test.ts, packages/cli/src/commands/bundled-version.ts
Added --allow-env-keys flag for consent during auto-registration; added --include-closed for cleanup of abandoned PRs; version command now reports git commit via getDevGitCommit(); removed bundled-version.ts.
Database Schema & Codebase Operations
migrations/000_combined.sql, migrations/021_add_allow_env_keys_to_codebases.sql, packages/core/src/db/codebases.ts, packages/core/src/db/codebases.test.ts, packages/core/src/types/index.ts
Added allow_env_keys BOOLEAN NOT NULL DEFAULT FALSE column; added findCodebaseByPathPrefix() for worktree lookup fallback; added updateCodebaseAllowEnvKeys() for consent updates; extended Codebase interface.
Config Management
packages/core/src/config/config-types.ts, packages/core/src/config/config-loader.ts
Extended GlobalConfig and RepoConfig with optional allow_target_repo_keys bypass; added MergedConfig.allowTargetRepoKeys; added warn-once mechanism for gate bypass logging.
Client Pre-Spawn Gates
packages/core/src/clients/claude.ts, packages/core/src/clients/claude.test.ts, packages/core/src/clients/codex.ts, packages/core/src/clients/codex.test.ts
Both clients now perform pre-spawn env-leak gate: resolve codebase, check allow_env_keys, load config with fail-closed semantics, scan path for leaks, throw EnvLeakError if findings exist.
Repository Registration & Clone
packages/core/src/handlers/clone.ts, packages/core/src/handlers/clone.test.ts
Extended registration to accept allowEnvKeys and context; scan before DB write with audit logging on consent grant; block registration on findings unless bypass enabled.
Merge Detection & Cleanup
packages/core/src/services/cleanup-service.ts, packages/core/src/services/cleanup-service.test.ts, packages/git/src/branch.ts, packages/git/src/git.test.ts, packages/isolation/src/pr-state.ts, packages/isolation/src/pr-state.test.ts
New multi-signal safe-to-remove check: isBranchMerged + isPatchEquivalent (squash-merge) + getPrState (GitHub PR state via gh CLI); added --include-closed option; graceful degradation when gh unavailable.
Isolation Operations
packages/core/src/operations/isolation-operations.ts, packages/core/src/operations/isolation-operations.test.ts
Extended cleanupMergedEnvironments() to accept options: { includeClosed?: boolean } and forward to cleanup logic.
API Routes & Validation
packages/server/src/routes/api.ts, packages/server/src/routes/api.codebases.test.ts, packages/server/src/routes/schemas/codebase.schemas.ts
Added PATCH /api/codebases/{id} endpoint for consent updates with audit logging; extended POST /api/codebases to accept allowEnvKeys; added env-leak error handling (422 responses); added validation schema for update payload.
Server Startup & SSE Reliability
packages/server/src/index.ts, packages/server/src/adapters/web/transport.ts, packages/server/src/adapters/web/transport.test.ts
Early config load + startup env-leak scanning with warnings; increased buffer TTL (3s → 60s) and capacity (50 → 500 events); added throttled eviction warnings; improved buffer lifecycle management and expired-event accounting.
Web UI Consent Flow
packages/web/src/lib/api.ts, packages/web/src/routes/SettingsPage.tsx
Extended CodebaseResponse with allow_env_keys field; added updateCodebase() API call; added consent toggle UI (grant/revoke with confirmation); conditional checkbox for env-leak errors during add flow.
Logger & Build Constants
packages/paths/src/logger.ts, packages/paths/src/index.ts, packages/paths/package.json
Switched from Pino transport/worker to pino-pretty stream destination with graceful fallback; moved pino from optional to required dependencies; re-exported build constants.
Version & Build Detection
packages/workflows/src/defaults/bundled-defaults.ts, packages/workflows/src/defaults/bundled-defaults.test.ts
Changed isBinaryBuild() from checking virtual FS path prefixes to returning BUNDLED_IS_BINARY constant; removed isBunVirtualFs() helper.
Error Classification
packages/workflows/src/executor-shared.ts, packages/core/src/index.ts
Added named-error check for EnvLeakError in error classifier; re-exported leak scanning utilities from core index.
Test Fixtures & Mocks
packages/core/src/handlers/command-handler.test.ts, packages/core/src/orchestrator/*test.ts, packages/core/package.json, packages/isolation/package.json
Updated codebase fixtures to include allow_env_keys: false; added test for env-leak-scanner.test.ts in test scripts.
Cloud Deployment Hardening
deploy/cloud-init.yml
Added dedicated archon user with docker group membership; created 2GB swapfile; copied SSH authorized keys; changed ownership to archon; updated firewall to explicitly allow 443/tcp and 443/udp; refactored ownership & execution context for Docker operations.
Documentation & CLI Reference
CLAUDE.md, packages/docs-web/src/content/docs/**/*.md
Added --allow-env-keys flag documentation; documented --include-closed cleanup option; added PATCH /api/codebases/:id endpoint docs; added comprehensive env-leak gate security documentation; expanded CLI and API reference sections.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant CLI
    participant Server
    participant CodebaseDB
    participant Scanner
    participant Claude
    participant Audit

    User->>CLI: archon workflow run --cwd /repo --allow-env-keys
    CLI->>Server: POST /register (allowEnvKeys=true, context='register-cli')
    
    Server->>CodebaseDB: lookupCodebase(/repo)
    CodebaseDB-->>Server: null (new)
    
    Server->>Scanner: scanPathForSensitiveKeys(/repo)
    Scanner-->>Server: { findings: [...] }
    
    Note over Server: allowEnvKeys=true (bypass enabled)
    Server->>Audit: log(env_leak_consent_granted, files, keys, actor=user-cli)
    Audit-->>Server: ✓
    
    Server->>CodebaseDB: createCodebase(..., allow_env_keys=true)
    CodebaseDB-->>Server: Codebase(id=1, allow_env_keys=true)
    Server-->>CLI: 200 OK
    
    User->>Claude: sendQuery(cwd=/repo)
    Claude->>CodebaseDB: findCodebaseByDefaultCwd(/repo)
    CodebaseDB-->>Claude: Codebase(allow_env_keys=true)
    
    Note over Claude: allow_env_keys=true, skip gate
    Claude->>Claude: spawn subprocess
    Claude-->>User: ✓ Success
Loading
sequenceDiagram
    participant CLI
    participant Cleanup
    participant Git
    participant GhCLI
    participant Cache
    participant WorktreeOps

    User->>CLI: archon isolation cleanup --merged --include-closed
    CLI->>Cleanup: cleanupMergedEnvironments(codebaseId, mainPath, {includeClosed:true})
    
    Cleanup->>Cleanup: list merged branches
    
    loop For each branch
        Cleanup->>Git: isBranchMerged(branch, main)
        Git-->>Cleanup: false (not ancestor)
        
        Cleanup->>Git: isPatchEquivalent(branch, main)
        Git-->>Cleanup: true (all commits marked with -)
        
        Note over Cleanup: Squash merge detected ✓
        Cleanup->>WorktreeOps: remove worktree & branch
        WorktreeOps-->>Cleanup: ✓
    end
    
    loop For each closed PR branch
        Cleanup->>Cache: getPrState(branch, cache)
        Cache->>GhCLI: gh pr list --head branch --json state
        GhCLI-->>Cache: {state: CLOSED}
        Cache-->>Cleanup: 'CLOSED'
        
        alt includeClosed=true
            Cleanup->>WorktreeOps: remove(CLOSED branch)
            WorktreeOps-->>Cleanup: ✓ removed
        else includeClosed=false
            Cleanup-->>Cleanup: skip with reason
        end
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related issues

  • #979: Directly implements the build-time constants refactor (adding packages/paths/src/bundled-build.ts, moving BUNDLED_VERSION/BUNDLED_IS_BINARY, updating isBinaryBuild() to use constants, and refactoring the pino logger setup).
  • #973: Directly implements the env-leak gate feature across CLI, core, server, and web layers (allowing consent via --allow-env-keys, pre-spawn scanning, PATCH endpoint for consent updates, startup warnings, and comprehensive audit logging).

Possibly related PRs

  • #981: Both PRs modify deploy/cloud-init.yml to add an archon user, swapfile configuration, SSH setup, and ownership changes for hardened cloud deployment.

Suggested reviewers

  • leex279

Poem

🐰 A leap of seven hundred changes strong,
Where env keys hide and leaks belong—
Gate closed tight, consent grants way,
Merged branches pruned, debris swept away.
Git cherry-picks and PR states align,
A rabbit's work: secure and fine! 🔐✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 55.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'Release 0.3.0' is concise, specific, and clearly conveys the primary change—a version release that encompasses multiple improvements documented in the description.
Description check ✅ Passed The PR description comprehensively covers Added/Changed/Fixed/Security sections, provides sufficient context, though differs from the template structure by using a narrative format that is clear and organized.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Wirasm Wirasm merged commit 0ae7aa4 into main Apr 8, 2026
6 of 7 checks passed
puvuglobal pushed a commit to puvuglobal/Archon that referenced this pull request Apr 8, 2026
ANTHROPIC_API_KEY was accepted at runtime as a tertiary auth fallback
but not included in the startup credential check, causing misleading
warnings for users who set only ANTHROPIC_API_KEY. Remove it entirely
— users should use CLAUDE_API_KEY instead (same key format).

Also resolve pre-existing merge conflict markers in api.ts.

Fixes coleam00#985
Tyone88 pushed a commit to Tyone88/Archon that referenced this pull request Apr 16, 2026
ANTHROPIC_API_KEY was accepted at runtime as a tertiary auth fallback
but not included in the startup credential check, causing misleading
warnings for users who set only ANTHROPIC_API_KEY. Remove it entirely
— users should use CLAUDE_API_KEY instead (same key format).

Also resolve pre-existing merge conflict markers in api.ts.

Fixes coleam00#985
Tyone88 pushed a commit to Tyone88/Archon that referenced this pull request Apr 16, 2026
joaobmonteiro pushed a commit to joaobmonteiro/Archon that referenced this pull request Apr 26, 2026
ANTHROPIC_API_KEY was accepted at runtime as a tertiary auth fallback
but not included in the startup credential check, causing misleading
warnings for users who set only ANTHROPIC_API_KEY. Remove it entirely
— users should use CLAUDE_API_KEY instead (same key format).

Also resolve pre-existing merge conflict markers in api.ts.

Fixes coleam00#985
joaobmonteiro pushed a commit to joaobmonteiro/Archon that referenced this pull request Apr 26, 2026
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.

2 participants