AI Kanban
Todo
3#116
Evaluate: do the ai-rules workflows need custom sub-agents?Investigate/decide whether the workflows in the ai-rules repo (e.g. orchestrated-feature-dev, orchestrated-reasoning, review-changes, scout/gather/plan nodes, etc.) would benefit from dedicated CUSTOM sub-agent definitions rather than the current generic Sonnet/Opus/Fable role prompts. Consider: which workflow roles (gatherer, investigator, behavior-risk cataloguer, planner, adversarial verifier, etc.) recur enough to warrant a named custom agent with its own system prompt/tool policy/model; the maintenance + reuse trade-off vs. inline role prompts; how custom agents compose with the existing node-based structure; and any platform constraints (Claude Code subagent registry, cursor/antigravity variants). Deliverable: a recommendation (which agents to create, if any) + rationale, then a follow-up implementation card if the answer is yes.P0
yesterday
#117
Build monthly automation: AI architecture review of active projectsCreate an automation (e.g. a monthly cron job driving an AI agent) that reviews the ARCHITECTURE of each active project and reports back improvement + refactor suggestions tailored to the project's current situation. Scope to nail down: (1) which projects count as \"active\" and how to detect them (recent git activity? an explicit list? AI-Kanban cards?); (2) what the agent inspects — repo structure, module boundaries, dependency graph, hotspots/churn, tests, tech-debt markers, recent direction; (3) output format — a per-project written report (top issues, concrete refactors, risk/effort) delivered to Telegram and/or filed as AI-Kanban cards; (4) cadence + delivery via the OpenClaw cron/isolated-agent mechanism (monthly, per project or batched). Prefer reusing an existing review/orchestrated-reasoning workflow over building from scratch. Deliverable: the scheduled automation + a sample report on one real project.P0
yesterday
In Progress
0Staled
13#28
Take over Vince's tasksTake over Vince's tasks (handover). No deadline specified yet. Next step: get the list of Vince's tasks/responsibilities so they can be broken out into individual cards. Note: no custom fields for deadline/assignee yet, so extra detail lives here in the description.P0
4 weeks ago
#86
Research simple beginner robots for kids (easy build + simple coding)Research simple robots that can be built easily by kids following instructions, and that involve simple/beginner coding. Produce a shortlist of kits/projects with: build difficulty, age range, cost, what coding is involved (block-based vs text), and where to get instructions.P0
2 weeks ago
#106
Audit orchestrated-feature-dev + rules against Graph EngineeringResearch the "Graph Engineering" framing (Steinberger tweet Jul 2026, LangGraph/ADK/AutoGen GraphFlow prior art) and audit the existing skill system — orchestrated-feature-dev nodes/routing, feature-dev-lite, orchestrated-reasoning, scout-and-plan, and .claude/rules — for how well it holds up as an explicit stateful graph. Output: findings + improvement proposal. No file changes this pass.P0
4 days ago
#111
UBET-4202 FE: send referral code on comment/vote/reactionClose the FE half of UBET-4202 (found during testnet verification on card #105): the backend accepts `referralCode` on /commentOnMarket, /voteOnMarketOutcome and /comments/:id/reactions and establishes the market_referee link from it, but the frontend only ever attaches the stored code to BETS (usePlaceBetMutation). A referred user who engages without betting earns their referrer nothing.
Worktree: upredict-frontend-ubet-4202, branch feat/UBET-4202-fe-referral-code-on-interactions off origin/main aff515bd.
Decided approach (user's call): extract a shared getStoredReferralId() helper and read it INSIDE the fetch functions (createComment, toggleCommentReaction, voteOutcome), and refactor usePlaceBetMutation to use the same helper instead of its inline localStorage read.P0
2 days ago
#112
Local Claude Code context/cost readout: parser + status script + skill (+ VSCode bridge)Build a LOCAL (no network) readout of Claude Code context + cost, as one shared parser feeding three consumers. Remote sync + dashboard is a separate card.
## Deliverables (build in this order)
1. **Parser library** — reads the live session transcript, returns context size, per-turn cost, subagent cost, session total. Prototyped + validated 2026-08-01.
2. **Status script** — standalone, prints ONE line to stdout. Wire to `statusLine.command` (works in terminal today).
3. **Skill** — deep on-demand view, same parser. Works in BOTH terminal and VSCode extension today, so it unblocks the ambient-display problem.
4. **VSCode status bar bridge extension** — thin wrapper that shells out to the status script and renders stdout in the native status bar. Works in VSCode + Cursor. Build only if the skill proves insufficient.
## Verified mechanics
- Transcript path: `~/.claude/projects/<cwd with / replaced by ->/<$CLAUDE_CODE_SESSION_ID>.jsonl` — verified working.
- **Context size = the LAST assistant record's `input_tokens + cache_creation_input_tokens + cache_read_input_tokens`.** NOT a sum across turns (that gives cumulative usage, ~15x larger and wrong).
- **CRITICAL: dedupe by `(requestId, message.id)` keeping MAX `output_tokens`.** Claude Code rewrites each assistant message to the JSONL repeatedly while streaming; early copies hold partial counts (e.g. 7 then 1505). Taking the first/last naively misreports the headline number by up to ~200x. This is the single highest-risk bug in this card.
- `input_tokens` being ~0 is CORRECT — nearly all context arrives as cache_read. Do not "fix" it.
- Subagent transcripts: `~/.claude/projects/<slug>/<session-id>/subagents/agent-*.jsonl` (nested one level deeper; a one-level glob misses them entirely — they were 27% of historical spend).
- Pricing: cache read 0.1x input; cache write 5m 1.25x, **1h 2.0x** (`usage.cache_creation.ephemeral_{1h,5m}_input_tokens`). Sonnet 5 is on intro $2/$10 per MTok **until 2026-08-31** (list $3/$15).
- Context windows: 1M for Opus 5/4.8/4.7, Sonnet 5/4.6, Fable 5; 200K Haiku 4.5. Model string may carry a `[1m]` suffix — strip before lookup.
## Status line format
`◐ 43.8% (438K/1M) · turn $0.28 (+$0.11 sub) · carry $0.22/turn · ⚠ cache miss`
- context % + absolute vs the model's real window
- last turn cost, subagent broken out separately with `+`
- **carry cost** = `context * input_price * 0.1` — what the NEXT turn costs before you type anything. The headline insight: context is a recurring bill, not a capacity gauge. On a live 438K-token session, 78% of each turn's cost was just re-reading context.
- warnings: cache-prefix invalidation (large cache_creation + small cache_read => that turn cost up to 20x the cached equivalent), and context crossing a threshold
## Locked decisions
- Status line REPORTS AND WARNS (not purely informational).
- Subagent cost DISPLAYED, broken out separately (not silently rolled in).
- Skill covers CURRENT SESSION ONLY, fully local, no network.
- Scope is claude-code only — dropped the original cross-agent mirroring to cursor/antigravity (transcript format, session-id env var, and cache-tier accounting have no equivalent there).
## Performance note (VSCode bridge)
Watch the project dir and read only the TAIL (~256KB) of the transcript — do not re-parse a multi-MB file on every append. Still apply max-output_tokens across copies in the tail, or the status bar flickers through partial streaming values before settling. The bridge cannot ask Claude Code which session is active (no API); infer via newest-mtime `.jsonl` in the workspace's project dir.P0
yesterday
#113
Cross-session card dedupe: search-first trackingStop the board fanning out duplicate cards for the same unit of work across sessions (RISE-14881 x5, UBET-3958 x3, UBET-4188 x3). Root cause: create_card dedupes on session:<sessionId>, so a new session always means a new card, and the skill's adopt ladder only checks session-keyed sources — nothing ever asks the board. Fix is search-before-create (wide recall + explicit verification), NOT a caller-supplied key. AI-Kanban: call bootstrapIndexes at connect so indexes actually exist in prod (repairs list_cards text search, makes dedupeKey uniqueness real). AI-rules-repo: flip the kanban-track hook reminder to search-first, add a board-search rung + reopen path to ai-kanban-track-session, correct the stale any->any transition docs. See PLAN-cross-session-card-dedupe.md in AI-rules-repo.P0
2 days ago
#118
Cross-machine Claude Code usage sync + dashboard UIAggregate Claude Code usage from BOTH machines into one remote DB, with a web UI for visualisation. Sibling of card #112 (local readout) — reuses the SAME parser library; build #112 first.
Motivation: ccusage is accurate but per-machine by construction, and the JSONL contains NO account/org/machine identity — so cross-machine and per-account attribution can only be solved at sync time, never reconstructed later.
## Sync behaviour (locked)
- **Triggers: `SessionStart` (inline upload) AND `UserPromptSubmit` (dirty-marker only, detached).**
- `SessionEnd` is REJECTED — does not fire on tab close, crash, or kill -9.
- `UserPromptSubmit` must NOT do network I/O inline: it runs BEFORE the model sees the prompt, so it is in the per-turn latency path and a hung connection stalls the session. It writes a dirty marker and exits (~5ms); upload happens detached. Needs a real detach — `& disown` is not always enough since Claude Code can wait on inherited fds.
- `UserPromptSubmit` structurally never syncs the last turn of a session; `SessionStart` catches it on next launch.
- **No cron, no launchd, no daemon.** The JSONL on disk is the durable source of truth and survives every failure mode; the hooks are freshness, not delivery. Staleness is bounded by "when you next open Claude Code on that machine" — an idle machine generates no new usage anyway.
- **On failure: do nothing, exit silently.** No error surfaced into the session, no retry logic.
## Data rules
- **Aggregates ONLY — transcripts NEVER leave the machine.** The JSONL contains source code, file contents, and all tool output. Ship token counts per message. Entire history is ~46K rows.
- **PK `(request_id, message_id)`** — globally unique. Makes re-sync a no-op: no watermark, no "what did I already send" state to corrupt, no harm in overlapping ranges.
- **Self-healing upsert** — `on conflict (request_id, message_id) do update set output_tokens = greatest(excluded.output_tokens, usage_events.output_tokens)`. This makes the streaming-partial bug IMPOSSIBLE TO PERSIST: a row written from a partial record is corrected upward on any later sync. Build this in rather than trusting the reader.
- **Stamp at write time: `machine_id`, `account_uuid`, `org_uuid`** — none exist in the JSONL. `machineID` + `oauthAccount.{accountUuid,organizationUuid}` come from `~/.claude.json`.
- **Store `cost_usd` computed at sync time**, plus a separate `pricing` table for audit. Do NOT compute cost at query time from current prices: Sonnet 5 intro pricing ($2/$10 vs list $3/$15) expires **2026-08-31**, and query-time pricing would silently reprice all pre-expiry history.
- Include `is_subagent` (subagent transcripts are nested at `<session-id>/subagents/agent-*.jsonl`; ~27% of historical spend).
## Backfill
One-shot script per machine over existing history (~46K rows, ~$5.9K of usage). Same parser, same idempotent upsert.
## Dashboard UI
Web app over the synced data. Wanted views:
- cost per day / per machine / per project / per model
- subagent share of spend over time
- cache efficiency (read vs write ratio) — spikes indicate prefix invalidation
- session drill-down
- optional: join `~/.claude/usage-data/session-meta/*.json` (tool counts, git commits, lines added/removed, interruptions, response latency) for cost-per-commit style metrics. NOTE: only covers 134 of 175 sessions and looks like a one-off snapshot from 2026-07-01 — verify it still regenerates before depending on it.
## Open (deferred by user until behaviour was settled)
1. **DB host** — recommend a NEW dedicated Supabase project (Supabase MCP already wired; Postgres over REST means the sync is a plain curl with no client library on either machine; RLS keeps it private). Alternatives: existing mainnet/testnet project (mixes personal telemetry into something else), or Neon via personal-infra Pulumi (consistent with existing IaC, but needs a PR/deploy cycle and free tier has a 6h retention cap).
2. **Account topology** — do both machines run under the same Anthropic account (`b7bc187e-7b55-4c62-8977-c069bffdfd83`), or is one a work account? Decides whether `account_uuid` is a constant or a real schema dimension. Recommend modelling it as a first-class column regardless, so adding a work account later needs no migration.P0
14 hours ago
#119
Build session-durability behaviors (journal, work-index, PreCompact log, card mirroring)Implementation follow-on to card #106 (audit, no file changes). Build the 8 "build now" session-durability behaviors from tmp/session-durability/PROPOSAL.md: typed journal + continuous capture, work-index.mjs read path, PreCompact evidence log, kanban-track breadcrumb for every session, CONSTRAINTS.md convention, promotion criteria to card/kb, staleness flagging, flush-debt Stop nudge. Repo: AI-rules-repo, worktree AI-rules-repo-session-durability, branch feat/session-durability. One commit per behavior. Following orchestrated-feature-dev end to end. Deferred (9-11): per-prompt CONSTRAINTS injection, SubagentStart inheritance, /clear discontinuity.P0
AI-rules-repo·feat/session-durabilityyesterday
#122
Fix near-bankrupt sleeve inflating the 1/N blended book (fake +9193% bar)Run #28 showed a single +9193% bar (equity 5,254 -> 488,352 in one hour). Root cause found: on 2021-04-16 22:00 dogeusdt's fold equity fell 2,045 -> $1.62 (Doge squeeze over a naked short), then recovered to $1,329 = +82,002% in one bar; _blend_1n averages the 9 coins' RETURNS index-wise so that became +91.1 blended.
TWO compounding causes: (1) the S4 bankruptcy floor is a knife-edge at exactly equity<=0, so a sleeve at $1.62 of $10,000 is economically dead but treated as fully alive with astronomically leveraged percentage returns; (2) _blend_1n averages percentages, implicitly re-funding every sleeve to a full 1/N each bar, so a dead sleeve's +82,000% is credited as if earned on real capital.
DAMAGE: run #28 reads +409% total but that ONE bar is 92.9x — everything else is -94.5%; mean-of-fold Sharpe was -1.105 and the DSR gate still PASSED at 0.970. Run #27 (the z-ladder research run behind the "scaling-in beats single-entry, +0.366 stitched" conclusion) has the SAME artifact from the same Doge event (+1292% bar = 13.9x; everything else -87.2%), so that headline is NOT supported and the project memory + docs/features/zscore-ladder-mean-reversion/spec.md are now wrong.
FIX (user approved both): (1) insolvency threshold instead of a knife-edge — liquidate and hold dead below a fraction of starting capital; (2) blend DOLLARS not percentages so a dead sleeve contributes its actual negligible capital. Then re-run #27/#28 configs for honest numbers and correct the memory + spec.P0
16 hours ago
#123
Trade chart: panel titles + TradingView-style zoom/panThe two charts inside the run page's "Trade detail" card are untitled: the price+markers ComposedChart and the net-exposure AreaChart. Add clear titles to both. Also add TradingView-style interaction: scroll-wheel zoom anchored at the cursor, drag to pan, and a reset. Both panels MUST share one x-domain so markers stay aligned with the exposure step, and the y-axis should rescale to the visible window. Equity/Drawdown cards already have titles (CardTitle) and use a string-category x-axis, so they are out of scope unless asked.P0
14 hours ago
#128
Trade visualization for all UI-triggerable methods + ML arg prefillOnly LadderEngine builds RoundTripTrade and only ladder_verdict persists trades, so the Trade detail chart renders for ladder runs only. Extend to every UI-triggerable method: single strategies + ml (need fill->round-trip pairing off run_backtest), plus cross_section / carry / multi_carry / pooled_direction which are CLI-only today and must also be added to the trigger form. Also generalize the ladder-shaped marker detail panel, and prefill the ML artifact/date fields from artifacts discovered by a new backend scan endpoint. Plan: tmp/ui-visualize-all-methods/implementation-plan.mdP0
9 hours ago
Blocked
0Need Review
9#48
Unify storageQuota validation under BE (voluptjs), remove FE validationPR #94 cleanup: (1) remove client-side storageQuota validation in userProfile.js, relying on BE for validation; (2) re-express storageQuota validation as a voluptjs custom validator/schema so all validation logic is grouped in the validation layer, replacing the imperative resolveStorageQuota helper. Update unit tests accordingly.P0
3 weeks ago
#108
Creator rewards follow-up: belief point values and creator vote creditOn feat/creator-rewards-followup (upredict-backend, stacked on UBET-4211): collapse CreatorComment/CreatorReply into one source type with the kind in meta, move the creator cap to a per-kind ledger test, add a creator +1 credit when a user votes on their market, floor the creator fee credit at 1, and raise Reply 1->5 and Reaction 1->3.P0
3 days ago
#109
Investigate + harden anvil EVM test fixture flakes (BE CI)BE CI flakes traced to the anvil/EVM jest fixture. Two signatures in the last 7 days: (1) BlockOutOfRangeError "block height is 16 but requested was 15" in evmFixture.ts during contract role read — cost the 20260731.1 release tag its TS docker images; (2) hook/test timeouts (15s hook, 10s test) in backendServiceFixture. Goal: gather evidence, root-cause, propose concrete hardening.P0
3 days ago
#114
Z-score ladder mean-reversion strategy (scaling-in variant)New z-ladder mean-reversion strategy distinct from single-entry MeanReversionStrategy: tranche into adverse moves at increasing z deviation, basket stop on averaged entry, exit all on reversion. Needs engine multi-tranche position state + averaged stop + cross-tranche solvency budget. Falsifiable bake-off vs single-entry on same walk-forward + DSR harness. Built via orchestrated-feature-dev.P0
2 days ago
#120
UI: trigger any strategy/verdict run, persist to DB, display trade-annotated resultsOrchestrated-feature-dev. SCOPE CORRECTED by user mid-Phase-1: not just a nicer chart. Make everything we've built (single-symbol pipeline, ladder, carry, multi-carry, cross-section, pooled-direction verdicts) TRIGGERABLE FROM THE WEB UI (dashboard/), persist each run to the DB, and DISPLAY the result in the UI — including a richer trade-annotated visualization (entry long/short, exits, per-trade PnL, position size) with toggles for what to display.
Known crux from Phase 1 research: EngineResult exposes only equity_curve + a scalar count — NO trades list, NO position series, NO price. Trades exist transiently (Portfolio.trades, ladder tranches) and are discarded at the engine seam and per walk-forward fold; per-trade PnL is computed nowhere. So overlays require additive plumbing across the seam. Second crux: 4 of 6 tearsheet callers are stitched 1/N multi-symbol books where a single position/price/trade does not exist.
External viz research (done): adopt stacked shared-x panels (price+markers / equity / underwater), exit-triangle encoding win-loss by color + side by direction, entry→exit shaded spans, exposure as its own subplot; render via matplotlib multi-panel inline SVG + artists tagged into SVG <g id> groups with ~15 lines of inlined vanilla JS for toggles (no CDN, stays self-contained).P0
yesterday
#124
Trade chart: distinct exit glyph, fix overlapping exit PnL, marker tooltips explaining whyFour fixes to the run page's Trade detail chart, from user feedback on the live UI:
1. Exits currently reuse the SAME glyph as entries — needs a visually distinct exit marker (the researched convention is distinct entry vs exit glyphs; we only varied colour/direction).
2. Double-click-to-reset-zoom is bad UX — remove it, keep/improve the explicit Reset control.
3. Ladder exits OVERLAP: per D7 (user call) a basket stores one trade PER RUNG all sharing the basket's single exit ts AND exit price, so N per-trade PnL labels render stacked on the exact same pixel. Fix by drawing ONE exit marker per basket with an aggregate label, and moving per-rung detail into the tooltip. Data stays per-rung; only the rendering dedupes.
4. Hover/click a marker should explain the stats AND WHY the entry/exit happened. Blocker: RoundTripTrade/TradeRecord carry no rung index and no z-score, so the reason for an ENTRY cannot currently be stated. Needs backend enrichment: rung_index (engine knows it), entry_z and exit_z (the strategy computes z; ride it on the shared Signal as an optional defaulted field, per the standing extend-the-shared-contract rule). exit_reason already exists.
Existing runs (28, 29) predate the new fields, so the tooltip must degrade gracefully when they are null.P0
14 hours ago
#125
claude-usage: sync API, hooks, backfill + dashboard (PLAN Steps 9-14)Implement remaining steps of claude-usage PLAN.md via orchestrated-feature-dev.
Phase 2 (sync): Step 9 event mapper (Turn -> UsageEventDocument, per-event account from ledger), Step 10 POST /api/sync with x-claude-usage-secret guard, Step 11 SessionStart + UserPromptSubmit hooks (detached upload, <10ms), Step 12 backfill over ~46K events.
Phase 3 (dashboard): Step 13 /login + /api/auth + edge proxy, Step 14 dashboard views (cost per day/machine/project/model, subagent share, cache efficiency, session drill-down) on shadcn + Base UI, base-nova, neutral, dark-first.
Repo: github.com/votrungquan1999/claude-usage. Constraint: aggregates ONLY - transcripts never leave the machine.P0
13 hours ago
#126
Ladder verdict soundness: stop_z ceiling guard, baseline sizing, true B&H arm + re-run bake-offOpus audit of run #31 found the run did not test its configured strategy.
FLAWS: (1) stop_z=5.0 is mathematically unreachable — RollingZScore uses statistics.pstdev over the full lookback window, so max |z| = (n-1)/sqrt(n) = 4.359 at lookback=20; 0 of 18415 trades exited on 'stop', max entry_z observed 4.3537. Combined with max_hold_bars=0 (disabled) the run had NO loss exit and NO time exit. (2) rung 2 (|z|>=4.0) fired 8 times in 15550 baskets — 84% single-entry, so the ladder thesis was barely exercised. (3) ladder_verdict.py:313 calls run_backtest with no size kwarg so the baseline arm runs at 100% of cash vs the ladder's ~33% — arms compared at ~3x different notional. (4) bah_sharpe stores the single-entry MR arm, not real buy-and-hold (run #30 stores true B&H +1.0857 in the same column) so #31 cannot answer 'should I just have held?'. (5) The gate's real comparator max(baseline,0.0) is not persisted, so the record reads as 'beat the baseline but failed'.
VERDICT ON #31: the FAIL is trustworthy in direction — frictionless per-trade edge is -15.8bps over 18415 trades and 47000 OOS bars, i.e. it loses at ZERO cost; fees $120,165 vs gross-of-fee PnL -$118,566. But the ladder thesis is UNTESTED, not refuted.
REFUTED (my own suspicions, checked and wrong): purge=0 is not leakage (neither arm trains a model; each fold builds a fresh engine over test_idx only). train=2000/test=1000 is BETTER than the old test=120 (47 vs 398 folds, 47000 vs 47760 OOS bars, 940 vs 7960 warm-up bars wasted). The negative-baseline gate is already correctly floored at max(baseline,0.0). No repeat of the run-#28 blowup artifact (equity never exceeds its 10000 start; largest step +3.03%).
SCOPE (user-approved): guards + code fixes + re-run as a 2-config bake-off (rescaled rungs at lookback=20 vs original [2,3,4] at lookback=50), realistic costs only — no zero-cost diagnostic.P0
12 hours ago
#127
Trade chart: snap x-axis ticks to real bars + zoom-aware full-resolution price seriesUser spotted axis labels like "11-18 21:09" / "12-06 05:49" on a 1h run and asked whether trades were on minute candles. They are NOT — verified all 1259 bnbusdt trade entry_ts and all 1484 price points on run #33 land exactly on :00, and the run interval is 1h. Two display-layer bugs underneath:
(1) TICK LABELS: the zoom feature switched the XAxis to a continuous numeric (epoch ms) scale with a [lo,hi] domain, so Recharts places ticks at arbitrary points inside the range instead of on bar boundaries. "21:09" is not a bar, it is where the tick math landed. Affects both the axis ticks and the range readout next to the Reset button.
(2) MARKER/LINE MISALIGNMENT: GET /runs/{id}/prices downsamples ~31x (1484 points at 31h spacing for run #33) while ALL trades are drawn un-downsampled. Markers therefore sit off the price line — visible in the user's screenshot as the -4.9% marker floating well below the curve. Downsampling is deliberate (full series ~47k points) so the fix is to serve FULL resolution for the visible zoom window rather than disabling it globally.
Neither affects any verdict — chart series only; backtests use full-resolution data.P0
11 hours ago
Done
103#1
remove amplify proxy between FE and BEcheck the infra, be, fe folder in sport inference, i want to remove the proxy so that fe call directly to backend. Need to check to understand why the proxy was there Make sure when the proxy from amplifier is removed the Frontend can call backend api without issue P0
upredict-frontend·feat/UBET-4083-remove-amplify-proxy +22 months ago
#2
merge and deploy the PRshttps://github.com/SportsFI-UBet/upredict-backend/pull/668
https://github.com/SportsFI-UBet/upredict-frontend/pull/634
https://github.com/SportsFI-UBet/upredict-infra/pull/613/changes
hi team @here, please help me review these 3 PRs for the remove proxy, the release order would be merge BE -> create new tag -> merge infra release new testnet -> merge infra (need review) -> merge FE
after all, our testnet will call BE directly. after a day of testing, we can safely deploy this to prod -> can observe the cost reduce the next day
this is the message from me
need to check if the BE pr approved, then merge, then trigger the tag new build, then merge the new infra PR created by tag new build, then rebase the infra PR with latest main, then merge it, then after all done, can merge the FE PRP0
upredict-backend·feat/UBET-4083-remove-amplify-proxy +22 months ago
#8
research new alternative for alchemyneed to investigate alternative to alchemy smart wallet signer since it's deprecated. and privy is too expensive
Alchemy stopped wallet embedding service...
Here are some alternative services
https://www.dynamic.xyz/
https://web3auth.io/
https://www.turnkey.com/
https://www.openfort.io/embedded-wallet
https://sequence.xyz
https://www.fireblocks.com/products/embedded-wallets
https://magic.linkP0
last month
#10
Fix weekly leaderboard Push-round scoringWeekly market leaderboard drops a spec / miscounts when the current round is Push. Fix: exclude Push-round bets from scoring (mirror generate_leaderboard status != 'Push') and remove the spec-level EXISTS gate so specs whose only round is Push still surface via comments/votes.P0
last month
#12
UBET-4088 BE comment replies (4147 POST + 4152 return nested)Orchestrated feature dev for UBET-4088 reply-to-comments, scoped to subtasks 4147 (POST nested reply via extended /commentOnMarket + migration for parent_comment_id/depth, flatten at depth 2, keep vote gate) and 4152 (return comments with nested replies: extend MarketComment + get_market_comments.sql tree assembly). Worktree: upredict-backend-ubet-4088 on feat/UBET-4088-be-comment-replies off origin/main. Contract plan in workspace/tmp/ubet-4088/api-contract-plan.md. Out of scope: 4148/4149/4150/4151.P0
upredict-backend·feat/UBET-4088-be-comment-replieslast month
#13
UBET-4088 BE comment replies — reply pagination (inline cap + cursor endpoint)Fold-in to UBET-4088 (BE only): cap inline replies at N=5 both levels + add cursor-paginated GET /comments/{id}/replies. Core subtasks 4147/4152 already done+tested. Driven via orchestrated-feature-dev; 8 steps.P0
last month
#14
Tier 2 — widen search space: 5 new strategies + engine mechanicsOrchestrated-feature-dev run for Tier 2 of the engine roadmap. Item 4: new strategies (Donchian breakout, ATR breakout, RSI-2, MA/EMA cross, MACD) on the Tier-1 indicator helpers. Item 5: engine mechanics (trailing stops, drawdown kill-switch, volume-scaled slippage). Goal: more real hypotheses to sweep honestly toward beating B&H + surviving the DSR gate. Branch tier1-trust-and-fix (Tier-1 committed at 8119c48).P0
last month
#15
Expose settlement fields on market APIAdd a nested `settlement` object (status, outcomeId, windowEndsAtEpochSeconds) to MarketDescriptionResponseOk for prediction markets, so the admin Settle panel gets the settled outcome id + settle window and can drop the localStorage workaround. BE-only, worktree upredict-backend-settlement-fields on feat/expose-settlement-fields.P0
last month
#16
Tier 3 v0: tabular ML prediction baseline (LightGBM)Orchestrated-feature-dev (slug tier3-ml-baseline). Build supervised LightGBM predictor: multi-horizon return/vol/RSI/MACD features → fixed-horizon-sign labels → LightGBM (purged/embargoed CV) → portable artifact → MLStrategy → existing engine + deflated-Sharpe gate. Train locally (CPU); reserve GPU box for v1 deep model. Resumable (parquet feature cache + LightGBM init_model). One-time: brew install libomp + uv add lightgbm. Roadmap item 6 (docs/research/engine-roadmap/42 + 00).P0
last month
#18
ML holdout eval: decoupled train-elsewhere → score frozen artifact over a chosen periodDecouple ML training from backtesting. (1) scripts/train_ml_model.py: train on --start/--end → artifact, stamp train window + Optuna search count (n_trials) into manifest. (2) holdout.py score_frozen_model: load artifact, slice bars to [start,end], run frozen MlStrategy via run_backtest, OOS Sharpe vs B&H over that slice, DSR deflated by manifest n_trials, verdict. (3) writer.py ml branch: TriggerRequest gains artifact_dir + backtest_start/end; single-period backtest instead of run_pipeline. WARN (not block) when backtest_start < manifest.train_end (leakage flag — user chose flexibility). (4) dashboard form fields (Next.js dashboard/). TDD throughout. Follow-on to Tier-3 v0 (card #16).P0
last month
#19
Research: Tier-3 ML v1 improvement directions (features, engine correctness, payoff/EV, sampling, horizon, granularity)v0 LightGBM predictor is honest but edge-less (~0.543 OOS acc; 1h holdout FAILs DSR). Fanning out 4 parallel research agents to answer the user's v1 questions: Q1 richer features / model complexity, Q2 engine position+signal correctness (does holding long + up-signal wrongly close?), Q3 payoff/EV trade selection (triple-barrier, meta-labeling, Kelly), Q4 random-chunk vs fixed walk-forward sampling, Q5 horizon-5 meaning + longer horizons, Q6 minute-candle granularity vs fee drag. Questions catalogued in docs/research/ml-v1-improvements/00-questions.md. Agents return clarifications; main agent spawns round 2 as needed.P0
4 weeks ago
#20
Tier-3 ML v2: convert IC≈0.15 signal into a tradeable risk-adjusted edgeFollows v1 (card #19, honest negative result — see docs/research/ml-v1-improvements/16-v1-empirical-results.md). v1 proved the model has real ranking signal (pooled IC ≈ +0.15, stable across feature sets) but NO tradeable risk-adjusted edge at 1h/H=24; walk-forward FAILs, loses to B&H +0.79. Both hypothesized levers ruled out: richer features (enriched -1.06 < close-only -0.88 warm Sharpe) and λ-selectivity (monotone but never positive; the +1.93 was a pooled-proxy artifact). v2 mission = the IC→Sharpe CONVERSION problem, which v1 isolated as the real gap. Untested v2 hypotheses (from doc 16): (1) payoff-asymmetry / position sizing (convex/Kelly-style bet sizing — IC ranks direction, not size); (2) triple-barrier target-vs-stop exits (let winners run, cut losers → reshape payoff distribution); (3) benchmark/framing (long-only vs long/short, excess-over-B&H vs absolute Sharpe, since B&H +0.79 is a strong bull-era baseline); (4) granularity (execution axis, only relevant once an edge exists). Also carries a v1 methodological debt: any v2 tuner must judge the SAME variance-penalized quantity the verdict does (v1's net-EV tuner was variance-blind and harmful). Starting orchestrated-feature-dev at the research/direction-selection stage — awaiting user scope decision on which hypothesis(es) to pursue before spawning research fan-out.P0
4 weeks ago
#21
Integrate AI-Kanban with OpenClaw (feature idea + OpenClaw setup reference)FEATURE IDEA
Integrate AI-Kanban with OpenClaw so the board can be driven from a chat channel (e.g. Telegram): create/query/move cards, get progress pings, and potentially have OpenClaw agents pick up and work cards. OpenClaw already exposes MCP tools + a paired Telegram control channel, so a thin bridge to the ai-kanban-dispatch MCP tools is the likely integration surface.
--- OpenClaw local setup (reference, as of 2026-07-06) ---
Host: Quan's MacBook Pro (macOS 26.5.2 arm64). OpenClaw 2026.6.11 (brew: /opt/homebrew/bin/openclaw). Config: ~/.openclaw/openclaw.json. Gateway: LaunchAgent, ws://127.0.0.1:18789.
GATEWAY: was crash-looping every ~10s ("Gateway start blocked: existing config is missing gateway.mode"). Fixed with `openclaw config set gateway.mode local` + relaunch. Now listening/reachable. doctor --lint: 0 errors (only warning: gateway.auth.token stored plaintext — cosmetic).
MODEL / AUTH: `openclaw configure --section model` → provider Anthropic via claude-cli OAuth (mode=oauth, profile anthropic:claude-cli) = REUSES the Claude Code subscription (no metered API key). Default model = anthropic/claude-opus-4-8 (fallbacks 4-7 / sonnet-4-6 / 4-6). Verified with a live agent turn. NOTE: subscription OAuth in a 3rd-party tool is a ToS gray area; fine for light manual use, risky for unattended. Cost on this route = Max-plan quota, not $. Switch models per-conversation from Telegram with /model <id>; /model default resets to Haiku/Opus default.
TELEGRAM CHANNEL: bot @quan_vo_open_claw_bot, dmPolicy=pairing. Paired + set as command owner (telegram:1767875031, "Quan Vo") via `openclaw pairing approve telegram <code>` — only this account can command it or switch models. Inbound + outbound + agent auto-reply all confirmed working (first msg was silent due to a one-time auth-profile session reset; resend worked).
BROWSER: plugin enabled. Isolated `openclaw` profile (CDP, port 18800) running. `user` profile = existing-session / chrome-mcp attach to real Chrome (where Bitwarden lives) — NOT yet wired (real Chrome not exposing a debug port; chrome-mcp bridge needed). Existing-session profiles also have some unsupported browser actions (ACT_EXISTING_SESSION_UNSUPPORTED).
PRIMARY USE CASE BEING BUILT (separate from the ai-kanban integration): on-demand AWS SSO login for Claude Code's aws CLI. Flow: OpenClaw runs `aws sso login --sso-session upredict --no-browser` → navigates the printed verification URL in the real Chrome → Bitwarden autofill login (company SSO portal TTL ~1h, NO MFA) → click Confirm → Allow → token cached → aws works. Trigger = MANUAL, on demand from Telegram ("refresh my AWS login"), not a cron. Model Haiku (cheap). Hard rule: stop and ping on any unexpected page. (upredict SSO covers prod=eu-south-1 + testnet=us-east-2 DevOps — token grants both.)
OPEN ITEMS
1. Wire `user` profile bridge so OpenClaw can drive the real Chrome (Bitwarden). 2. Write the "refresh aws" OpenClaw skill (pings back over Telegram). 3. Test AWS flow end-to-end. 4. (This card) design + build the AI-Kanban <-> OpenClaw bridge.P0
4 weeks ago
#22
Convert SLCP EQ mapping specs from API-only to UI-drivenRewrite 3 slcp-eq-mapping-issue-generation*.spec.ts under unified-health-check to trigger the "Generate Mapped Issues" action via the RSC UI (localhost:4000) instead of directly calling the generateStepExeSchemeIssues/generateAsmExeOrgSchemeIssues GraphQL mutations, and delete the manual-seed debug spec. Seeding, DF toggle, and teardown remain GraphQL helpers.P0
4 weeks ago
#23
Add BE unit tests for PR #94 storageQuota validation + fix quota-bound & NaN bugsExtract pure resolveStorageQuota helper from routes/users.js PUT /me, unit-test it DB-free asserting correct behavior, and fix the quota-bound bypass + NaN-on-name-only-update bugs found in PR #94 review.P0
4 weeks ago
#24
Build RISE-15271 factory assessment report toolDesign and ship a self-contained Python script (uv-runnable, single-file with PEP 723 inline deps) that turns a PO-provided xlsx list of factory external_ids into the pivoted assessment-status Excel report from RISE-15271. Includes a psql-runnable fallback SQL and Confluence-ready instructions.P0
4 weeks ago
#27
Add hooks artifact type to ai-rules + kanban session-tracking hookTwo-track feature. Track 1: build a Claude Code UserPromptSubmit hook that reliably tracks substantive work on AI-Kanban — reads a per-session pointer file (~/.claude/kanban-session-state/$SESSION.json = {cardNumber,cardId,summary}), injects a per-turn re-evaluation reminder (open card if substantive / if work diverged open a new card), and POSTs each user prompt as its own progress note directly to the kanban HTTP MCP endpoint (deterministic, no reliance on the model). Model still owns judgment: create_card + write pointer; hook does mechanical per-prompt logging. Track 2: make "hooks" a first-class installable artifact type in the @quanvo99/ai-rules CLI (parallel to skills/workflows) — .ai-rules.json `hooks:[]` key, hooks/{agent}/{name}/ repo layout, server discovery + Mongo collection + /api/rules payload, and a NEW deep-merge-into-.claude/settings.json writer with an ownership marker so sync can prune only ai-rules-managed hook entries. Motivation: the existing kb-memory rule is start-of-task only and leaks when work grows substantive mid-session; a hook is the deterministic fix. Following orchestrated-feature-dev workflow.P0
4 weeks ago
#30
PR #94: profile modal via hash nav + name/avatar click opens it (missing ticket requirement)Convert UserProfile into a hash-controlled modal (like signInModal), repoint the navigator name/avatar click to navigate to #/profile instead of logging out, keep Log Out inside the modal, and remove the Grid-panel wiring for profile.P0
4 weeks ago
#32
UBET-4142 Reply & tagging notifications (BE)Backend: emit notifications when someone replies to your comment and when someone tags/@mentions you, on branch feat/UBET-4142-reply-tagging-notification (based on feat/comment-tagging).P0
upredict-backend·feat/UBET-4142-reply-tagging-notification4 weeks ago
#33
Brainstorm: AI-Kanban → personal tracker (MCP capability map)Design brainstorm to generalize AI-Kanban into a task-type-agnostic personal tracker any agent (clawbot/CC/non-coding) can operate. Producing a capability map: discovery/read tools, nextAction field, generic update, git-decoupled context, generalized track-session skill.P0
4 weeks ago
#37
UBET-4156 BE: comment sort by interactionsBackend: sort market comments by interaction score (emoji reactions + all descendant replies) via a `sort=newest|relevant` query param. Worktree upredict-backend-ubet-4156, branch feat/UBET-4156-be-comment-sort-by-interactions (based on origin/main). Plan drafted; awaiting user go-ahead to implement.P0
upredict-backend·feat/UBET-4156-be-comment-sort-by-interactions4 weeks ago
#38
[RISE-15102] SLCP Non-Compliance column mappingSwap SLCP xlsx flag source from 'Legal Flag' → 'Non-Compliance' column (PO-confirmed no reports use Legal Flag anymore). Drop SLCP_RAW_ANSWER_FIELDS.LEGAL_FLAG and the dead `|| legalFlag` fallback in SlcpAccountInformation.js:395. Following /orchestrated-feature-dev on rs-backend-RISE-15102 worktree.P0
3 weeks ago
#39
Add market-type filter to market creator API routeAdd a query param to the market creator API route in upredict-backend to filter markets by type: belief market, prediction market, or all. Branch feat/market-type-filter, worktree upredict-backend-market-type-filter (based on origin/main).P0
3 weeks ago
#40
RISE-14881: Display SM attributes in Organization Compliance — research + CDC data-sourceResearch and data-source investigation for displaying Supplier Management (SM) attributes, incl. org custom fields, in the Organization Compliance page. Locate where custom-field values and names live and how to route them into rs-backend via CDC.P0
3 weeks ago
#42
Compare our Tier-3 quant ML system vs industry/AFML practiceResearch task (user-requested). Spawn 2 Sonnet sub-agents in parallel: (A) document exactly what our quant-trading Tier-3 ML system implements → docs/research/quant-system-comparison/01-our-system.md; (B) research how professional/industry + AFML systems are built → 02-industry-practice.md. Both cover the SAME 12 dimensions (data/universe, features, labeling, model, decision rule, sizing, risk/exits, execution/costs, backtest+validation, overfitting control, results, gaps) so they line up. Then a 3rd sub-agent compares them → 03-comparison.md. Goal: understand what we did vs what serious systems do differently.P0
3 weeks ago
#43
RISE-14881 — Display SM Attributes in Organization Compliance (app impl, post-CDC)Orchestrated-feature-dev implementation of RISE-14881 after the CDC pipeline landed in pre. CDC done: cdc_sight_be.assets_attribute (custom-field definitions id→name/type) + cdc_passport_be.attribute_value (values) now flow into rs-backend. Research (Phase 1) complete in tmp/RISE-14881/RESEARCH_OUTPUT.md. Next: Phase 2 plan for the app work (BE reflect cdc_sight_be + mapper join attribute_value.attribute_id = assets_attribute.id + populate customFields; FE display). Resolving scope + open product questions before planning.P0
3 weeks ago
#44
Add countdown timer tool under new /utils sectionBuild a configurable mm:ss countdown timer in bas-attendance under a new open-access /utils section with a grid-style tool selector. Large center Start/Stop button, loud Web Audio synth alarm looping at zero until Stop/Reset, separate Reset button. Stop preserves button state to prevent double-press restart.P0
3 weeks ago
#45
Research: Binance leverage/fees/funding vs 100x hypothesisResearch Binance USDT-M perp fee schedule, funding mechanics, leverage/margin mechanics; rigorously evaluate the "100x leverage + minimal fee = higher profit" hypothesis against Sharpe-invariance, liquidation risk, and notional-scaled fees. Document implications for the current negative-Sharpe directional ML strategy vs. a funding/basis carry strategy. Write to docs/research/leverage-and-costs/ in quant-trading repo.P0
3 weeks ago
#46
Tier-3 ML v3: meta-labeling precision filter (integrated live filter, full strategy mode)Follows the v2 post-mortem + comparison (card #42): wire meta-labeling into the Tier-3 LightGBM predictor as a new v3 strategy mode. Primary (v2: µ̂ EV gate + conviction + triple-barrier) decides SIDE; a secondary binary LightGBM classifier predicts P(trade wins net of cost) and gates ENTRIES (suppress if below threshold) — trading recall for precision on the IC≈0.15 signal. User decisions: (1) INTEGRATED live filter — meta-model threaded into MlStrategy, OOS backtest re-run with it live so skipped entries correctly propagate to downstream state (honest equity Sharpe); (2) FULL v3 strategy mode now (not just a diagnostic A/B) — persistent use_meta toggle + 4-arm verdict (v3/v2/v1/B&H) on identical purged folds + CLI. Existing quant.ml.meta_label harness is bound to the OLD mean-reversion strategy → not reusable directly; building fresh in quant.ml.prediction. Plan-gate: implementation-plan in tmp/ml-v3/, awaiting user 'implement it'.P0
3 weeks ago
#47
Walk-forward speedup: cache global feature matrix (byte-identical) + fold progress lineThe 4-arm ML verdict run is ~80 min; per-bar Python feature loops are the bottleneck (451 folds × ~2 build_feature_matrix calls × 2000 bars). ACCURACY-NEUTRAL fix only: build the feature matrix ONCE globally, then per fold slice it — re-imposing the SAME warm-up NaN prefix (first max_feature_lookback rows) so the primary's training rows stay byte-identical to the current cold per-window build; meta warm-features use the unmasked warm slice (identical to the current [warmup+is] build for is_bars rows). Prove byte-identity with an equivalence unit test; all existing walk_forward tests must still pass unchanged (same fold Sharpes). Plus: add a per-fold progress line to run_ml_verdict CLI (on_fold callback already exists). NOT doing the non-neutral ones (cross-fit n_splits=2, subset --fast mode). Follows v3 (card #46).P0
3 weeks ago
#50
Pull cross-section + funding/perp data into storeStructural-edge pivot after v0-v3 single-asset direction exhausted (IC~0.15 wall). Pull data to support two new directions: (1) cross-section — multi-symbol spot OHLCV for a liquid universe (ETH/SOL/BNB/XRP/DOGE/ADA/AVAX/LINK), reuse existing download_month; (2) funding/basis carry — Binance futures UM funding-rate history + perp klines (new data/futures/um/ path, new CSV schema). All endpoints probed HTTP 200. Report what failed.P0
3 weeks ago
#51
Build structural-edge strategies: cross-section + funding carryorchestrated-feature-dev (combined run, ws=tmp/structural-edges). Two structural-edge directions after v0-v3 single-asset direction exhausted (IC~0.15 wall): (1) cross-sectional relative-value across 8-symbol universe (long top/short bottom, dollar-neutral) reusing LightGBM feature stack as cross-sectional ranks; (2) funding/basis carry (delta-neutral long-spot/short-perp harvesting 8h funding). Both extend the single-instrument/single-position engine to multi-asset/portfolio + a funding-aware two-leg carry backtest. Data ready (card #50). Phase 1 research in progress.P0
3 weeks ago
#53
DCA cổ phiếu VN — monthly target scanDCA (dollar-cost averaging) into Vietnamese stocks. Standing task: periodically web-search and scan for possible new DCA targets (candidate VN tickers worth adding to the DCA basket). Run manually when Quan asks — no automated monthly schedule (removed per his request 2026-07-12). No hard deadline.P0
3 weeks ago
#54
Design monthly DCA candidate-discovery methodology (60-name shortlist, quarterly rebuild)Write a methodology doc for a repeatable monthly DCA candidate-discovery process in ai-price-action. Universe: curated ~60-name shortlist, re-fetched quarterly. Manual ritual (user runs at month-start). Research global + VN 'tich san' consensus to define screening criteria/strategy AND surface seed candidate names. Deliverable this session: methodology doc only (no full 60-name screen run).P0
3 weeks ago
#55
Research AI-doable side incomes (dropship, affiliate, etc.)Research popular side-income / money-making paths that can be largely run or automated with AI — e.g. dropshipping, affiliate marketing, print-on-demand, content/faceless YouTube, freelancing with AI, digital products, SaaS micro-tools, etc. For each: what it is, realistic earning potential, upfront effort/capital, how much AI can automate, and pros/cons. Goal is a shortlist Quan can evaluate. No deadline. Research only.P0
3 weeks ago
#57
Crypto DCA: conditional 2× accumulation rule (deploy $2k/mo while in discount zone)User wants to accelerate crypto DCA from $1k to $2k/month, framed as a price-conditional rule: deploy 2x WHILE crypto stays in the current bear/accumulation discount zone, revert to 1x if it re-rates up. Budget stretch (won't starve the 40M VN core). Need to: pull live aipa crypto prices to set mechanical trigger levels, define the conditional rule (discount condition + revert condition + thesis gate + weekly cadence), then write it into DANH_MUC_CRYPTO.md. Year-end total becomes an output of the rule, not a $12k target.P0
3 weeks ago
#61
Fix structural-edges audit flaws (F1-F9 + count logging)Fix the flaws surfaced by the orchestrated-reasoning audit of the two structural-edge mechanics. Clear-cut latent-bug/robustness fixes via TDD: F1 (DSR sqrt-before-guard crash), F4 (carry warmup_n truncation), F8 (carry RunRecord interval literal), F9 (walk_forward purge>=train guard), F5 (frictionless-always-on label), count-logging follow-up, F2 (cross-section daily feature windows + re-run). Defer F3 (DSR estimator — design decision) and F6/F7 (behavior changes vs logged D-decisions) for user call.P0
3 weeks ago
#62
Cross-symbol always-on carry sweep (structural-edge step 3)The one unrefuted lead from the structural-edges audit: raw always-on delta-neutral carry is ~2.3 frictionless Sharpe on BTC only. Run the carry verdict across all 9 funding symbols (BTC+ETH/SOL/BNB/XRP/DOGE/ADA/AVAX/LINK), reading the ALWAYS-ON (frictionless) arm not the dead gate. Q: does ~2.3 hold cross-symbol or is BTC a lucky draw? If it holds, next is a realistic-frictions stress test (basis blowups, perp liq/borrow, slippage, hold decay). If not, structural-edge program is exhausted → 'no tradeable edge'.P0
3 weeks ago
#64
Build multi-symbol carry basket engine (structural-edge step 3, diversification)Via orchestrated-feature-dev (ws tmp/multi-carry-basket/). Build 4 pieces to test if a diversified all-9 equal-weight delta-neutral carry basket earns enough Sharpe margin to survive the ~0.05 bps/bar hold cost that kills every single symbol. (1) build_multi_carry_panel inner-join 9x build_carry_panel; (2) MultiCarryConfig+MultiCarryEngine N-leg shared-equity always-on book, runtime /(2N) sizing + 1x solvency assert, count=4N; (3) multi_carry_verdict walk-forward Sharpe+DSR + diversification baseline (mean of 9 single-symbol Sharpes on identical folds) + hold-cost sensitivity + funding correlations; (4) runner + real-data decision (Sharpe>1.0 at realistic hold?). Decisions MC-D1/D2/D3 locked. 12 BDD steps, 5 quality checkpoints. Follows cards #61 (fixes) + #62 (sweep+frictions).P0
3 weeks ago
#65
RISE-14881: seed local CDC SM data for org 661cbc91 to test Organization CompliancePopulate local Docker CDC schemas (cdc_passport_be / cdc_sight_be) so target partner org 661cbc91 (owner: Inspectorio SSO c8820e9a) shows full SM attributes + custom fields on the Organization Compliance page. Copy Facility D (eco 345) data + reuse lululemon SIGHT-318814 definitions. All new rows id>=99000000 for easy cleanup.P0
3 weeks ago
#66
Test, improve & refine the release skillTest, improve, and refine the release skill. Scope includes: (1) listening to Slack (pick up release-related signals/notifications), and (2) posting to Slack after a release (announce/confirm the release in the channel). Iterate on reliability + polish the workflow end to end. No deadline.P0
3 weeks ago
#67
Restructure KB rule → policy-only; move all kb commands into the knowledge-base skillOption (a): the knowledge-base RULE becomes policy-only (retrieve-first, proactively suggest capturing generalizable learnings, drafts-not-canonical, memory sparingly) and references the knowledge-base SKILL for all command mechanics. Move every `kb` command (search/get/capture/update/delete + flags) out of the rule and into the skill. Add the missing kb update/delete to the skill. Mirror across claude-code/cursor/antigravity + update manifest.json if it carries descriptions.P0
3 weeks ago
#69
UBET-4176 Vote change fix — preserve comment vote sideOrchestrated feature dev for UBET-4176: preserve the vote side of the comment when a user votes. Backend (belief_locker), worktree upredict-backend-ubet-4176, branch fix/UBET-4176-vote-change-fix.P0
upredict-backend·fix/UBET-4176-vote-change-fix3 weeks ago
#70
UBET-4190: API returning all replies for a market in one ordered callDesign/build a backend API so the FE can load ALL replies for a market in a single call, with ordering consistency guaranteed structurally (wrong-order continuation unrepresentable). Following orchestrated-feature-dev. Worktree: upredict-backend-ubet-4190 (branch feat/UBET-4190-be-all-replies-api off origin/main). Brainstorm + state in tmp/UBET-4190.P0
upredict-backend·feat/UBET-4190-be-all-replies-api3 weeks ago
#73
Analysis: minute-level edge — full-MM frame, entry-precision + multi-hour hold (go/no-go)Structured-reasoning decision analysis: can minute-level bars produce a robust tradeable edge the exhausted hourly/daily arcs couldn't? Frame: full market-making execution; minute-precision entries with holding horizon unconstrained (can be hours). Compare BOTH prediction targets (order-flow/microstructure vs single-asset direction @1m). Method: Sonnet agents gather evidence dossiers from codebase+docs, then Fable 5 reasons (primary + adversarial + synthesis) over the gathered evidence — not from scratch. Deliverable: go/no-go + best-shot design + train/test/horizon/selectivity knob recommendations. Continues the structural-edges arc (cards #61/#62/#64, terminus 'no robust tradeable edge').P0
3 weeks ago
#74
UBET-4143: Comment gains BP when others reply / react (BP scoring)Extend market-points/BP scoring: (1) 1 BP per unique comment per market, (2) 1 BP per unique replier to a commentor, (3) 1 BP for emoji reactions to commentor/replier. Parent epic UBET-4146 "Reply to comments". Backend (upredict-backend). Following /orchestrated-feature-dev pipeline.P0
upredict-backend·feat/UBET-4143-reply-belief-points3 weeks ago
#75
Design performance review lens for review-changes skillBrainstorm + implementation plan for a new performance lens carved out of correctness, with a conditional perf-sensitive gate, across all three review-changes variants (claude-code, cursor, antigravity). Deliverable this session: design doc + plan, then pause.P0
3 weeks ago
#76
Fix 2 more assessment-filter nested-loop anti-pattern instances (addCaseHistoryJoins, filterByLatestCase)Prove-then-fix the two remaining unscoped-aggregate-JOIN instances on the assessment-list filter route, same class as the already-fixed caseHistoryByDateQueryBuilder (submit/start/abort). (1) addCaseHistoryJoins (filter.service.js:589) — unscoped DISTINCT ON case_history LEFT JOIN feeding 8 case/CAPA date filters; rewrite to correlated EXISTS (reuse caseHistoryByDateQueryBuilder). (2) filterByLatestCase (FilterUtils.js:399) — unscoped MAX(case_index) GROUP BY case_info_id INNER JOIN for the "Most recent assessments" quick filter. Approach: EXPLAIN-prove fan-out on local prod-copy, apply EXISTS rewrite, verify (EXPLAIN after + tests + real-code-path). Temp slow-query logger in knex.js must be reverted before commit; work sits in fix/RISE-15315/scheme-filter-exists worktree, move to own branch.P0
3 weeks ago
#78
RISE-14881: eco-first field priority + supplier-profile scoping + org-type label mapCombined change to match SM "My Organizations" table: (BE) resolve the ecosystem-scoped supplier profile (ecosystem_id = viewer ecosystem), flip field-source priority to eco-first with sm_organization fallback, select eco.type, keep Inspectorio ID from the global profile. (FE) add org-type code->label map matching passport-be OrganizationType. TDD.P0
2 weeks ago
#80
Plan + build 1 progressive Python-basics exercise (input/variables/conditionals)Design ONE untimed practice test whose exercises go easy→hard, for students who know only input, variables, and conditionals (no loops/functions/lists). ~120 min of work, balanced MC + free-text branching-program coding, same course c98f8f96, seed to Atlas after approval.P0
2 weeks ago
#81
Run belief_locker live HTTP server against local anvil chainEnable running the live belief_locker Fastify server locally against a local anvil chain (full on-chain write flow) + persistent local Postgres, in a dedicated worktree. Add config-driven per-chain RPC override + anvil chain support, chain setup (roles/fees/faucet), local self-contained config, and a bootstrap runner.P0
2 weeks ago
#82
Local graph-node subgraph indexer for local anvil chainFollow-up to #81: stand up a local graph-node (+ IPFS + its own Postgres) indexing the local anvil chain (31337), deploy the upredict subgraph against it, and point belief_locker's per-chain subgraphUrl at the local endpoint so subgraph-driven flows (bet confirmation, fee tracking) work end-to-end locally.P0
2 weeks ago
#83
Drive agents to log decisions to AI-Kanban decision array (skills + project)The ai-kanban-track-session & ai-kanban-work-card skills never drive the agent to use the card decision log (append_decision/mark_decision_outdated): the tool isn't in allowed-tools, no step covers it, and one line misroutes decisions into the progress log. Fix both skills (push decision-logging at real decision points) AND the AI-Kanban project (whatever's needed end-to-end, e.g. get_card_context returning decisions). Running via orchestrated-feature-dev.P0
2 weeks ago
#85
Improve grading page UX (AI panel, MC forms, explanations, model)UX improvements to the admin grading page: nest AI suggestion inside the question box, make MC grading read-only (auto-graded), add optional "why correct" explanation to MC questions (test + pools) shown to students, change per-student Save & Next to advance to the next question, and upgrade the Gemini grading model.P0
2 weeks ago
#87
MCP board parity: create-in-todo + any→any status movesGive the ai-kanban-dispatch MCP full board parity with the webview. (1) create_card gains an optional status param (default in_progress); status=todo creates a fresh queued backlog card. (2) set_status lets an agent make any→any transitions like a person (remove AGENT_EDGES). Running via the orchestrated-feature-dev pipeline; workspace at AI-Kanban/tmp/mcp-board-parity/.P0
2 weeks ago
#88
UBET-3958 — Belief-points forward ledger (implement)Implement the belief-points forward ledger (UBET-3958): a point_ledger table + per-source emit so a future point-formula change is cheap and non-retroactive — points frozen at WRITE time, reads become SUM(point_ledger), rule_version stamps each row. D12 split: the 6 user-route sources (comments, replies, reactions, votes, streak, mystery-box) emit INLINE in the request transaction with app-code dedup under a group-scoped pg_advisory_xact_lock; the 4 chain-ingested sources (referral, creator-fee, bet-volume, push-reversal) stay worker/watermark. Worktree upredict-backend-ubet-3958, branch feat/ubet-3958-point-ledger. Driven via orchestrated-feature-dev; Phase 4 implements ONE source at a time, stopping at each for user review + commit gate.P0
2 weeks ago
#89
UBET-4188: return unread vote items (voteId + timestamp) in market activity detailChange MarketActivityVotesSummary in the grouped market notifications detail route from `sampleVoterNames: string[]` to `items: MarketActivityUnreadVote[]` ({ voteId, authorName, atEpochSeconds }). Touches jsonSerializable interfaces, the get_market_activity_detail_summary SQL, the route mapper, generated schemas, tests, and the contract doc. Branch feat/UBET-4188-be-group-notifications-by-market (PR #701). Running trimmed orchestrated-feature-dev in tmp/UBET-4188-vote-items/.P0
2 weeks ago
#90
Market-wide value scan — find DCA candidates at the lows (VN)Market is broadly down. Run the DCA_CANDIDATE_DISCOVERY.md funnel over held names + the seed/shortlist universe: gather live aipa price/MA/liquidity data via sonnet subagents, rank quality+cheapness WITHIN ngành (never raw cross-sector), news-screen survivors, output a Candidate Watch list. Flag-for-review only.P0
2 weeks ago
#91
RISE-14826 Org Management: Export table to CSV (Data table)Add a "Data table" CSV export to the Organization Management activation table: new FE option + mutation, BE ORGANIZATION_CSV background task + worker with special column formatting (contacts, SEDEX) and DF-gated value population.P0
2 weeks ago
#92
UBET-4188: add avatarUrl to interaction row details (latest, comment, vote)Add avatarUrl: string | null to GroupedMarketNotificationLatest, MarketActivityUnreadComment, MarketActivityUnreadVote. Source: rawUserMetadata.avatar_url (already selected by all 3 SQL queries — no SQL change needed). New resolveActorAvatarUrl resolver next to resolveActorDisplayName. Null when no social avatar (no fallback). Extend existing tests with avatarUrl assertions (no new tests). Update contract doc + regenerate jsonSerializableSchemas.json. Branch feat/UBET-4188-be-group-notifications-by-market (PR #701).P0
2 weeks ago
#93
Pooled-panel direction ML: train one model on all 9 symbols, predict eachTest whether pooling all 9 symbols' data (BTC + 8 alts) into ONE LightGBM direction model — as data-augmentation vs the ~83-sample single-symbol starvation — yields a better ABSOLUTE-direction predictor than the BTC-only baseline. Distinct from the existing (failed) cross-section relative-value RV model: predicts each coin's OWN absolute return, not demeaned rank. Decisions: ragged-union alignment (keep all history, global-time purge split) + combined equal-weight book verdict (one blended Sharpe/DSR). Built via orchestrated-feature-dev pipeline.P0
2 weeks ago
#94
UBET-3958 Step 11 — belief-points ledger backfill script + unit testsOne-time, cutoff-bounded backfill for the belief-points forward ledger. Replay-emitters model (user's choice): set-based backfill_*.sql per source, idempotent via on-conflict, coexists with live-emitter rows. Reusable runBeliefPointsBackfill(db,{dryRun}) in src/services + thin CLI scripts/backfillBeliefPointsLedger.ts (dry-run default, AWS-secret DB). Unit tests via testDbFixture.P0
last week
#96
UBET-4052: revamp interaction rewards / point systemPlan + implement new point system: +1 per reply/emoji to your comments, +1 per interaction to your markets (creator), +1 per referee interaction to referrals, remove +1 for likes.P0
upredict-backend·feat/UBET-4052-revamp-interaction-rewardslast week
#97
Plan + build Data Structures & Strings lessons (Python + C++)Two parallel bilingual lesson pages on collections & text. Python (programming-python/data-structures-strings): recap lists → tuples, dicts, strings (core+methods+f-strings). C++ (new programming-cpp/data-structures-strings): self-contained arrays+std::vector → pair/tuple, std::map, std::string, modern C++11+. Both: teaching + exercises + challenge. Two-phase: manifests first → approval → page.tsx.P0
last week
#98
RISE-14881 — resolve SM taxonomy labels via assets_category CDC (read-side)rs-backend read-side for taxonomy label resolution. Backfill already fired on pre+stg (signals RISE-14881-pre-03/stg-03); pre sink cdc_sight_be.assets_category fully populated (106,973 rows) and verified: coded custom_ids resolve to correct labels scoped by d_owner_org_id (e.g. owner 513048: m06→Service Provider, b04→White Label, bu3→Accountability, bu09→Beauty & Personal Care). Implement: (1) constants ASSETS_CATEGORY + add to SIGHT_CDC_TABLES; (2) extract SIGHT-owner-id subquery helper; (3) label-resolving taxonomy join in sm_cdc_attributes.service.js with raw-value fallback when assets_category absent; (4) extend service spec. Branch feature/RISE-14881/taxonomy-label-resolution off fix/RISE-14881/sm-attributes-followup.P0
last week
#99
UBET-3958 read-cutover — serve belief points from point_ledger (3 read APIs)Orchestrated-feature-dev run for the ledger read-cutover on branch feat/UBET-3958-ledger-read-cutover. Hybrid points-from-ledger: realtime = live query-time SUM; all-time leaderboard + weekly = matview with swapped points term. Branch-as-gate, no runtime flag. Design in tmp/ubet-3958/{LEDGER_READ_CUTOVER_DESIGN,UBET-3958-V2-TODO}.md.P0
last week
#100
RISE-14887 — Supplier Profile hyperlink on Organization Information pageAdd a "View Profile" hyperlink to the RSC Organization Information page header that opens the corresponding Supplier Management supplier profile in a new tab. Epic RISE-14879 (Read SM Organization data in RSC). Open point from the ticket: mapping the RSC org to the SM org id. Running via /orchestrated-feature-dev; workspace ./tmp/RISE-14887/.P0
rs-frontend·feature/RISE-14887/supplier-profile-hyperlink +16 days ago
#102
Review PR 710 (UBET-4067 public profile + nickname routing) — blind behavior-risk auditCode review of SportsFI-UBet/upredict-backend PR 710. First pass done (2 MUST FIX both dismissed by user: migration is a separate infra PR; social SCA address exposure is intended). Now: spawn an implementation-blind behavior-risk cataloguer (orchestrated-feature-dev phase 3b) against origin/main only, then diff its catalog against the actual implementation.P0
5 days ago
#104
review-changes: holistic-driven lens gating across 3 variantsReplace the hardcoded "correctness, quality, security always run" lens gate in the review-changes skill with per-lens applicability verdicts emitted by the holistic phase. Floor = correctness only; security/quality/tests/performance all gateable with an uncertain->yes bias. Applies to skills/claude-code, skills/cursor, skills/antigravity. Plan at tmp/review-lens-gate/plan.md. Worktree: ../AI-rules-repo-review-lens-gate on branch feat/review-changes-lens-gate.P0
4 days ago
#105
UBET-4202 review fixes: referral interaction rewardsApply the 9 decided fixes from the UBET-4202 code review, in the worktree upredict-backend-ubet-4052 (branch feat/UBET-4202-referral-interaction-rewards, rebased onto origin/main 64822b3).
Decisions and full rationale: tmp/UBET-4202/review-decisions.md. Option analysis for the leaderboard universe: tmp/UBET-4202/brainstorm-leaderboard-universe.md. Original review: tmp/UBET-4202/review-changes.md.
Order: (2) extract shared establish-link/decide/emit helper; (3) order-independent pair advisory lock + correct the false cycle comment; (4) codeResolved warning log via namedQueryZ; (5) reaction route referralCode validation in-handler; (6) direct-referrer-only bet gate in SQL + reshape verifyLeaderboardResult; (7) move/fix point_ledger meta index predicate; (8) abstract_user.is_system_account column + infra migration + boot-time write + view filter at both join sites; (9) add Referral + CreatorReward to the earned_at-keyed universe branch.
Constraint: step 8 migration must land before the wholesale re-apply of upredict_index_view_function.sql.P0
upredict-backend·feat/UBET-4202-referral-interaction-rewards4 days ago
#121
Work on Concrete Engine — Sun Aug 2Focus task for Sunday, Aug 2, 2026: work on Concrete Engine. (Specific scope to be filled in by Quan.) Quan asked for an hourly reminder to keep at it until it's finished — set up on the OpenClaw cron system, delivered to Telegram, and stopped once he says he's done.P0
yesterday