Search by

kumwe / automation

llewellyn

Portable automation contracts and behavior extracted from Kumwe.

Package info

github.com/kumwe/automation

pkg:composer/kumwe/automation

Statistics

Installs: 117

Dependents: 2

Suggesters: 0

Stars: 0

Open Issues: 0

v0.2.2 2026-09-08 17:37 UTC

README

Cron scheduling, immutable job state and leases, injected clock/jitter retry policy, queue policies, handler and storage ports, and job/queue/schedule declarations.

The package contains 24 extracted portable public types plus four explicit composition types. Worker loops, OS signals and RuntimeDeadline enforcement, scheduler execution, trusted handler selection, database coordination and lifecycle remain App-owned.

JSON-dependent constructors and factories require Kumwe\CanonicalJson\CanonicalEncoder explicitly. The host supplies its encoder; this package contains no executor. Declaration inputs still reject floats, objects, resources, depth over 32 and collections over 512 before calling the generic encoder. The generic job payload and event-envelope profiles retain their distinct source behavior and limits.

Run composer install then composer check. composer clean-consumer builds a ZIP, installs it into a fresh Composer consumer and runs behavior tests against classes loaded only from that archive. During development, KUMWE_TEST_AUTOLOAD can identify a separate consumer's autoloader, and KUMWE_CONSUMER_CONFIG can provide explicit development repositories and dependency aliases. These development checks are not publication evidence.

The archive consumer also executes the installed example using the real consumer autoloader and checks missing-path refusal. See standalone example and host composition for both supported bootstrap modes.

The optional final ConfigProvider and Container factories support explicit Laminas/Mezzio composition. See host composition, architecture, complete public API, and release policy.

See MIGRATION-HANDOFF.md for exact source mapping, intentional signature changes, ownership boundaries and release blockers. Public signatures and neutral ports are checked against resources/public-api/v1.json and resources/service-map/v1.json.