Refuse recursive tracker proposals without paired baseline wins
Deliver the bounded recursive promotion gate, title-vector learner and evidence receipts. A measured win is not an acceptance requirement: the public corpus again produces zero promotions. This PR includes current main (0025c8b) and preserves its evaluation plans, policy cards, bounded JSON parsing, native item CAS and peer-result attribution.
Before: improvement over an untrained incumbent could still lose to a constant. After: vector candidates also require paired held-out item-bootstrap lower effects strictly above 0.01 against the incumbent and both constants, in addition to every existing sampled/exact/gap/contamination/checkpoint/approval/resource gate. 8,192 replicates; three-comparison Bonferroni adjustment. PR #98 includes this branch and adds the balanced intake objective plus a mandatory frozen heuristic.
Conflicts resolved: epic item/history, controller refusal flow, package entries, checkpoint parsing and the Compose fixture module list. Main's newer behavior is retained. CHANGELOG.md was regenerated inside the merge. The owner-authorized continuation restores the epic item/history exactly from main and re-records this branch intent with pinned pm commands. Main remains an exact history prefix.
| Acceptance | Evidence | Result |
|---|---|---|
| Paired baseline rule and ties | 96 seeded arbitrary and noisy crossing-vector cases, each-baseline equality refusals; focused gate/capacity/constant command | 4/4 pass |
| Refuse and recover | Seven collect/train/evaluate/refusal-comment/terminal-comment boundaries, real external jobs and peer controllers on one plain tracker per schedule | 8/8 pass |
| Promote, recover and adopt the winner | Four successful cycle boundaries, actual peer promotion attribution and next-generation collection from that checkpoint | 5/5 pass |
| Behavioral revert | Replace lower-bound predicates with point means, or disable only constant comparison: property fails 0/1 each. Remove only resumed-refusal settlement: train/evaluate/refusal schedules fail terminal-job assertion. Restore source: corresponding tests pass | proven; recorded in pm |
| Pinned tracker-linked test | Gate/capacity/constant command via pm test --run --only-last --progress, snapshot workspace and PM context none | 4/4 pass |
| Local static checks | npm run typecheck, npm run lint, npm run build, npm run changelog:check | pass |
| Complete npm/Bun release gates | Current full-gate CI | all three variants pass 1,015/1,015, zero fail/skip/cancel/todo; 100/100/100/100 across 54 sources |
Fresh real-data receipt: public MIT unbraind/pm-ops at eba7d5262fd75e67afce0caad29dae7dc7dfbaeb; 300 unchanged source files; 105 training / 41 held-out items; constant 36/41 = 0.8780487805. Candidate expected rewards: 0.8713980699, 0.8645003749, 0.8534392510. All three refuse, retain the seed, charge 256 updates each once and consume 3,072 collection actions. Git-free PATH and a plain controller tracker; resume preserves checkpoint bytes and adds no jobs. See fresh and historical receipts and the report. Conditional validation only; no independent final-test or transfer win is claimed.
The installed bounded cycle is:
pm rl corpus build --from-tracker source/.agents/pm --file node_modules/pm-rl/examples/loop-corpus-baseline.json --output sealed.json
pm rl loop run paired-cycle --file sealed.json --approval corpus-approval --json
pm rl loop resume paired-cycle --approval corpus-approval --json
pm rl loop status paired-cycle --json
The separate approval bounds resources and promotions. loop run executes collect → train → evaluate → gate → promote-or-refuse → record on Generation/process/policy-card items and the seed terminal comment. Only the retained promoted incumbent collects the next generation. Resume now also finishes an interrupted refused job's process lifecycle before advancing bounded exploration.
Tracker health is unblocked. Under the explicit owner continuation, the epic item/history were restored exactly from main, then this branch's gate/result comment, file/doc links and test link were re-recorded through the pinned CLI. The branch-created baseline item does not exist on main and retains its healthy branch chain. The obsolete branch-only receipt and its item link were removed. A normal pinned pm health --strict-exit now reports ok:true, with only the unchanged main provenance advisory. The README-pinned local pm-github installation removes the local host-version skew without changing dependency pins. No main history, force or re-anchor operation was used. Executable source, tests, thresholds and completed real-data/revert evidence are unchanged. All complete current-head variants pass. Their completed logs were independently downloaded and checked: 1,015 tests per runtime, all 54 authored sources at unchanged four-metric 100% thresholds, 408 documented declarations, and successful health, lint, duplication, identity, audit, attestation, packaging and changelog checks. CodeQL passes. The paired property, successful/refused cycles, ownership/foreign-record and crash/recovery suites meet this infrastructure acceptance; zero real-data promotions remain the honest result. Earlier failed health runs remain historical failures.
PM: pm-rl-baseline, parent pm-rl-apvf; existing health follow-up pm-rl-9uz4. Claim released; items remain unclosed. Commits: 7c0b00d (merge/source/tests), c6df8af (verification receipt), e06f8ab (noisy lower-bound properties and final receipt). Health reconstruction commit: 2ecb61f. Ready for review after full CI and acceptance verification. No PR merge or release.