Description
Platform automation (node provisioning, firmware rollout, drain and return to service, storage provisioning, self-service portals) is where AI Factory designs use traces: workflow and task duration, retries, failures, approvals, target system, API status and latency, with trace-derived metrics for long-term reporting. Spans carry operational metadata only, never payloads, secrets or command output. Platform traces and user workload traces are routed to different stacks by the collector, so a classifying resource attribute is needed to exercise that routing. The app workload’s workflow node type may already cover most of this.
Acceptance Criteria
- #1 If the existing app workload DSL can express these workflows, the delivery is blueprint content only; otherwise the smallest DSL extension is made
- #2 Workflows emit spans with retries, failures and approval steps, and the matching span-derived metrics, using only attributes the app DSL and semantic conventions allow
- #3 Platform and workload traces are distinguishable by a documented resource attribute so collector routing pipelines can be tested against them
- #4 Rates, counts and cardinality in any shipped blueprint are plausible for a real deployment, with the real-world basis stated in a comment; nothing is raised to force emission
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 Plan
Use packet S17 to assess existing app DSL, implement minimal owned workflow content or extension, exercise real fixture dump and just check; root batch review and landing CI.
loop47 correction: accepted app-local automation design for coherent bounded retry/failure/approval plans, HTTP semconv-only fields, service.namespace routing and ledger-derived spanmetric parity. Root owns trace/APM provenance; offline justfile commands now explicitly use -env /dev/null.
Implementation Notes
loop47: admitted
loop47: first implementation attempt stopped before changes; second attempt admitted after independent contract resolution and offline gate safety prerequisite; no acceptance criteria waived
loop47: candidate55b3ef63f517fee73703f1fca7d0db372b9a38d7 scope/diff and gate output inspected; integrated locally. Root added exact semconv provenance and initial CPU pilot. Sparse weekly reprovisioning/maintenance and quarterly firmware windows replace the larger-estate assumptions; storage/portal requests remain explicit pilot planning assumptions. Integrated gen and ai-factory dump exit0; no automation trace forced at shipped rates. Root full gate/review/exact-SHA landing CI still pending.
loop47: integrated justcheck red at TestAppDefaultWireParity because five newly shipped declarations require catalogue parity entries. Root added only their five entries/files after inspecting semantic wire output (6/8/10/6/6 spans, standard resource/HTTP fields, two target-info metrics, no fabricated ledger calls); original eight baseline hashes unchanged. No test filter/assertion/tolerance weakened and regeneration flag not used. Narrow parity red then green observed; final integrated rerun/review/CI pending.
loop47: second integrated red revealed another root catalogue expectation: bundled runtime identity list omitted new ai-factory (36 actual vs35 expected). First red also contained it, missed by tail-only inspection; full failure scan corrected diagnosis. Added only the exact new identity to TestBundledRuntimeNamesAreResolvedCanonicalIdentities, preserving duplicate/count/name checks and all prior identities; narrow green observed. No child attempt charged; full candidate gate/review/CI still pending.
loop47: attempts SKT-0087.17-impl-1 blocked and impl-2 complete; infrastructure0. Landing SHA721168e8cdba9730fd35dda9d357bcbf13c7a08f, ci37058942222 completed success. Root fullgate47cc15b9915617a5ff76dde6a98d3d3601f103d5 exit0; finalruntimebytes unchanged across docs/rebase. Eight BLOCKED_EXTERNAL rows NOTpasses: Synthetic profiles,Faro/RUM,Synthetic Monitoring,Fleet Management,sigil AI observability,Self-observability OTLP,Process profiling,All optional lanes together. Resource routing inputs tested, no live collector/stack claim. TestAppDefaultWireParity five new cases and bundled runtime identityai-factory added because intended catalogue expanded; previous fixtures/assertions preserved. No GPU consumer acceptance implied.
Final Summary
loop47: minimal app-only coherent approval/retry/terminal execution and ledger-derived spanmetric parity; standard HTTP attributes and service.namespace resource routing. Forced cases remain e2e only; shipped CPU pilot uses explicit sparse weekly/quarterly assumptions. Root gen/dump/inventory, integrated justcheck at47cc15b and identical-runtime docs/rebase validation, CodeRabbit complete0findings (five binary parity fixtures excluded and independently inspected), exactlandingCI green.