Skip to content

Comments

feat(release): ship v0.2.0 CLI-first digest pipeline and release hardening#6

Merged
seanbrar merged 43 commits intomainfrom
release/v0.2
Feb 14, 2026
Merged

feat(release): ship v0.2.0 CLI-first digest pipeline and release hardening#6
seanbrar merged 43 commits intomainfrom
release/v0.2

Conversation

@seanbrar
Copy link
Owner

@seanbrar seanbrar commented Feb 14, 2026

Why

v0.2.0 is the first release focused on a practical CLI workflow: triage papers quickly, emit deterministic digests, and keep delivery options script-friendly.

What this PR delivers

  • Introduces a CLI-first workflow with run, init, and doctor (paperweight still defaults to run for backward-compatible invocation).
  • Refactors the pipeline to do metadata triage first, then hydrate full content only for shortlisted papers.
  • Adds deterministic digest output with stdout as the default delivery mode, plus atom and optional email paths.
  • Adds JSON output and --max-items for automation and scripting use cases.
  • Adds stricter operational checks via doctor --strict for CI/release gating.
  • Expands foundations for reliability and scale: PostgreSQL storage support and local arXiv mirror tooling for offline integration tests.
  • Migrates dependency/tooling workflow to uv, updates CI to required checks, and adds trusted publishing release workflow.
  • Finalizes release packaging by bumping to 0.2.0 and excluding test-only mocks from distribution artifacts.

Upgrade and compatibility notes

  • Python baseline remains >=3.10.
  • Notifier/email configuration is now optional unless email delivery is explicitly enabled.
  • This is a feature release (not marked as a breaking SemVer major).

Validation performed

  • make lint
  • make test (95 passed, 4 skipped)
  • make typecheck
  • uv build --out-dir dist_v020_check (verified src/mocks is excluded from wheel/sdist)

seanbrar and others added 30 commits September 12, 2024 01:43
Replace setup.py and requirements files with pyproject.toml and uv.lock. Add Makefile.
Sean Brar and others added 13 commits February 7, 2026 11:20
## Summary

Replace the vendored Pollux source (`src/pollux/`) with the `pollux-ai` PyPI package (`1.0.0rc1`) and adopt its full feature set: `Source.from_text()` for structured paper content, `RetryPolicy` for built-in retry with exponential backoff, and type-safe provider configuration.

## Related issue

None

## Test plan

All existing tests pass with no modifications—the mock target (`paperweight.analyzer.run`) is unchanged by the PyPI switch. The boundary tests in `test_analyzer.py` cover LLM fallback behavior (missing key, invalid provider) and happy-path summary extraction.

```
make test       # 73 passed, 4 skipped
make typecheck  # 0 errors, 11 source files
```

No new tests added: the behavioral contract is identical—`run()` is still called with the same arguments and returns the same `ResultEnvelope`. The integration differences (Source vs string concat, RetryPolicy vs tenacity) are internal to the call and tested by Pollux itself.

## Notes

- **RetryPolicy replaces tenacity for the LLM call.** `tenacity` remains a project dependency because `scraper.py` still uses it. The Pollux `RetryPolicy(max_attempts=3)` provides equivalent behavior (exponential backoff + jitter) without the decorator.
- **`Source.from_text()` separates prompt from context.** Instead of string-concatenating paper content into the prompt, we pass it as a structured `Source`. This lets Pollux handle the prompt/content boundary and potentially apply provider-specific optimizations (e.g., caching).
- **Mypy stubs ship with `pollux-ai`**—no `ignore_missing_imports` override needed.
- **Default models updated** to `gpt-5-nano` and `gemini-2.5-flash-lite`.
@seanbrar seanbrar changed the title Release v0.2.0 feat(release): ship v0.2.0 CLI-first digest pipeline and release hardening Feb 14, 2026
@seanbrar seanbrar merged commit 9715120 into main Feb 14, 2026
3 checks passed
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