feat: expose executor job observability

This commit is contained in:
john
2026-07-24 23:31:29 +08:00
parent bbb43f97a3
commit 396bb78200
18 changed files with 733 additions and 68 deletions
@@ -114,7 +114,28 @@ The `build_plan` node creates the deterministic preview job
`<runId>:executor-preview` with idempotency key
`<runId>:build_plan:v1`. The stored result is terminal `blocked` state with
`executor_dispatch_not_implemented`; it is a durable audit and recovery
boundary, not an execution claim.
boundary, not an execution claim. If the run identifier is unsafe or would
overflow the 128-character Job id boundary, the graph substitutes a stable
SHA-256-derived opaque prefix.
Phase 3.4 adds the append-only `executor-job-event-v1` contract. Job snapshots
remain in `executor_jobs`, while cursor-addressable events live in
`executor_job_events`. A transaction commits the initial snapshot and event
together; later state transitions lock the job row and commit the updated
snapshot and next event together. This prevents a visible state transition
without its corresponding audit event.
The read boundary is deliberately narrower than an execution control API:
```text
GET /v1/executor-jobs/:jobId
GET /v1/executor-jobs/:jobId/events?after=<cursor>&limit=<limit>
```
There is no HTTP submit, retry, claim, or executor cancel endpoint in this
phase. memindadm resolves the job reference stored in LangGraph plan state and
shows the job snapshot and events beside Native and graph state. The payload
contains no task instruction, secret, absolute path, or executor SDK object.
The implemented internal API is:
@@ -124,6 +145,8 @@ GET /v1/runs/:id
POST /v1/runs/:id/resume
POST /v1/runs/:id/cancel
GET /v1/runs/:id/events?after=<cursor>
GET /v1/executor-jobs/:jobId
GET /v1/executor-jobs/:jobId/events?after=<cursor>&limit=<limit>
```
External state changes must use an idempotency key derived from run, graph
@@ -164,8 +187,9 @@ read LangGraph checkpoint state and node events.
Canary readiness is also a Memind control-plane projection. It excludes
synthetic smoke runs and evaluates operational health, durable checkpoint state,
sample volume, session coverage, success rate, latency coverage, P95 latency,
Native terminal coverage, and sample freshness. The result is advisory:
durable Executor Job storage, sample volume, session coverage, success rate,
latency coverage, P95 latency, Native terminal coverage, and sample freshness.
The result is advisory:
`manual_canary_review` never mutates routing configuration or transfers
execution ownership.