Skip to content

chore(main): release skills 0.14.0#77

Merged
whoabuddy merged 1 commit into
mainfrom
release-please--branches--main--components--skills
Mar 4, 2026
Merged

chore(main): release skills 0.14.0#77
whoabuddy merged 1 commit into
mainfrom
release-please--branches--main--components--skills

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented Mar 4, 2026

🤖 I have created a release beep boop

0.14.0 (2026-03-04)

Features

  • dual-stacking: add dual stacking enrollment skill (#76) (07ca9fb)
  • nostr: add nostr skill (#73) (2a03684)
  • what-to-do: add project board scanning workflow (#74) (6bb4904), closes #28

Bug Fixes

  • signing: align SIP-018 domain parsing with MCP shape (#75) (e91309f)

This PR was generated with Release Please. See documentation.

@github-actions github-actions Bot force-pushed the release-please--branches--main--components--skills branch 2 times, most recently from 065630c to 40f2ec4 Compare March 4, 2026 23:36
@github-actions github-actions Bot force-pushed the release-please--branches--main--components--skills branch from 40f2ec4 to 42ac1d6 Compare March 4, 2026 23:38
@whoabuddy whoabuddy merged commit ebb8044 into main Mar 4, 2026
@github-actions
Copy link
Copy Markdown
Contributor Author

github-actions Bot commented Mar 4, 2026

🤖 Created releases:

🌻

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add project board scanning to agent automated cycles

1 participant