ProseForge Agent v0.3.0
Onboarding + hygiene batch. Two-user pain points from v0.2.x feedback:
"is this command real or a scaffold?" and "how do I taste value in 60
seconds?"
Added
- Readiness badges on every operator report (
Report.readiness,
valuesready | contract | planned). Non-ready reports render with a
visible[contract]/[planned]badge in the title on markdown and
terminal output, and exposereadinesson JSON. The 106 dispatch
sites that go through_planned_reportall inherit"planned"for
free; gateway slack/discord/signal/email/whatsappcheck, remote
execution backends (docker/ssh/singularity/modal/daytona), and the
fake skills-hub search now emit"contract"explicitly. --strictglobal flag — refuses to run any command whose report
is notreadiness="ready", exiting 3 with a one-line pointer at the
README readiness table. Placed next to--offline.pf-agent quickstart— first-60-seconds offline loop. Delegates
to the existingDemoRunner, walks intake → phase plan → daily
workbook → chapter draft → review → export dry-run → memory candidates
→ closeout → report pack, all with the fake provider, no API keys.
Prints a numbered checklist and every artifact's path.- Doctor
onboardingcheck — warns on empty workspace with
Runpf-agent quickstartfor the 60-second offline tour. flake-huntscheduled workflow — weeklypytest --count 10 -q
on ubuntu × py3.11; opens an issue on failure. Usespytest-repeat.integrationpytest marker — labels the ~35 tests that touch a
real subprocess, real HTTP over urllib, or a real sqlite file, so
they can be run in isolation viapytest -m integration. New
CI job runs the integration subset separately on every PR after the
main matrix passes.- Readiness table in both READMEs — replaces the earlier bullet
list with aCommand | Status | Notestable so a future PR can update
one row instead of editing prose.
Changed
- CI now uses
[ci]extras — pytest-rerunfailures + pytest-repeat.
The main test job passes--reruns 2 --reruns-delay 1to mask the
handful of remaining time-sensitive tests while their causal
rewrites land. Localpytest -qsemantics unchanged. - Two flaky tests rewritten causally —
test_plugin_sandbox_timeout_returns_before_callback_finishesand
test_run_returns_timeout_when_func_blocksnow assert on
Event.is_set()/ acallback_finishedflag rather than wall-clock
ceilings. - Doctor wiring wording — remote gateway and remote execution
bindings now say"contract-only — see README readiness table",
matching the new badge terminology.