Darkwood · PHP · agents · workflows
The original pain
The invisible checklist still fits in one head.
The breaking point
Did this run include static analysis?
What did yesterday’s failure teach?
Agents need not be incapable — the process is still personal.
Not a hardware complaint
Credentials · access
Prompts · history · lessons
Scripts · skills · habits
When the laptop leaves, the process leaves.
The missing layer
habit in one head
“I always run tests…”
Named steps · inputs/outputs · failure modes · trace
Runtime layer
Long-lived ReactPHP CLI
Same app behind FPM
Response · Promise · Generator · Fiber
Workflows over HTTP
Not a scheduler · queue · sandbox · agent platform
Orchestration layer
Define the chain
Ip-level concurrency
Failure hooks
Framework X receives the request. Darkwood Flow coordinates the work.
framework-x-flow prototype
flowchart TD A[HTTP request] --> B[Framework X route] B --> C[Flow workflow] C --> D[Steps] D --> E[Trace + retrospective] E --> F[JSON + var/runs]
validate → analyse → quality → docs → review → retrospective
Async experiment
One in flight → serial delays
~3× delay budget
N in flight → overlapping delays
~1× delay budget
Local timings only — illustrative, not a benchmark.
Blocking PHP still stalls the loop.
Learning without mutation
slow steps · failures · lessons · suggestions
silently edit workflow code
{
"proposal": "Add a dependency audit step before final review."
}
Reviewable self-improvement beats uncontrolled self-modification.
Honesty slide
Cloud agent execution is a separate infrastructure problem.
Durable layer
The useful artifact is no longer the private prompt.
It is the process you can run, inspect, and improve.