Address AI reviewer feedback on d1f75a7:
- Wrap cross_file append in try/except so a write failure never prevents
the memory trim-write from running (bug fix)
- Stamp sweep_id on pre-trim exported entries using the SWEEP_ID env var;
pass SWEEP_ID from red-team-sweep.sh so entries are attributable to a
sweep run (data-consistency fix)
- Add inline comment explaining the 3-tuple dedup key (run, ts, strategy)
and its relationship to step-4c's identity check (clarity nit)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Before trimming MEMORY_FILE to 50 entries, export any entries that would
be dropped (non-DECREASED entries outside the last 10) directly to
CROSS_PATTERNS_FILE. This ensures no entries are permanently lost before
red-team-sweep.sh step 4c reads the memory file.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace fixed \`sleep 1\` in the container teardown poll loop with exponential
backoff (100ms → 200ms → … → 2000ms cap). The 30s hard timeout is preserved.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CI calls npm run test; removing the script entirely caused a hard failure.
Restore it as node --test --import tsx (auto-discovery, no explicit file),
which exits 0 with zero tests now that recenterAccess.test.ts is deleted.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove permanently unreachable guard branches from evaluateRecenterOpportunity
- Remove orphaned getWalletAddress() from BlockchainService
- Simplify RecenterAccessStatus type: drop always-null recenterAccessAddress
and slot fields, narrow hasAccess to boolean
- Update /status endpoint to match simplified type
- Remove test script (no test files remain)
- Revert unrelated kraiken-lib/package-lock.json churn
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove recenterAccess.ts, recenterAccess.test.ts, the ABI entry, and
getRecenterAccessReader() from BlockchainService. Simplify
getRecenterAccessStatus in service.ts to return open access (hasAccess: true)
since the on-chain recenterAccess() guard no longer exists.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add ports mapping 127.0.0.1:43069:43069 to txn-bot service in
docker-compose.yml, matching the pattern used by ponder. Add txnBot
status URL to ENVIRONMENT.md Common URLs section for consistency.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Clamp anchorWidth output with `% (2**24)` before the uint24 cast so that
large literal values (e.g. 1e18 from evolved constants) produce valid
Solidity instead of a compile-time overflow error.
Add test_transpiler_clamping.sh (Test 5) verifying that a Push3 program
outputting 1e18 for anchorWidth generates `uint24(... % (2**24))` and not
the raw overflowing literal. Update package.json to run both test suites.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add skip_candidate() helper that emits fitness=0 JSON to stdout and
tracks the failed score for the output-dir file, satisfying the
downstream scorer's expectation of one JSON line per candidate.
- Unify all failure paths (transpile, forge build, bytecode extract,
empty bytecode) through skip_candidate() with a distinct error key.
- Log message now reads "WARNING: <id> compile failed — scoring as 0"
as required by the acceptance criteria.
- Output-dir scores.jsonl now merges successful + failed scores so the
file is complete even when some candidates fail to compile.
- All-candidates-fail path (COMPILED_COUNT=0) still exits 2 (no viable
population); true infra errors (missing tool, bad RPC) unchanged.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Three phases: quality gate → coordinated launch → operations.
Defines what "launched" means concretely for planner gap analysis.
From voice dump, distilled into actionable phases with concrete checkboxes.
Co-authored-by: openhands <openhands@all-hands.dev>
Reviewed-on: https://codeberg.org/johba/harb/pulls/894
Reviewed-by: review_bot <review_bot@noreply.codeberg.org>
Update the embedded _scrapePositions definition to accept (bool recordVWAP,
int24 currentTick), compute currentPrice directly from the passed tick
instead of sampling the ANCHOR position's centre tick, remove the
ANCHOR-specific price-sampling branch from the loop, and replace the old
split fee+VWAP transfer logic with the current contract's structure:
feeDestination != address(this) guard before transfers, single ethFee
branch for VWAP recording.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>