Claude Project Tracker

refreshed 2026-10-27 05:32:33Z

What's pending across every project

34 open · sorted by priority then due-date
priority all urgent high low
todo high
Verify v3.1 conversation_excerpt rendering
OVERDUE 134d
MORNING.md
claude-project-tracker · claude-project-tracker · by saravanan@scrumclaw.ai
from the conversationsaravanan: I want to see the excerpt actually show up in the dashboard. claude: Captured a high-priority todo to test it.
138d ago
06-10 08:07
todo high
Add POST /webhook/github endpoint to the Go server
Accepts GitHub webhook events (configure on the repo with a shared secret). When a pull_request event with action=closed and merged=true comes in, parse the PR body for `Closes #<item_id>` or `Fixes #<item_id>` patterns and call the existing complete_item path for each. Add: HMAC-SHA256 signature verification using `GITHUB_WEBHOOK_SECRET` env var. Route lives in main.go alongside the other public POST endpoints. Probably one new file github_webhook.go.
api-go/main.goapi-go/handlers_api.go
claude-project-tracker · claude-project-tracker · by saravanan@scrumclaw.ai
from the conversationclaude: Webhook handler (medium): Add /webhook/github to the tracker server; parse merged-PR bodies for Closes #<item_id> and call complete_item. Single HTTP handler + webhook secret. saravanan: [agreed, this is the keystone feature]
137d ago
06-11 11:26
todo high
Deploy nightly question-quality audit cron and confirm 7 consecutive clean runs (REQ-13.11)
BRD v3.0 REQ-13.11 is Pending Deploy. Runbook with ready-to-paste gcloud commands exists; needs the Cloud Scheduler job created and 7 days of error-free runs to close the acceptance.
docs/QUESTION_QUALITY_CRON_SETUP.mddocs/BRD_V3_TRACKER.md
Adaptive SAT · adaptive-sat · by saravanan@scrumclaw.ai
💬 2 comments
135d ago
06-13 11:14
todo high
Set GCP project ID in terraform/terraform.tfvars and run terraform apply
terraform/terraform.tfvars.exampleterraform/main.tf
RoadIntelix · roadintelix · by Prajith
from the conversationclaude: Terraform IaC written for GCS bucket, Artifact Registry, Cloud Run Job (L4 GPU), and IAM.\nprajith: identify and add open items into tracker\nclaude: Next step — copy terraform.tfvars.example to terraform.tfvars, fill in project_id, then run terraform apply.
131d ago
06-18 04:17
todo high
Build and push Docker image to Artifact Registry
Dockerfile
RoadIntelix · roadintelix · by Prajith
from the conversationclaude: Dockerfile created with CUDA 12.1 + cuDNN 8, PyTorch cu121, ultralytics, and bundled YOLO weights.\nclaude: After terraform apply, run: docker build -t $IMAGE . && docker push $IMAGE
131d ago
06-18 04:20
todo high
Ship Android to Google Play — build config DONE; account/store/parity pending
Was deferred; now started. Same Expo codebase as iOS. DONE in code/config: eas.json Android build profiles (APK dev/preview, AAB production) + submit track:internal; app.json android block already complete (package com.hopewellpartners.adaptivesat, adaptive icon, App Links intent filters) — no change needed (appVersionSource:remote manages versionCode). Apple Sign-In correctly iOS-gated; Google sign-in works on Android. PENDING (owner): Google Play Developer account ($25); `eas build --platform android --profile preview` then production AAB; Android OAuth client (SHA-1 → add to GOOGLE_OAUTH_CLIENT_IDS); App Links assetlinks.json (SHA-256) on adaptivesat.ai; Play Console listing + IARC content rating (teen audience) + Data Safety + privacy URL; service account + eas submit. Follow-ons: Google Play Billing IAP (source='google' already supported), FCM push (deferred). Full steps: docs/ANDROID_PLAY_STORE_RUNBOOK.md.
docs/ANDROID_PLAY_STORE_RUNBOOK.mdmobile/eas.jsonmobile/app.json
Adaptive SAT · adaptive-sat · by saravanan@scrumclaw.ai
💬 1 comment
127d ago
06-22 03:03
todo high
iOS 2nd rejection (2026-07-24) remediation → build 7 resubmit
Apple rejected build 6 (reviewed on iPad Air M3, iPadOS 26.5.2). Four items. CODE FIXES DONE (mobile, typecheck clean, not yet committed/built): (1) 3.1.2(c) MobilePaywall now has tappable Terms of Use (EULA) + Privacy Policy links and shows title/length/price; (2) 2.1(b) SettingsScreen has a visible 'Upgrade to Premium' row opening the paywall so reviewers can locate the IAP; (3) 2.1(a) ExamStartScreen adds a 30s timeout + clear retry error so 'Start Exam' can't silently hang. ASC METADATA DONE: EULA link added to App Description (saved), Privacy Policy URL confirmed (adaptivesat.ai/privacy). PENDING (owner): check/top-up OpenAI credits (prime suspect for the iPad 'Start Exam did nothing' hang) and retest on iPad; commit+push mobile changes via ship.sh; new EAS production build (build 7); fresh screen recording (Start Exam works + Settings→Upgrade to Premium paywall + sandbox purchase); paste reply (asc_submission/apple_reply_draft.md) in Resolution Center; resubmit app+subscription+group together. Refs: MobilePaywall.tsx, SettingsScreen.tsx, ExamStartScreen.tsx.
mobile/src/components/MobilePaywall.tsxmobile/src/screens/SettingsScreen.tsxmobile/src/screens/ExamStartScreen.tsxasc_submission/apple_reply_draft.md
Adaptive SAT · adaptive-sat · by saravanan@scrumclaw.ai
from the conversationsaravanan: [pasted Apple's 2nd rejection: 3.1.2c EULA, 2.1a Start Exam no action on iPad, 2.1b can't find IAP] claude: Made the 3 code fixes + ASC EULA link; remaining = OpenAI check + build 7 + recording + resubmit with reply.
💬 3 comments
94d ago
07-25 04:08
todo high
Fix float equality in webhook amount check (can silently reject real topups)
ProcessTopupWebhook uses `if topup.Amount != amount` — direct float64 equality. A tiny rounding drift (e.g., 500.00 stored vs 499.99999998 derived from Razorpay's paise/100) will falsely reject the webhook as 'amount mismatch', leaving the user paying but not credited. Change to: if math.Abs(topup.Amount - amount) > 0.01 { ... } Or better: store amount as int64 paise everywhere and compare integers.
internal/repositories/wallet_repo.go:100
Vajra Volt Mobile App · vajra-mobile-app · by saravanan@scrumclaw.ai
88d ago
07-31 02:51
todo high
Extend ledger reconciliation migration to handle negative balances
Migration 0027 only inserts positive ADJUSTMENT entries when `wallets.balance > 0 AND gap.amount >= 0.01`. Users whose legacy wallets.balance is 0 (never populated) but who accumulated CHARGE entries end up with negative ledger balances and no automatic reconciliation. Concrete case: saravanan.hp@gmail.com currently shows balance = -11152.52. Ledger has CHARGE entries but no matching TOPUP history was migrated in. Options: (a) Backfill missing legacy topups from external Razorpay reports before running the reconcile. (b) Add a companion migration that reconciles from a manually-curated CSV of legacy balances. (c) Add an admin credit tool + audit trail so support can fix these case-by-case. Track down the actual topup history for affected users (query Razorpay payments API filtered by our account) and decide the right long-term reconciliation approach.
migrations/0027_wallet_ledger_balance_reconcile.up.sqlinternal/repositories/wallet_repo.go:30-48
Vajra Volt Mobile App · vajra-mobile-app · by saravanan@scrumclaw.ai
88d ago
07-31 02:51
todo high
TDD: Walk-in UPI QR Pay — final technical design document
After BRD + design review are locked, produce the formal technical design doc covering: - Sequence diagram (customer → Razorpay → backend → OCPP → charger) - Data model changes (schema migration text) - API contracts (webhook handler, admin QR provisioning, guest-mode read endpoints) - Idempotency + concurrency model - Failure/retry semantics (webhook re-fires, gun offline, RemoteStart rejected, refund flow) - SMS content + provider integration details - Observability (metrics + logs to add) - Test plan (unit + integration + one live pilot station) - Rollout / rollback plan - Estimated effort per phase Commit finalized TDD to docs/TDD-walkin-qr.md in the backend repo. Only after this ships do we start implementation items.</body>
Vajra Volt Mobile App · vajra-mobile-app · by saravanan@scrumclaw.ai
88d ago
07-31 03:24
todo high
Register DLT entity + SMS templates for walk-in flow (English/Hindi/Tamil/Telugu/Kannada)
DLT SMS registration is NOT done. 2–4 weeks external timeline. Track in parallel to Phase 1 build. Templates needed (send via Fast2SMS post-approval): - **wk_session_start** — "Vajra Volt: Charging started at {station}·Gun {gun}. ₹{reserved} reserved. Support: 88831-61155." - **wk_session_low_balance** — "Vajra Volt: Wallet running low (₹{remaining}). Scan QR to add money and keep charging." - **wk_session_end** — "Vajra Volt: Session complete. Used {kwh} kWh, cost ₹{cost}. Balance ₹{remaining}. Reply CLAIM to link this account." - **wk_payment_gun_busy** — "Vajra Volt: Payment ₹{amount} received but Gun {gun} is unavailable. Amount saved to your wallet. Support: 88831-61155." - **wk_refund_initiated** — "Vajra Volt: Refund of ₹{amount} initiated to your UPI. Reflects in 1–3 business days." All 4 languages (Q11 answer). English variants can be filed immediately; regional translations need vendor. Phase 1 launches WITHOUT SMS (see decision item). SMS goes live in Phase 1.5 once DLT approved.</body>
Vajra Volt Mobile App · vajra-mobile-app · by saravanan@scrumclaw.ai
85d ago
08-02 11:44
decision high
Phase 1 launches WITHOUT SMS — LED-only confirmation, SMS in Phase 1.5
DLT registration is 2–4 weeks. Rather than delay walk-in launch, Phase 1 will ship with LED-based confirmation only: - Customer knows charging started when the green LED on the gun activates (Q5 confirmed). - No SMS on session start, low balance, or session end for Phase 1 walk-ins. - App users still get all their existing notifications (unaffected). - After DLT approval + template registration, Phase 1.5 patches SMS in as a config flip — no schema change needed. Trade-off: walk-in session-end UX is worse. If a customer left their car and walked away, they won't know when charging finished. Mitigation: - Set the 2-hour hard cap (Q6) so guns don't stay locked forever. - Print the phone number on the QR sticker so customers can call to check status. - Auto-stop threshold of ₹50 remaining (Q7) reduces the "session died silently" scenario for underpayers. If DLT lands earlier than expected we'll enable SMS immediately.</body>
Vajra Volt Mobile App · vajra-mobile-app · by saravanan@scrumclaw.ai
85d ago
08-02 11:45
todo high
Pilot: end-to-end test on real UPI apps (BHIM/GPay/PhonePe/Paytm) at VAJRA0001
Pre-launch gate for Phase 1. Test matrix:\n\n- App: BHIM, Google Pay, PhonePe, Paytm, WhatsApp Pay (5 apps)\n- Amount: ₹100, ₹500, ₹1000 (3 amounts)\n- Scenario: happy path, gun offline (simulate), gun already charging, RemoteStart rejected (simulate)\n\nTotal ~30 test runs at pilot station. Log any UPI-app-specific quirks (BHIM in particular has stricter parsing).\n\nWhoever pilots — use throwaway UPI-linked phone number so we can also validate the walk-in-user creation path (not an existing app user's phone).\n\nBlocked on Phase 1 implementation complete + QR sticker printed.</body>
Vajra Volt Mobile App · vajra-mobile-app · by saravanan@scrumclaw.ai
85d ago
08-02 11:53
todo high
Ops: pilot station rollout at VAJRA0001 (2 QR stickers)
Physical rollout for Phase 1 pilot.\n\n- Confirm which station is the pilot (default VAJRA0001)\n- Send print design (#56) to signage vendor (#Q17 answer: existing vendor)\n- Receive 2 laminated A5 stickers (Gun 1 + Gun 2)\n- Physically apply to gun/panel\n- Coordinate with ops staff to be on-site during pilot testing window\n- Document station-owner communications (landlord awareness of pilot)\n\nBlocked on #56 (design finalized) + Razorpay QR issued (#52 + #61).</body>
Vajra Volt Mobile App · vajra-mobile-app · by saravanan@scrumclaw.ai
85d ago
08-02 11:53
todo high
Exam: within-module back/forward navigation + change answers + question navigator (Bluebook parity) — web AND mobile
Owner noticed the full exam has no back/forth between answered questions. Root cause: exam engine is forward-only by design. Backend get_next_exam_question serves the next UNSEEN question and immediately consumes it (status→ANSWERED); /answer records a single Attempt; no endpoint to re-fetch a prior question, change an answer, or list the module; ExamQuestionStatusEnum has only UNSEEN/ANSWERED/SKIPPED (no FLAGGED/REVIEW). Same limitation on WEB (frontend ExamSession.tsx) since it's the same backend — whole-product gap, not mobile-only. Real Digital SAT (Bluebook) allows free within-module navigation, changing answers, and a question navigator with mark-for-review until the module timer ends. SCOPE (multi-day, cross-cutting): backend — serve whole module, mutable per-question answers until module submit/timer, add flag/review state, add submit-module step (stop consume-on-serve); web+mobile — question navigator UI (grid + flags), Back/Next, module answer state, submit at module end. NOT an App Store blocker — sequence AFTER build 7 clears review. Refs: backend/app/services/exam_service.py (get_next_exam_question, submit_exam_answer), backend/app/models/exam_module_question.py, mobile/src/screens/ExamSessionScreen.tsx, frontend/src/app/pages/ExamSession.tsx.
backend/app/services/exam_service.pybackend/app/models/exam_module_question.pymobile/src/screens/ExamSessionScreen.tsxfrontend/src/app/pages/ExamSession.tsx
Adaptive SAT · adaptive-sat · by saravanan@scrumclaw.ai
from the conversationsaravanan: I need the option to go back and forth for the questions in the full test — why is it not enabled? claude: Exam engine is forward-only (serves next UNSEEN, consumes it, one Attempt each; no revisit/flag) on web+mobile. Real feature to add; not an App Store blocker — do after build 7.
💬 5 comments
77d ago
08-10 14:05
todo high
Change seeded CMS admin password — admin123 is in the migration file and the CMS is now public
VajraCMS went live at https://cms.vajravolt.com on 2026-09-07. The seed account created by VajraBackendGo/migrations/0033_cms_user.up.sql is admin@vajravolt.in / admin123 — the plaintext password is written in the migration, so anyone with repo access has working credentials to the production CMS. Saravanan chose to defer this on the day. Not blocking anything, but it should not sit for long. If there is no change-password UI yet, on the VM: UPDATE "CMSUser" SET password_hash = crypt('NEW', gen_salt('bf',10)) WHERE email='admin@vajravolt.in'; (pgcrypto bcrypt matches what the CMS auth controller compares against) Verify the old one stops working: curl -s -o /dev/null -w '%{http_code}\n' -X POST https://cms-api.vajravolt.com/api/v1/auth/login \ -H 'Content-Type: application/json' -d '{"email":"admin@vajravolt.in","password":"admin123"}' Expect 401.</body>
migrations/0033_cms_user.up.sql↗ https://cms.vajravolt.com
Vajra Volt Mobile App · vajra-mobile-app · by saravanan@scrumclaw.ai
from the conversationclaude: admin@vajravolt.in / admin123 is written in plaintext in migration 0033 and the CMS is now on the public internet — anyone with repo access has working credentials. saravanan: no pwd change now - claude: Noted — leaving it, tracked as open.
49d ago
09-07 22:20
blocker high
Fix global activity log: unfiltered tracker_get_log stops at update #20 (Jul 23)
Found 2026-09-26. tracker_get_log with no project_id returns newest = #20 (adaptive-sat, 2026-07-23). Updates #21–#27 exist and show correctly per project (vajra-mobile-app #21–#25, agent-production-support #26–#27), and list_projects shows current status fine. So writes work; the cross-project log query is wrong (likely ordering, a stale cache/view, or a filter excluding newer projects/sources). The dashboard's recent-activity feed probably uses it, so it looks like no updates since July. Also: vajra-mobile-app notes #22–#24 contain stray '</note></invoke>' fragments; sanitize on write and clean those rows.
tracker_get_log (no project_id)updates #20-#27vajra-mobile-app #22-#24
claude-project-tracker · claude-project-tracker · by saravanan@scrumclaw.ai
from the conversationsaravanan: why my tracker updates are not happening? claude: Writes are saved (#26, #27), but the all-projects log stops at #20 (Jul 23); per-project logs are complete. Likely a server query bug. saravanan: can you push this to tracker
30d ago
09-27 00:58
decision high
Decide on 58dd2aaf2 before promoting dev to QA — it hides why a tool failed
Commit 58dd2aaf2 adds taxonomyGatePublicErrorNote, collapsing any note starting "Tool failure" or "Tool execution failed" to the bare string "Tool failed", in both the on-screen display and the downloaded HTML export. Hiding internal tool names from a customer-facing report is defensible. The problem is that it is applied to the only artifact QA uses for diagnosis. Every root cause in the consolidated fix plan was read out of that exact string: jscpd-cs tool_not_ready:MISSING_BINARY, semgrep tool_not_ready:FAILED_STARTUP_CHECK:VERSION_MISMATCH, dotnet_restore_failed:, lizard VERSION_MISMATCH. It also cuts against fix-plan items 4.1 and 4.2, which ask for MORE provenance per row (tool name, artifact path, raw value), not less. Recommendation: keep the detail behind an internal or admin view, or export an internal variant alongside the customer one. Do not let the only artifact lose it. This is a product decision, not an engineering one — make it deliberately rather than shipping it by default.
58dd2aafrontend/web-console/src/lib/confidence-engine/taxonomy-gate-display.ts:379-406frontend/web-console/src/lib/confidence-engine/taxonomy-gate-html-export.ts:107,247
Testable (Pramora) · testable-platform · by saravanan@scrumclaw.ai
27d ago
09-29 16:26
todo high
After dev promotion, smoke-test semgrep on a PYTHON repo, not only C#
697e0dd47 raised the declared semgrep version to 1.176.0 for BOTH csharp and python. 76032c488 then made readiness permit a mismatch only when observed >= declared. So any cell still serving an image built with semgrep 1.70.0 or 1.95.0 will now be refused on both languages — where before, Python worked. The image-digest staleness check in 76032c488 should force reconciliation, but that needs verifying rather than assuming. A C#-only smoke test will not catch this. Run a Python-language repository and confirm semgrep still produces output. Symptom if a cell does not reconcile: semgrep reporting VERSION_MISMATCH on a language that worked the day before.
697e0dd76032c4backend/database/alembic/catalog_master.py:2161,3738shared/persistence/tool_readiness_policy.py:140-210
Testable (Pramora) · testable-platform · by saravanan@scrumclaw.ai
27d ago
09-29 16:26
todo high
Diagnose why coverage and mutation tasks never dispatch (22-26 metrics dark per run)
Every one of the 12 runs reviewed reports Coverlet, altcover, nyc, vitest, Stryker.NET and StrykerJS producing nothing. That is the entire "are the tests any good?" half of the product, dark in every run. Do NOT accept the claim that the capability is missing. coverlet_runner.py:159-162 runs `dotnet test --collect:"XPlat Code Coverage"`, and altcover_runner.py, stryker_net_runner.py, stryker_ts_runner.py and vitest_coverage_runner.py all exist. Adding a new harness would duplicate working code. (One uploaded consolidated report claimed the opposite and cited runtime_planner.py:120, which is a function that caps planner loop iterations.) Steps: take one run where these rows read "planned tasks did not start", pull the planner's decision for those specific tool assignments, and establish which of three things happened — the task was never created, it was created and never leased, or it was dropped at the readiness gate. Each has a different fix. Only then write the ticket. This is fix-plan item 1.6 and is the only item where the cause is genuinely unknown.
backend/wb-cpu-worker/app/analyzers/csharp/coverlet_runner.py:159-162shared/scoring/gate_scoring.py:1692
Testable (Pramora) · testable-platform · by saravanan@scrumclaw.ai
27d ago
09-29 16:26
todo high
Move model training to cloud and retrain — prediction models last trained 2025-10-30
Inference runs every 5 min (Scheduler prediction_calls → ml /run_prediction) on 120 DARNN models in gs://nlp_ml_files/prediction_files last written 2025-10-30. Training lives in CoinTrends_Python (local Windows GPU box, localhost Flask chain :17000 → :5000). Target: Cloud Run Job or Vertex AI custom job with GPU, parameterised by asset + minute offset, triggered by Scheduler, creds from Secret Manager, metadata write-back to cryptopredictionslicemaster.
CoinTrends_Python/master_create_update_latest.pyCoinTrends_Python/api_latest.pyCoinTrends_Python/ModelCreation_latest.pygs://nlp_ml_files/prediction_files/
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
from the conversationsaravanan: what are the issues you identified in cointrends? claude: Predictions run on year-old models — the 120 model files were last trained 30 Oct 2025 and nothing retrains them. saravanan: create cointrends in tracker and push these items there
💬 1 comment
10d ago
10-16 19:09
todo high
Fix training pipeline bugs: cursor.commit() and undefined connection in NaN-loss branch
ModelCreation_latest.py calls cursor.commit() — psycopg2 cursors have no commit() (needs cnxn.commit()), and the second NaN branch uses cnxn which is only defined in the first branch. Result: a failed training run never gets marked activeflag='I'. Also .cuda() hard-coded; pyodbc import leftover.
CoinTrends_Python/ModelCreation_latest.py:315-340
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
from the conversationsaravanan: what are the issues you identified in cointrends? claude: The training pipeline has real bugs: cursor.commit() doesn't exist in psycopg2 and the NaN-loss branch uses an undefined connection. saravanan: create cointrends in tracker and push these items there
10d ago
10-16 19:09
todo high
Create least-privilege DB users per service and a read-only analysis role
core-service, ml-core-service and web-service all connect as postgres superuser on a shared instance. Create e.g. cointrends_core (rw on CryptoTrack_Prod.dbo), cointrends_ml (read + prediction tables), cointrends_web (CryptoUserBilling_Prod), cointrends_ro (SELECT only, for analysis/Claude).
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
from the conversationsaravanan: what are the issues you identified in cointrends? claude: There's no read-only database role, and every service connects as the superuser. saravanan: create cointrends in tracker and push these items there
10d ago
10-16 19:09
todo high
Replace log.Fatalf in core-service request paths and goroutines with returned errors
insertDataIntoDB and other handlers call log.Fatalf on upstream/DB errors, which kills the whole Cloud Run instance (CODE_REVIEW #7, #17). Return errors and let the handler respond 500.
crypto538-core-service/main.go::insertDataIntoDBcrypto538-core-service/CODE_REVIEW.md
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
from the conversationsaravanan: what are the issues you identified in cointrends? claude: The core service calls log.Fatalf inside request paths, which kills the whole process on any upstream error. saravanan: create cointrends in tracker and push these items there
10d ago
10-16 19:09
todo high
Generalise per-asset hard-coding — prerequisite for stocks, commodities and indexes
Each coin has its own table family (pricedata, ohlcv, predictiondata, indicators, indicators_plus + view). Coin list is hard-coded in CASE statements in getcryptodata, getpricedataforcurrencies, getcurrencydetails, and in crypto_id == 1 or ... lists in ml-core-service and CoinTrends_Python. Design an asset-agnostic schema (asset master + long-format tables keyed by asset_id) and drive code from cryptomaster/asset master.
dbo.getcryptodatadbo.getpricedataforcurrenciesdbo.getcurrencydetailsml-core-service/main.py::func
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
from the conversationsaravanan: what are the issues you identified in cointrends? claude: Coin-specific logic is hard-coded everywhere; adding any asset means editing many places by hand. saravanan: create cointrends in tracker and push these items there
10d ago
10-16 19:09
todo high
Training 1/5: Refactor CoinTrends_Python into one secret-free training package (merge orchestrator + trainer)
Take *_latest.py versions only. Fold master_create_update_latest.py decision logic (create vs incremental update, check_record_count) and api_latest.py/ModelCreation_latest.py training into one CLI entrypoint: train --asset BTCUSD --minute 15. Remove Flask/localhost HTTP, hardcoded DB host/password, SA key, Windows paths; read config from env. Fix cursor.commit() and NaN-branch bugs (#91). Make device selection automatic (cuda if available else cpu). Once secret-free, this can go into a git repo (unblocks decision #108).
CoinTrends_Python/master_create_update_latest.pyCoinTrends_Python/api_latest.pyCoinTrends_Python/ModelCreation_latest.pyCoinTrends_Python/darnn.py
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
from the conversationsaravanan: where is the model training to be moved to CloudRun (GPU based) claude: Broke #90 into subtasks; step 1 is a single secret-free training entrypoint.
💬 2 comments
10d ago
10-16 19:11
todo high
Training 2/5: Build GPU container image (CUDA PyTorch base) via Cloud Build → Artifact Registry
Dockerfile on a CUDA-enabled PyTorch base, pinned versions, psycopg2 + cloud-sql-python-connector + google-cloud-storage. Push to us-central1-docker.pkg.dev/prj-crypto538-prod-260529/crypto538-container-images/ml-training. Cloud Build config alongside.
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
from the conversationsaravanan: where is the model training to be moved to CloudRun (GPU based) claude: Step 2: GPU container image built by Cloud Build into Artifact Registry.
10d ago
10-16 19:12
todo high
Training 3/5: Create Cloud Run Job with L4 GPU, dedicated service account, Secret Manager creds, task-index fan-out
gcloud run jobs create ml-training --gpu 1 --gpu-type nvidia-l4 (us-central1; confirm GPU quota/region availability first). Dedicated SA with only: Cloud SQL Client, read/write on gs://nlp_ml_files/prediction_files, secret accessor on the DB secret. --tasks = assets × 12 offsets (120 today), --parallelism capped to quota; CLOUD_RUN_TASK_INDEX → (asset, minute). Codify in crypto538-terraform. Note: #98 — only this SA should be able to write model files.
#98crypto538-terraform/environments/prod/main.tf
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
from the conversationsaravanan: where is the model training to be moved to CloudRun (GPU based) claude: Step 3: Cloud Run Job with L4 GPU, least-privilege SA, task-index fan-out over asset × minute.
10d ago
10-16 19:12
todo high
Training 4/5: Run a full retrain and validate new models against predictionvsactual before switching inference
Write new models to a staging prefix first, backtest vs the Oct-2025 models (MAE/RMSE, directional accuracy) on recent data, then promote by updating cryptopredictionslicemaster paths. Keep the old files as rollback.
dbo.predictionvsactualdbo.cryptopredictionslicemaster
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
from the conversationsaravanan: where is the model training to be moved to CloudRun (GPU based) claude: Step 4: full retrain to a staging prefix, backtest vs old models, then promote.
10d ago
10-16 19:12
todo high
Create a dedicated least-privilege DB user for ml-training before scheduling Batch training
Batch training currently connects as `postgres`, the admin of the shared Cloud SQL instance crypto-track-321e8b45, which other products also use. Before scheduling, create a user with access to only the CryptoTrack_Prod objects training needs: getcryptodata, cryptomaster, cryptopredictionslicemaster and updatetracking. Store its password in a new secret and point batch/*.json at it.
HopewellPartners/ml-training batch/*.json#83-#87
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
7d ago
10-20 02:16
todo high
PR "Coin Roster": make cryptomaster the only coin list; onboard any coin with dbo.onboard_coin()
8 steps, one PR per layer: DB onboarding function; DB collection; DB readers; core-service roster cache; ml-core-service; webapp; ml-training Batch task count; end-to-end proof with a new coin. Full instructions: cointrends/plans/PR-coin-roster.md (also in the project docs as claude/PR-coin-roster.md). Open questions: ship before or after Locked Door (#129); how DDL gets executed; which repo holds DB migrations.
plans/PR-coin-roster.md#129#118
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
💬 2 comments
6d ago
10-20 12:53
todo high
Re-enable stopped feeds: news, Fear & Greed, gainers/losers, trade recommendations
fetchCryptoNews, insertFearAndGreedHandler commented out in core insertDataIntoDB; recommendations stopped 2025-03; gainers 2025-10-13. Uncomment / re-schedule, refresh provider keys (via Secret Manager). Brings Market Insights back to life. Gap-fill #1.
crypto538-core-service/main.go
CoinTrends.ai · cointrends · by saravanan@scrumclaw.ai
💬 1 comment
5d ago
10-22 02:44
todo high
BRD23-C: CB label mapping + review/confirm endpoints + admin queue
Map College Board labels to Skill via skill_aliases (exact match on the normalised form). Unmatched rows persist with skill_id NULL and the raw label, are excluded from weak-topic ranking until mapped, then count retroactively once an alias exists. Resolution is an ADMIN job, never the student's (REQ-23.14). CB's report taxonomy is a small fixed set, so each unknown label is mapped once and resolved for everyone; after a handful of real reports the queue goes quiet. Students only ever correct numbers they can verify against the report in their hand — they never see our internal taxonomy. No dependency on the vision model — can start immediately, in parallel with BRD23-D.
backend/app/models/score_report.pybackend/alembic/versions/030_score_report_history.py
Adaptive SAT · adaptive-sat · by saravanan@scrumclaw.ai
3d ago
10-24 03:00
todo high
Pricing $1.99/mo + $19.99/yr: Stripe prices + ASC price edit + reviewer notes
Code strings are shipped (#132). Remaining is dashboard config: - Stripe: price amounts are immutable, so create NEW price objects, then add new secret versions for STRIPE_PRICE_ID and STRIPE_PRICE_ID_MONTHLY. - App Store Connect: price is a property of the existing subscriptions — edit com.adaptivesat.premium.annual and .monthly in place. Product IDs unchanged, so RevenueCat needs nothing. - CRITICAL: the App Review notes on version 1.0 currently quote "$0.99 per month" and "$9.99 per year". Update before submitting or the reviewer sees notes that contradict the live price — a rejection risk on its own. Trial stays annual-only, so billing_service.give_trial needs no change. No existing subscribers, so no grandfathering or price-increase consent flow — materially harder to change later.
PR#132
Adaptive SAT · adaptive-sat · by saravanan@scrumclaw.ai
3d ago
10-24 03:00

Add an item