Skip to content

Feat/conquer hardening#258

Merged
cukas merged 2 commits into
mainfrom
feat/conquer-hardening
Jul 16, 2026
Merged

Feat/conquer hardening#258
cukas merged 2 commits into
mainfrom
feat/conquer-hardening

Conversation

@cukas

@cukas cukas commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

No description provided.

…arity

Two review follow-ups from the conquer falsifier round: (1) unattended
--push now refuses to land on a protected branch (main/master by default,
protectedPushBranches config override, case-insensitive, fail-closed on an
unresolvable HEAD) via isProtectedPushBranch in the forge decision core —
a conquer worktree normally sits on its own conquer/<slug> branch, so a
protected HEAD means something unexpected happened and the work stays
committed locally for a human push. (2) the REPL /conquer handler no
longer hardcodes what the CLI exposes: --gate-timeout, --max-hours and
--timeout parse through the intent layer and reach the gate spawn and
runConquer caps, mirroring the CLI defaults (1800s gate, 600s turn, no
wall cap).

⚔️ Forged by [Agon](https://github.com/KERNlang/agon)

Co-Authored-By: agon (KERN) <292465531+KERN-Agon@users.noreply.github.com>
Full-roster review (6/6 engines, 5-engine consensus on the blocker):
KERN codegen emits optional array fields as [] into DEFAULT_AGON_CONFIG,
so every real loadConfig() caller passed { protectedPushBranches: [] } and
the Array.isArray fallback never fired — main/master were NOT protected in
production. An empty or whitespace-only list now falls back to the default
['main','master']; only a non-empty override replaces it. Verified against
the real loadConfig() output. Also: CLI --timeout/--gate-timeout reject
negative values instead of propagating them to spawnWithTimeout (agy), the
REPL /conquer rejects --max-turns < 1 exactly like the CLI (minimax), and
the exact production config state is now a test case (zai).

Refuted (no change): the cqAbort cleanup claim — the handler's KERN
cleanup block generates the finally { ctx.setActiveAbort(null) }, and a
still-running background job after /focus-away is the job system's design.

⚔️ Forged by [Agon](https://github.com/KERNlang/agon)

Co-Authored-By: agon (KERN) <292465531+KERN-Agon@users.noreply.github.com>
@cukas
cukas merged commit 6083c0a into main Jul 16, 2026
2 checks passed
@cukas
cukas deleted the feat/conquer-hardening branch July 16, 2026 14:07
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