chore: planner run — Phase 1 complete, bottleneck shifts to Phase 2 (#1157)

Automated planner run — prerequisite tree update and journal entry.

## Changes
- Phase 1 marked DONE (E2E quality gate, conversion funnel, analytics, release pipeline)
- Bottleneck shifted to Phase 2 launch preparation
- New issues filed: #1155 (pitch deck), #1156 (wallet connector fix)
- Predictions triaged: #1148→#1154, #1149 dismissed, #1150 dismissed, #1141 watching, #1104 dismissed
- Priority labels applied to #1154, #1155, #1156

Reviewed-on: https://codeberg.org/johba/harb/pulls/1157
This commit is contained in:
johba 2026-03-25 09:36:59 +01:00
parent e16f342c81
commit 3f0c8d5342
5 changed files with 93 additions and 55 deletions

View file

@ -1,4 +1,4 @@
<!-- last-reviewed: 209e0c798ea85204c5fe466ba7b54b874095e08f -->
<!-- last-reviewed: 491755592a86b34f7761347cd8cc299652b02942 -->
# Agent Brief: Harb Stack
## What is KRAIKEN?
@ -21,7 +21,7 @@ KRAIKEN couples Harberger-tax staking with a dominant Uniswap V3 liquidity manag
| `formulas/` | TOML pipeline definitions (sense/act) for the evaluator | [formulas/AGENTS.md](formulas/AGENTS.md) |
| `scripts/` | `dev.sh`, bootstrap, build helpers; `harb-evaluator/` red-team agent | [scripts/harb-evaluator/AGENTS.md](scripts/harb-evaluator/AGENTS.md) |
| `packages/analytics/` | `@harb/analytics` — self-hosted Umami wrapper for funnel tracking | — |
| `tests/e2e/` | Playwright end-to-end tests | — |
| `tests/e2e/` | Playwright end-to-end tests — desktop + mobile viewports (iPhone 14, Pixel 7), Chromium + Firefox cross-browser matrix; includes conversion funnel spec (`07-conversion-funnel.spec.ts`) | — |
| `docs/` | Architecture, product truth, environment, ops guides | — |
## Quick Start

View file

@ -1,32 +1 @@
[
{
"action": "edit_body",
"issue": 1086,
"body": "Flagged by AI reviewer in PR #1065.\n\n## Problem\n\nBoth `candidate_commit` and `methodology` were added to `evidence/README.md` without a corresponding schema update. Future red-team runners have no schema definition for these fields, and automated validators may reject the file.\n\n## Affected files\n\n- `evidence/README.md` — add schema entries for `candidate_commit` and `methodology` fields\n\n## Acceptance criteria\n\n- [ ] `evidence/README.md` schema section defines the `candidate_commit` field (commit SHA of the optimizer candidate under test)\n- [ ] `evidence/README.md` schema section defines the `methodology` field (how the red-team run was conducted, e.g. snapshot-isolation)\n- [ ] Schema changes are backward-compatible with existing evidence JSON files\n\n## Related\n\n- #1083 (sibling — snapshot-isolation methodology doc for lm_eth fields)\n\n---\n*Auto-created from AI review of PR #1065*"
},
{
"action": "add_label",
"issue": 1086,
"label": "backlog"
},
{
"action": "edit_body",
"issue": 1083,
"body": "Flagged by AI reviewer in PR #1065.\n\n## Problem\n\n`evidence/README.md` is silent on whether `lm_eth_before`/`lm_eth_after` reflect cumulative or per-attack-reverted state. Now that snapshot isolation is the standard practice, the schema should define this so the fields are unambiguous to future test runners and the planner.\n\n## Affected files\n\n- `evidence/README.md` — add snapshot-isolation methodology section defining lm_eth field semantics\n\n## Acceptance criteria\n\n- [ ] `evidence/README.md` schema defines that `lm_eth_before`/`lm_eth_after` reflect per-attack state after snapshot isolation (not cumulative historical balance)\n- [ ] Schema clarifies that each attack begins from the same initial state via `vm.snapshot()`/`vm.revertTo()`\n- [ ] Schema clarifies that snapshot isolation is the standard methodology for all red-team runs\n\n## Related\n\n- #1086 (sibling — candidate_commit and methodology field schema)\n\n---\n*Auto-created from AI review of PR #1065*"
},
{
"action": "add_label",
"issue": 1083,
"label": "backlog"
},
{
"action": "remove_label",
"issue": 1099,
"label": "blocked"
},
{
"action": "comment",
"issue": 1099,
"body": "Unblocked: all upstream prerequisites (#1031, #997, #1067, #1054) closed. Dev-agent attempted PR #1139 but CI exhausted — blocked label removed so issue re-enters the queue for retry."
}
]
[]

View file

@ -1,4 +1,4 @@
<!-- last-reviewed: 209e0c798ea85204c5fe466ba7b54b874095e08f -->
<!-- last-reviewed: 491755592a86b34f7761347cd8cc299652b02942 -->
# Landing Interface - Agent Guide
Vue 3 + Vite application that delivers the public marketing site and forthcoming staking UI.
@ -39,6 +39,7 @@ The landing page uses `@harb/analytics` (a self-hosted Umami wrapper) for conver
- `initAnalytics(VITE_UMAMI_URL, VITE_UMAMI_WEBSITE_ID)` is called in `main.ts` — the Umami `<script>` tag is injected dynamically so ad-blocker state is handled gracefully.
- CTA buttons use `navigateCta(path, label)` in `HomeView.vue` instead of `router.push()` directly — this fires `trackCtaClick(label)` before navigating. Tracked labels: `hero_get_krk`, `how_it_works_get_krk`, `getting_started_get_krk`, `view_protocol`, `how_it_works_docs`.
- **Cross-app routing**: paths starting with `/app` use `window.location.href` instead of `router.push()` — the webapp is a separate Vue app served by Caddy, so client-side router pushes would be caught by the catch-all and redirect back to `/`.
- All tracking calls are safe no-ops if Umami is unavailable (ad-blocked, env vars unset, dev mode without Umami running).
- Env vars required: `VITE_UMAMI_URL` (script URL), `VITE_UMAMI_WEBSITE_ID` (UUID). See `docs/ENVIRONMENT.md`.

View file

@ -0,0 +1,53 @@
# Planner run — 2026-03-25 09:00 UTC
## Predictions triaged
- #1149: DISMISS — tree staleness resolved by this planner run
- #1150: DISMISS — already actioned as #1151/#1152, evidence/user-test/2026-03-25.json now exists
- #1148: PROMOTE_BACKLOG → #1154 — CROSS_BROWSER_SPECS glob over-broad, matches unintended conversion-funnel spec
- #1141: WATCH — valid concern about adversarial testing depth, but contract safety (bug fixes) IS done; added evidence-based safety as launch day prerequisite
- #1104: DISMISS — already closed
## Prerequisite tree updates
- Resolved: E2E quality gate (#1099 — closed, merged PR #1139). Phase 1 E2E gate DONE.
- Resolved: Mobile viewport coverage (#1099)
- Resolved: Cross-browser matrix (#1099)
- Resolved: Conversion funnel test exists (07-conversion-funnel.spec.ts, covers full flow with analytics)
- Resolved: Analytics infrastructure DONE (@harb/analytics package, Umami deployed, both apps instrumented)
- Resolved: User-test produces data (evidence/user-test/2026-03-25.json — 0/5 personas, wallet connector issue)
- Resolved: Release pipeline DONE (CI + Docker + E2E gate integrated)
- Discovered: Wallet connector panel not rendering at 1280x720 — blocks all 5 user-test personas
- Discovered: Adversarial testing depth concern for launch confidence (per #1141)
- Added: User funnel fix objective (wallet connector)
- Added: E2E test hygiene objective (#1154 glob fix, #1153 pipeline fix)
## Top 3 constraints
1. Wallet connector fix (#1156) — blocks all user funnels, critical for launch UX — filed
2. Pitch deck (#1155) — blocks influencer outreach → launch day (3 downstream objectives) — filed
3. Cross-browser spec glob (#1154) — blocks E2E test hygiene, prevents false CI failures — filed from #1148
## Stuck issues detected
No stuck issues detected.
## Issues created
- #1154: fix: CROSS_BROWSER_SPECS glob matches unintended conversion-funnel spec — from prediction #1148
- #1155: feat: create pitch deck PDF for influencer outreach — Phase 2 bottleneck
- #1156: fix: wallet connector panel not rendering at standard viewports — all user funnels blocked
## Priority label changes
- Added priority: #1154, #1155, #1156 (top 3 constraints)
- Removed priority: none (#1099 was the only priority issue, now closed)
## Observations
- **Major milestone: Phase 1 is DONE.** E2E quality gate (#1099), conversion funnel (#1100), analytics (#1101), and release pipeline all resolved. This is the first time Phase 1 has been fully clear.
- **Bottleneck shift: Phase 2 is now the frontier.** The constraint has moved from code quality to launch preparation (pitch deck, influencer outreach).
- **Critical UX blocker discovered**: User-test evidence (first run ever, via #1151) reveals ALL 5 personas blocked at wallet connection. Desktop connect button not found at 1280x720. This needs urgent fix before launch.
- **Velocity**: Contract safety cleared in runs 6-7. Phase 1 cleared in runs 7-8. Priority label system continues to drive focused work.
- **Evidence pipeline nearly complete**: user-test now has data. Only resources/protocol formulas still dark (not on critical path).
- **#1141 concern acknowledged**: added adversarial testing depth as a launch day prerequisite in the tree rather than reverting contract safety.
## Deferred (in tree, not filed)
- Adversarial testing depth for launch — acknowledged via #1141 WATCH, prerequisite in tree, not yet actionable until closer to launch
- Resources/protocol formula evidence — not on critical path
- Community channel, optimizer governance — blocked on launch day scheduling
- Influencer outreach — blocked on pitch deck
- Woodpecker evidence-only PR pipeline (#1153) — exists, lower priority than launch blockers

View file

@ -1,37 +1,46 @@
# Prerequisite Tree
<!-- Last updated: 2026-03-23 -->
<!-- Last updated: 2026-03-25 -->
## Phase 1 — Quality gate & release pipeline
### Objective: E2E quality gate (#1099)
- [x] Core E2E test suite exists (tests/e2e/, 6 files)
- [ ] Mobile viewport coverage (#1099)
- [ ] Cross-browser matrix (#1099)
- [x] Core E2E test suite exists (tests/e2e/, 7 files)
- [x] Mobile viewport coverage (#1099 — closed, merged PR #1139)
- [x] Cross-browser matrix (#1099 — closed, merged PR #1139)
- [x] OptimizerV3 test coverage (#1054 — closed)
- [x] Floor ratchet attack defeated (#1067, #1082 — closed)
- [x] int256 overflow patched (#1031 — closed)
- [x] Overflow guard for slots 1-7 (#997 — closed, merged 29b8f7d)
Status: BLOCKED — 2 prerequisites unresolved. **CONSTRAINT** — blocks all downstream. #1099 in-progress.
Status: DONE
### Objective: Conversion funnel verification (#1100)
- [x] Landing page exists
- [x] Staking app exists
- [ ] E2E quality gate passing (#1099)
- [ ] Funnel test: landing → swap → stake (#1100)
Status: BLOCKED — depends on #1099
- [x] E2E quality gate passing (#1099 — closed)
- [x] Funnel test: landing → swap → stake (07-conversion-funnel.spec.ts exists, covers full flow with analytics events)
- [ ] Cross-browser spec glob fix (#1154) — funnel spec unintentionally runs on Firefox/WebKit/mobile
Status: DONE — funnel test exists and runs. Minor glob issue tracked in #1154.
### Objective: Release pipeline
- [x] CI pipeline (Woodpecker)
- [x] Docker images (registry.niovi.voyage)
- [ ] E2E quality gate integrated into release (#1099)
Status: BLOCKED — depends on #1099
- [x] E2E quality gate integrated into release (#1099 — closed)
Status: DONE
### Objective: Analytics (#1101)
- [x] Self-hosted Umami deployed (Docker service, documented in ENVIRONMENT.md)
- [x] Landing page instrumented (landing/src/views/HomeView.vue, landing/src/main.ts)
- [x] Staking app instrumented (web-app/src/composables/useStake.ts, useSwapKrk.ts, useWallet.ts)
- [x] @harb/analytics package with funnel events (packages/analytics/src/index.ts)
- [x] E2E quality gate passing (#1099 — closed)
Status: DONE
## Phase 2 — Coordinated launch
### Objective: Pitch deck
- [ ] E2E quality gate passing (Phase 1 complete)
- [ ] Analytics in place (#1101)
Status: BLOCKED — Phase 1 incomplete
- [x] Phase 1 complete (E2E quality gate, conversion funnel, analytics all DONE)
- [ ] Pitch deck created (PDF explaining KRK, floor mechanics, how to buy/stake)
Status: BLOCKED — pitch deck not yet created
### Objective: Influencer outreach
- [ ] Pitch deck exists
@ -41,18 +50,14 @@ Status: BLOCKED — prerequisite chain
### Objective: Launch day deployment
- [x] LiquidityManager contract
- [x] UUPS upgradeable optimizer
- [ ] Conversion funnel verified (#1100)
- [x] Conversion funnel verified (07-conversion-funnel.spec.ts)
- [ ] Pitch deck reviewed
- [ ] Influencers committed
- [ ] Adversarial testing depth for launch confidence (per #1141 concern: 2 red-team runs insufficient for real ETH)
Status: BLOCKED — prerequisite chain
## Phase 3 — Operations
### Objective: Analytics (#1101)
- [ ] Funnel tracking infrastructure (#1101)
- [ ] E2E quality gate passing (#1099)
Status: BLOCKED — depends on #1099
### Objective: Community channel
- [ ] Launch day scheduled
Status: BLOCKED — prerequisite chain
@ -79,6 +84,16 @@ Status: DONE
- [x] Evolution commits via PR (#1047 — closed)
- [x] Evolution pipeline produces output (evidence/evolution/best.push3 exists)
- [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 — 0/5 personas completed, wallet connector blocking)
- [ ] Resources/protocol formulas produce data (formulas exist, evidence dirs empty)
- [ ] User-test produces data (evidence/user-test/ empty)
Status: BLOCKED — 1 prerequisite unresolved
### Objective: User funnel fix
- [ ] Wallet connector renders at 1280x720 viewport (all 5 user-test personas blocked here)
- [ ] Desktop connect button visible at standard viewports
Status: BLOCKED — discovered via user-test evidence 2026-03-25. Blocks all user funnels.
### Objective: E2E test hygiene
- [ ] Cross-browser spec glob fix (#1154 — CROSS_BROWSER_SPECS matches unintended conversion-funnel spec)
- [ ] Woodpecker evidence-only PR pipeline (#1153)
Status: BLOCKED — 2 prerequisites unresolved