chore(main): release skills 0.14.0#77
Merged
whoabuddy merged 1 commit intoMar 4, 2026
Merged
Conversation
065630c to
40f2ec4
Compare
40f2ec4 to
42ac1d6
Compare
Contributor
Author
|
🤖 Created releases: 🌻 |
This was referenced Apr 6, 2026
Closed
10 tasks
4 tasks
whoabuddy
pushed a commit
to diegomey/skills
that referenced
this pull request
May 11, 2026
…ner) Submitted by @cliqueengagements (Micro Basilisk — Agent aibtcdev#77) via the AIBTC x Bitflow Skills Pay the Bills competition. Competition PR: BitflowFinance/bff-skills#494
whoabuddy
pushed a commit
to diegomey/skills
that referenced
this pull request
May 11, 2026
…ner) Submitted by @cliqueengagements (Micro Basilisk — Agent aibtcdev#77) via the AIBTC x Bitflow Skills Pay the Bills competition. Competition PR: BitflowFinance/bff-skills#494
whoabuddy
pushed a commit
to diegomey/skills
that referenced
this pull request
May 11, 2026
…ner) Submitted by @cliqueengagements (Micro Basilisk — Agent aibtcdev#77) via the AIBTC x Bitflow Skills Pay the Bills competition. Competition PR: BitflowFinance/bff-skills#494
whoabuddy
added a commit
that referenced
this pull request
May 11, 2026
…cliqueengagements) * feat: add hodlmm-inventory-balancer skill (BFF Skills Comp Day 21 winner) Submitted by @cliqueengagements (Micro Basilisk — Agent #77) via the AIBTC x Bitflow Skills Pay the Bills competition. Competition PR: BitflowFinance/bff-skills#494 * fix(hodlmm-inventory-balancer): address arc0btc PR #379 review + reviewer findings arc0btc CHANGES_REQUESTED on aibtcdev/skills #379 surfaced a blocking 3-leg recovery gap + 4 lesser items. Internal code-review pass surfaced 2 CRITICAL + 3 HIGH on the patches. C1 regression (lookup_failed misclassified) caught on third pass. Final 3-PC envelope on withdraw-slice (DLP burn + X/Y receive floors) shipped after on-chain verification of pool-token asset name across 3 different DLMM pools. Second-pass review surfaced one additional HIGH on the 3-leg planner (swap input sized to expected withdraw output instead of guaranteed-delivered min); fix shipped inline. arc's review (closed): - BLOCKING: 3-leg withdraw_done_swap_pending / withdraw_done_swap_done_redeposit_pending intermediate states had no resume code; re-running just hit the same block forever. Snapshot swap+redeposit plans into rebalance_pending_details at leg-1 success; resume branches now verify prior leg via probeTxStatus and broadcast remaining legs from snapshot. Added reset-marker --pool <id> --confirm subcommand as escape hatch. - SUGGESTION: empty post-conditions on withdraw + redeposit. Withdraw now has 3-PC envelope (DLP burn cap on sender + X/Y receive floors on pool). Redeposit has wallet-level send-cap pins (sender willSendLte total x 1.05 headroom). - QUESTION: 120s spawnSync timeout on redeploy. Bumped to 600s to match waitForTxConfirmation. - NIT: fetchPools called twice in doctor. Cached. Internal review: - CRITICAL: cooldown gate blocked legitimate 3-leg resume (resume doesn't invoke move-liquidity CLI). State-load reordered before cooldown check; isThreeLegResume short-circuits the gate. - CRITICAL: pending-vs-aborted hint conflation. probeTxStatus returns ok:false for pending, lookup_failed, and aborted. Three-bucket routing: pending and lookup_failed -> safe-wait (do not reset-marker); only positively-confirmed terminal-non-success -> reset-marker hint. - HIGH: no gas-reserve check on resume paths. Added 2x / 1x floor guards scaled to remaining legs. - HIGH: DLP burn pin on withdraw (asset name pool-token verified on tx 0x89315a8b... burn event + 2 additional pools via /v2/contracts/interface). - HIGH (second-pass review): leg-2 swap input sized to expectedXRaw or expectedYRaw (best-case withdraw output) - withdraw landing at min floor causes swap to abort on insufficient input balance, leaving stuck withdraw_done_swap_pending marker. Fix: swapInRaw = overWeightX ? totalMinX : totalMinY. Tradeoff: up to slippageBps of overweight token sits in wallet post-cycle, absorbs into next cycle's accumulator. Build: bun build --no-bundle exits 0. Live proofs: - Withdraw PC envelope: 0x89315a8b935b3e4db32ad753b77af4bf853f28dc5b04ca6aa25d7cca9fc1cf8a - Swap dual-pin (unchanged): 0xf4f4932800a80234845a8d199556ad9c0ff4aa99874a95c819c13779b164cbc8 Co-Authored-By: Micro Basilisk <noreply@anthropic.com> * fix(hodlmm-inventory-balancer): stale-price guard on 3-leg resume snapshot Resume from withdraw_done_swap_pending was reading pending.swap (snapshotted at leg-1 success) and broadcasting leg 2 directly. If active bin price moved beyond slippage_bps between legs (long-wait resume / market shock), the contract aborts via ERR_MINIMUM_RECEIVED because actual output at current price falls below snapshot's minimum_amount_out_raw - leaving a stuck withdraw_done_swap_pending marker. Graceful failure (no fund loss) but a real-world likely outcome on long-wait resumes. Fix: before broadcasting leg 2 on resume, re-fetch active bin price (reuse gatherPool's poolBins via destructure rename), recompute expected swap output at current price (direction-aware: X->Y multiplies by price, Y->X divides), and refuse with blocked status price_moved_beyond_slippage_replan_required if the snapshot's minimum_amount_out_raw is no longer reachable. Operator clears via reset-marker and starts fresh at current ratio. Direction-aware comparison mirrors planRebalanceWithdraw lines 939-942 so this guard's expected-output formula stays in lockstep with how the snapshot was sized. PRICE_SCALE is the bin-price scaling factor; bin price represents raw_y per raw_x (raw_y = raw_x * price / PRICE_SCALE). Refuse-with-clean-error chosen over re-quote-and-replan: replanning mid-cycle would cascade into redeposit sizing and silently break the slippage contract the operator signed up for. reset-marker is the one-line escape; operator's choice when to re-engage. Defensive log on missing-active-bin branch (Bitflow API anomaly) makes post-mortem diagnosis easier without spamming normal-path logs. Build: bun build --no-bundle exits 0. Two-pass code-review on the new guard (zero CRITICAL/HIGH after second pass; HIGH-1 field-naming and MEDIUM-1 diagnostic log addressed inline; LOW-1 first-pass leg-2 symmetry deferred per locked design scope). Co-Authored-By: Micro Basilisk <noreply@anthropic.com> * fix(hodlmm-inventory-balancer): defensive 0x-strip on Hiro tx lookups (arc0btc PR #2 carryover) Closes arc0btc's carryover item from his APPROVED PR #2 review: > "The 0x\${txId} interpolation in probeTxStatus is unchanged. Worst-case > a double-0x routes to lookup_failed (safe-wait), not a stuck marker. > Still a verify-before-cut-over item — confirm broadcastTransaction > returns the txid without a 0x prefix before first live run with this > code. Not a blocker." Empirically verified: existing live txs 0x89315a8b... (withdraw), 0xf4f49328... (swap), 0x5195822e..., 0x135f490c... all returned valid Hiro responses through the un-stripped 0x\${txId} interpolation, which means @stacks/transactions::broadcastTransaction currently returns the txid without a 0x prefix. The patch is forward-looking defense, not a current-bug fix. Patch: txId.replace(/^0x/, "") at both interpolation sites: - waitForTxConfirmation:1245 - probeTxStatus:1273 Anchored regex strips at most one leading "0x" (no mid-string false positives), no-ops on already-bare hex. If broadcastTransaction's return shape ever changes in an SDK upgrade, the URL stays correctly single- prefixed instead of degrading to lookup_failed (safe-wait). Build: bun build --no-bundle exits 0. Code-reviewer pass: zero CRITICAL/ HIGH/MEDIUM/LOW. Patch is ≤10 lines, regex-only, no new external-system calls — falls under the skip-second-pass criteria from feedback_two_pass_code_review_for_safety_paths.md. Co-Authored-By: Micro Basilisk <noreply@anthropic.com> * chore(hodlmm-inventory-balancer): regenerate manifest to include reset-marker subcommand The fix commits added a reset-marker subcommand for clearing stuck 3-leg intermediate state. Regenerate skills.json to reflect the updated arguments. Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: cliqueengagements <cliqueengagements@users.noreply.github.com> Co-authored-by: cliqueengagements <83251815+cliqueengagements@users.noreply.github.com> Co-authored-by: Micro Basilisk <noreply@anthropic.com> Co-authored-by: Jason Schrader <whoabuddy@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 I have created a release beep boop
0.14.0 (2026-03-04)
Features
Bug Fixes
This PR was generated with Release Please. See documentation.