Skip to content

fix(compile): enforce documented hourly cron floor - #24

Merged
ruvnet merged 9 commits into
mainfrom
dream/2026-08-21-cron-minimum-interval
Aug 26, 2026
Merged

fix(compile): enforce documented hourly cron floor#24
ruvnet merged 9 commits into
mainfrom
dream/2026-08-21-cron-minimum-interval

Conversation

@ruvnet

@ruvnet ruvnet commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Dream Machine test cycle

The config contract documents a minimum interval of one hour, but validateConfig accepted expressions such as * * * * *. A misconfigured portfolio routine could therefore run 60 times more often than intended, multiplying model cost and GitHub issue or pull request activity.

Frozen hypothesis

Given a Dream Machine configuration, requiring one fixed minute value from 0 through 59 will reject subhour schedules while preserving hourly and slower schedules.

Change

  1. Validate that the minute field is one literal value from 0 through 59.
  2. Reject wildcard, stepped, listed, and out of range minute fields.
  3. Add regression tests for rejected subhour expressions.
  4. Preserve valid schedules such as 15 */2 * * *.
  5. Record the redacted 2026-08-22 through 2026-08-26 portfolio cycles in the Dream Machine ledger.

Evidence

The previous validator checked only that five whitespace separated fields existed. The new tests cover the documented frequency invariant.

The 2026-08-26 constellation cycle inventories 311 accessible repositories: 210 public and 101 private, with private activity represented only as an aggregate. It deeply reviews RuField, BatVu, Open Claude Code, LatentMesh, and MetaHarness.

One newly merged public trust-boundary finding is retained for private-advisory handling with no exploit mechanics in this PR. BatVu PR 8 is rejected at the frozen install gate; LatentMesh PR 8 passes its governed deterministic Darwin threshold but does not meet its persistence label; and Open Claude Code PR 24 does not remediate its claimed scanner finding. Existing Open Claude Code issue 17 and MetaHarness issue 222 were reused instead of duplicated.

The governed Core Memory work endpoint was unavailable, so this cycle does not claim federation coordination.

Verification

The first CI run caught an undeclared validator constant. Commit 41f38f261b21b5960608cca54c1dd1e769f5867c corrected it.

The latest ledger state at e066ece3d64a5101bc59862a86d242ffbd3acec7 passed CI run 32937901488 and CodeQL run 32937901553.

Verdict: ACCEPT

Acceptance test

npm test passes, current nightly schedules remain valid, and validateConfig rejects * * * * *, */5 * * * *, and 0,30 * * * *.

@ruvnet
ruvnet marked this pull request as ready for review August 26, 2026 12:12
@ruvnet
ruvnet merged commit df9ff40 into main Aug 26, 2026
7 checks passed
ruvnet pushed a commit that referenced this pull request Aug 26, 2026
…nflict)

main advanced with PR #24 (cron floor fix) plus portfolio-wide ledger
rows (2026-08-22..2026-08-26) appended by a separate cross-repo process.
Resolved by keeping all of main's rows and appending this branch's
2026-08-26 ledger-signals row after them (append-only log, no row
content changed). Rebuilt, relinted, and reran the full suite after the
merge: 106/106 passing, 0 regressions.

Note: `dream-machine ledger verify` reports 9 schema errors, all in the
pre-existing portfolio rows (2026-08-22 through 2026-08-26 "portfolio
31x") that use compound verdicts ("ACCEPT / INCONCLUSIVE") and
evaluated="partial", neither valid per this repo's own Verdict/Evaluated
enums. Confirmed these errors exist on origin/main by itself, before
this merge — not introduced by this PR, and this branch's own new row
is schema-valid. Left untouched: out of this PR's scope to rewrite
another process's committed ledger rows.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Gj1odM4UYS1miHuiHnfbN
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