Commit graph

26 commits

Author SHA1 Message Date
philipp
3c1ad1dde4 Clarify executor controls and alert history
All checks were successful
deploy / deploy (push) Successful in 36s
Proof: Dashboard system controls and alert history stay operator-legible under runtime health flapping without implying nonexistent arm behavior.

Assumptions: Manual executor arming remains intentionally absent from the dashboard for this turn, so resume should mean intake resume only.

Still fake: Ops-sentinel still emits raw runtime transition churn underneath; this change collapses it in the dashboard instead of changing runtime alert hysteresis.
2026-04-08 21:27:03 +02:00
philipp
69be378784 Refine ingest dashboard health semantics
All checks were successful
deploy / deploy (push) Successful in 36s
Proof: Connected ingest without recent quotes now renders as a warning-level no-recent-quotes state instead of a generic critical service failure, while disconnected and publish-stalled cases remain critical.

Assumptions: Operators need transport failure and quote-quiet conditions separated on the service card; stale quote truth should still block trust without pretending the websocket is broken.

Still fake: External alert delivery remains unconfigured; live alert routing is still through the generic webhook path only when configured.
2026-04-08 20:36:11 +02:00
philipp
903287ec21 Ship full operator dashboard frontend
All checks were successful
deploy / deploy (push) Successful in 1m5s
Proof: Include the full operator-dashboard frontend source tree so the deployment image can build and serve the dashboard UI that consumes runtime health severity.

Assumptions: The current static dashboard source tree in the worktree is the intended frontend for this turn and belongs with the deployed operator-dashboard backend.

Still fake: External alert receiver remains unconfigured; this commit only resolves the dashboard asset source gap in the deploy.
2026-04-08 19:41:43 +02:00
philipp
2811a84deb Ship dashboard build config
Some checks failed
deploy / deploy (push) Has been cancelled
Proof: Include the Vite config required for the dashboard-builder image stage to build operator-dashboard static assets during deployment.

Assumptions: The current Vite config in the worktree is the intended build config for the deployed operator-dashboard frontend.

Still fake: External alert receiver remains unconfigured; this commit only resolves the image-build blocker for the dashboard deploy.
2026-04-08 19:40:40 +02:00
philipp
3226a68613 Build dashboard assets in runtime image
Some checks failed
deploy / deploy (push) Has been cancelled
Proof: Include the multistage Dockerfile needed to build operator-dashboard static assets and copy them into the production image so the deployed dashboard backend can serve the new UI.

Assumptions: The dashboard frontend should be built during image creation rather than committed as generated dist artifacts.

Still fake: External alert receiver remains unconfigured; this commit only resolves the live dashboard asset packaging blocker.
2026-04-08 19:39:44 +02:00
philipp
3fd0d8fe46 Ship dashboard postgres loaders
All checks were successful
deploy / deploy (push) Successful in 23s
Proof: Include the postgres loader exports required by the deployed operator-dashboard backend bootstrap path.

Assumptions: The current postgres loader additions in the worktree are part of the operator-dashboard runtime surface and intended to ship with the dashboard backend.

Still fake: External alert delivery remains unconfigured; this commit only resolves the live operator-dashboard startup blocker.
2026-04-08 19:38:19 +02:00
philipp
b8d731408e Fix dashboard runtime deploy dependencies
All checks were successful
deploy / deploy (push) Successful in 22s
Proof: Include operator dashboard auth module and runtime package manifest updates required for the deployed operator-dashboard and ops-sentinel processes to start successfully.

Assumptions: React and ws belong in production dependencies because operator-dashboard now ships in the runtime image; operator-dashboard-auth is part of the deployed backend surface.

Still fake: External alert receiver remains unconfigured; this commit only fixes rollout blockers for the runtime-health/dashboard deploy.
2026-04-08 19:36:45 +02:00
philipp
0b7e5e2e6c Implement runtime health sentinel and angry dashboard
All checks were successful
deploy / deploy (push) Successful in 26s
Proof: Runtime health sentinel, alert routing, and anomaly detection for stale/disconnected quote truth, truthful dashboard severity, webhook notifications, and safe executor containment.

Assumptions: Existing control APIs remain the service-local truth surface; external notification stays as a generic webhook sink; executor disarm is an allowed non-fund-moving containment action; current dashboard/operator files in the worktree belong to this turn and are intended to ship together.

Still fake: No live external receiver is configured; webhook delivery is implemented but unverified end-to-end in production; cluster rollout still depends on deploying the new image; no automatic deployment restart path was added.
2026-04-08 19:35:07 +02:00
philipp
af74c48f29 Persist armed state across rollout
All checks were successful
deploy / deploy (push) Successful in 21s
Proof: Strategy and executor arm state now survives pod restarts through durable control-state files mounted in their service state directories.
Assumptions: The strategy-state PVC can be seeded before the first rollout restart, and both service state directories remain writable on the cluster.
Still fake: Armed-state durability is local to the cluster volumes; there is no cross-cluster or database-backed operator control-state replication.
2026-04-03 20:08:10 +02:00
philipp
860471f267 Add pre-credit funding visibility and durable alerts
Some checks failed
deploy / deploy (push) Failing after 2s
Proof: Implement the active turn for pre-credit funding visibility and durable operator alerts while keeping spendable inventory truth limited to bridge/verifier credit.

Assumptions: The BTC deposit handle can be observed through a mempool.space-compatible API, bridge recent_deposits remains the credit truth for correlation, and pausing market-reference-ingest or inventory-sync briefly for alert validation is safe without disarming strategy or executor.

Still fake: Gnosis pre-credit observation is not implemented, executor failure alert validation may still depend on an existing real failure unless a separate live failure is explicitly approved, and a new live deposit is still required to prove a fresh pre-credit-to-credit path if no suitable recent funding exists.
2026-04-03 17:50:39 +02:00
philipp
54dc05a94c Archive first live trade loop and open funding visibility turn
Proof: Preserve the completed first live BTC/EURe trade loop and establish the next approved implementation proof around pre-credit funding visibility and operator alerts.
Assumptions: The live-trade loop is sufficiently proven by the recorded deposits, withdrawals, durable command/result chain, and successful mainnet quote responses; the next highest-value slice is operational visibility rather than new execution breadth.
Still fake: The newly opened funding-visibility and alert turn is planning only; no pre-credit watcher or durable alert evaluator is implemented yet.
2026-04-03 01:07:02 +02:00
philipp
16e7b79978 Add durable portfolio metrics
All checks were successful
deploy / deploy (push) Successful in 22s
Proof: Persist portfolio value and PnL snapshots from the live inventory and reference-price path so operators can inspect trading performance from repo-controlled data.
Assumptions: The last credited inventory snapshot before the first live command is the correct baseline for trade-driven PnL, and EURe remains explicit 1:1 with EUR.
Still fake: The new portfolio metrics and watch output are implemented and tested locally but are not live until the updated app image is deployed to k3s.
2026-04-03 01:02:27 +02:00
philipp
b4186d9715 Add configured withdrawal defaults
All checks were successful
deploy / deploy (push) Successful in 22s
Proof: The funded NEAR Intents operator path should have a stable configured withdrawal destination for the active assets so exits do not depend on retyping recipient addresses.

Assumptions: Active asset withdrawal destinations are long-lived operator settings and can safely live in runtime config; actual withdrawals still require explicit unfreeze and operator action.

Still fake: Strategy and executor remain disarmed, no live trade quote has been submitted, and the live withdrawal transaction itself has not been exercised yet.
2026-04-02 12:38:19 +02:00
philipp
3f0a119987 Add operator withdrawal path
All checks were successful
deploy / deploy (push) Successful in 24s
Proof: The active NEAR Intents funded market-maker loop needs a first-class operator withdrawal action so funded inventory can be exited through repo-controlled code rather than manual follow-up.

Assumptions: The configured signer key is also a full-access key on the named NEAR account, and external-chain exits for active OMFT assets are triggered by intents.near::ft_withdraw with the token contract as receiver_id plus memo=WITHDRAW_TO:<destination>.

Still fake: Strategy and executor remain disarmed, no live inventory is credited yet, and no live mainnet trade quote has been submitted.
2026-04-02 12:24:59 +02:00
philipp
57eb540b6e Fix shared state persistence
All checks were successful
deploy / deploy (push) Successful in 22s
Proof: Liquidity manager must persist live deposit handles and funding observations so the active NEAR Intents proof can reach credited inventory and real execution.

Assumptions: Services commonly mutate store.getState() in place before calling setState, so the state store must preserve same-reference updates instead of clearing them.

Still fake: Strategy and executor remain disarmed, no live inventory is credited yet, and no live mainnet quote response has been sent.
2026-04-02 10:13:25 +02:00
philipp
d6fc99dc60 Fix live ops regressions
All checks were successful
deploy / deploy (push) Successful in 43s
Proof: active BTC/EURe tradeable loop on k3s must expose funding state cleanly, preserve durable history, and avoid inheriting dummy executor state.

Assumptions: retained Kafka topics may contain legacy dummy records; those should be tolerated in history ingestion without weakening the current live command shape.

Still fake: internal inventory is still unfunded, strategy and executor remain disarmed, and no live quote response has been submitted yet.
2026-04-02 10:07:54 +02:00
philipp
41b9ec680b Implement funded NEAR Intents trade loop
Some checks failed
deploy / deploy (push) Failing after 1m35s
Proof: first non-mocked tradeable loop for one pair using funded NEAR Intents inventory, Kafka, and PostgreSQL.

Assumptions: solver-side execution is performed by signed token_diff quote responses over the Solver Relay; EURe is treated as 1:1 with EUR; k3s runtime uses unrip-dev.near as the named signer account.

Still fake: signer key is not yet registered on intents.near, strategy and executor remain disarmed by default, and no live mainnet quote response has been submitted from this repo yet.
2026-04-02 10:01:15 +02:00
philipp
d13b20fb24 Fix default near intents pair id
All checks were successful
deploy / deploy (push) Successful in 19s
2026-04-01 10:27:45 +02:00
philipp
d8d9a34db5 Add near intents control API
All checks were successful
deploy / deploy (push) Successful in 20s
2026-04-01 10:11:33 +02:00
philipp
6e635c32e4 Harden deploy runner checkout
All checks were successful
deploy / deploy (push) Successful in 18s
2026-04-01 01:19:25 +02:00
philipp
8b58681c35 Silence KafkaJS client logs
Some checks failed
deploy / deploy (push) Failing after 0s
2026-04-01 01:07:10 +02:00
philipp
f35f64513f Fix Forgejo push auth bootstrap
All checks were successful
deploy / deploy (push) Successful in 33s
2026-04-01 01:02:14 +02:00
philipp
24a5002d1d Reduce ingest scope and bootstrap app deploy 2026-04-01 00:09:10 +02:00
philipp
086ec01597 fix: bound deploy and topic storage growth 2026-03-30 17:57:53 +02:00
philipp
2b247c8550 feat: add standalone app deploy workflow 2026-03-30 17:39:15 +02:00
Philipp
03ce6546a4 refactor: isolate unrip project into projects folder 2026-03-29 14:33:19 +02:00