Commit graph

72 commits

Author SHA1 Message Date
johba
3f0c8d5342 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
2026-03-25 09:36:59 +01:00
johba
46998ac1bf Merge pull request 'fix: feat: conversion funnel verification — landing → swap → stake (#1100)' (#1143) from fix/issue-1100 into master 2026-03-24 21:05:57 +01:00
johba
2ef2e48f8a chore: gardener housekeeping 2026-03-23
AGENTS.md watermarks refreshed to HEAD (209e0c7). Key content updates:
- root AGENTS.md: added packages/analytics/ to directory map
- landing/AGENTS.md: documented @harb/analytics integration and Umami funnel tracking
- web-app/AGENTS.md: documented analytics events (wallet_connect, swap_initiated, stake_created)
- onchain/AGENTS.md: documented AttackRunner fixes (taxRate as index, vm.warp, same-broadcast recenter), 2000-trade floor-ratchet evidence

Pending actions (6): promote #1083 and #1086 to backlog, unblock #1099.
2026-03-23 18:07:12 +00:00
johba
097121e0fe fix: use full-page navigation for cross-app CTA links
The landing page CTA used router.push('/app/get-krk') which was caught
by the catch-all route and redirected back to '/'. Since landing and
webapp are separate Vue apps behind Caddy, cross-app navigation needs
window.location.href to trigger a real browser request through the
reverse proxy.

Also simplify the analytics E2E test to avoid race conditions between
event capture and page unload during navigation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 17:04:56 +00:00
johba
ca2bc03567 fix: feat: basic analytics funnel tracking for launch readiness (#1101)
Add self-hosted Umami analytics to replace the third-party cloud.umami.is
tracker. Creates @harb/analytics package with typed event helpers and
instruments the conversion funnel: CTA clicks (landing), wallet connect,
swap initiated, and stake created (web-app).

- Add Umami Docker service sharing existing postgres (separate DB)
- Add Caddy /analytics route to proxy Umami dashboard
- Configure via VITE_UMAMI_URL and VITE_UMAMI_WEBSITE_ID env vars
- Document setup and funnel events in docs/ENVIRONMENT.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 13:04:24 +00:00
johba
67de651242 chore: gardener housekeeping 2026-03-23
- Update all AGENTS.md watermarks to HEAD (b276392)
- Clean up dust.jsonl: remove already-bundled items (601,627,739,741)
- Pending actions: promote #1099/#1100/#1101 to backlog, close stale
  prediction issues #1020/#1103/#1107, comment on partial resolution
  of #1022 (holdout resolved, user-test still empty)
2026-03-23 07:15:23 +00:00
johba
b276392e7a chore: gardener housekeeping 2026-03-23
- Update all AGENTS.md watermarks to HEAD (224edcc)
- onchain/AGENTS.md: document VWAPTracker _hasRecenterTick guard (#609),
  overflow guard for slots 0-7 (#997), Floor Ratchet defeated (#1067),
  fee-income delta_bps audit trail (#1084)
- landing/AGENTS.md: document SecurityInfo.vue component (#147)

Issues actioned via API:
- Unblocked #1099, #1100, #1101 (all prereqs 1031/997/1067/1054 closed)
- Created #1134 bundled backlog: onchain source quality cleanup (4 dust items)
- Closed dust #601, #627, #739, #741 → bundled into #1134
2026-03-23 07:04:19 +00:00
openhands
d77081022f fix: Add audit badge and contract addresses prominently on landing (#147)
Add SecurityInfo component displayed after LiveStats on the landing page:
- Unaudited badge with planned Q3 2026 audit date
- KRAIKEN Token and Stake contract addresses with copy-to-clipboard buttons
- BaseScan and source code links
- Responsive layout for mobile viewports

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 18:28:02 +00:00
johba
ef65cf6146 fix: Add audit badge and contract addresses prominently on landing (#147)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 18:20:07 +00:00
johba
83a1b576e4 chore: gardener housekeeping 2026-03-22
- Update all AGENTS.md watermarks to HEAD (5f01d55)
- Add feeDestinationLocked and recenterAccess removal to onchain/AGENTS.md guardrails
- Add gardener/dust.jsonl accumulator (6 dust items: onchain comments, evidence schema docs)

Issues actioned via API:
- Closed #1085 as duplicate of #1082
- Promoted #1079, #1082, #1084 to backlog with acceptance criteria
- Unblocked #607, #609, #610, #611, #614, #615 (dev-crash blockers, no technical blockers)
- Added dependency-resolved comment to #1054 (dep #970 now closed)
2026-03-22 08:47:11 +01:00
openhands
cd67e8c1fd fix: setFeeDestination in snippet uses stale AddressAlreadySet one-time-setter pattern (#886) 2026-03-17 14:08:45 +00:00
openhands
65ffb51a64 fix: update _scrapePositions signature and body in CodeDocs.vue snippet (#837)
Update the embedded _scrapePositions definition to accept (bool recordVWAP,
int24 currentTick), compute currentPrice directly from the passed tick
instead of sampling the ANCHOR position's centre tick, remove the
ANCHOR-specific price-sampling branch from the loop, and replace the old
split fee+VWAP transfer logic with the current contract's structure:
feeDestination != address(this) guard before transfers, single ethFee
branch for VWAP recording.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 16:58:24 +00:00
openhands
076b25f4dd fix: CodeDocs.vue shows stale recenter() with recenterAccess guard (#837)
Remove the obsolete recenterAccess pattern from the liquidityManagerSol
snippet: drop the recenterAccess state variable, setRecenterAccess(),
revokeRecenterAccess(), and onlyFeeDestination modifier. Update recenter()
to reflect the current cooldown-only access model, fix the VWAP direction
logic, and update the _scrapePositions() call signature to match
LiquidityManager.sol.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 16:29:48 +00:00
openhands
9a309634ed chore: add planner watermarks to all AGENTS.md files 2026-03-15 16:42:45 +00:00
openhands
8b39bf3000 fix: Add cache headers to Ponder GraphQL proxy in Caddy (#447) 2026-03-06 03:07:24 +00: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
0b76ea9ca9 fix: HomeViewOffensive.vue trust section uses "Open." as a standalone claim (#313)
Replace "Open Source." with "On-Chain." — the repo is private so "open
source" is a false claim per PRODUCT-TRUTH.md §Code/Open Source and
UX-DECISIONS.md §Don't Say. "On-Chain." is accurate and consistent with
the subtitle already present in the section.

Also remove duplicate garbled sentence in the Adaptive Trading card
("The optimizer evolves — new versions ship as the protocol matures."
was a copy-paste repeat of the preceding clause).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 14:44:15 +00:00
openhands
10f7f1ebc0 fix: \HomeViewOffensive.vue\ trust section uses "Open." as a standalone claim (#313)
Replace vague "Open." with "Open Source." in the trust section heading
to give the claim concrete meaning and match the Source Code link below.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 14:21:03 +00:00
openhands
ca1ad9467c fix: Unmatched /docs/* subroutes silently render empty DocsView (#347) 2026-02-28 10:12:10 +00:00
openhands
1e6f817cf4 fix: Landing cleanup: 404 route, German comments, dead code, orphaned heading (#306)
- Add /:pathMatch(.*)*  catch-all route that redirects to / so unknown
  URLs no longer render blank
- Replace German inline comments in scrollBehavior with English equivalents
- Remove seven dead `// group: "navbar"` comments from /docs route and its
  child routes (the live group: 'navbar' property on the parent is kept)
- HomeView.vue and HomeViewMixed.vue already carry the renamed
  "Verified On-Chain" heading with supporting copy; no changes needed there

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 07:53:42 +00:00
openhands
143d6b202a fix: Landing copy: fix immutable overclaim + sync Mixed variant floor copy (#310)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 13:40:34 +00:00
openhands
dd2e2ec25c fix: Consolidate redundant/broken gitignore node_modules entries (#204)
Remove redundant `node_modules/` entries from sub-directory .gitignore
files. The root `.gitignore` already has `**/node_modules/` which covers
all nested directories, making these per-package entries unnecessary.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 21:13:16 +00:00
openhands
56d15a40f6 fix: Fix false claims on landing: "cant go to zero" + "open source" (#269)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 20:33:01 +00:00
openhands
ede53a9dd3 fix: Fix false claims on landing: "cant go to zero" + "open source" (#269)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 20:02:02 +00:00
openhands
afaf675f2a fix: Landing: switch from hash routing to history routing (clean URLs) (#270)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 19:21:53 +00:00
openhands
d1d943e5fd fix: Micro-fixes: dead comment, timer null, AbortController, address guard, catch reset (#261)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 07:24:48 +00:00
openhands
9a420ae77a fix: Add aria-label attributes to landing buttons (#243)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 22:15:26 +00:00
openhands
3426fbf80b fix: LiveStats: show hard error when Ponder is unreachable (not silent skeletons) (#201)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 21:33:50 +00:00
openhands
0d761744df fix: Add architectural lint rules with agent-friendly error messages (#232)
- landing/eslint.config.js: ban imports from web-app paths (rule 1),
  direct RPC clients from viem/@wagmi/vue (rule 2), and axios (rule 4)
- web-app/eslint.config.js: ban string interpolation inside GraphQL
  query/mutation property values (rule 3); fixes 4 pre-existing violations
  in usePositionDashboard, usePositions, useSnatchNotifications,
  useWalletDashboard by migrating to variables: {} pattern
- services/ponder/eslint.config.js: ban findMany() calls that lack a
  limit parameter to prevent unbounded indexed-data growth (rule 5)

All error messages follow the [what is wrong][rule][how to fix][where to
read more] template so agents and humans fix on the first try.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 20:44:17 +00:00
openhands
541ff2df93 fix: WalletCard.vue queries wrong GraphQL field (protocolStatssstatss) (#217)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 18:41:37 +00:00
openhands
14da7d9a09 fix: Title (#212)
Add trailing slash to node_modules entries in sub-package .gitignore
files so they match only directories, not files named node_modules.
The root .gitignore already uses **/node_modules/ (fixed in #203);
these per-package entries were also missing the slash.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 17:32:47 +00:00
openhands
fad6486152 fix: Post-purchase holder dashboard on landing page (#150)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 15:02:22 +00:00
openhands
b228482694 fix: resolve @harb/ui-shared via Vite alias in webapp and landing (#150)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 13:42:22 +00:00
openhands
e89fd4013d fix: Post-purchase holder dashboard on landing page (#150)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 12:34:36 +00:00
openhands
4e90411b15 fix: \WalletCard.vue\ GraphQL variables (#191)
Refactor address interpolation in fetchWalletData to use a proper
GraphQL variables object instead of embedding the address directly
in the query string template literal.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 22:30:55 +00:00
openhands
7219f1b21c fix: LiveStats: remove floor price from landing, fix ETH reserve data pipeline, strip browser RPC (#196)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 21:57:13 +00:00
openhands
b66a8afcaa fix: \VueQueryPlugin\ possibly dead dependency (#195)
Clarify that @tanstack/vue-query is a required peer dependency of
@wagmi/vue, not a dead import. Add a comment in main.ts explaining the
rationale, and document the dependency in ARCHITECTURE.md and
landing/AGENTS.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 21:13:02 +00:00
openhands
491c8f65b6 fix: resolve stack-too-deep in EthScarcityAbundance test
Extract _decodeVwapTick and _logEvent helpers to reduce stack depth
in _recenterAndLog. Also add via_ir=true to maxperf profile.
2026-02-23 17:10:01 +00:00
openhands
a46c30cff6 fix: landing page user test fixes (#162)
- Add VueQueryPlugin to landing main.ts (wagmi/vue requires it)
- Add Vite proxy for /api/graphql → ponder:42069/graphql
- Replace axios with native fetch in WalletCard.vue
- Add navigateTo() for CTA buttons (uses VITE_APP_URL env)
- Load contract addresses from bootstrap in landing entrypoint
- Add via_ir to foundry.toml (OptimizerV3Push3 stack-too-deep)
- Add VITE_APP_URL env to docker-compose landing service

Fixes: blank landing pages, broken LiveStats, missing CTA links,
missing contract addresses in footer
2026-02-23 14:47:38 +00:00
openhands
878d1337df fix: Clean up dead code and stale domain references across landing + web-app (#189)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 13:04:02 +00:00
openhands
6c1217f451 fix: address review — soften AI claim to autonomous system (#176) 2026-02-22 23:36:19 +00:00
openhands
4287dc2f1a fix: address review — soften claims, remove redundancy (#176) 2026-02-22 23:36:19 +00:00
openhands
45b997bef6 fix: address review — remove false admin key claims, soften floor language (#176) 2026-02-22 23:36:19 +00:00
openhands
9f1c255e13 feat: expand autonomous protocol narrative, adopt token-owned-liquidity language (#176) 2026-02-22 23:36:19 +00:00
johba
8a5a4f7e6d Merge pull request 'feat: add live indicator and freshness display to LiveStats (#172)' (#179) from fix/issue-172 into master 2026-02-23 00:36:04 +01:00
openhands
a8f62e2357 fix: start freshness ticker after first data load (#172) 2026-02-22 23:01:42 +00:00
openhands
1b55ae8ac8 fix: address review — error state for live indicator (#172) 2026-02-22 22:12:38 +00:00
openhands
7d5d8cabb2 feat: add live indicator and freshness display to LiveStats (#172)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:42:31 +00:00
openhands
85cd5a8986 feat: add Code docs page with contract source + copy buttons (#174)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:41:43 +00:00
openhands
ae44bddf7f fix: address review — floor price null guard, fetch timeout (#171) 2026-02-22 21:21:45 +00:00