johba
4066ea6db4
Merge pull request 'feat(holdout): add passive-confidence/no-dilution scenario' ( #437 ) from feat/holdout-no-dilution into master
2026-03-05 11:31:56 +01:00
openhands
9b321b6774
ci: retrigger
2026-03-05 08:41:22 +00:00
openhands
cd459bb9b0
fix: correct buyKrk call sites for new opts param, add eslint-disable for polling loop
...
- no-dilution.spec.ts: pass undefined for opts, screenshotPrefix as 4th arg
- swap.ts: add eslint-disable-next-line for eth_getFilterLogs polling delay
2026-03-05 05:53:19 +00:00
openhands
e6bd236bcc
ci: retrigger
2026-03-05 05:51:08 +00:00
openhands
dca57738b7
ci: retrigger after Codeberg OAuth refresh
2026-03-05 05:51:08 +00:00
openhands
f214ac8587
fix: address PR #437 review findings
...
- Fix price impact formula: (10000n - ...) instead of (1n - ...)
- Extract ETH_AMOUNT constant in always-leave to avoid duplication
- Add screenshotPrefix param to buyKrk for unique screenshot paths
2026-03-05 05:51:08 +00:00
openhands
c25c757024
feat(holdout): add passive-confidence/no-dilution scenario
...
Verifies that passive holders are not diluted when new buyers enter.
- Two wallets (Anvil accounts 4 & 5) buy KRK sequentially
- First buyer's balance must remain unchanged after second buy
- Second buyer receives fewer tokens per ETH due to AMM price impact
- Tests core protocol invariant: holding KRK does not dilute position
2026-03-05 05:51:03 +00:00
johba
0f4d07a4b7
Merge pull request 'docs: add engineering principles to AGENTS.md' ( #441 ) from docs/engineering-principles into master
2026-03-05 06:47:52 +01:00
johba
921dfdca55
Merge pull request 'Move holdout scenarios to separate repo' ( #438 ) from feat/move-holdout-scenarios-to-separate-repo into master
2026-03-05 06:47:41 +01:00
openhands
ca2be4c4e9
ci: retrigger
2026-03-04 08:20:17 +00:00
openhands
92ede4c7b7
address review: clarify eth_newFilter is polling not subscription, acknowledge existing violations
2026-03-04 08:20:17 +00:00
openhands
b2bb28f1b9
ci: retrigger after git clone auth failure
2026-03-04 08:20:17 +00:00
openhands
7fc47d739a
ci: retrigger
2026-03-04 08:20:11 +00:00
openhands
106521af2e
ci: retrigger after Codeberg OAuth refresh
2026-03-04 08:20:11 +00:00
openhands
f6fe37dcc0
fix: address PR #438 review findings
...
- Fix HOLDOUT_SCENARIOS_DIR to use absolute path (resolves Playwright testDir issue)
- Remove dead SCENARIOS_DIR variable
- Replace fallback with explicit error in holdout.config.ts
- Add SSH key requirement comment
2026-03-04 08:20:11 +00:00
openhands
69f6a87e20
Move holdout scenarios to separate repo
...
- Updated holdout.config.ts to use HOLDOUT_SCENARIOS_DIR env var
- Modified evaluate.sh to clone harb-holdout-scenarios repo at runtime
- Deleted scripts/harb-evaluator/scenarios/ directory
- Added .holdout-scenarios/ to .gitignore
- Holdout scenarios are now cloned into .holdout-scenarios/ during evaluation
- This prevents dev-agent from seeing the holdout test set
2026-03-04 08:20:11 +00:00
johba
b2594a28b3
Merge pull request 'fix: lint: Ban waitForTimeout, setTimeout-as-delay, and fixed sleep patterns ( #442 )' ( #443 ) from fix/issue-442 into master
2026-03-03 23:37:46 +01:00
openhands
2483630a2d
fix: add eslint-disable for Promise+setTimeout in CollapseActive.vue ( #442 )
...
No push event exists for Ponder indexing completion; grandfathered with
justification comment per the no-fixed-delays rule exception policy.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 22:10:06 +00:00
openhands
0a15df2e01
ci: retrigger after infra failure
2026-03-03 22:00:44 +00:00
johba
05191bb15f
Merge pull request 'feat(holdout): Add reasonable slippage assertion to always-leave scenario' ( #436 ) from fix/holdout-slippage-check into master
2026-03-03 22:41:23 +01:00
johba
16abdcbefb
fix: add RPC propagation delay after browser-initiated swap ( #434 )
...
After `buyKrk()` completes (swap widget returns to idle), the Anvil RPC may briefly return stale balance state. Adds 2s delay to ensure `getKrkBalance` reads post-swap state.
Without this fix, the holdout scenario reports identical KRK balance before and after swap despite the transaction succeeding (success toast visible).
Co-authored-by: openhands <openhands@all-hands.dev>
Reviewed-on: https://codeberg.org/johba/harb/pulls/434
2026-03-03 22:20:02 +01:00
openhands
748557bc83
fix: lint: Ban waitForTimeout, setTimeout-as-delay, and fixed sleep patterns ( #442 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 20:58:01 +00:00
openhands
62eadd0c11
ci: retrigger after git clone auth failure
2026-03-03 20:58:01 +00:00
openhands
74a043262d
feat(holdout): Add reasonable slippage assertion to always-leave scenario
...
- Modified sellAllKrk helper to return WETH delta received
- Added assertion: WETH received >= 90% of ETH spent (0.09 ETH minimum)
- Added log showing actual slippage percentage
- This proves 'always leave' with reasonable slippage, not just exit ability
2026-03-03 19:45:46 +00:00
johba
c9e84b2c34
Merge pull request 'fix: Double trigger of loadLiquidityStats on initial mount ( #361 )' ( #433 ) from fix/issue-361 into master
2026-03-03 09:25:47 +01:00
openhands
5623768025
fix: Double trigger of loadLiquidityStats on initial mount ( #361 )
...
Remove redundant onMounted call that fired loadLiquidityStats() a second
time. The watch() with { immediate: true } already handles the initial
load and all subsequent dependency changes, making onMounted redundant.
Also remove now-unused onMounted import.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 07:52:02 +00:00
johba
5d1c715799
Merge pull request 'fix: Array.isArray slot0 fallback branch is unreachable dead code ( #362 )' ( #432 ) from fix/issue-362 into master
2026-03-03 08:41:20 +01:00
openhands
feaa226f24
fix: Array.isArray slot0 fallback branch is unreachable dead code ( #362 )
2026-03-03 07:11:09 +00:00
johba
1f9d11d494
Merge pull request 'fix: Generic utilities (isRecord, coerceString, getErrorMessage, ensureAddress) have no shared home ( #363 )' ( #429 ) from fix/issue-363 into master
2026-03-03 08:06:12 +01:00
openhands
46b154e6f9
ci: retrigger after infra failure
2026-03-03 06:32:49 +00:00
openhands
57f2057a4c
fix: overlay @harb/utils into CI webapp container
...
The webapp-ci Docker image predates packages/utils. The e2e.yml webapp
service already overlays packages/web3 manually; add the same pattern
for packages/utils so Vite can resolve @harb/utils imports at runtime.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 06:21:22 +00:00
openhands
e866266511
fix: update CheatsView to import utilities from @harb/utils
...
isRecord, coerceString, getErrorMessage, ensureAddress were removed
from useSwapKrk.ts but CheatsView.vue still imported them from there.
Update CheatsView to import from @harb/utils directly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 05:54:29 +00:00
openhands
59ae30bb37
fix: Generic utilities (isRecord, coerceString, getErrorMessage, ensureAddress) have no shared home ( #363 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 05:37:14 +00:00
johba
e53591de9d
Merge pull request 'fix: services/txnBot missing from ARCHITECTURE.md directory map ( #369 )' ( #428 ) from fix/issue-369 into master
2026-03-03 06:25:14 +01:00
openhands
6432c07b12
fix: correct txnBot description in ARCHITECTURE.md directory map
2026-03-03 04:56:40 +00:00
openhands
e77db6ee12
ci: retrigger after infra failure
2026-03-03 04:23:04 +00:00
openhands
57b256b7e0
fix: services/txnBot missing from ARCHITECTURE.md directory map ( #369 )
2026-03-03 04:11:08 +00:00
johba
83ebc2885d
Merge pull request 'fix: Raw number rendering for taxPaidGes and profit after load ( #375 )' ( #426 ) from fix/issue-375 into master
2026-03-03 05:01:33 +01:00
openhands
d00b78f338
fix: apply formatTokenAmount to Total row and guard against NaN/Infinity
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 03:32:06 +00:00
openhands
8f5910d30a
fix: Raw number rendering for \taxPaidGes\ and \profit\ after load ( #375 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 03:03:22 +00:00
johba
007a315f4f
Merge pull request 'fix: loadActivePositionData has no error handling — silent failure on RPC error ( #377 )' ( #423 ) from fix/issue-377 into master
2026-03-03 03:51:05 +01:00
openhands
f8baa02efc
fix: hide stats on first-open error and guard Total row against undefined
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 02:23:06 +00:00
openhands
c0e1079006
fix: suppress no-console lint error in CollapseActive error handler
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 02:00:05 +00:00
openhands
8e600ec5fd
fix: \loadActivePositionData\ has no error handling — silent failure on RPC error ( #377 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 01:51:48 +00:00
johba
f0377c5b81
Merge pull request 'fix: ENVIRONMENT.md documents contracts.env with VITE_ prefixes that do not match the actual file ( #386 )' ( #421 ) from fix/issue-386 into master
2026-03-03 02:44:18 +01:00
openhands
47174c3dfe
fix: ENVIRONMENT.md documents contracts.env with VITE_ prefixes that do not match the actual file ( #386 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 01:21:48 +00:00
johba
afcf13bc84
Merge pull request 'fix: tests/setup/navigate.ts: bare 500ms timeout after pushState is fragile under CPU pressure ( #390 )' ( #417 ) from fix/issue-390 into master
2026-03-03 02:13:27 +01:00
openhands
f53e245f0e
fix: tests/setup/navigate.ts: bare 500ms timeout after pushState is fragile under CPU pressure ( #390 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 00:45:27 +00:00
openhands
326d026794
fix: tests/setup/navigate.ts: bare 500ms timeout after pushState is fragile under CPU pressure ( #390 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 00:20:47 +00:00
johba
b8d0e07fd2
Merge pull request 'fix: getByRole('button', { name: 'Buy' }).last() fragility is duplicated across e2e/01 and this scenario ( #398 )' ( #414 ) from fix/issue-398 into master
2026-03-03 01:11:00 +01:00