Skip to content

chore(release): v0.5.0 — Wallapop 'hacer oferta' flow - #57

Merged
ifuensan merged 1 commit into
mainfrom
chore/release-0.5.0
Jul 23, 2026
Merged

chore(release): v0.5.0 — Wallapop 'hacer oferta' flow#57
ifuensan merged 1 commit into
mainfrom
chore/release-0.5.0

Conversation

@ifuensan

@ifuensan ifuensan commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Release housekeeping for v0.5.0: pyproject.toml 0.4.4 → 0.5.0 (the sole runtime version source), CHANGELOG entry covering #55 (offer flow) + #56 (OpenSpec archive), README status blurb + recommended pinned tag, and the ROADMAP burn-in tag.

Minor bump rationale: schema migration 0004 + a new operator surface. Zero behaviour change until an entry opts in via salvager offer enable.

After merge: tag v0.5.0 on the squash commit → release workflow builds :0.5.0 / :0.5 / :latest → GHCR manifest verification → deploy to hermes001 under the hard rules (pull first, then quadlet).

🤖 Generated with Claude Code

https://claude.ai/code/session_01Djngz3hScLAcRoyKtBCZgb

Summary by CodeRabbit

  • New Features
    • Documented the Wallapop “hacer oferta” workflow, including offer calculations, negotiation alerts, budget limits, and lockout behavior.
  • Documentation
    • Updated release information to version 0.5.0.
    • Added guidance for using the recommended 0.5.0 container image.
    • Promoted the Wallapop offer workflow specification.
  • Chores
    • Bumped the project version to 0.5.0.

Version bump + CHANGELOG entry for #55/#56; README status blurb and
recommended pinned tag, ROADMAP burn-in tag → 0.5.0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Djngz3hScLAcRoyKtBCZgb
@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The project version is bumped to 0.5.0. Release notes document the Wallapop offer flow and related hardening, while README and roadmap deployment guidance updates pinned image references from 0.4.4 to 0.5.0.

Changes

0.5.0 Release Promotion

Layer / File(s) Summary
Release metadata and documentation
pyproject.toml, CHANGELOG.md, README.md, ROADMAP.md
The project version, changelog, release status, roadmap guidance, and recommended container image references are updated for version 0.5.0.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and matches the release bump centered on the Wallapop 'hacer oferta' flow.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/release-0.5.0

Comment @coderabbitai help to get the list of available commands.

@sonarqubecloud

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@README.md`:
- Line 13: Update the v1.0 promotion-gate statement in the README status
paragraph to accept either one completed Phase 2 purchase or one verified Phase
2 abort, matching the criterion defined in ROADMAP.md while preserving the
existing two-week continuous live-traffic requirement.

In `@ROADMAP.md`:
- Line 17: Update the surrounding ROADMAP.md status references to identify
v0.5.0 as the current release and replace the outdated v0.2.x Phase 2
description with wording consistent with the 0.5.0 release. Keep the existing
production burn-in and promotion criteria unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ab8136ee-10fc-4203-b4e7-aedfef4775f8

📥 Commits

Reviewing files that changed from the base of the PR and between 97bd0ab and b89affa.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (4)
  • CHANGELOG.md
  • README.md
  • ROADMAP.md
  • pyproject.toml

Comment thread README.md
**Distribution:** single Docker image, single docker-compose service.

> **Status (July 2026): `v0.4.4` — Phase 1 + Phase 2 feature-complete preview, Phase 2 wired live.** All Epic 2–5 code shipped in v0.2.0; v0.2.1–v0.2.2 patched the Docker image; v0.2.3 stabilised the Wallapop adapter against the SPA's current production traffic (v3 `/search/section` endpoint, browser-TLS impersonation via `curl_cffi`, transparent JWT refresh, reserved-listing routing); v0.3.0 wired the Phase 2 autonomous-purchase loop end-to-end (BuyOrchestrator composed with all collaborators, marketplace-dispatched checkout), the Telegram callback listener, an in-cycle reserved-comp line on alerts, and a pretty-log toggle; v0.3.1 adds the clickable deep link to the listing on every alert (FR18); v0.3.2 ships the price-parser smoke-test in the image and runs it (startup + daily) so Phase 2 is actually armable in production; v0.3.3 makes every price ceiling shipping-aware — alert and buy gates plus receipt reconciliation compare the delivered buyer total (item + shipping + Wallapop's Protección fee), and alerts show the breakdown; v0.3.4 extends that total with an estimated flat import-charges buffer for eBay listings located outside the EU (`pricing.assumed_import_charges_eur`, default 3,63 €); v0.3.5 moves LLM evaluation to `gemini-2.5-flash` (Google retired 2.0-flash) and clips over-long takes instead of discarding valid verdicts; v0.4.0 adds live-updating alerts — dispatched alerts are watched (`alerts.watch_days`) and the original Telegram message edits itself on reserved flips and price drops, with a ping for big drops; v0.4.1 classifies a pre-buy 404 as `listing_gone` (fail-closed, no circuit hit); v0.4.2 reconciles by internal listing id after Wallapop dropped slug support; v0.4.3 restores the alert keyboard after every buy outcome; v0.4.4 is a tooling-only release carrying the passed rendering re-audit and the extended `dev emit-alert` catalog. The daemon polls Wallapop + eBay.es, evaluates listings against the wishlist via Gemini Flash or Claude Haiku, dispatches Telegram alerts, and the Phase 2 autonomous-purchase loop runs behind the safety stack and the non-bypassable Telegram tap. **Not yet validated in production**: the operator's burn-in window is in progress; v1.0 promotion is gated on at least 2 weeks of continuous live-traffic operation + one completed Phase 2 purchase. Recommended pinned tag: `ghcr.io/ifuensan/salvager:0.4.4`. See [CHANGELOG.md](CHANGELOG.md) for release notes and [ROADMAP.md](ROADMAP.md) for the v1.0 path.
> **Status (July 2026): `v0.5.0` — Phase 1 + Phase 2 feature-complete preview, Phase 2 wired live.** All Epic 2–5 code shipped in v0.2.0; v0.2.1–v0.2.2 patched the Docker image; v0.2.3 stabilised the Wallapop adapter against the SPA's current production traffic (v3 `/search/section` endpoint, browser-TLS impersonation via `curl_cffi`, transparent JWT refresh, reserved-listing routing); v0.3.0 wired the Phase 2 autonomous-purchase loop end-to-end (BuyOrchestrator composed with all collaborators, marketplace-dispatched checkout), the Telegram callback listener, an in-cycle reserved-comp line on alerts, and a pretty-log toggle; v0.3.1 adds the clickable deep link to the listing on every alert (FR18); v0.3.2 ships the price-parser smoke-test in the image and runs it (startup + daily) so Phase 2 is actually armable in production; v0.3.3 makes every price ceiling shipping-aware — alert and buy gates plus receipt reconciliation compare the delivered buyer total (item + shipping + Wallapop's Protección fee), and alerts show the breakdown; v0.3.4 extends that total with an estimated flat import-charges buffer for eBay listings located outside the EU (`pricing.assumed_import_charges_eur`, default 3,63 €); v0.3.5 moves LLM evaluation to `gemini-2.5-flash` (Google retired 2.0-flash) and clips over-long takes instead of discarding valid verdicts; v0.4.0 adds live-updating alerts — dispatched alerts are watched (`alerts.watch_days`) and the original Telegram message edits itself on reserved flips and price drops, with a ping for big drops; v0.4.1 classifies a pre-buy 404 as `listing_gone` (fail-closed, no circuit hit); v0.4.2 reconciles by internal listing id after Wallapop dropped slug support; v0.4.3 restores the alert keyboard after every buy outcome; v0.4.4 is a tooling-only release carrying the passed rendering re-audit and the extended `dev emit-alert` catalog; v0.5.0 adds the operator-tapped Wallapop "hacer oferta" flow — a 💰 Ofertar button behind the same safety stack as Comprar, plus negotiable-band alerts for listings just over the ceiling (opt-in per entry via `salvager offer enable`). The daemon polls Wallapop + eBay.es, evaluates listings against the wishlist via Gemini Flash or Claude Haiku, dispatches Telegram alerts, and the Phase 2 autonomous-purchase loop runs behind the safety stack and the non-bypassable Telegram tap. **Not yet validated in production**: the operator's burn-in window is in progress; v1.0 promotion is gated on at least 2 weeks of continuous live-traffic operation + one completed Phase 2 purchase. Recommended pinned tag: `ghcr.io/ifuensan/salvager:0.5.0`. See [CHANGELOG.md](CHANGELOG.md) for release notes and [ROADMAP.md](ROADMAP.md) for the v1.0 path.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Align the v1.0 promotion gate with ROADMAP.md.

Line 13 requires one completed Phase 2 purchase, but ROADMAP.md Lines 29-30 also accept one verified Phase 2 abort. Use the same criterion in both documents to avoid inconsistent release decisions.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` at line 13, Update the v1.0 promotion-gate statement in the README
status paragraph to accept either one completed Phase 2 purchase or one verified
Phase 2 abort, matching the criterion defined in ROADMAP.md while preserving the
existing two-week continuous live-traffic requirement.

Comment thread ROADMAP.md
- ✓ **Epic 5** (Phase 2 Autonomous Purchase + Safety Stack) — Phase 2 listing/buy renderers, TinyFish browser adapter (Wallapop Pay + eBay checkout), cross-source + receipt reconciliation, per-purchase circuit breaker, daily synthetic smoke test, BuyOrchestrator, `phase2 enable/disable/status/smoke-test/reconcile` CLI, payment-rail enforcement CI lint, 90% critical-path coverage gate, release-audit tooling.

**Promotion to `v1.0.0` is gated on production burn-in**, not feature completion. Recommended pinned tag for burn-in: `ghcr.io/ifuensan/salvager:0.4.4`. See [`CHANGELOG.md`](CHANGELOG.md) for the release notes and the `[1.0.0] — future` placeholder spelling out the promotion criteria.
**Promotion to `v1.0.0` is gated on production burn-in**, not feature completion. Recommended pinned tag for burn-in: `ghcr.io/ifuensan/salvager:0.5.0`. See [`CHANGELOG.md`](CHANGELOG.md) for the release notes and the `[1.0.0] — future` placeholder spelling out the promotion criteria.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update the stale roadmap status alongside the new burn-in tag.

This line now promotes 0.5.0, while the surrounding roadmap still identifies v0.2.3 as the current state and describes v0.2.x as containing all Phase 2 code. Refresh those status references so the roadmap consistently represents the 0.5.0 release.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ROADMAP.md` at line 17, Update the surrounding ROADMAP.md status references
to identify v0.5.0 as the current release and replace the outdated v0.2.x Phase
2 description with wording consistent with the 0.5.0 release. Keep the existing
production burn-in and promotion criteria unchanged.

@ifuensan
ifuensan merged commit 908d29e into main Jul 23, 2026
9 checks passed
@ifuensan
ifuensan deleted the chore/release-0.5.0 branch July 23, 2026 13:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant