Commit graph

1301 commits

Author SHA1 Message Date
johba
b2715b67c0 Merge pull request 'fix: Formula AGENTS.md missing (#1079)' (#1132) from fix/issue-1079 into master 2026-03-23 01:56:02 +01:00
johba
b2073ab3b1 fix: Formula AGENTS.md missing (#1079)
Add formulas/AGENTS.md documenting sense vs act type distinction,
cron conventions, step ID naming rules, TOML structure skeleton,
and a how-to-add-a-new-formula walkthrough.

Add scripts/harb-evaluator/AGENTS.md covering the evaluator runtime:
directory layout, exit code convention, stack lifecycle, evidence
output, and how to add a new evaluator script.

Update root AGENTS.md directory map to link both new files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 00:38:56 +00:00
johba
6b9dad5933 Merge pull request 'fix: anvil not validated in tool-check step (#1046)' (#1131) from fix/issue-1046 into master 2026-03-23 01:24:03 +01:00
johba
d5a8936870 fix: anvil not validated in tool-check step (#1046)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 00:07:14 +00:00
johba
31959daf0b Merge pull request 'fix: transpiler-tests does not re-run when only evolution changes (#1044)' (#1130) from fix/issue-1044 into master 2026-03-23 00:56:01 +01:00
johba
6e7832be07 fix: transpiler-tests does not re-run when only evolution changes (#1044)
Add tools/push3-evolution/** to the transpiler-tests step's path filter
so that changes to push3-evolution also trigger transpiler tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 23:17:11 +00:00
johba
87cd803523 Merge pull request 'fix: fix: bundled dust cleanup — scripts/harb-evaluator (#1036)' (#1129) from fix/issue-1036 into master 2026-03-23 00:06:02 +01:00
johba
1126e1b5a5 fix: fix: bundled dust cleanup — scripts/harb-evaluator (#1036)
- #864: Add comment documenting that MEMORY_FILE and REPORT_DIR both
  resolve to $REPO_ROOT/tmp (intentional coupling, previously undocumented)
- #579: POOL die guard already present (added in a2f8996, issue #854)
- #775: feeDest address already corrected (fixed in 0e33d6c, issue #760)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 22:41:04 +00:00
johba
c17fe96c85 Merge pull request 'fix: fix: bundled dust cleanup — tools/push3-evolution (#1035)' (#1128) from fix/issue-1035 into master 2026-03-22 23:24:12 +01:00
johba
74be110fa1 fix: fix: bundled dust cleanup — tools/push3-evolution (#1035)
- #989: Quote $VARIANT_IDX and $NEXT_IDX in printf '%03d' calls in
  evolve.sh (SC2086 — no behavior change, style consistency)
- #612: Already resolved by commit 79a2e2e (fitness.sh switched from
  deployments-local.json to broadcast JSON, eliminating dead Kraiken/Stake reads)
- #945: Already resolved by commit 052ad7a (manifest.schema.json
  fitness_flags description corrected to "Comma-separated")

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 22:11:23 +00:00
johba
d1d0e8ca10 Merge pull request 'fix: fix: bundled dust cleanup — tools/push3-transpiler (#1034)' (#1127) from fix/issue-1034 into master 2026-03-22 23:04:55 +01:00
johba
83a91f324a fix: seed-transpile-check treats invalid seeds as warnings not failures
Evolution can produce syntactically invalid seeds (e.g. missing
DYADIC.<= before EXEC.IF). These transpiler errors should not block
CI — only forge compilation failures of successfully transpiled seeds
are real regressions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 21:36:05 +00:00
johba
f4ebfaf87c fix: seed-transpile-check CI step compiles test files against transpiled output
Skip test/script compilation in seed-transpile-check since the test
file references getLiquidityParams() which only exists in the checked-in
stub, not in transpiler output.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 21:23:57 +00:00
johba
6c5da5f2d5 ci: retrigger pipeline after transient CI failure
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 21:16:43 +00:00
johba
aad8b8e9fd fix: bundled dust cleanup — tools/push3-transpiler (#1034)
Renumber test_transpiler_clamping.sh tests from 5-14 to 6-15 to avoid
overlap with test_inject_extraction.sh Test 5 (#1017).

Items #1012 (ts-node→tsx) and #986 (CI using npm test) were already
resolved by prior commits.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 21:08:48 +00:00
johba
2d369fbf13 Merge pull request 'fix: _isPriceStable fallback interval can still revert on pools with very short history (#610)' (#1126) from fix/issue-610 into master 2026-03-22 21:56:02 +01:00
johba
db1c26838d fix: _isPriceStable fallback interval can still revert on pools with very short history (#610)
Wrap the fallback pool.observe() call in a try/catch so that pools with
insufficient observation history for both the primary (30s) and fallback
(6000s) intervals return false (price unstable) instead of reverting with
an opaque Uniswap V3 error. This prevents recenter() from failing for
unpermissioned callers on newly created pools.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 20:31:04 +00:00
johba
1691128f91 Merge pull request 'fix: Investigate: adversary parasitic LP extracts 29% from holder, all recenters fail (#517)' (#1125) from fix/issue-517 into master 2026-03-22 21:16:03 +01:00
johba
937f2a833b fix: Investigate: adversary parasitic LP extracts 29% from holder, all recenters fail (#517)
Root cause: PRICE_STABILITY_INTERVAL (300s) was too long relative to
MIN_RECENTER_INTERVAL (60s). After any significant trade moving the tick
>1000 positions, the 5-minute TWAP lagged behind the current price by
hundreds of ticks, exceeding MAX_TICK_DEVIATION (50). Recenter reverted
with "price deviated from oracle" for ~285s — creating a window where
the LM could not reposition and adversary parasitic LP could extract
value from passive holders.

Fix: Reduce PRICE_STABILITY_INTERVAL from 300s to 30s. This ensures
TWAP converges within the 60s cooldown while still preventing same-block
manipulation (30s > ~12s Ethereum mainnet block time).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 19:45:35 +00:00
johba
367652ec94 Merge pull request 'fix: Add audit badge and contract addresses prominently on landing (#147)' (#1123) from fix/issue-147 into master 2026-03-22 20:06:05 +01:00
johba
18166a1916 ci: retrigger pipeline
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 18:40:55 +00:00
openhands
d77081022f fix: Add audit badge and contract addresses prominently on landing (#147)
Add SecurityInfo component displayed after LiveStats on the landing page:
- Unaudited badge with planned Q3 2026 audit date
- KRAIKEN Token and Stake contract addresses with copy-to-clipboard buttons
- BaseScan and source code links
- Responsive layout for mobile viewports

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 18:28:02 +00:00
johba
ef65cf6146 fix: Add audit badge and contract addresses prominently on landing (#147)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 18:20:07 +00:00
johba
723476d4f6 Merge pull request 'fix: testMomentumFullBearAtNegMaxDelta has no slot assertions (#1011)' (#1121) from fix/issue-1011 into master 2026-03-22 19:14:46 +01:00
johba
d2c1e83962 fix: testMomentumFullBearAtNegMaxDelta has no slot assertions (#1011)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 17:50:41 +00:00
johba
65f931ceac Merge pull request 'fix: Floor Ratchet attack not yet defeated — needs explicit test (#1067)' (#1120) from fix/issue-1067 into master 2026-03-22 18:34:52 +01:00
johba
180119aabf fix: address review — consistent evidence fields, unstake all positions
- Evidence file: change result to PENDING (not INCREASED) with delta_bps 0,
  since this is a registration placeholder, not a measured run
- Attack file: add missing unstake for position 6 so all staking positions
  are cleaned up

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 17:06:45 +00:00
johba
af3fd56d55 fix: Floor Ratchet attack not yet defeated — needs explicit test (#1067)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:38:44 +00:00
johba
7396bd371f Merge pull request 'fix: run-attack-suite is spec-only — no implementation in red-team.sh (#1000)' (#1119) from fix/issue-1000 into master 2026-03-22 17:26:11 +01:00
johba
36cda487e6 fix: forward attack_dir input to red-team.sh invocation in formula
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 15:54:41 +00:00
johba
52ba6b2f38 fix: run-attack-suite is spec-only — no implementation in red-team.sh (#1000)
Implement the attack catalogue loop (step 5a) in red-team.sh that was
previously a forward spec in the formula. The loop replays every *.jsonl
attack file through AttackRunner.s.sol with snapshot revert between files,
records LM total ETH before/after each attack, and injects results into
the adversarial agent prompt so it knows which strategies are already
catalogued.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 15:30:46 +00:00
johba
311b8192f6 Merge pull request 'fix: Catch block skips clamping that try block applies (#1019)' (#1118) from fix/issue-1019 into master 2026-03-22 16:06:02 +01:00
johba
dd98283589 Merge pull request 'chore: planner run — prerequisite tree update' (#1117) from chore/planner-20260322-1426 into master 2026-03-22 15:46:02 +01:00
johba
bdc17645f9 fix: Catch block skips clamping that try block applies (#1019)
Add defence-in-depth assert statements in recenter()'s catch block to
verify bear-mode constants (CI=0, AS=30%, AW=100, DD=0.3e18) satisfy
the same bounds the try-path clamps to (MAX_PARAM_SCALE, MAX_ANCHOR_WIDTH).

Add test verifying bear defaults are within clamping bounds and that the
catch path deploys all three positions (floor, anchor, discovery).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 14:31:49 +00:00
johba
b8f442eeb2 chore: planner run 2026-03-22
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 14:26:40 +00:00
johba
94309cd5a6 Merge pull request 'fix: bootstrap-light.sh lacks Push3 candidate injection (#999)' (#1116) from fix/issue-999 into master 2026-03-22 15:16:04 +01:00
johba
ead80eb3cb Merge pull request 'chore: planner run — prerequisite tree update' (#1115) from chore/planner-20260322-1318 into master 2026-03-22 14:36:03 +01:00
johba
349bd2c2c6 fix: bootstrap-light.sh lacks Push3 candidate injection (#999)
Add CANDIDATE env var support to bootstrap-light.sh. When set to a
.push3 file path, the script:
1. Invokes push3-transpiler to regenerate OptimizerV3Push3.sol
2. Extracts the function body into OptimizerV3Push3Lib.sol
3. Deploys contracts normally via DeployLocal.sol
4. Deploys OptimizerV3 and upgrades the UUPS proxy via upgradeTo()

Also updates formulas/run-red-team.toml to reflect the implementation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 13:19:48 +00:00
johba
cbc41ad57c chore: planner run 2026-03-22
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 13:18:41 +00:00
johba
29b8f7d426 Merge pull request 'fix: Overflow guard missing for slots 1-7 in both Optimizer.sol and OptimizerV3Push3.sol (#997)' (#1114) from fix/issue-997 into master 2026-03-22 13:56:02 +01:00
johba
cea4bf779b ci: retry pipeline
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 12:25:24 +00:00
johba
c59bb81a40 fix: Overflow guard missing for slots 1-7 in both Optimizer.sol and OptimizerV3Push3.sol (#997)
Add <= 1e18 upper-bound check for all 8 input slots in the validation
loops of both Optimizer.calculateParams() and OptimizerV3Push3Lib.calculateParams().

Previously only slot 0 (percentageStaked) had an overflow guard —
slots 1-7 (averageTaxRate and future indicators) could silently accept
values > 1e18, violating the documented [0, 1e18] invariant.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 12:11:03 +00:00
johba
b8ee408b73 Merge pull request 'chore: planner run — prerequisite tree update' (#1113) from chore/planner-20260322-1104 into master 2026-03-22 12:46:03 +01:00
johba
1b4de1c081 Merge pull request 'fix: Attack file schema for burn_lp needs documentation and migration (#615)' (#1111) from fix/issue-615 into master 2026-03-22 12:45:03 +01:00
johba
27ff88c31b ci: retry pipeline 2026-03-22 11:16:37 +00:00
johba
bcfb81eab5 chore: planner run 2026-03-22
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 11:04:35 +00:00
johba
c9ffef279f Merge pull request 'docs: RESOURCES.md — add dispatch mechanism and formula inventory' (#1112) from docs/resources-dispatch into master
Reviewed-on: https://codeberg.org/johba/harb/pulls/1112
2026-03-22 11:56:19 +01:00
johba
9267537a14 docs: RESOURCES.md — add dispatch mechanism, formula inventory, and constraints
Planner needs to know HOW to use resources, not just that they exist.
Adds action dispatch instructions, lists all available formulas, and
documents the port 8545 constraint for concurrent formula runs.

Supports disinto #544 (planner formula dispatch awareness).
2026-03-22 11:56:03 +01:00
johba
112182d2e2 Merge pull request 'chore: planner run — prerequisite tree update' (#1110) from chore/planner-20260322-1044 into master
Reviewed-on: https://codeberg.org/johba/harb/pulls/1110
Reviewed-by: Disinto_bot <disinto_bot@noreply.codeberg.org>
2026-03-22 11:55:46 +01:00
johba
ce9be22d2e fix: Attack file schema for burn_lp needs documentation and migration (#615)
Add SCHEMA.md documenting the JSONL attack file format with all operation
definitions, field types, and the burn_lp tokenId convention divergence
between AttackRunner (.positionIndex) and FitnessEvaluator (.tokenId).

Add schema-version header comments to all existing attack files and teach
both consumers to skip comment lines starting with //.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 10:53:07 +00:00