Skip to content

Jeffy Loop 1.8.0

Choose a tag to compare

@lenamonj lenamonj released this 09 Aug 03:04
· 26 commits to main since this release

Eight backlog items, and every one of them is a rule the engine stated but did not enforce. Two came from the first production arc run under 1.7.0, one from the first brownfield target picked for an oracle the loop could not rewrite, and the rest from auditing the hook against its own corpus.

Breaking

  • A terminal REJECT is one with no invocation left, not the second one as such - and it no longer forfeits the budget. A second rejection holding an invocation files its findings and the run continues, which is the only way a run whose first verdict was a rejection reaches the third review it earned. A terminal rejection now enters gate salvage: it works only the findings the gate filed, never re-invokes, never declares, and ends blocked with the declaration deferred to the next run's fresh gate. Three blocked runs previously sat on 13 budgeted iterations they were forbidden to use.
  • The evaluator artifact is keyed by invocation ordinal, .jeffy/evaluator/<run-id>-<n>.md. Keyed by run id alone, every re-invocation overwrote its predecessor, so a squash, rebase or shallow clone reduced a run's verdicts to whichever came last.
  • A missing BACKLOG.md at the promise is a violation, not a pass. It was the broadest fail-open left in the engine, and it sat in front of every gate rather than beside one: deleting one file was the whole price of an unchecked convergence.

Added

  • The Converged hash must be reachable from HEAD, and a history rewrite that preserves the tree is answered by appending Converged: <new hash> - <date> (repoints <old hash>, tree unchanged) rather than by editing the line it orphaned. Accepted only when the two commits carry the same tree, the superseded line still stands, and the old commit can still be read.
  • The Verify command declares what it grades and what the platform excludes. The evidence is a convergence in which the command exited 0 for 29 iterations across three runs while the repository's 402-case conformance corpus never executed once, and the journal asserted twice that it was green.
  • A convergence refused at budget exhaustion gets one corrective re-feed, so the run is told to close honestly instead of the refusal reaching stderr alone.

Fixed

  • The hook and the prompt share one definition of ledger progress. The hook checksummed the whole ledger while the prompt's stall rule spoke of items changing state, and the laxer definition decided whether a run kept going.
  • The absolute invocation bound is enforced in shell, and only the absolute one. The prompt still owns the cap arithmetic, and that boundary is stated in the hook rather than left to be inferred.

Found in review and in CI, before release

Three defects in this release's own work, each caught by driving the shape through the hook rather than reasoning about it:

  • the corrective re-feed now outranks the stall gate's second strike, which had been ending the same turn and putting the refusal back on stderr;
  • the invocation bound counts gate verdicts rather than the word REJECT, which had turned it into a false refusal of legal convergences on the precise path this release opened;
  • the artifact-ordinal scan parses on bash 3.2, which stock macOS ships and which the first cut of it killed outright.

Known gaps are recorded rather than papered over: the corrective re-feed is not reached when a closing-extension gate has already ended the run, and the docs state that bound instead of an absolute.

Numbers

Validator: 189 behavioural checks on each CI leg - Linux, Windows and macOS - with a shellcheck lint pass riding the Linux leg. Receipts: 19 converged public targets across 9 languages.

Upgrade with git pull and re-run the installer.