These raw log messages are meant to help Ambient developers figure out problems. You can ignore them.
{
"type": "executor_starts",
"name": "ambient-execute-plan",
"version": "0.13.1@52633e5",
"timestamp": {
"secs_since_epoch": 1773554294,
"nanos_since_epoch": 542460563
},
"log_source": "Plan"
}{
"type": "runnable_plan",
"steps": [
{
"action": "mkdir",
"pathname": "/ci"
},
{
"action": "mkdir",
"pathname": "/ci/artifacts"
},
{
"action": "tar_extract",
"archive": "/dev/vdc",
"directory": "/ci/src"
},
{
"action": "tar_extract",
"archive": "/dev/vdf",
"directory": "/ci/deps"
},
{
"action": "tar_extract",
"archive": "/dev/vde",
"directory": "/ci/cache"
},
{
"action": "shell",
"shell": "ln -sf /ci /workspace"
},
{
"action": "shell",
"shell": "git config --global user.name 'Ambient CI'"
},
{
"action": "shell",
"shell": "git config --global user.email ambient@example.com"
},
{
"action": "cargo_clippy"
},
{
"action": "cargo_build"
},
{
"action": "cargo_test"
},
{
"action": "shell",
"shell": "export PATH=/root/.cargo/bin:/bin:/sbin\nls -l \"$CARGO_TARGET_DIR\"\nmake TARGET= subplot doc\nfind doc -ls\ncp obnam.html obnam-server.html doc/*.html /ci/artifacts\n"
},
{
"action": "custom",
"name": "dch",
"args": {
"debemail": "liw@liw.fi",
"debfullname": "Lars Wirzenius"
}
},
{
"action": "deb",
"packages": "."
},
{
"action": "tar_create",
"archive": "/dev/vde",
"directory": "/ci/cache"
},
{
"action": "tar_create",
"archive": "/dev/vdd",
"directory": "/ci/artifacts"
}
],
"executor_drive": "/dev/vdb",
"source_drive": "/dev/vdc",
"artifact_drive": "/dev/vdd",
"cache_drive": "/dev/vde",
"deps_drive": "/dev/vdf",
"workspace_dir": "/ci",
"source_dir": "/ci/src",
"deps_dir": "/ci/deps",
"cache_dir": "/ci/cache",
"artifacts_dir": "/ci/artifacts",
"timestamp": {
"secs_since_epoch": 1773554294,
"nanos_since_epoch": 545804847
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "mkdir",
"pathname": "/ci",
"timestamp": {
"secs_since_epoch": 1773554294,
"nanos_since_epoch": 565054805
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "mkdir",
"pathname": "/ci",
"timestamp": {
"secs_since_epoch": 1773554294,
"nanos_since_epoch": 568509584
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "mkdir",
"pathname": "/ci/artifacts",
"timestamp": {
"secs_since_epoch": 1773554294,
"nanos_since_epoch": 570701467
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "mkdir",
"pathname": "/ci/artifacts",
"timestamp": {
"secs_since_epoch": 1773554294,
"nanos_since_epoch": 573026880
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "tar_extract",
"archive": "/dev/vdc",
"directory": "/ci/src",
"timestamp": {
"secs_since_epoch": 1773554294,
"nanos_since_epoch": 575357818
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "tar_extract",
"archive": "/dev/vdc",
"directory": "/ci/src",
"timestamp": {
"secs_since_epoch": 1773554294,
"nanos_since_epoch": 588007891
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "tar_extract",
"archive": "/dev/vdf",
"directory": "/ci/deps",
"timestamp": {
"secs_since_epoch": 1773554294,
"nanos_since_epoch": 590648773
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "tar_extract",
"archive": "/dev/vdf",
"directory": "/ci/deps",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 518128071
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "tar_extract",
"archive": "/dev/vde",
"directory": "/ci/cache",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 520791730
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "tar_extract",
"archive": "/dev/vde",
"directory": "/ci/cache",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 524996205
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "shell",
"shell": "ln -sf /ci /workspace",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 527641403
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
98,
97,
115,
104
]
},
{
"Unix": [
45,
99
]
},
{
"Unix": [
115,
101,
116,
32,
45,
120,
101,
117,
111,
32,
112,
105,
112,
101,
102,
97,
105,
108,
10,
108,
110,
32,
45,
115,
102,
32,
47,
99,
105,
32,
47,
119,
111,
114,
107,
115,
112,
97,
99,
101,
10
]
}
],
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 530015188
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": "+ ln -sf /ci /workspace\n",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 537138960
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "shell",
"shell": "ln -sf /ci /workspace",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 539732305
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "shell",
"shell": "git config --global user.name 'Ambient CI'",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 542142666
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
98,
97,
115,
104
]
},
{
"Unix": [
45,
99
]
},
{
"Unix": [
115,
101,
116,
32,
45,
120,
101,
117,
111,
32,
112,
105,
112,
101,
102,
97,
105,
108,
10,
103,
105,
116,
32,
99,
111,
110,
102,
105,
103,
32,
45,
45,
103,
108,
111,
98,
97,
108,
32,
117,
115,
101,
114,
46,
110,
97,
109,
101,
32,
39,
65,
109,
98,
105,
101,
110,
116,
32,
67,
73,
39,
10
]
}
],
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 544785092
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": "+ git config --global user.name 'Ambient CI'\n",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 555156298
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "shell",
"shell": "git config --global user.name 'Ambient CI'",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 558080594
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "shell",
"shell": "git config --global user.email ambient@example.com",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 560736911
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
98,
97,
115,
104
]
},
{
"Unix": [
45,
99
]
},
{
"Unix": [
115,
101,
116,
32,
45,
120,
101,
117,
111,
32,
112,
105,
112,
101,
102,
97,
105,
108,
10,
103,
105,
116,
32,
99,
111,
110,
102,
105,
103,
32,
45,
45,
103,
108,
111,
98,
97,
108,
32,
117,
115,
101,
114,
46,
101,
109,
97,
105,
108,
32,
97,
109,
98,
105,
101,
110,
116,
64,
101,
120,
97,
109,
112,
108,
101,
46,
99,
111,
109,
10
]
}
],
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 563524454
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": "+ git config --global user.email ambient@example.com\n",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 571867797
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "shell",
"shell": "git config --global user.email ambient@example.com",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 574899032
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "cargo_clippy",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 577722161
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 579745716
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "cargo 1.94.0 (85eff7c80 2026-01-15)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 635712486
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
99,
108,
105,
112,
112,
121
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 638555446
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "clippy 0.1.94 (4a4ef493e3 2026-03-02)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 746331282
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
114,
117,
115,
116,
99
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 746371576
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "rustc 1.94.0 (4a4ef493e 2026-03-02)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 794081530
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
99,
108,
105,
112,
112,
121
]
},
{
"Unix": [
45,
45,
111,
102,
102,
108,
105,
110,
101
]
},
{
"Unix": [
45,
45,
108,
111,
99,
107,
101,
100
]
},
{
"Unix": [
45,
45,
119,
111,
114,
107,
115,
112,
97,
99,
101
]
},
{
"Unix": [
45,
45,
97,
108,
108,
45,
116,
97,
114,
103,
101,
116,
115
]
},
{
"Unix": [
45,
45,
110,
111,
45,
100,
101,
112,
115
]
},
{
"Unix": [
45,
45
]
},
{
"Unix": [
45,
45,
100,
101,
110,
121
]
},
{
"Unix": [
119,
97,
114,
110,
105,
110,
103,
115
]
}
],
"timestamp": {
"secs_since_epoch": 1773554295,
"nanos_since_epoch": 794126104
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": " Compiling libc v0.2.177\n Compiling proc-macro2 v1.0.103\n Compiling quote v1.0.42\n Compiling unicode-ident v1.0.22\n Checking cfg-if v1.0.4\n Compiling syn v2.0.110\n Compiling serde_core v1.0.228\n Checking itoa v1.0.15\n Checking memchr v2.7.6\n Compiling serde v1.0.228\n Compiling typenum v1.19.0\n Compiling version_check v0.9.5\n Compiling generic-array v0.14.7\n Compiling getrandom v0.3.4\n Compiling rustix v1.1.2\n Checking once_cell v1.21.3\n Checking bitflags v2.10.0\n Compiling serde_derive v1.0.228\n Compiling zmij v1.0.18\n Checking linux-raw-sys v0.11.0\n Checking log v0.4.28\n Checking aho-corasick v1.1.4\n Checking getrandom v0.2.16\n Checking regex-syntax v0.8.8\n Checking utf8parse v0.2.2\n Compiling thiserror v2.0.17\n Compiling serde_json v1.0.149\n Checking pin-project-lite v0.2.16\n Checking subtle v2.6.1\n Checking anstyle-parse v0.2.7\n Checking rand_core v0.6.4\n Compiling thiserror-impl v2.0.17\n Checking regex-automata v0.4.13\n Compiling powerfmt v0.2.0\n Checking is_terminal_polyfill v1.70.2\n Checking anstyle-query v1.1.5\n Checking anstyle v1.0.13\n Checking futures-core v0.3.31\n Compiling num-conv v0.1.0\n Checking smallvec v1.15.1\n Checking colorchoice v1.0.4\n Checking ryu v1.0.20\n Compiling time-core v0.1.6\n Checking regex v1.12.2\n Compiling time-macros v0.2.24\n Checking anstream v0.6.21\n Compiling deranged v0.5.5\n Checking crypto-common v0.1.7\n Checking winnow v0.7.13\n Checking equivalent v1.0.2\n Checking bytes v1.11.1\n Checking hashbrown v0.16.0\n Checking zeroize v1.8.2\n Checking indexmap v2.12.0\n Checking toml_parser v1.0.4\n Compiling time v0.3.44\n Checking http v1.4.0\n Checking terminal_size v0.4.3\n Checking serde_spanned v1.0.3\n Checking toml_datetime v0.7.3\n Checking dirs-sys-next v0.1.2\n Checking toml_writer v1.0.4\n Checking strsim v0.11.1\n Checking unsafe-libyaml-norway v0.2.15\n Compiling heck v0.5.0\n Checking clap_lex v0.7.6\n Checking fastrand v2.3.0\n Checking tempfile v3.23.0\n Checking serde_norway v0.9.42\n Checking clap_builder v4.5.51\n Compiling clap_derive v4.5.49\n Compiling git-testament-derive v0.2.1\n Checking toml v0.9.8\n Checking directories-next v2.0.0\n Checking http-body v1.0.1\n Checking env_filter v0.1.4\n Compiling tokio-macros v2.6.0\n Checking mio v1.1.0\n Checking socket2 v0.6.2\n Compiling semver v1.0.27\n Compiling mutants v0.0.3\n Checking jiff v0.2.16\n Checking pin-utils v0.1.0\n Compiling httparse v1.10.1\n Checking clingwrap v0.6.0\n Compiling rustc_version v0.4.1\n Checking tokio v1.49.0\n Checking env_logger v0.11.8\n Checking clap v4.5.51\n Checking git-testament v0.2.6\n Checking inout v0.1.4\n Checking tracing-core v0.1.36\n Compiling vcpkg v0.2.15\n Checking tower-service v0.3.3\n Compiling pkg-config v0.3.32\n Checking scopeguard v1.2.0\n Checking lock_api v0.4.14\n Compiling libsqlite3-sys v0.35.0\n Checking tracing v0.1.44\n Checking cipher v0.4.4\n Compiling heapless v0.7.17\n Checking futures-channel v0.3.31\n Checking futures-task v0.3.31\n Checking atomic-waker v1.1.2\n Checking foldhash v0.1.5\n Checking tower-layer v0.3.3\n Checking cpufeatures v0.2.17\n Checking byteorder v1.5.0\n Compiling crc32fast v1.5.0\n Checking sync_wrapper v1.0.2\n Checking httpdate v1.0.3\n Checking percent-encoding v2.3.2\n Checking hyper v1.8.1\n Checking form_urlencoded v1.2.2\n Checking hash32 v0.2.1\n Checking hashbrown v0.15.5\n Checking futures-util v0.3.31\n Checking spin v0.9.8\n Checking http-body-util v0.1.3\n Checking universal-hash v0.5.1\n Checking simd-adler32 v0.3.8\n Checking mime v0.3.17\n Checking adler2 v2.0.1\n Checking opaque-debug v0.3.1\n Checking stable_deref_trait v1.2.1\n Checking fiat-crypto v0.3.0\n Checking tower v0.5.3\n Checking polyval v0.6.2\n Checking miniz_oxide v0.8.9\n Checking axum-core v0.5.6\n Checking hashlink v0.10.0\n Checking hyper-util v0.1.20\n Checking serde_urlencoded v0.7.1\n Checking aes v0.8.4\n Checking ctr v0.9.2\n Checking orion v0.17.12\n Checking aead v0.5.2\n Checking cobs v0.3.0\n Checking ed25519-compact v2.2.0\n Compiling axum-macros v0.5.0\n Checking serde_path_to_error v0.1.20\n Checking fallible-streaming-iterator v0.1.9\n Checking matchit v0.8.4\n Checking fallible-iterator v0.3.0\n Checking ct-codecs v1.1.6\n Checking pasetors v0.7.7\n Checking rusqlite v0.37.0\n Checking axum v0.8.8\n Checking postcard v1.1.3\n Checking aes-gcm-siv v0.11.1\n Checking flate2 v1.1.8\n Checking uuid v1.20.0\n Checking hostname v0.4.2\n Checking obnam v0.10.0 (/ci/src/obnam)\n Checking obnam-server v0.1.0 (/ci/src/obnam-server)\n Finished `dev` profile [unoptimized + debuginfo] target(s) in 24.59s\n",
"timestamp": {
"secs_since_epoch": 1773554320,
"nanos_since_epoch": 494185938
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "cargo_clippy",
"timestamp": {
"secs_since_epoch": 1773554320,
"nanos_since_epoch": 561644182
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "cargo_build",
"timestamp": {
"secs_since_epoch": 1773554320,
"nanos_since_epoch": 563670641
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1773554320,
"nanos_since_epoch": 565680318
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "cargo 1.94.0 (85eff7c80 2026-01-15)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1773554320,
"nanos_since_epoch": 602560576
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
99,
108,
105,
112,
112,
121
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1773554320,
"nanos_since_epoch": 605249008
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "clippy 0.1.94 (4a4ef493e3 2026-03-02)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1773554320,
"nanos_since_epoch": 685417273
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
114,
117,
115,
116,
99
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1773554320,
"nanos_since_epoch": 688152932
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "rustc 1.94.0 (4a4ef493e 2026-03-02)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1773554320,
"nanos_since_epoch": 729145644
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
98,
117,
105,
108,
100
]
},
{
"Unix": [
45,
45,
111,
102,
102,
108,
105,
110,
101
]
},
{
"Unix": [
45,
45,
108,
111,
99,
107,
101,
100
]
},
{
"Unix": [
45,
45,
119,
111,
114,
107,
115,
112,
97,
99,
101
]
},
{
"Unix": [
45,
45,
97,
108,
108,
45,
116,
97,
114,
103,
101,
116,
115
]
}
],
"timestamp": {
"secs_since_epoch": 1773554320,
"nanos_since_epoch": 729188063
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": " Compiling libc v0.2.177\n Compiling cfg-if v1.0.4\n Compiling itoa v1.0.15\n Compiling serde_core v1.0.228\n Compiling memchr v2.7.6\n Compiling bitflags v2.10.0\n Compiling once_cell v1.21.3\n Compiling typenum v1.19.0\n Compiling serde v1.0.228\n Compiling log v0.4.28\n Compiling num-conv v0.1.0\n Compiling time-core v0.1.6\n Compiling linux-raw-sys v0.11.0\n Compiling powerfmt v0.2.0\n Compiling deranged v0.5.5\n Compiling rustix v1.1.2\n Compiling generic-array v0.14.7\n Compiling getrandom v0.3.4\n Compiling aho-corasick v1.1.4\n Compiling getrandom v0.2.16\n Compiling pin-project-lite v0.2.16\n Compiling utf8parse v0.2.2\n Compiling subtle v2.6.1\n Compiling regex-syntax v0.8.8\n Compiling anstyle-parse v0.2.7\n Compiling regex-automata v0.4.13\n Compiling rand_core v0.6.4\n Compiling zmij v1.0.18\n Compiling colorchoice v1.0.4\n Compiling anstyle-query v1.1.5\n Compiling smallvec v1.15.1\n Compiling ryu v1.0.20\n Compiling is_terminal_polyfill v1.70.2\n Compiling futures-core v0.3.31\n Compiling anstyle v1.0.13\n Compiling anstream v0.6.21\n Compiling regex v1.12.2\n Compiling thiserror v2.0.17\n Compiling serde_json v1.0.149\n Compiling crypto-common v0.1.7\n Compiling time-macros v0.2.24\n Compiling bytes v1.11.1\n Compiling equivalent v1.0.2\n Compiling winnow v0.7.13\n Compiling hashbrown v0.16.0\n Compiling zeroize v1.8.2\n Compiling indexmap v2.12.0\n Compiling time v0.3.44\n Compiling toml_parser v1.0.4\n Compiling http v1.4.0\n Compiling terminal_size v0.4.3\n Compiling serde_spanned v1.0.3\n Compiling toml_datetime v0.7.3\n Compiling dirs-sys-next v0.1.2\n Compiling strsim v0.11.1\n Compiling clap_lex v0.7.6\n Compiling fastrand v2.3.0\n Compiling toml_writer v1.0.4\n Compiling unsafe-libyaml-norway v0.2.15\n Compiling toml v0.9.8\n Compiling serde_norway v0.9.42\n Compiling tempfile v3.23.0\n Compiling clap_builder v4.5.51\n Compiling git-testament-derive v0.2.1\n Compiling http-body v1.0.1\n Compiling directories-next v2.0.0\n Compiling env_filter v0.1.4\n Compiling mio v1.1.0\n Compiling socket2 v0.6.2\n Compiling pin-utils v0.1.0\n Compiling jiff v0.2.16\n Compiling clingwrap v0.6.0\n Compiling tokio v1.49.0\n Compiling env_logger v0.11.8\n Compiling clap v4.5.51\n Compiling git-testament v0.2.6\n Compiling inout v0.1.4\n Compiling tracing-core v0.1.36\n Compiling scopeguard v1.2.0\n Compiling tower-service v0.3.3\n Compiling lock_api v0.4.14\n Compiling tracing v0.1.44\n Compiling cipher v0.4.4\n Compiling httparse v1.10.1\n Compiling futures-channel v0.3.31\n Compiling httpdate v1.0.3\n Compiling sync_wrapper v1.0.2\n Compiling futures-task v0.3.31\n Compiling cpufeatures v0.2.17\n Compiling atomic-waker v1.1.2\n Compiling foldhash v0.1.5\n Compiling tower-layer v0.3.3\n Compiling percent-encoding v2.3.2\n Compiling byteorder v1.5.0\n Compiling form_urlencoded v1.2.2\n Compiling hash32 v0.2.1\n Compiling hashbrown v0.15.5\n Compiling hyper v1.8.1\n Compiling futures-util v0.3.31\n Compiling spin v0.9.8\n Compiling http-body-util v0.1.3\n Compiling universal-hash v0.5.1\n Compiling opaque-debug v0.3.1\n Compiling mime v0.3.17\n Compiling adler2 v2.0.1\n Compiling simd-adler32 v0.3.8\n Compiling stable_deref_trait v1.2.1\n Compiling fiat-crypto v0.3.0\n Compiling miniz_oxide v0.8.9\n Compiling heapless v0.7.17\n Compiling tower v0.5.3\n Compiling axum-core v0.5.6\n Compiling polyval v0.6.2\n Compiling libsqlite3-sys v0.35.0\n Compiling hyper-util v0.1.20\n Compiling hashlink v0.10.0\n Compiling crc32fast v1.5.0\n Compiling serde_urlencoded v0.7.1\n Compiling aes v0.8.4\n Compiling ctr v0.9.2\n Compiling aead v0.5.2\n Compiling cobs v0.3.0\n Compiling ed25519-compact v2.2.0\n Compiling orion v0.17.12\n Compiling serde_path_to_error v0.1.20\n Compiling fallible-streaming-iterator v0.1.9\n Compiling fallible-iterator v0.3.0\n Compiling matchit v0.8.4\n Compiling ct-codecs v1.1.6\n Compiling pasetors v0.7.7\n Compiling axum v0.8.8\n Compiling rusqlite v0.37.0\n Compiling postcard v1.1.3\n Compiling aes-gcm-siv v0.11.1\n Compiling flate2 v1.1.8\n Compiling uuid v1.20.0\n Compiling hostname v0.4.2\n Compiling obnam v0.10.0 (/ci/src/obnam)\n Compiling obnam-server v0.1.0 (/ci/src/obnam-server)\n Finished `dev` profile [unoptimized + debuginfo] target(s) in 31.55s\n",
"timestamp": {
"secs_since_epoch": 1773554352,
"nanos_since_epoch": 333111239
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "cargo_build",
"timestamp": {
"secs_since_epoch": 1773554352,
"nanos_since_epoch": 399510721
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "cargo_test",
"timestamp": {
"secs_since_epoch": 1773554352,
"nanos_since_epoch": 401449417
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1773554352,
"nanos_since_epoch": 403458449
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "cargo 1.94.0 (85eff7c80 2026-01-15)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1773554352,
"nanos_since_epoch": 440973896
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
99,
108,
105,
112,
112,
121
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1773554352,
"nanos_since_epoch": 443732013
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "clippy 0.1.94 (4a4ef493e3 2026-03-02)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1773554352,
"nanos_since_epoch": 525921933
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
114,
117,
115,
116,
99
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1773554352,
"nanos_since_epoch": 528704480
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "rustc 1.94.0 (4a4ef493e 2026-03-02)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1773554352,
"nanos_since_epoch": 570492056
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
116,
101,
115,
116
]
},
{
"Unix": [
45,
45,
111,
102,
102,
108,
105,
110,
101
]
},
{
"Unix": [
45,
45,
108,
111,
99,
107,
101,
100
]
},
{
"Unix": [
45,
45,
119,
111,
114,
107,
115,
112,
97,
99,
101
]
}
],
"timestamp": {
"secs_since_epoch": 1773554352,
"nanos_since_epoch": 570531804
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "\nrunning 42 tests\ntest chunk::test::ciphertext_does_not_contain_plaintext ... ok\ntest chunk::test::chunk_round_trip ... ok\ntest chunk::test::id ... ok\ntest chunk::test::id_is_comparable_with_itself ... ok\ntest chunk::test::label_display ... ok\ntest chunk::test::label_round_trip ... ok\ntest chunk::test::metadata ... ok\ntest chunk::test::metadata_round_trip ... ok\ntest chunk::test::two_new_chunk_ids_differ ... ok\ntest cipher::test::aead_round_trip ... ok\ntest cipher::test::key ... ok\ntest cipher::test::key_from_string ... ok\ntest client::test::generates_key ... ok\ntest client::test::gets_correct_key ... ok\ntest client::test::has_name ... ok\ntest client::test::has_no_keys_initially ... ok\ntest client::test::serialiazion_round_trip ... ok\ntest client::test::sets_old_versions ... ok\ntest config::test::merge_files ... ok\ntest config::test::valideted_config ... ok\ntest credential::test::roundtrip_sop_method ... ok\ntest credential::test::roundtrip_sop_credential ... ok\ntest plaintext::test::compressed ... ok\ntest plaintext::test::compression_round_trip ... ok\ntest plaintext::test::uncompressed ... ok\ntest sop::tests::cert_display ... ok\ntest sop::tests::key_display ... ok\ntest store::test::cant_init_nonexistent_dir ... ok\ntest store::test::empty_dir_is_not_init ... ok\ntest store::test::adds_chunk ... ok\ntest store::test::finds_chunk_when_labels_match ... ok\ntest store::test::finds_client_chunk ... ok\ntest store::test::finds_no_chunk_in_empty_store ... ok\ntest store::test::finds_credential_chunk ... ok\ntest store::test::finds_no_chunk_when_none_match_label ... ok\ntest store::test::finds_no_clients_when_there_are_none ... ok\ntest store::test::has_no_chunks_initially ... ok\ntest store::test::nonexistent_dir_is_not_init ... ok\ntest store::test::inits_empty_dir ... ok\ntest store::test::opens_client_chunk ... ok\ntest store::test::root_dir_is_not_init ... ok\ntest store::test::removes_chunk ... ok\n\ntest result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.78s\n\n\nrunning 0 tests\n\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 1 test\ntest config::test::merges ... ok\n\ntest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 0 tests\n\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 1 test\ntest obnam/src/lib.rs - (line 12) ... ok\n\ntest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\nall doctests ran in 0.23s; merged doctests compilation took 0.22s\n\nrunning 0 tests\n\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n",
"stderr": " Finished `test` profile [unoptimized + debuginfo] target(s) in 0.09s\n Running unittests src/lib.rs (/ci/cache/cargo-target/debug/deps/obnam-672abc85c43c438c)\n Running unittests src/bin/obnam.rs (/ci/cache/cargo-target/debug/deps/obnam-7b0c81f510d767f4)\n Running unittests src/lib.rs (/ci/cache/cargo-target/debug/deps/obnam_server-df92be7c5bdc0a7a)\n Running unittests src/main.rs (/ci/cache/cargo-target/debug/deps/obnam_server-6cda6653b6b25a14)\n Doc-tests obnam\n Doc-tests obnam_server\n",
"timestamp": {
"secs_since_epoch": 1773554353,
"nanos_since_epoch": 896278163
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "cargo_test",
"timestamp": {
"secs_since_epoch": 1773554353,
"nanos_since_epoch": 896369809
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "shell",
"shell": "export PATH=/root/.cargo/bin:/bin:/sbin\nls -l \"$CARGO_TARGET_DIR\"\nmake TARGET= subplot doc\nfind doc -ls\ncp obnam.html obnam-server.html doc/*.html /ci/artifacts\n",
"timestamp": {
"secs_since_epoch": 1773554353,
"nanos_since_epoch": 896375813
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
98,
97,
115,
104
]
},
{
"Unix": [
45,
99
]
},
{
"Unix": [
115,
101,
116,
32,
45,
120,
101,
117,
111,
32,
112,
105,
112,
101,
102,
97,
105,
108,
10,
101,
120,
112,
111,
114,
116,
32,
80,
65,
84,
72,
61,
47,
114,
111,
111,
116,
47,
46,
99,
97,
114,
103,
111,
47,
98,
105,
110,
58,
47,
98,
105,
110,
58,
47,
115,
98,
105,
110,
10,
108,
115,
32,
45,
108,
32,
34,
36,
67,
65,
82,
71,
79,
95,
84,
65,
82,
71,
69,
84,
95,
68,
73,
82,
34,
10,
109,
97,
107,
101,
32,
84,
65,
82,
71,
69,
84,
61,
32,
115,
117,
98,
112,
108,
111,
116,
32,
100,
111,
99,
10,
102,
105,
110,
100,
32,
100,
111,
99,
32,
45,
108,
115,
10,
99,
112,
32,
111,
98,
110,
97,
109,
46,
104,
116,
109,
108,
32,
111,
98,
110,
97,
109,
45,
115,
101,
114,
118,
101,
114,
46,
104,
116,
109,
108,
32,
100,
111,
99,
47,
42,
46,
104,
116,
109,
108,
32,
47,
99,
105,
47,
97,
114,
116,
105,
102,
97,
99,
116,
115,
10,
10
]
}
],
"timestamp": {
"secs_since_epoch": 1773554353,
"nanos_since_epoch": 896385941
},
"log_source": "Plan"
}{
"type": "program_failed",
"exit_code": 1,
"stdout": "total 8\n-rw-r--r-- 1 root root 177 Mar 15 05:58 CACHEDIR.TAG\ndrwxr-xr-x 7 root root 4096 Mar 15 05:59 debug\nsubplot docgen obnam.subplot --output obnam.html\nsubplot codegen obnam.subplot --output test.py\nrm -f test.log\npython3 test.py --log test.log \nsrcdir /ci/src\ndatadir /tmp/tmp6ndlzib2\nscenario: Create an OpenPGP software key credential\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: given file sop-generate\n step 4: when I run bash sop-generate alice.tsk\n step 5: when I create directory mychunks\n step 6: when I run obnam store init\n step 7: when I run obnam credential list\n step 8: then stdout is exactly \"\"\n step 9: when I run obnam --client-key my.secret credential openpgp-soft alice.tsk\n step 10: when I run obnam credential list --all\n step 11: then stdout isn't exactly \"\"\nscenario: Manages chunks via API\n step 1: given an installed obnam\n step 2: given file server-config.yaml\n step 3: given file request.sh\n step 4: when I run obnam-server --config server-config.yaml init\n step 5: when I run obnam-server --config server-config.yaml token --output token.txt --allow append\n step 6: when I run, as a daemon, obnam-server --config server-config.yaml serve\n step 7: when I run bash request.sh GET /chunks/1\n step 8: then stderr contains \"HTTP/1.1 404\"\n step 9: when I run bash request.sh PUT /chunks/1?label=first hello\n step 10: then stderr contains \"HTTP/1.1 201\"\n step 11: when I run bash request.sh GET /chunks/1\n step 12: then stderr contains \"HTTP/1.1 200\"\n step 13: then stdout is exactly \"hello\"\n step 14: when I run bash request.sh GET /chunks?label=first\n step 15: then stdout is exactly \"{\"chunk_ids\":[\"1\"]}\"\n step 16: when I run bash request.sh DELETE /chunks/1\n step 17: then stderr contains \"HTTP/1.1 401\"\n step 18: when I run obnam-server --config server-config.yaml token --output token.txt --allow delete\n step 19: when I run bash request.sh DELETE /chunks/1\n step 20: then stderr contains \"HTTP/1.1 204\"\n step 21: when I run bash request.sh GET /chunks?label=first\n step 22: then stdout is exactly \"{\"chunk_ids\":[]}\"\n cleanup 6: when I run, as a daemon, obnam-server --config server-config.yaml serve\nscenario: Generates and validates API tokens\n step 1: given an installed obnam\n step 2: given file server-config.yaml\n step 3: when I run obnam-server --config server-config.yaml init\n step 4: then file keypair.json exists\n step 5: when I try to run obnam-server --config server-config.yaml init\n step 6: then command fails\n step 7: then stderr contains \"keypair.json\"\n step 8: when I run obnam-server --config server-config.yaml token --output token.txt --allow append\n step 9: then file token.txt contains \"v4.public.\"\n step 10: when I run obnam-server --config server-config.yaml validate --file token.txt\n step 11: then stdout contains \"read_chunks_allowed: true\"\n step 12: then stdout contains \"find_chunks_allowed: true\"\n step 13: then stdout contains \"create_chunk_allowed: true\"\n step 14: then stdout contains \"delete_chunk_allowed: false\"\n step 15: when I run obnam-server --config server-config.yaml token --output token.txt --allow delete\n step 16: then file token.txt contains \"v4.public.\"\n step 17: when I run obnam-server --config server-config.yaml validate --file token.txt\n step 18: then stdout contains \"read_chunks_allowed: true\"\n step 19: then stdout contains \"find_chunks_allowed: true\"\n step 20: then stdout contains \"create_chunk_allowed: true\"\n step 21: then stdout contains \"delete_chunk_allowed: true\"\nscenario: Chunk encrypt/decrypt with compression round trip via file\n step 1: given an installed obnam\n step 2: given file greeting.txt\n step 3: when I run obnam chunk encrypt --compress --key secret --label sticky.tape greeting.txt --output chunk.file\n step 4: when I run obnam chunk decrypt --key secret chunk.file\n step 5: then stdout is exactly \"Hello, world.\\n\"\nscenario: Chunk encrypt/decrypt round trip via repository\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: given file greeting.txt\n step 4: when I create directory mychunks\n step 5: when I try to run obnam store init\n step 6: when I run obnam chunk encrypt --key secret --label sticky.tape greeting.txt --id=chunk0\n step 7: when I run obnam store list\n step 8: when I run obnam chunk decrypt --key secret --id chunk0\n step 9: then stdout is exactly \"Hello, world.\\n\"\nscenario: Generate new key\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: when I create directory mychunks\n step 4: when I run obnam store init\n step 5: when I run obnam --client-key my.secret client init --client-name my.host\n step 6: when I run obnam --client-key my.secret client generate my.host my.key\n step 7: when I run obnam --client-key my.secret client show --client-name my.host\n step 8: then stdout contains \"my.key\"\nscenario: Chunk encrypt/decrypt with compression round trip via repository\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: given file greeting.txt\n step 4: when I create directory mychunks\n step 5: when I try to run obnam store init\n step 6: when I run obnam chunk encrypt --compress --key secret --label sticky.tape greeting.txt --id=chunk0\n step 7: when I run obnam store list\n step 8: when I run obnam chunk decrypt --key secret --id chunk0\n step 9: then stdout is exactly \"Hello, world.\\n\"\nscenario: Validates token via HTTP API\n step 1: given an installed obnam\n step 2: given file server-config.yaml\n step 3: given file request.sh\n step 4: when I run obnam-server --config server-config.yaml init\n step 5: when I run obnam-server --config server-config.yaml token --output token.txt --allow append\n step 6: when I run, as a daemon, obnam-server --config server-config.yaml serve\n step 7: when I run bash request.sh GET /validate\n step 8: then stdout contains \"\"read_chunks_allowed\":true\"\n step 9: then stdout contains \"\"find_chunks_allowed\":true\"\n step 10: then stdout contains \"\"create_chunk_allowed\":true\"\n step 11: then stdout contains \"\"delete_chunk_allowed\":false\"\n cleanup 6: when I run, as a daemon, obnam-server --config server-config.yaml serve\nscenario: Get path to chunk in store\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: given file greeting.txt\n step 4: given a directory mychunks\n step 5: when I run obnam store init\n step 6: when I run obnam chunk encrypt --key secret --label data-chunk --id xyzzy greeting.txt\n step 7: when I run obnam store path xyzzy -o chunk.filename\n step 8: then a file exists whose name is in chunk.filename\nscenario: Chunk encrypt/decrypt round trip via file\n step 1: given an installed obnam\n step 2: given file greeting.txt\n step 3: when I run obnam chunk encrypt --key secret --label sticky.tape greeting.txt --output chunk.file\n step 4: when I run obnam chunk decrypt --key secret chunk.file\n step 5: then stdout is exactly \"Hello, world.\\n\"\nscenario: Conveniently encrypt and decrypt chunk in a store\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from comfy.yaml\n step 3: given file message.txt\n step 4: when I create directory chunk.store\n step 5: when I run obnam store init\n step 6: when I run obnam client init --credential softy\n step 7: when I run obnam chunk encrypt --label data --key-name default --id test.chunk message.txt\n step 8: when I run obnam chunk decrypt --key-name default --id test.chunk --output out.dat\n step 9: then files message.txt and out.dat match\nscenario: Find chunks using labels\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: given file greeting.txt\n step 4: given a directory mychunks\n step 5: when I run obnam store init\n step 6: when I run obnam chunk encrypt --key secret --label data-chunk --id xyzzy greeting.txt\n step 7: when I run obnam chunk encrypt --key secret --label data-chunk --id plugh greeting.txt\n step 8: when I run obnam chunk encrypt --key secret --label client-chunk --id advent greeting.txt\n step 9: when I run obnam store find missing\n step 10: then stdout is exactly \"\"\n step 11: when I run obnam store find data-chunk\n step 12: then stdout contains \"xyzzy\"\n step 13: then stdout contains \"plugh\"\n step 14: then stdout doesn't contain \"advent\"\n step 15: when I run obnam store find client-chunk\n step 16: then stdout doesn't contain \"xyzzy\"\n step 17: then stdout doesn't contain \"plugh\"\n step 18: then stdout contains \"advent\"\nscenario: Inspect an encoded chunk in repository\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: given file greeting.txt\n step 4: when I create directory mychunks\n step 5: when I try to run obnam store init\n step 6: when I run obnam chunk encrypt --label sticky.tape --key secret greeting.txt --id=chunk0\n step 7: when I run obnam chunk inspect --id chunk0\n step 8: then stdout is valid JSON\n step 9: then stdout contains \"\"id\":\"\n step 10: then stdout contains \"\"label\":\"\n step 11: then stdout contains \"\"data\": null\"\n step 12: when I run obnam chunk inspect --key secret --id chunk0\n step 13: then stdout is valid JSON\n step 14: then stdout contains \"\"id\":\"\n step 15: then stdout contains \"\"label\":\"\n step 16: then stdout contains \"\"data\": \"\"\nscenario: Conveniently create a client with an OpenPGP software key credential\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from comfy.yaml\n step 3: when I create directory chunk.store\n step 4: when I run obnam store init\n step 5: when I run obnam client init --credential softy\n step 6: when I run obnam client list\n step 7: then stdout isn't exactly \"\"\nscenario: Show client\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: when I create directory mychunks\n step 4: when I run obnam store init\n step 5: when I run obnam --client-key my.secret client init --client-name my.host\n step 6: when I run obnam --client-key my.secret client show --client-name my.host\n step 7: then stdout is valid JSON\nscenario: Initialize a client chunk\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config-with-credential.yaml\n step 3: when I create directory mychunks\n step 4: when I run obnam store init\n step 5: when I run obnam client init --client-name my.host\n step 6: then command is successful\nscenario: Round trip chunk encryption using key from client chunk\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: given file greeting.txt\n step 4: when I create directory mychunks\n step 5: when I run obnam store init\n step 6: when I run obnam --client-key my.secret client init --client-name my.host\n step 7: when I run obnam --client-key my.secret client generate my.host my.key\n step 8: when I run obnam --client-key my.secret chunk encrypt --client-name my.host --key-name my.key --label sticky.tape greeting.txt --output chunk.file\n step 9: when I run obnam --client-key my.secret chunk decrypt --client-name my.host --key-name my.key chunk.file\n step 10: then stdout is exactly \"Hello, world.\\n\"\nscenario: Initialize a store\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: then directory mychunks does not exist\n step 4: when I try to run obnam store is\n step 5: then command fails\n step 6: when I create directory mychunks\n step 7: when I try to run obnam store is\n step 8: then command fails\n step 9: when I run obnam store init\n step 10: when I run obnam store is\n step 11: then exit code is 0\nscenario: Logging level can be set\n step 1: given an installed obnam\n step 2: when I run obnam config\n step 3: then stderr doesn't contain \"TRACE\"\n step 4: then stderr doesn't contain \"DEBUG\"\n step 5: then stderr contains \"INFO\"\n step 6: then stderr contains \"WARN\"\n step 7: then stderr contains \"ERROR\"\n step 8: when I run env OBNAM_LOG=error obnam config\n step 9: then stderr doesn't contain \"TRACE\"\n step 10: then stderr doesn't contain \"DEBUG\"\n step 11: then stderr doesn't contain \"INFO\"\n step 12: then stderr doesn't contain \"WARN\"\n step 13: then stderr contains \"ERROR\"\n step 14: when I run obnam --log-level=error config\n step 15: then stderr doesn't contain \"TRACE\"\n step 16: then stderr doesn't contain \"DEBUG\"\n step 17: then stderr doesn't contain \"INFO\"\n step 18: then stderr doesn't contain \"WARN\"\n step 19: then stderr contains \"ERROR\"\n step 20: when I run env OBNAM_LOG=error obnam --log-level=trace config\n step 21: then stderr contains \"TRACE\"\n step 22: then stderr contains \"DEBUG\"\n step 23: then stderr contains \"INFO\"\n step 24: then stderr contains \"WARN\"\n step 25: then stderr contains \"ERROR\"\nscenario: Avoid client chunks with the same name\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: when I create directory mychunks\n step 4: when I run obnam store init\n step 5: when I run obnam --client-key my.secret client init --client-name my.host\n step 6: then command is successful\n step 7: when I try to run obnam --client-key my.secret client init --client-name my.host\n step 8: then command fails\nscenario: Encryption round trip\n step 1: given an installed obnam\n step 2: given file alice.key\n step 3: given file hello.txt\n step 4: when I run obnam sop encrypt rsop alice.key hello.txt -o encrypted\n step 5: when I run ls -l encrypted\n step 6: when I run cat encrypted\n step 7: when I run obnam sop decrypt rsop alice.key encrypted\n step 8: then stdout is exactly \"hello, world\\n\"\nscenario: Refuses API token made for another server instance\n step 1: given an installed obnam\n step 2: given file server-config.yaml\n step 3: when I run obnam-server --config server-config.yaml init\n step 4: when I run obnam-server --config server-config.yaml token --output token.txt --allow append\n step 5: when I remove file keypair.json\n step 6: when I run obnam-server --config server-config.yaml init\n step 7: when I try to run obnam-server --config server-config.yaml validate --file token.txt\n step 8: then command fails\nscenario: Remove a chunk from store\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: given file greeting.txt\n step 4: given a directory mychunks\n step 5: when I run obnam store init\n step 6: when I run obnam chunk encrypt --key secret --label data-chunk --id xyzzy greeting.txt\n step 7: when I run obnam store remove xyzzy\n step 8: when I run obnam store list\n step 9: then stdout doesn't contain \"xyzzy\"\nscenario: Inspect an encrypted chunk using key from client chunk\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: given file greeting.txt\n step 4: when I create directory mychunks\n step 5: when I run obnam store init\n step 6: when I run obnam --client-key my.secret client init --client-name my.host\n step 7: when I run obnam --client-key my.secret client generate my.host my.key\n step 8: when I run obnam --client-key my.secret chunk encrypt --client-name my.host --key-name my.key --label sticky.tape greeting.txt --output chunk.file\n step 9: when I run obnam --client-key my.secret chunk inspect --filename chunk.file --client-name my.host --key-name my.key\n step 10: then stdout is valid JSON\n step 11: then stdout contains \"\"id\":\"\n step 12: then stdout contains \"\"label\":\"\n step 13: then stdout contains \"\"data\": \"\"\nscenario: List clients\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: when I create directory mychunks\n step 4: when I run obnam store init\n step 5: when I run obnam --client-key my.secret client init --client-name my.host\n step 6: when I run obnam --client-key my.secret client list\n step 7: then stdout is exactly \"my.host\\n\"\nscenario: Extracting a certificate from a key\n step 1: given an installed obnam\n step 2: given file alice.key\n step 3: when I run obnam sop extract-cert rsop alice.key\n step 4: then stdout isn't exactly \"\"\nscenario: Inspect an encoded chunk in file\n step 1: given an installed obnam\n step 2: given file greeting.txt\n step 3: when I run obnam chunk encrypt --label sticky.tape --key secret greeting.txt --output chunk.file\n step 4: when I run obnam chunk inspect --filename chunk.file\n step 5: then stdout is valid JSON\n step 6: then stdout contains \"\"id\":\"\n step 7: then stdout contains \"\"label\":\"\n step 8: then stdout contains \"\"data\": null\"\n step 9: when I run obnam chunk inspect --filename chunk.file --key secret\n step 10: then stdout is valid JSON\n step 11: then stdout contains \"\"id\":\"\n step 12: then stdout contains \"\"label\":\"\n step 13: then stdout contains \"\"data\": \"\"\nscenario: Add a chunk to the store.\n step 1: given an installed obnam\n step 2: given file .config/obnam/config.yaml from config.yaml\n step 3: given file greeting.txt\n step 4: given a directory mychunks\n step 5: when I run obnam store init\n step 6: when I run obnam chunk encrypt --key secret --label data --id xyzzy greeting.txt\n step 7: when I run obnam store list\n step 8: then stdout is exactly \"xyzzy\\n\"\nOK, all scenarios finished successfully\nenv 'RUSTDOCFLAGS=-D warnings' cargo doc --no-deps\nmake -C doc\nmake[1]: Entering directory '/ci/src/doc'\npandoc -N --toc --standalone --self-contained -o \"arch.html\" \"arch.md\"\npandoc -N --toc --standalone --self-contained -o \"glossary.html\" \"glossary.md\"\nmake[1]: Leaving directory '/ci/src/doc'\n 1179692 4 drwxr-xr-x 2 root root 4096 Mar 15 05:59 doc\n 1197969 8 -rw-r--r-- 1 root root 4303 Mar 15 05:59 doc/glossary.html\n 1179695 4 -rw-r--r-- 1 root root 517 Mar 15 05:58 doc/glossary.md\n 1179696 16 -rw-r--r-- 1 root root 13627 Mar 15 05:58 doc/arch.md\n 1179694 4 -rw-r--r-- 1 root root 540 Mar 15 05:58 doc/keys.pik\n 1179697 4 -rw-r--r-- 1 root root 327 Mar 15 05:58 doc/Makefile\n 1197968 24 -rw-r--r-- 1 root root 24568 Mar 15 05:59 doc/arch.html\n 1179693 4 -rw-r--r-- 1 root root 3885 Mar 15 05:58 doc/keys.svg\n",
"stderr": "+ export PATH=/root/.cargo/bin:/bin:/sbin\n+ PATH=/root/.cargo/bin:/bin:/sbin\n+ ls -l /ci/cache/cargo-target\n+ make TARGET= subplot doc\n INFO Starting Subplot\n INFO Subplot finished successfully\n INFO Starting Subplot\n INFO Subplot finished successfully\n Documenting obnam-server v0.1.0 (/ci/src/obnam-server)\n Documenting obnam v0.10.0 (/ci/src/obnam)\n Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.59s\n Generated /ci/cache/cargo-target/doc/obnam/index.html and 1 other file\n[WARNING] This document format requires a nonempty <title> element.\n Defaulting to 'glossary' as the title.\n To specify a title, use 'title' in metadata or --metadata title=\"...\".\n+ find doc -ls\n+ cp obnam.html obnam-server.html doc/arch.html doc/glossary.html /ci/artifacts\ncp: cannot stat 'obnam-server.html': No such file or directory\n",
"timestamp": {
"secs_since_epoch": 1773554358,
"nanos_since_epoch": 140599321
},
"log_source": "Plan"
}{
"type": "action_failed",
"action": "shell",
"shell": "export PATH=/root/.cargo/bin:/bin:/sbin\nls -l \"$CARGO_TARGET_DIR\"\nmake TARGET= subplot doc\nfind doc -ls\ncp obnam.html obnam-server.html doc/*.html /ci/artifacts\n",
"timestamp": {
"secs_since_epoch": 1773554358,
"nanos_since_epoch": 401016805
},
"log_source": "Plan"
}{
"type": "executor_ends_in_failure",
"exit_code": 1,
"timestamp": {
"secs_since_epoch": 1773554358,
"nanos_since_epoch": 406805768
},
"log_source": "Plan"
}{
"request": "trigger",
"version": 1,
"event_type": "patch",
"repository": {
"id": "rad:zbWNQYkQ4QKgdSQcd1tjaemv6d6x",
"name": "obnam",
"description": "Explore implementation of backup fundamentals",
"private": false,
"default_branch": "main",
"delegates": [
"did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV"
]
},
"action": "Created",
"patch": {
"id": "9ef28237ed505cac95032221dd2a085f585eba29",
"author": {
"id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
"alias": "liw"
},
"title": "doc: combine client and server subplots into one",
"state": {
"status": "open",
"conflicts": []
},
"before": "4b44d2f1882eef395e4d49b623115bcc352ba0d9",
"after": "657fb5e5ead89a2ae8dbd7fab99f568b7f0102c4",
"commits": [
"657fb5e5ead89a2ae8dbd7fab99f568b7f0102c4"
],
"target": "4b44d2f1882eef395e4d49b623115bcc352ba0d9",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "9ef28237ed505cac95032221dd2a085f585eba29",
"author": {
"id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
"alias": "liw"
},
"description": "",
"base": "4b44d2f1882eef395e4d49b623115bcc352ba0d9",
"oid": "657fb5e5ead89a2ae8dbd7fab99f568b7f0102c4",
"timestamp": 1773554285
}
]
}
}run CI for rad:zbWNQYkQ4QKgdSQcd1tjaemv6d6x ERROR: CI run failed inside QEMU
<empty log>