Description
Owner chose new constructs over the app DSL because pipelines are batch: discrete scheduled runs with terminal states and durations, and staleness that accumulates while a stage is stalled. Engineering choice: this is a shared mechanic library (like internal/cw) that the AWS data-service constructs consume for a blueprint-declared pipeline identity and stage list, not a construct emitting new names; every emitted name stays a sourced CloudWatch or log name. Run outcomes drive real signals (Glue numFailedTasks/elapsedTime, AmazonMWAA DAGDurationSuccess/Failed and TaskInstanceFailures, SQS ApproximateAgeOfOldestMessage, Lambda IteratorAge). Add failure modes targeting a declared stage (stage_stall, run_failure) whose effect shows downstream. Add sourced CloudWatch Logs lines to Loki for /aws-glue/jobs/, /aws/lambda/ (REPORT line) and Airflow task logs, with no payloads or record IDs. Constructs stay isolated; the new library needs an archtest allowlist entry (single-owner file).
Acceptance Criteria
- #1 A declared pipeline produces deterministic run schedules; same seed gives byte-identical just dump
- #2 stage_stall raises downstream age metrics and suppresses completions until cleared; run_failure records a failed terminal outcome; red then green tests for both
- #3 Log lines carry only sourced fields; high-card IDs stay out of stream labels
- #4 docs/incidents.md and docs/constructs.md updated
Definition of Done
- #1 just check (fmt-check, lint, gen-check, env-check, docs-check, test, race, hygiene, ui-check, compose-check, helm-test, lab-check, signal-fidelity)
- #2 just gen (only if a blueprint field, construct/workload config struct, or a skill under plugins/synthkit/skills/ changed)
- #3 just dump — inventory diffed against signals/
Implementation Notes
2026-10-23: parked; the demo no longer needs scheduled pipeline runs. The sourced Lambda REPORT log line is still wanted and may be done under SKT-0168.02’s log-format capture.
Mechanic/identity slice landed 93a7f34 with shared deterministic windows, Glue/MWAA consumers, public scoped incident/isolation proof and blueprint-wide unique pipeline names. Exact composed remote gate, generation and CodeRabbit passed. AC3 logs and additional service adapters remain unimplemented pending sourced capture contracts; not Done and not full demo parity.
Dependency hold at loop53 closeout preparation: deterministic shared mechanic, scoped incidents and Glue/MWAA outcome consumers landed and offline-proved, but sourced service adapters/log fields remain incomplete while the required live six-family capture is owner-blocked on its full-gate route. Resume after approved capture evidence and exact service/log contracts, not by inventing names or treating generic timeline support as adapter coverage.
Loop54 closeout: remains Parked. New sourced CW metrics do not establish cross-service run causality, raw-log-to-collector/Loki wire or missing adapter acceptance. Resume only with required sourced wire evidence and separately bounded integration; no existing assertions/bounds changed.
Closeout: no new causal adapter or log-wire evidence admitted. Independent service observations still do not establish cross-service run causality. Resume on sourced wire/adapter contracts; existing deterministic mechanic is unchanged.
Terminal dependency hold unchanged: sourced raw-log/collector/Loki indexed-label evidence and causal adapter acceptance remain incomplete. Independent service observations and successful mechanics do not establish a cross-service causal join.
loop57 closeout: parked/open, see codex/closeout-2026-10-24-loop57.md.