Implements the remaining items from issue #20:
- version is now forward-permissive: any value >= 1 is accepted; a
newer-than-known version loads best-effort (unknown fields ignored,
warning printed) instead of hard-failing on "must be 1"
- from_job input reference: `inputs: [{ from_job: <job> }]` resolves to
that job's single-file output + format and implies a dependency edge;
combined depends_on + from_job graph gets topological ordering and
cycle detection
- logfile size-rotation, on by default (5MB, keep 3), overridable per
job (log_max_size / log_keep) or file-wide via a top-level defaults block
- new commands: split (schema/table subsetting via select:), inspect
(rule validation -> markdown/json report, fails job on enforced-rule
errors), diff (compare exactly two schemas, never fails), scripts-exec
(run SQL script dirs against a live PostgreSQL database)
- atomic single-file output/report writes (temp file + rename)
- symlink-escape hardening in SafeJoin via EvalSymlinks preflight
Updates docs/JOB_FILES.md and examples/jobs/relspec.yml accordingly.