byggsteg-41b47bfe-04af (retry 3c5c0de6)

job failed

time taken
11 seconds
started at
Wed Oct 14 16:07:22 2026
updated at
Wed Oct 14 16:07:33 2026
log uuid
3c5c0de6-d21f-43ed-8afd-5cf39f635e7d
inspect the job's lambda expression
(lambda()
  `((task . ("maak-test" "byggsteg-version" "maak-deploy"))
    (daemon-name . "byggsteg-daemon")
    (project . "byggsteg")
    (branch-name . "trunk")
    (clone-url . "https://codeberg.org/jjba23/byggsteg.git")))
starting new job...


→ running command: cd "/etc/byggsteg/job-clone//byggsteg/trunk" && git reset --hard && git pull

HEAD is now at 573a9da feat: Add test stage in CI/CD
From https://codeberg.org/jjba23/byggsteg
   573a9da..2bda17e  trunk      -> origin/trunk
Updating 573a9da..2bda17e
Fast-forward
 app/controllers/logs.scm                       |  38 +
 app/views/logs.scm                             | 122 +++-
 app/views/search.scm                           |  13 +-
 lib/byggsteg/ansi.scm                          | 851 ++++++++++++++++++++++
 lib/byggsteg/faces.scm                         |  19 +-
 lib/byggsteg/html.scm                          |   2 +-
 lib/byggsteg/job/pipeline.scm                  |  30 +-
 lib/byggsteg/preferences.scm                   |  46 +-
 pub/js/byggsteg-log.js                         | 188 +++++
 sys/i18n/locale/en_US/LC_MESSAGES/translate.mo | Bin 389 -> 357 bytes
 sys/i18n/locale/en_US/LC_MESSAGES/translate.po | 845 +++++++++++++++++++---
 sys/i18n/locale/es_ES/LC_MESSAGES/translate.mo | Bin 3889 -> 2487 bytes
 sys/i18n/locale/es_ES/LC_MESSAGES/translate.po | 958 ++++++++++++++++++++----
 sys/i18n/locale/ja_JP/LC_MESSAGES/translate.mo | Bin 4283 -> 2633 bytes
 sys/i18n/locale/ja_JP/LC_MESSAGES/translate.po | 965 +++++++++++++++++++++----
 sys/i18n/locale/nl_NL/LC_MESSAGES/translate.mo | Bin 3658 -> 2308 bytes
 sys/i18n/locale/nl_NL/LC_MESSAGES/translate.po | 961 ++++++++++++++++++++----
 sys/i18n/locale/translate.pot                  | 851 +++++++++++++++++++---
 test/veritas/support/deployment.scm            |  81 +++
 test/veritas/unit/about-page-spec.scm          |  13 +-
 test/veritas/unit/ansi-spec.scm                | 238 ++++++
 test/veritas/unit/console-resources-spec.scm   |  13 +-
 test/veritas/unit/deployment-identity-spec.scm |  14 +-
 test/veritas/unit/error-pages-spec.scm         |  19 +-
 test/veritas/unit/job-pipelines-spec.scm       | 109 +++
 25 files changed, 5733 insertions(+), 643 deletions(-)
 create mode 100644 lib/byggsteg/ansi.scm
 create mode 100644 pub/js/byggsteg-log.js
 create mode 100644 test/veritas/support/deployment.scm
 create mode 100644 test/veritas/unit/ansi-spec.scm

→ running command: cd /etc/byggsteg/job-clone/byggsteg/trunk && uname -a

Linux wolk-jjba 7.1.5-gnu #1 SMP PREEMPT_DYNAMIC 1 x86_64 GNU/Linux

→ running command: cd /etc/byggsteg/job-clone/byggsteg/trunk && git log --name-status HEAD^..HEAD

commit 2bda17e7535c3ea7f890f24f9f3f25b16b391108
Author: Josep Bigorra <jjbigorra@gmail.com>
Date:   Wed Oct 14 16:06:45 2026 +0200

    feat: ANSI support

M       app/controllers/logs.scm
M       app/views/logs.scm
M       app/views/search.scm
A       lib/byggsteg/ansi.scm
M       lib/byggsteg/faces.scm
M       lib/byggsteg/html.scm
M       lib/byggsteg/job/pipeline.scm
M       lib/byggsteg/preferences.scm
A       pub/js/byggsteg-log.js
M       sys/i18n/locale/en_US/LC_MESSAGES/translate.mo
M       sys/i18n/locale/en_US/LC_MESSAGES/translate.po
M       sys/i18n/locale/es_ES/LC_MESSAGES/translate.mo
M       sys/i18n/locale/es_ES/LC_MESSAGES/translate.po
M       sys/i18n/locale/ja_JP/LC_MESSAGES/translate.mo
M       sys/i18n/locale/ja_JP/LC_MESSAGES/translate.po
M       sys/i18n/locale/nl_NL/LC_MESSAGES/translate.mo
M       sys/i18n/locale/nl_NL/LC_MESSAGES/translate.po
M       sys/i18n/locale/translate.pot
A       test/veritas/support/deployment.scm
M       test/veritas/unit/about-page-spec.scm
A       test/veritas/unit/ansi-spec.scm
M       test/veritas/unit/console-resources-spec.scm
M       test/veritas/unit/deployment-identity-spec.scm
M       test/veritas/unit/error-pages-spec.scm
M       test/veritas/unit/job-pipelines-spec.scm

→ running command: cd /etc/byggsteg/job-clone/byggsteg/trunk && maak test


scanning directories for unit tests...
scanning present working directory for unit tests...

shuffled the files with seed 53304928 (replay with VERITAS_SEED=53304928)

found unit tests: (ansi-spec.scm log-streaming-spec.scm heatmap-spec.scm about-page-spec.scm deployment-identity-spec.scm password-strength-spec.scm error-pages-spec.scm retention-spec.scm password-reset-spec.scm artifact-spec.scm job-pipelines-spec.scm form-width-spec.scm job-pipeline-spec.scm job-search-spec.scm retry-spec.scm terminal-glass-spec.scm console-resources-spec.scm user-bootstrap-spec.scm)


running unit tests from file: ansi-spec.scm, entrypoint: spec


?? info - shuffled with seed 53304928 (replay with VERITAS_SEED=53304928)
+----------------------------------------------+
[? suite] ANSI console output
  [? test] the escapes a terminal would act on are read, and text is not
    [?? assert] plain text and its newlines are left whole
    ? got: (hello 
 world)
    [?? assert] an output that ends on a newline ends on that newline
    ? got: (a 
)
    [?? assert] the text of a run is escaped for the serializer
    ? got: (a &lt;b&gt; &amp; c)
    [?? assert] no escape byte survives into the markup
    ? got: [0m
    [?? assert] a title wrapped in an OSC is dropped, its text kept
    ? got: (abc)
  [? test] a line is drawn where the cursor is, not appended to
    [?? assert] a carriage return overwrites the line it is on
    ? got: (cd)
    [?? assert] a second frame shorter than the first leaves its tail
    ? got: (xycdef)
    [?? assert] a backspace steps the cursor back over what it wrote
    ? got: (bacspace)
    [?? assert] a tab advances to the next stop, eight columns on
    ? got: (tab     end)
  [? test] what a progress line erases, it erases
    [?? assert] erase-in-line clears from the cursor to the end
    ? got: (done)
    [?? assert] clear-line clears the whole line
    ? got: (def)
    [?? assert] a line drawn again is the frame left on the screen
    ? got: (substitute: looking for substitutes... 100.0%)
  [? test] colour is asked for, changed and put back
    [?? assert] a weight is a class and a colour is this console's own
    ? got: ((span (@ (class font-bold)) bold)  and  (span (@ (class dark:text-asparagus-300 text-asparagus-700)) green))
    [?? assert] a reset puts the weight and the colour back
    ? got: ((span (@ (class font-bold)) loud)  quiet)
    [?? assert] a bright colour takes the bright half of the palette
    ? got: ((span (@ (class dark:text-redwood-100 text-redwood-500)) red))
    [?? assert] the decorations a class can carry are carried for both themes
    ? got: ((span (@ (class italic line-through underline)) deco))
  [? test] a colour a class cannot name is written where it is exact
    [?? assert] a 256-colour value is the cube's own red
    ? got: ((span (@ (style color:#ff0000)) red))
    [?? assert] a grey of the ramp is the grey it names
    ? got: ((span (@ (style background-color:#303030)) grey))
    [?? assert] true colour is the colour it says, to the byte
    ? got: ((span (@ (style color:#123456)) true))
    [?? assert] a colour and a ground are both written
    ? got: ((span (@ (style color:#5fd7ff;background-color:#303030)) both))
  [? test] a line of output read as prose carries no escape and no earlier frame
    [?? assert] the escapes are dropped and what they coloured is kept
    ? got: red
    [?? assert] a line painted again comes back as the reading it ended in
    ? got: second
    [?? assert] and text an escape does not touch is left as it stands
    ? got: hello
world
  [? test] the bytes a command sent are the reading that spells them out
    [?? assert] an escape is spelled the way a terminal would print it
    ? got: ^[[31mred^[[0m
    [?? assert] a carriage return is shown rather than obeyed
    ? got: first^Msecond
    [?? assert] and the line break is still the line break
    ? got: a
b
  [? test] a pane reads its output the way the page is answered
    [?? assert] the pane draws a coloured run as a span
    ? got: #t
    [?? assert] the pane carries no escape into the markup
    ? got: [0m
    [?? assert] the pane redraws a progress line rather than keeping both
    ? got: #t
    [?? assert] and what the reader is shown is the reading it ended in
    ? got: >second<span class="ml-2
    [?? assert] while the reading it was painted over is folded out of sight
    ? got: >first<
    [?? assert] and the pane's own control is what unfolds it
    ? got: data-frames-toggle
?? info - ran 1 tasks in: 0 seconds, 15056 microseconds

running unit tests from file: log-streaming-spec.scm, entrypoint: spec


?? info - shuffled with seed 53304928 (replay with VERITAS_SEED=53304928)
+----------------------------------------------+
[? suite] job log streaming
  [? test] output reaches the log a batch at a time, whole
    [?? assert] the line that completes the batch is the one that writes
    ? got: ((calls-before-the-batch-completes 0) (text-held one
two
) (written-by-the-batch (one
two
three
)) (written-at-the-end (one
two
three
)) (calls-at-the-end 1))
  [? test] a buffer writes only when it has something new to say
    [?? assert] nothing gathered, and nothing gathered again, are not writes
    ? got: ((calls-of-an-empty-buffer 0) (first-flush (one
)) (calls-after-two-flushes 1))
  [? test] a command is announced the way a finished log announces it
    [?? assert] the banner names the command and starts its own line
    ? got: ((names-the-command #t) (starts-its-own-line #t))
  [? test] a running job's log row is refreshed while it runs
    [?? assert] two lines are held, and the batch that completes three is written
    ? got: ((before-the-batch ) (the-batch-is-in-the-row #t) (the-whole-log-is-in-the-row #t) (the-end-is-in-the-row #t))
  [? test] one job's log is the log that is written
    [?? assert] streaming into a job writes its log and no other
    ? got: ((the-job-log-is-written #t) (the-other-log-is-untouched ))
?? info - ran 1 tasks in: 0 seconds, 29433 microseconds

running unit tests from file: heatmap-spec.scm, entrypoint: spec


?? info - shuffled with seed 53304928 (replay with VERITAS_SEED=53304928)
+----------------------------------------------+
[? suite] activity heatmap
  [? test] the calendar between a day number and a date is the reader's own
    [?? assert] every date is read back as the day number it is known by
    ? got: ()
    [?? assert] the epoch is day zero, and the day before it is minus one
    ? got: (0 -1)
    [?? assert] a leap day is a day of its own
    ? got: 11016
    [?? assert] the week starts on Sunday, and the epoch was a Thursday
    ? got: (4 2 3)
  [? test] jobs are counted by the day they were queued on;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling ./test/veritas/unit/ansi-spec.scm
;;; compiling ./lib/byggsteg/ansi.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/lib/byggsteg/ansi.scm.go
;;; note: source file ./lib/byggsteg/faces.scm
;;;       newer than compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/lib/byggsteg/faces.scm.go
;;; compiling ./lib/byggsteg/faces.scm
WARNING: (hygguile hygguile): imported module (hygguile components select) overrides core binding `select'
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/lib/byggsteg/faces.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/test/veritas/unit/ansi-spec.scm.go
;;; note: source file ./lib/byggsteg/preferences.scm
;;;       newer than compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/lib/byggsteg/preferences.scm.go
;;; compiling ./lib/byggsteg/preferences.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/lib/byggsteg/preferences.scm.go
;;; compiling ./test/veritas/unit/heatmap-spec.scm
;;; compiling ./lib/byggsteg/heatmap.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/lib/byggsteg/heatmap.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/test/veritas/unit/heatmap-spec.scm.go
;;; note: source file ./test/veritas/unit/about-page-spec.scm
;;;       newer than compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/test/veritas/unit/about-page-spec.scm.go
;;; compiling ./test/veritas/unit/about-page-spec.scm
;;; compiling ./test/veritas/support/deployment.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/test/veritas/support/deployment.scm.go
;;; note: source file ./lib/byggsteg/html.scm
;;;       newer than compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/lib/byggsteg/html.scm.go
;;; compiling ./lib/byggsteg/html.scm
;;; note: source file ./lib/byggsteg/job/pipeline.scm
;;;       newer than compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/lib/byggsteg/job/pipeline.scm.go
;;; compiling ./lib/byggsteg/job/pipeline.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/lib/byggsteg/job/pipeline.scm.go
WARNING: (byggsteg html): `get-short-commit-sha' imported from both (hygguile hygguile) and (kracht prelude)
WARNING: (byggsteg html): imported module (hygguile hygguile) overrides core binding `select'
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/lib/byggsteg/html.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/byggsteg/trunk/test/veritas/unit/about-page-spec.scm.go
WARNING: (byggsteg html): `get-short-commit-sha' imported from both (hygguile hygguile) and (kracht prelude)

    [?? assert] a day is counted once per job, and what is not a date is left out
    ? got: ((20739 . 3) (20730 . 2) (20737 . 1))
  [? test] the grid ends with the week today is in
    [?? assert] two columns of seven days, from the Sunday before to today
    ? got: ((columns 2) (cells-per-column 7) (first-day 20730) (last-day 20743) (today-is-in-the-last-column 3) (a-day-not-happened-yet #f))
  [? test] a square is as dark as its day is busy
    [?? assert] the busiest day is darkest, and a day with no jobs is not drawn dark
    ? got: ((20739 . 4) (20730 . 3) (20737 . 2) (20738 . 0))
    [?? assert] the four steps between are read off the busiest day
    ? got: ((against-a-busiest-day-of-ten (0 . 0) (2 . 1) (3 . 2) (5 . 2) (6 . 3) (9 . 3) (10 . 4)) (no-busiest-day 1) (a-day-that-has-not-happened #f))
  [? test] the months are named along the top of the grid
    [?? assert] a year of weeks is labelled, from its first column on
    ? got: ((labels 13) (first-label-name Oct) (first-label-column 0) (two-days-of-one-month-are-named-alike #t) (two-months-are-named-differently #t))
  [? test] a deployment with no jobs draws a grid rather than nothing
    [?? assert] an empty heatmap has a total, a busiest day and a full year of squares
    ? got: ((total 0) (max 0) (columns 53) (cells 371))
?? info - ran 1 tasks in: 0 seconds, 1502 microseconds

running unit tests from file: about-page-spec.scm, entrypoint: spec


?? info - shuffled with seed 53304928 (replay with VERITAS_SEED=53304928)
+----------------------------------------------+
[? suite] about page
  [? test] the account is on the page, and it is this deployment's
    [?? assert] the story names the people, the framework and the three doors
    ? got: ()
    [?? assert] and it holds nothing the page was never meant to say
    ? got: ()
    [?? assert] the page opens under the console's own prompt
    ? got: $ byggsteg --origin
  [? test] the page a crawler is handed says what it is
    [?? assert] it declares itself a document of this deployment
    ? got: <!DOCTYPE html>
    [?? assert] it is dressed in the same sheet as every other page
    ? got: /css/byggsteg.olive.min.css
    [?? assert] its canonical address is the page's own
    ? got: /about
    [?? assert] its title names the deployment and the page
    ? got: <title>byggsteg - about</title>
  [? test] the page can be read on a phone
    [?? assert] no panel of it forces a width wider than the screen
    ? got: ()
    [?? assert] the panels are told they may shrink
    ? got: min-w-0
  [? test] the page is built by the components rather than describing them
    [?? assert] no component call was left un-made in the markup
    ? got: ()
    [?? assert] every element of the page is an element a browser knows
    ? fail - error, expect: #t, got: (c  c re  iv   c)
    [?? assert] no element of the page is closed on itself
    ? got: ()
?? info - ran 1 tasks in: 0 seconds, 3072 microseconds

? error - 
aborting due to error in test case...

Backtrace:
In ice-9/boot-9.scm:
  1784:12  7 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In unknown file:
           6 (apply-smob/0 #<thunk 7fae965f0340>)
In ice-9/boot-9.scm:
    733:2  5 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
In ice-9/eval.scm:
    619:8  4 (_ #(#(#<directory (guile-user) 7fae965f3c80>)))
In ice-9/command-line.scm:
   187:19  3 (_ #<input: custom-port 7fae965da3f0>)
In unknown file:
           2 (eval ((@ (maak main) main)) #<directory (guile-user) 7fae965f3c80>)
In srfi/srfi-1.scm:
    750:9  1 (for-each #<procedure 7fae956d5198 at maak/maak.scm:87:12 (task)> (test))
In maak/dsl.scm:
    89:12  0 ($ _ #:verbose? _ #:join _)

maak/dsl.scm:89:12: In procedure $:

Non-zero exit code when running!
Command: guix time-machine --channels=channels.scm -- shell -m manifest.scm -- guile -L ./lib -L . -L ./test -c '(begin (use-modules (veritas runner)) (run-tests))'
Exit code: 1



--------------------------------------------------------------

Maak: the infinitely extensible command runner

Loading tasks from Maak file: /etc/byggsteg/job-clone/byggsteg/trunk/maak.scm

Executing Maak tasks: test

--------------------------------------------------------------

=> Running Maak task: test

  Run the project's test suite.

The specs live under test/veritas/unit.  That is where the runner looks for
suites -- given the test root ./test, the module prefix `veritas' and the suite
name `unit' -- and it is also what their own `(veritas unit ...)' module names
resolve to on the load path below.