Commitadb3f952Recorded2 Sep 2026Repositorysigil-yaml

Add a native kiln pipeline definition

Message

Three named steps -- deps, build, test -- defined directly in kiln's job language with no wrapping shell script. Copied from the sigil-http pilot; the repo name on line 1 is the only line that differs.

Header records the traps a copier needs: on: is mandatory and its absence is silent, step names do not fold in the UI yet, there is no check ledger in native mode, and the worker timeout is clamped without a diagnostic.

Changed
 .kiln/ci.sgv | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)
Diff
.kiln/ci.sgvadded
@@ -0,0 +1,48 @@
+1
;;; ci.sgv -- sigil-yaml CI, defined natively in kiln's job language.
+2
;;;
+3
;;; No `.kiln/ci.sh`. The three steps below ARE the pipeline.
+4
;;;
+5
;;; `on:` IS MANDATORY AND ITS ABSENCE IS SILENT. A workflow with no `on:`
+6
;;; matches no event, produces no error and no run, and still lints OK --
+7
;;; so a missing `on:` reads exactly like a controller fault rather than
+8
;;; like this file.
+9
;;;
+10
;;; NO `branch:` FILTER ON `push`, deliberately: a filter would narrow
+11
;;; coverage to one ref. `(pull-request)` is not declared either -- kiln's
+12
;;; matcher accepts it, but no run of that kind has been observed on this
+13
;;; controller, and declaring coverage nobody has seen fire is how a green
+14
;;; comes to mean less than it looks.
+15
;;;
+16
;;; ONE NODE, NOT THREE JOBS. Every node gets its own worker and its own
+17
;;; delivered tree, and `sigil deps install` leaves a link farm in the
+18
;;; workspace pointing at content under $HOME -- so splitting the stages
+19
;;; across nodes means either shipping the whole of `build/` between them (138 MB
+20
;;; measured on sigil-http) or depending on $HOME being shared between leases.
+21
;;; Reasoning and measurements: topics/kiln-native-pipeline-single-node-template.
+22
;;;
+23
;;; STEP NAMES DO NOT FOLD IN THE UI TODAY, and that is a kiln bug, not a
+24
;;; mistake here: `nodeexec.sgl` emits `##[kiln:section-start:<name>]` and
+25
;;; the log viewer's parser wants the legacy `##[kiln:section-start <ms>
+26
;;; <name>]`. Keep the names -- they are the contract any future
+27
;;; comparison rests on -- but expect plain log lines until that is fixed.
+28
;;; There is also no check ledger here: that whole contract lives in each
+29
;;; repo's `.kiln/ci.sh`, and this pipeline has none.
+30
;;; See topics/kiln-native-pipeline-emits-no-checks.
+31
;;;
+32
;;; `timeout: 1800` is CLAMPED by `safety.max_job_timeout` with no
+33
;;; diagnostic -- a plain (min declared ceiling). 1800 is that key's
+34
;;; default, so it survives on a controller that has not lowered it and is
+35
;;; silently reduced on one that has. The effective value is printed once,
+36
;;; in `Persistent worker ready ... timeout=N`, and only on the
+37
;;; persistent-worker path.
+38
+39
(pipeline ci
+40
on: #[ (push) (manual) ]
+41
+42
(job ci
+43
worker: (worker timeout: 1800)
+44
steps: #[
+45
(shell name: deps "sigil deps install")
+46
(shell name: build "sigil build")
+47
(shell name: test "sigil test")
+48
]))