Repository navigation
PatchPitch 0.3.0 — unattended campaigns
PatchPitch can now prepare a local announcement pack for Telegram, X, DEV and GitHub from a JSON/TOML job, without opening the studio. Runs retain input snapshots, original responses, failures and publication edits so unfinished work can be resumed explicitly.
Changes
- Installable
patchpitchCLI andpython -m patchpitch, with planning, checkpointed runs, explicit resume, validation and campaign-to-studio session export. Scheduled invocations reuse unchanged completed work. - Reviewed fact packs and unattended extraction from committed Git ranges, with saved selections tied to source/candidate hashes. Machine-selected facts remain labelled for review.
- Exactly six relevant X tags selected from a dated observation catalog. Planning reserves the tags and CTA before prose generation; current edited posts are checked for length and policy compliance. Missing evidence blocks the target rather than inventing tags.
- Optional Quillgrain local-pack compilation and bundle verification with language/register/channel checks and preserved voice snapshots. The verified external engine is
0.1.0rc3, pinned in integration CI; it is not downloaded automatically. - Telegram EN/RU, DEV article metadata/body and GitHub notes from the shared facts. Owned DEV drafts can be created/updated explicitly with
published=false, receipts and protection for already published articles. - DEV uncertain-write recovery retains the exact outgoing payload. If the API omits AI disclosure, observable content is compared and the desired disclosure is sent to the same owned draft; recovery does not blindly create another article.
- Legacy session/profile and X workflows remain available. The README retains a first run that needs no model.
Install and run
Python 3.11+ is required. Download the wheel and SHA256SUMS from this release, verify the checksum, then install it in a virtual environment:
python -m pip install ./patchpitch-0.3.0-py3-none-any.whlThe source archive includes reviewed examples, documentation and test helpers. From its extracted directory, with local Ollama and the model already installed:
export PATCHPITCH_MODEL=gemma4:12b
export PATCHPITCH_TIMEOUT=600
export PATCHPITCH_SENTRY_DSN=''
python -m patchpitch run --job examples/headless/release.toml --out-root artifacts/campaigns --plan --json
python -m patchpitch run --job examples/headless/release.toml --out-root artifacts/campaigns --json </dev/nullOn PowerShell, set $env:PATCHPITCH_MODEL='gemma4:12b' and $env:PATCHPITCH_TIMEOUT='600', and omit the shell-specific </dev/null. The CLI itself needs no terminal input. Install .[ui] from the source directory when the studio is needed; UI/browser dependencies are optional for CLI users. See the headless guide.
Validation and limits
The recorded Linux live run used the unchanged inference implementation before final version promotion: Ubuntu 24.04, Python 3.12.15, Ollama 0.40.10 and gemma4:12b Q4_K_M. It produced four accepted drafts with five real requests in 1599.653 seconds, passed validation/session export and preserved all files on repeat/resume. That is one CPU observation, not a benchmark or a newly claimed final-version inference run. Original snapshots remain unchanged.
- Use
PATCHPITCH_TIMEOUT=600for that Linux CPU configuration: DEV took 497.921 seconds, exceeding the normal 420-second default. - Gemma 3 4B failed the same campaign's output acceptance. Another installed model does not imply equivalent quality.
- Matching tags is lexical and based on a small historical sample; it is not a reach forecast. Refresh the bundled catalog after its 30-day review window and inspect the final X composer.
- Model output still needs meaning/voice review. Generation, public export, account draft delivery and publication are separate actions. No new X, Telegram, DEV or other announcement is posted by this release.
- Version changes affect run identity. Preserve the original environment for unfinished old runs; do not rewrite snapshots to bypass checks.
Final-commit CI runs the base tests, mandatory pinned Quillgrain integration and package checks: wheel/source build, source test collection, and clean installed-wheel CLI checks outside checkout without UI dependencies or inference. Release archives are the exact CI-built files, accompanied by SHA256SUMS and SOURCE_COMMIT. They are not an upload to PyPI.
The reviewed source range is 44ca597...v0.3.0. The annotated tag and SOURCE_COMMIT identify the exact final commit; checksums use plain archive filenames so they can be checked after downloading the assets into one directory.
Native DEV video with sound/controls remains in the backlog. The earlier reviewed DEV article and owner-posted X announcement retain their separate publication history.
Local final-version verification: 334 tests passed, zero skipped, with 15 dependency deprecation warnings (200.71 seconds). Test discovery is scoped to tests/ so archived source copies under ignored evidence directories cannot shadow the real suite.
Final source commit: e5a39f6aba15caba936473787d0142b8cbe25b7c. Final CI: all three jobs passed.