Compare commits
12 commits
f96ca9ddb4
...
e8e099cb31
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8e099cb31 | ||
|
|
b3adea399f | ||
|
|
9406298f3d | ||
|
|
bff29e75a1 | ||
|
|
79a93d4160 | ||
|
|
cbadeea375 | ||
|
|
562e662d31 | ||
|
|
b161faaee2 | ||
|
|
3b0a765d9c | ||
|
|
5262b6146d | ||
|
|
c16c6df5e8 | ||
|
|
3176dddebd |
15 changed files with 484 additions and 18 deletions
|
|
@ -1,4 +1,4 @@
|
|||
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
|
||||
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
|
||||
# Agent Brief: Harb Stack
|
||||
|
||||
## What is KRAIKEN?
|
||||
|
|
|
|||
82
evidence/red-team/2026-03-27.json
Normal file
82
evidence/red-team/2026-03-27.json
Normal 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
|
||||
}
|
||||
172
evidence/user-test/2026-03-27-post-stake-fix.json
Normal file
172
evidence/user-test/2026-03-27-post-stake-fix.json
Normal 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"
|
||||
}
|
||||
}
|
||||
146
evidence/user-test/2026-03-28-ponder-504-check.json
Normal file
146
evidence/user-test/2026-03-28-ponder-504-check.json
Normal 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"
|
||||
}
|
||||
}
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
|
||||
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
|
||||
# Agent Brief: Kraiken Protocol
|
||||
|
||||
## Protocol Philosophy & Business Logic
|
||||
|
|
|
|||
42
planner/journal/2026-03-27.md
Normal file
42
planner/journal/2026-03-27.md
Normal 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
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<!-- last-reviewed: 7d72f40274cfe5f32f54defc970cf0aacb5fd1e5 -->
|
||||
<!-- last-reviewed: 79a93d41608f2cbe3b990f4613d04d310642bd2c -->
|
||||
# Agent Brief: harb-evaluator
|
||||
|
||||
The evaluator runtime executes formula-defined pipelines. Scripts in this
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue