Compare commits

...

12 commits

Author SHA1 Message Date
johba
e8e099cb31 Merge pull request 'fix: action: test prediction #1185 — run-user-test ponder 504 persistence check (#1186)' (#1190) from action/issue-1186 into master
Reviewed-on: https://codeberg.org/johba/harb/pulls/1190
Reviewed-by: Disinto_bot <disinto_bot@noreply.codeberg.org>
2026-03-28 09:34:37 +01:00
johba
b3adea399f evidence: ponder 504 persistence check 2026-03-28
Test prediction #1185: ponder 504 Gateway Timeout is NOT persistent.
Fresh stack start shows ponder healthy (<50ms, all 200 OK).
Staking still blocked by webapp protocol-stats fetch issue.
0/5 personas completed staking, 5/5 wallet+buy succeeded.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 07:27:27 +00:00
johba
9406298f3d Merge pull request 'chore: gardener housekeeping 2026-03-27' (#1184) from chore/gardener-20260327-1803 into master 2026-03-27 19:24:24 +01:00
johba
bff29e75a1 chore: gardener housekeeping 2026-03-27
AGENTS.md watermarks refreshed to HEAD (79a93d4).

Grooming: closed 2 prediction/actioned issues.
- #1179: /stakestake fix verified working in post-fix user-test (2026-03-27)
- #1177: fresh red-team session 2026-03-27 with 7 real attacks (floor_held)
Remaining open: #1166, #1141 (prediction/backlog, planner watching),
#857, #856, #383 (vision).
No blocked issues, no open PRs, no stale PRs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 18:04:08 +00:00
johba
79a93d4160 Merge pull request 'fix: action: test prediction #1177 — run-red-team full session against OptimizerV3 (#1178)' (#1183) from action/issue-1178 into master 2026-03-27 16:26:04 +01:00
johba
cbadeea375 ci: retrigger pipeline for PR #1183
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 14:21:55 +00:00
johba
562e662d31 evidence: red-team OptimizerV3 full session 2026-03-27 (re-run)
Replace ghost evidence from crashed 2026-03-26 session with real
adversarial coverage data. 7 strategies tested, all HELD. Per-attack
structured data with strategy, outcome, eth_extracted, floor_held_for_attack,
delta_bps, and insight fields populated from raw session output.

Fixes #1178

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 14:18:13 +00:00
johba
b161faaee2 evidence: red-team OptimizerV3 full session 2026-03-27
Floor held under 7 adversarial strategies. LM ETH unchanged
(~1000 ETH). No extraction vector found.

Strategies: IL crystallization, multi-cycle oscillation,
parasitic LP, staking-mode exploit, round-trip attacks.

Replaces the ghost 2026-03-26 evidence (crashed mid-session,
empty attacks[]). This run completed to produce real per-attack
data.

Resolves: #1178

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 12:27:02 +00:00
johba
3b0a765d9c Merge pull request 'fix: action: run-user-test post-attemptStake-fix verification (#1180)' (#1182) from action/issue-1180 into master 2026-03-27 10:16:03 +01:00
johba
5262b6146d Merge pull request 'chore: planner run — prerequisite tree update' (#1181) from chore/planner-20260327-0808 into master 2026-03-27 10:06:03 +01:00
johba
c16c6df5e8 evidence: post-attemptStake-fix user-test verification (issue #1180)
Ran all 5 persona Playwright specs against full stack after PR #1171
fixed the /stakestake navigation bug. Results:
- Navigation fix VERIFIED: /stake route works correctly (no /stakestake)
- 5/5 wallet connections succeeded
- 0/5 on-chain stakes completed (new blocker: ponder 504 timeout)
- 2/5 tests crashed due to chain snapshot/revert state corruption

Closes #1180

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 08:50:01 +00:00
johba
3176dddebd chore: planner run 2026-03-27
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 08:08:55 +00:00
15 changed files with 484 additions and 18 deletions

View file

@ -1,4 +1,4 @@
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
# Agent Brief: Harb Stack
## What is KRAIKEN?

View file

@ -0,0 +1,82 @@
{
"date": "2026-03-27",
"candidate": "OptimizerV3",
"candidate_commit": "b161faaee239cf0435ec9e436ad1af217c394a13",
"optimizer_profile": "push3-default",
"lm_eth_before": 999999999999999999998,
"lm_eth_after": 999999999999999999998,
"eth_extracted": 0,
"floor_held": true,
"verdict": "floor_held",
"strategies_tested": 7,
"duration_seconds": 2519,
"methodology": "bootstrap-light + adversarial Claude agent (claude -p --dangerously-skip-permissions), 7 strategies with snapshot-revert isolation. Raw session data from stream-json output.",
"attacks": [
{
"strategy": "Buy→Recenter→Sell (Classic IL Crystallization)",
"pattern": "buy → recenter → sell",
"outcome": "HELD",
"eth_extracted": 0,
"floor_held_for_attack": true,
"delta_bps": 24,
"insight": "The 1% swap fee on both legs (~4 ETH total) exceeds the IL from repositioning a single anchor traversal. With AW=50 (anchorSpacing=3600 ticks), the anchor is wide and IL per tick is small. Fee income dominates decisively."
},
{
"strategy": "Parasitic LP + Fee Siphoning",
"pattern": "buy → add_lp → buy → recenter → sell → recenter",
"outcome": "HELD",
"eth_extracted": 0,
"floor_held_for_attack": true,
"delta_bps": 1740,
"insight": "Parasitic LP captures some fees from swaps but doesn't extract ETH from LM. The massive buy (600 ETH total) put 600 ETH INTO the pool, and the LM captured ~6 ETH in fees. The sell couldn't push through the floor position (massive liquidity at [127400,127600])."
},
{
"strategy": "Extreme Buy→Recenter→Sell (Maximum Price Push)",
"pattern": "buy → recenter → sell",
"outcome": "HELD",
"eth_extracted": 0,
"floor_held_for_attack": true,
"delta_bps": 7338,
"insight": "1500 ETH buy pushed through anchor AND into discovery. After recenter, the floor at [122800,123000] with 75% of ETH created an impenetrable wall. With 103e24 KRK unsellable, the adversary lost ~734 ETH permanently."
},
{
"strategy": "Multi-Cycle Small Ratchet",
"pattern": "buy → recenter_multi → sell → recenter_multi",
"outcome": "HELD",
"eth_extracted": 0,
"floor_held_for_attack": true,
"delta_bps": 37,
"insight": "Multiple small cycles don't compound IL faster than fee income. Each buy adds ~0.5 ETH in fees to LM (1% of 50 ETH). The floor position consistently blocks sell pressure. The 1% fee acts as a friction ratchet that always benefits the LM."
},
{
"strategy": "Staking Manipulation + Optimizer Shift",
"pattern": "buy → stake → recenter → sell",
"outcome": "HELD",
"eth_extracted": 0,
"floor_held_for_attack": true,
"delta_bps": 30783,
"insight": "Buying 3520 ETH for staking deposited massive ETH into the LM. Optimizer shift created tight anchor (AW=11, ~175 ETH) easy to push through, but floor (95% of ETH, 200 ticks wide, liq=2.04e26) was impenetrable. Fatal flaw: KRK needed for >91% staking can only come from the pool, depositing massive ETH."
},
{
"strategy": "Large buy → recenter → large sell (IL crystallization)",
"pattern": "buy → recenter_multi → sell",
"outcome": "HELD",
"eth_extracted": 0,
"floor_held_for_attack": true,
"delta_bps": 0,
"insight": "Early iteration of Strategy 1. Subsumed by the classic IL crystallization attempt."
},
{
"strategy": "Multi-cycle IL ratchet with parasitic LP",
"pattern": "buy → add_lp → sell → recenter_multi",
"outcome": "HELD",
"eth_extracted": 0,
"floor_held_for_attack": true,
"delta_bps": 0,
"insight": "Early iteration of parasitic LP approach. KRK sell failed due to insufficient liquidity to push through floor. Subsumed by revised parasitic LP strategy."
}
],
"attack_suite_count": 7,
"summary": "Floor held under all 7 adversarial strategies. All reverted to clean baseline — no extraction vector found. The 1% fee moat, floor position defense (75-95% of LM ETH in 200 ticks), ETH-neutral recenter, directional VWAP defense, and the chicken-and-egg problem (KRK acquisition requires ETH deposit) provide layered defense.",
"exit_code": 0
}

View file

@ -0,0 +1,172 @@
{
"date": "2026-03-27",
"candidate_commit": "f96ca9ddb4f7cd7210ca47dbac755404ee93cdbe",
"context": "Post-attemptStake-fix verification run. PR #1171 (merged 2026-03-26) fixed the /stakestake navigation bug in attemptStake helper: now uses new URL(page.url()).origin + '/stake' instead of appending 'stake' to the current URL. This run verifies that staking navigation works correctly after the fix.",
"methodology": "Playwright headless chromium (1280x720) against local full stack (anvil + postgres + ponder + webapp + caddy). Each persona spec runs sequentially with chain state reset between runs via evm_snapshot/evm_revert. Test timeout set to 120s. Stack started with anvil port override (18545 host) due to port conflict.",
"personas": [
{
"name": "tyler",
"display": "Tyler 'Bags' Morrison",
"funnel": "passive-holder",
"task": "passive-holder funnel: land -> connect wallet -> buy KRK -> stake -> hold",
"completed": true,
"wallet_connected": true,
"actions_succeeded": ["Connect wallet", "Mint 10 ETH"],
"actions_failed": ["Buy KRK (deployer balance exceeded)", "Stake 50 KRK at 5% tax (stake form timeout: slider not visible within 15s, 504 Gateway Timeout on ponder API)"],
"friction_points": [
"Buy failed: deployer KRK balance exceeded after chain state resets",
"Stake form did not fully load (504 Gateway Timeout from ponder during page load)",
"No buy button visible on main page - had to navigate to Cheats page",
"Tax rate concept confusing - 'Am I PAYING tax or EARNING tax?'",
"No Discord or community links visible"
],
"screenshot_refs": [
"test-results/usertest/tyler/tyler-landing-page-2026-03-27T08-37-28-808Z.png",
"test-results/usertest/tyler/tyler-wallet-connected-2026-03-27T08-37-34-925Z.png",
"test-results/usertest/tyler/tyler-buy-error-2026-03-27T08-37-39-818Z.png",
"test-results/usertest/tyler/tyler-stake-page-2026-03-27T08-37-49-765Z.png",
"test-results/usertest/tyler/tyler-stake-failed-2026-03-27T08-38-08-065Z.png"
],
"notes": "Wallet connection succeeded. Navigate to /stake worked correctly (fix verified - no /stakestake). Stake form failed to load due to 504 Gateway Timeout on ponder API, not navigation. Test PASSED (non-blocking failure)."
},
{
"name": "alex",
"display": "Alex Rivera",
"funnel": "passive-holder",
"task": "passive-holder funnel: land -> understand DeFi -> connect wallet -> buy KRK -> stake",
"completed": true,
"wallet_connected": true,
"actions_succeeded": ["Connect wallet (first time)", "Mint 5 ETH"],
"actions_failed": ["Buy KRK (JsonRpcProvider failed to detect network)", "Stake 25 KRK at 15% tax (stake form timeout: slider not visible within 15s, 504 Gateway Timeout)"],
"friction_points": [
"No 'New to DeFi?' or tutorial section for newcomers",
"No trust signals (Audited, Secure, Non-custodial badges)",
"Stake form did not load (504 Gateway Timeout from ponder)",
"DeFi jargon overwhelming: VWAP, tax rate, snatching, claimed slots"
],
"screenshot_refs": [
"test-results/usertest/alex/alex-landing-page-2026-03-27T08-38-46-172Z.png",
"test-results/usertest/alex/alex-wallet-connected-2026-03-27T08-38-51-277Z.png",
"test-results/usertest/alex/alex-stake-failed-2026-03-27T08-39-24-854Z.png"
],
"notes": "Wallet connection worked first try. Navigate to /stake worked correctly (fix verified - no /stakestake). Stake form failed to load due to 504 Gateway Timeout. Buy failed due to RPC network detection issues after chain revert. Test PASSED."
},
{
"name": "sarah",
"display": "Sarah Park",
"funnel": "passive-holder",
"task": "passive-holder funnel: land -> research -> connect wallet -> evaluate yield -> stake",
"completed": false,
"wallet_connected": true,
"actions_succeeded": ["Connect wallet", "Mint 20 ETH"],
"actions_failed": ["Buy KRK (contract balanceOf returned empty data after chain revert)"],
"friction_points": [
"Landing page does not explain 'What is Harberger tax?' in simple terms",
"No audit badge visible",
"Test crashed on buyKrk: balanceOf returned 0x after chain snapshot/revert cycle"
],
"screenshot_refs": [
"test-results/usertest/sarah/sarah-landing-page-2026-03-27T08-40-05-846Z.png",
"test-results/usertest/sarah/sarah-wallet-connected-2026-03-27T08-40-14-067Z.png"
],
"notes": "Wallet connection succeeded. Test FAILED due to contract state issue after chain revert (balanceOf returned empty data). This is a test infrastructure issue with evm_snapshot/evm_revert, not related to the stake navigation fix. Did not reach stake step."
},
{
"name": "priya",
"display": "Dr. Priya Malhotra",
"funnel": "staker",
"task": "staker funnel: land -> analyze mechanism design -> connect wallet -> evaluate staking",
"completed": true,
"wallet_connected": true,
"actions_succeeded": ["Connect wallet", "Mint 100 ETH"],
"actions_failed": ["Buy KRK (balanceOf returned empty data after chain revert)", "Stake 500 KRK at 12% tax (stake form timeout: slider not visible within 15s, 504 Gateway Timeout)"],
"friction_points": [
"No whitepaper, technical appendix, or formal specification accessible from UI",
"No governance structure, DAO participation, or admin key disclosures visible",
"Stake form did not load (504 Gateway Timeout from ponder)",
"Insufficient liquidity depth for institutional positions (>$100k)"
],
"screenshot_refs": [
"test-results/usertest/priya/priya-landing-page-2026-03-27T08-41-02-959Z.png",
"test-results/usertest/priya/priya-wallet-connected-2026-03-27T08-41-07-293Z.png",
"test-results/usertest/priya/priya-stake-dashboard-2026-03-27T08-41-13-263Z.png",
"test-results/usertest/priya/priya-final-analysis-2026-03-27T08-41-59-057Z.png"
],
"notes": "Wallet connection succeeded. Navigate to /stake worked correctly (fix verified - no /stakestake). Stake form failed to load due to 504 Gateway Timeout. Buy failed due to contract state issue after chain revert. Test PASSED (graceful failure handling)."
},
{
"name": "marcus",
"display": "Marcus 'Flash' Chen",
"funnel": "staker",
"task": "staker funnel: land -> probe for exploits -> connect wallet -> test edge cases",
"completed": false,
"wallet_connected": true,
"actions_succeeded": ["Connect wallet", "Mint 50 ETH"],
"actions_failed": ["Buy KRK (ERC20: transfer amount exceeds deployer balance after chain revert)"],
"friction_points": [
"No 'Audited by X' badge prominently displayed",
"Contract addresses not easily visible for verification",
"Test crashed on buyKrk: deployer balance exhausted after multiple chain reverts"
],
"screenshot_refs": [
"test-results/usertest/marcus/marcus-landing-page-2026-03-27T08-42-26-011Z.png",
"test-results/usertest/marcus/marcus-wallet-connected-2026-03-27T08-42-30-090Z.png",
"test-results/usertest/marcus/marcus-cheats-page-2026-03-27T08-42-36-514Z.png"
],
"notes": "Wallet connection succeeded. Test FAILED due to deployer KRK balance exceeded after chain snapshot/revert cycles. This is a test infrastructure issue, not related to the stake navigation fix. Did not reach stake step."
}
],
"personas_completed": 3,
"personas_total": 5,
"wallet_connections_succeeded": 5,
"wallet_connections_total": 5,
"fix_verification": {
"pr": "#1171",
"issue": "#1168",
"fix_description": "attemptStake helper now uses new URL(page.url()).origin + '/stake' instead of appending 'stake' to the current URL path, which previously produced the invalid route /stakestake",
"previous_result": "0/5 personas completing staking — all blocked at /stakestake invalid route (2026-03-26 evidence)",
"current_result": "Navigation to /stake confirmed working for all 3 personas that reached the stake step (tyler, alex, priya). The /stakestake bug is eliminated.",
"fix_status": "verified_working",
"remaining_blocker": "Stake form elements do not render within timeout (15s). Root cause: 504 Gateway Timeout on ponder GraphQL API during stake page load. This is an infrastructure/ponder issue, not a navigation bug."
},
"new_issues_discovered": [
{
"description": "Stake page returns 504 Gateway Timeout from ponder API, preventing the stake form (slider, amount input) from rendering",
"root_cause": "Ponder indexer may be overloaded or timing out on GraphQL queries needed by the stake page. The 504 comes through caddy proxy.",
"impact": "All personas that reach /stake cannot complete staking (form elements never appear)",
"severity": "high"
},
{
"description": "Chain snapshot/revert cycle causes contract state corruption: balanceOf returns empty 0x data, and deployer KRK balance is not properly restored",
"root_cause": "evm_snapshot/evm_revert in anvil may not fully restore contract storage or the snapshot ID management in helpers.ts has edge cases with multiple sequential reverts",
"impact": "2/5 persona tests crash during buyKrk step; other personas see transfer failures",
"severity": "medium"
}
],
"critical_friction_points": [
"Stake form 504 timeout: ponder API times out, preventing stake page from loading (all personas)",
"No onboarding/tutorial content for DeFi newcomers (alex, sarah)",
"No prominent audit badge or trust signals (marcus, alex, sarah)",
"No whitepaper or formal mechanism specification accessible from UI (priya)",
"Tax rate concept confusing without guidance (tyler, alex, sarah)",
"Snatching concept frightening without explanation (tyler, alex, sarah)"
],
"verdict": "partial_pass",
"verdict_detail": "The /stakestake navigation bug (issue #1168, PR #1171) is VERIFIED FIXED. All 3 personas that reached the stake step (tyler, alex, priya) successfully navigated to /stake with no invalid route error. However, a new blocker emerged: the ponder GraphQL API returns 504 Gateway Timeout when the stake page loads, preventing the stake form from rendering. 0/5 personas completed an actual on-chain stake transaction. 2/5 tests failed outright due to chain state corruption from evm_snapshot/evm_revert cycles (infrastructure issue). Wallet connections: 5/5 succeeded.",
"comparison": {
"previous_date": "2026-03-26",
"previous_evidence": "2026-03-26-post-wallet-fix.json",
"previous_navigation_bug": "/stakestake (present in all 5 personas)",
"current_navigation_bug": "None — /stake navigation works correctly",
"previous_staking_completed": 0,
"current_staking_completed": 0,
"improvement": "Navigation fix verified working. Staking blocked by different issue (ponder 504 timeout, not navigation)."
},
"raw_reports": {
"tyler": "tmp/usertest-results/tyler-bags-morrison.json",
"alex": "tmp/usertest-results/alex-rivera.json",
"sarah": "tmp/usertest-results/sarah-park.json",
"priya": "tmp/usertest-results/dr-priya-malhotra.json",
"marcus": "tmp/usertest-results/marcus-flash-chen.json"
}
}

View file

@ -0,0 +1,146 @@
{
"date": "2026-03-28",
"test_type": "ponder-504-persistence-check",
"issue_ref": "#1186",
"prediction_ref": "#1185",
"context": "Targeted re-test to determine if the ponder 504 Gateway Timeout observed on 2026-03-27 is persistent or intermittent. Fresh stack startup with cold ponder indexer. All 5 personas run sequentially.",
"methodology": "Fresh stack started from clean state (no prior containers). Ponder health probed at multiple stages: pre-test (8 probes), mid-test (implicit via persona runs), post-test (3 probes). Playwright headless Chromium (1280x720) with 120s test timeout, 15s slider wait timeout.",
"stack_startup": {
"anvil_ready_s": 7,
"postgres_ready_s": 0,
"bootstrap_completed_s": 45,
"ponder_ready_s": 27,
"webapp_ready_s": 180,
"caddy_ready_s": 5,
"note": "Webapp initially timed out at 120s (npm install inside container), succeeded on second health check after ~180s total"
},
"ponder_health": {
"at_test_start": {
"healthy": true,
"probes": [
{"source": "direct_42069", "http_code": 200, "latency_ms": 131},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 43},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 19},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 18},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 17},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 22},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 15}
],
"all_200": true,
"max_latency_ms": 131,
"avg_latency_ms": 38
},
"at_test_end": {
"healthy": true,
"probes": [
{"source": "caddy_8081", "http_code": 200, "latency_ms": 33},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 16},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 14}
],
"all_200": true,
"max_latency_ms": 33,
"avg_latency_ms": 21
},
"504_errors_observed": 0,
"conclusion": "Ponder GraphQL API is healthy and responsive throughout the entire test run. No 504 errors observed at any point. The 504 from 2026-03-27 is NOT reproducible on fresh stack start."
},
"stake_page": {
"html_loads": true,
"html_load_ms": 35,
"slider_renders": false,
"slider_timeout_s": 15,
"browser_error": "Failed to fetch protocol stats: SyntaxError: Unexpected token '<', \"<!--\\n * C\"... is not valid JSON",
"root_cause": "The webapp stake page fetches protocol stats from a URL that returns SPA HTML fallback instead of JSON. This is a webapp routing/fetch issue, NOT a ponder 504. Ponder itself responds correctly to direct GraphQL queries."
},
"personas": [
{
"name": "alex",
"display": "Alex Rivera",
"funnel": "passive-holder",
"wallet_connected": true,
"buy_krk": true,
"staking_attempted": true,
"staking_completed": false,
"stake_failure_reason": "Slider not visible within 15s (webapp fetch error, NOT ponder 504)",
"test_passed": true
},
{
"name": "marcus",
"display": "Marcus 'Flash' Chen",
"funnel": "staker",
"wallet_connected": true,
"buy_krk": true,
"staking_attempted": true,
"staking_completed": false,
"stake_failure_reason": "Slider not visible within 15s (webapp fetch error, NOT ponder 504)",
"test_passed": true
},
{
"name": "priya",
"display": "Dr. Priya Malhotra",
"funnel": "staker",
"wallet_connected": true,
"buy_krk": true,
"staking_attempted": true,
"staking_completed": false,
"stake_failure_reason": "Slider not visible within 15s (webapp fetch error, NOT ponder 504)",
"test_passed": true
},
{
"name": "sarah",
"display": "Sarah Park",
"funnel": "passive-holder",
"wallet_connected": true,
"buy_krk": true,
"staking_attempted": true,
"staking_completed": false,
"stake_failure_reason": "Slider not visible within 15s (webapp fetch error, NOT ponder 504)",
"test_passed": true
},
{
"name": "tyler",
"display": "Tyler 'Bags' Morrison",
"funnel": "passive-holder",
"wallet_connected": true,
"buy_krk": true,
"staking_attempted": true,
"staking_completed": false,
"stake_failure_reason": "Slider not visible within 15s (webapp fetch error, NOT ponder 504)",
"test_passed": true
}
],
"summary": {
"personas_total": 5,
"personas_completed": 5,
"wallet_connections_succeeded": 5,
"buy_krk_succeeded": 5,
"staking_completed": 0,
"staking_attempted": 5,
"test_duration_s": 288
},
"comparison_with_previous": {
"previous_date": "2026-03-27",
"previous_evidence": "2026-03-27-post-stake-fix.json",
"previous_504_errors": "multiple (all personas that reached /stake)",
"current_504_errors": 0,
"previous_staking_completed": 0,
"current_staking_completed": 0,
"previous_buy_krk_failures": 4,
"current_buy_krk_failures": 0,
"improvements": [
"No 504 Gateway Timeout errors (ponder healthy throughout)",
"All 5 personas successfully bought KRK (chain snapshot/revert issues from 2026-03-27 not reproduced)",
"All 5 test specs passed (previously 2 crashed)"
],
"remaining_blocker": "Stake form slider does not render. Root cause shifted from ponder 504 to webapp protocol-stats fetch returning HTML instead of JSON."
},
"verdict": "ponder_504_not_persistent",
"verdict_detail": "The ponder 504 Gateway Timeout from 2026-03-27 is NOT persistent. On fresh stack start, ponder responds in <50ms with 200 OK consistently. The staking form still does not render, but the root cause is now identified as a webapp fetch issue (protocol stats endpoint returns SPA HTML fallback), not a ponder backend error. 0/5 personas completed staking. The chain snapshot/revert issues from 2026-03-27 were also not reproduced.",
"raw_reports": {
"alex": "tmp/usertest-results/alex-rivera.json",
"marcus": "tmp/usertest-results/marcus-flash-chen.json",
"priya": "tmp/usertest-results/dr-priya-malhotra.json",
"sarah": "tmp/usertest-results/sarah-park.json",
"tyler": "tmp/usertest-results/tyler-bags-morrison.json"
}
}

View file

@ -1,4 +1,4 @@
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
# Agent Brief: Formulas
Formulas are TOML files that declare automated pipeline jobs for the harb evaluator.

View file

@ -1 +1,22 @@
[]
[
{
"action": "comment",
"issue": 1179,
"body": "Closing: action complete. Post-fix user-test run (`evidence/user-test/2026-03-27-post-stake-fix.json`) verified the /stakestake navigation bug (PR #1171) is fixed — all 3 personas that reached /stake navigated correctly with no invalid route. The prediction concern is resolved. New ponder 504 issue and chain-revert state corruption were discovered as separate items."
},
{
"action": "close",
"issue": 1179,
"reason": "actioned and verified — /stakestake fix confirmed working in post-fix user-test 2026-03-27"
},
{
"action": "comment",
"issue": 1177,
"body": "Closing: action complete. A fresh red-team session was run on 2026-03-27 (`evidence/red-team/2026-03-27.json`): 7 real attacks with full per-attack data, floor_held: true, verdict: floor_held. The ghost run concern is addressed — the new run provides the real evidence the 2026-03-26 ghost run lacked."
},
{
"action": "close",
"issue": 1177,
"reason": "actioned and verified — fresh red-team run 2026-03-27 completed with 7 real attacks"
}
]

View file

@ -1,4 +1,4 @@
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
# Kraiken Library - Agent Guide
Shared TypeScript helpers used by the landing app, txnBot, and other services to talk to KRAIKEN contracts and the Ponder GraphQL API.

View file

@ -1,4 +1,4 @@
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
# Landing Interface - Agent Guide
Vue 3 + Vite application that delivers the public marketing site and forthcoming staking UI.

View file

@ -1,4 +1,4 @@
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
# Agent Brief: Kraiken Protocol
## Protocol Philosophy & Business Logic

View file

@ -0,0 +1,42 @@
# Planner run — 2026-03-27 08:06 UTC
## Predictions triaged
- #1177: DISMISS — red-team ghost run concern already actioned by predictor as #1178 (action: run-red-team). Planner agrees 2026-03-26 run should not count toward adversarial testing depth.
- #1179: PROMOTE_ACTION → #1180 — dispatched run-user-test to verify staking funnel post-#1168 fix. Valid: 0/5 staking success rate, fix never re-verified.
## Prerequisite tree updates
- Resolved: Pitch deck created (landing/public/pitch-deck.html merged via PR #1175, #1155 closed)
- Resolved: attemptStake helper navigation fix (#1168 — closed, merged PR #1171)
- Discovered: Post-fix staking verification needed (0/5 staking success in last user-test pre-fix)
- Updated: Adversarial testing depth — 2 real runs + 1 ghost (2026-03-26 excluded per #1177); #1178 in progress for 3rd real run
- Updated: Pitch deck objective restructured — deck exists but brand identity + review still pending
- Updated: Influencer outreach — pitch deck exists prerequisite now resolved
## Top 3 constraints
1. Brand identity (human decision) — blocks pitch deck review → influencer outreach → launch day → community → optimizer governance (5 downstream objectives) — no issue, awaiting human
2. Post-fix staking verification (#1180, action dispatched) — blocks user funnel confidence, impacts launch readiness
3. Adversarial testing depth (#1178, in progress) — blocks launch day confidence, 2 real runs need 3+
## Stuck issues detected
- #1178: Session crashed once (first attempt), second attempt appears to have completed but evidence not yet committed to master. Not stuck — in progress.
## Issues created
- #1180: action: run-user-test post-attemptStake-fix verification — from prediction #1179
## Priority label changes
- Added priority: #1178 (adversarial testing depth), #1180 (staking verification)
- Removed priority: none (no issues had priority — previous priority issues all closed)
## Observations
- **Pitch deck milestone reached.** PR #1175 merged a pitch-deck.html. The deck exists with current KrAIken branding. However, human flagged "No brand identity/domain yet" on #1155 — the deck will need revision once brand is decided. Progress is real but incomplete.
- **Phase 2 bottleneck remains human-gated.** Brand identity is still the root constraint. The pitch deck exists as a draft but cannot be finalized or distributed without brand direction. Every downstream Phase 2/3 objective chains through this decision.
- **Red-team reliability issue.** #1178 crashed on first attempt, second attempt appears successful (exit code 0, evidence file read). But evidence not yet on master. The red-team formula has now crashed in 2 of last 3 runs (2026-03-26 ghost + #1178 first attempt). Infrastructure fragility is a pattern.
- **Staking funnel never verified end-to-end.** The #1168 fix was merged but never tested. All user-test data predates the fix. #1180 dispatched to close this gap.
- **Evidence pipeline slowly filling.** User-test: 2 files. Red-team: 2 real + 1 ghost. Holdout: 1. Evolution/resources/protocol: still dark on master.
## Deferred (in tree, not filed)
- Domain registration — blocked on brand identity (human decision)
- Evolution fitness evidence (#1166) — not on critical path for launch
- Resources/protocol formula evidence — not on critical path
- Community channel, optimizer governance — blocked on launch day scheduling
- Influencer outreach — blocked on brand identity → pitch deck review chain

View file

@ -1,5 +1,5 @@
# Prerequisite Tree
<!-- Last updated: 2026-03-26 -->
<!-- Last updated: 2026-03-27 -->
## Phase 1 — Quality gate & release pipeline
@ -39,8 +39,9 @@ Status: DONE
### Objective: Pitch deck (#1155)
- [x] Phase 1 complete (E2E quality gate, conversion funnel, analytics all DONE)
- [x] Pitch deck created (landing/public/pitch-deck.html — merged via PR #1175, #1155 closed)
- [ ] Brand identity defined (human decision — #1155 comment: "No brand identity/domain yet")
- [ ] Pitch deck created (PDF explaining KRK, floor mechanics, how to buy/stake)
- [ ] Pitch deck reviewed with final branding (awaits brand identity)
Status: BLOCKED — awaiting human decision on brand identity
### Objective: Domain registration
@ -49,7 +50,8 @@ Status: BLOCKED — awaiting human decision on brand identity
Status: BLOCKED — prerequisite chain (brand identity first)
### Objective: Influencer outreach
- [ ] Pitch deck exists
- [x] Pitch deck exists (landing/public/pitch-deck.html)
- [ ] Pitch deck reviewed with final branding
- [ ] At least 3 influencers committed
Status: BLOCKED — prerequisite chain
@ -60,7 +62,7 @@ Status: BLOCKED — prerequisite chain
- [ ] Domain registered and pointing to infrastructure
- [ ] Pitch deck reviewed
- [ ] Influencers committed
- [ ] Adversarial testing depth for launch confidence (per #1141 concern: 2 red-team runs insufficient for real ETH)
- [ ] Adversarial testing depth for launch confidence (#1178 in progress — 2 real red-team runs, 1 ghost run excluded per #1177; need 3+ real runs)
Status: BLOCKED — prerequisite chain
## Phase 3 — Operations
@ -87,19 +89,20 @@ Status: DONE
### Objective: Evidence pipeline
- [x] Red-team formula exists
- [x] Evolution formula exists
- [x] Red-team produces persistent evidence (evidence/red-team/, 2 files)
- [x] Red-team produces persistent evidence (evidence/red-team/, 2 real files + 1 ghost)
- [x] Evolution commits via PR (#1047 — closed)
- [ ] Evolution pipeline produces committed fitness evidence (best.push3 untracked on master, no JSON fitness data — per #1166)
- [x] Holdout produces data (evidence/holdout/2026-03-22-issue517-adversarial-lp.json)
- [x] User-test produces data (evidence/user-test/2026-03-25.json + 2026-03-26 post-wallet-fix on PR #1167)
- [x] User-test produces data (evidence/user-test/2026-03-25.json + 2026-03-26 post-wallet-fix)
- [ ] Resources/protocol formulas produce data (formulas exist, evidence dirs empty)
Status: BLOCKED — 2 prerequisites unresolved
### Objective: User funnel fix
- [x] Wallet connector renders at 1280x720 viewport (#1156 — closed, verified by user-test 2026-03-26: 5/5 personas connect)
- [x] Desktop connect button visible at standard viewports (#1156 — closed)
- [ ] attemptStake helper navigation fix (#1168 — produces /stakestake invalid route, blocks staking verification)
Status: BLOCKED — 1 prerequisite unresolved
- [x] attemptStake helper navigation fix (#1168 — closed, merged via PR #1171)
- [ ] Post-fix staking verification (0/5 staking success in last user-test; #1180 dispatched to re-verify)
Status: BLOCKED — 1 prerequisite unresolved (awaiting #1180 user-test results)
### Objective: E2E test hygiene
- [x] Cross-browser spec glob fix (#1154 — closed)

View file

@ -1,4 +1,4 @@
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
# Agent Brief: harb-evaluator
The evaluator runtime executes formula-defined pipelines. Scripts in this

View file

@ -1,4 +1,4 @@
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
# Ponder Indexer - Agent Guide
Ponder-based indexer that records Kraiken protocol activity and exposes the GraphQL API consumed by the app and automation bot.

View file

@ -1,4 +1,4 @@
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
# Transaction Bot - Agent Guide
Automation service that maintains liquidity alignment and tax enforcement for the KRAIKEN protocol.

View file

@ -1,4 +1,4 @@
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
# Web App - Agent Guide
Vue 3 + TypeScript staking interface for KRAIKEN, enabling users to stake tokens, manage positions, and interact with Harberger-tax mechanics.