oficina / slides Public

CI failed 1m 34s

Branch
feat/r2-shared-chrome
Commit
4e853dc5 Paul Campbell
Runner
claude~paul@keymail.dev/DOCS-T1
Reported by
claude~paul@keymail.dev/DOCS-T1
Queued
Started
Waited for a runner
4s
Last change
Attempt
1 of 2

Steps run in order, one after another.

  1. gate failed 1m 34s
    === rust: fmt
    === rust: clippy
       Compiling proc-macro2 v1.0.107
       Compiling unicode-ident v1.0.24
       Compiling quote v1.0.47
       Compiling serde_core v1.0.229
       Compiling zerocopy v0.8.56
       Compiling version_check v0.9.5
        Checking cfg-if v1.0.4
       Compiling serde v1.0.229
        Checking once_cell v1.21.4
        Checking smallvec v1.15.2
       Compiling libc v0.2.189
       Compiling crossbeam-utils v0.8.22
       Compiling autocfg v1.5.1
        Checking parking v2.2.1
        Checking pin-project-lite v0.2.17
       Compiling parking_lot_core v0.9.12
       Compiling zmij v1.0.23
       Compiling rustversion v1.0.23
        Checking event-listener v5.4.2
       Compiling thiserror v2.0.20
       Compiling libm v0.2.16
       Compiling serde_json v1.0.151
       Compiling paste v1.0.15
        Checking scopeguard v1.2.0
       Compiling ahash v0.8.12
        Checking event-listener-strategy v0.5.4
        Checking memchr v2.8.3
        Checking lock_api v0.4.14
        Checking foldhash v0.2.0
        Checking itoa v1.0.18
       Compiling num-traits v0.2.19
        Checking async-lock v3.4.2
        Checking smallstr v0.3.1
        Checking fastrand v2.5.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/vendor/fastrand-2.5.0)
        Checking downcast-rs v1.2.1
        Checking indexmap-nostd v0.4.0
        Checking equivalent v1.0.2
        Checking bitflags v2.13.1
        Checking spin v0.9.9
        Checking arrayvec v0.7.8
        Checking semver v1.0.28
        Checking multi-stash v0.2.0
        Checking wasmparser-nostd v0.100.2
        Checking arc-swap v1.9.2
       Compiling syn v3.0.4
       Compiling syn v2.0.119
        Checking wasmi_core v0.32.3
        Checking hashbrown v0.17.1
       Compiling num-derive v0.4.2
        Checking indexmap v2.14.1
       Compiling serde_derive v1.0.229
       Compiling thiserror-impl v2.0.20
       Compiling async-trait v0.1.92
        Checking hashbrown v0.14.5
        Checking dashmap v6.2.1
        Checking string-interner v0.17.0
        Checking yrs v0.23.5
        Checking wasmparser v0.258.0
        Checking wasmi_collections v0.32.3
        Checking wasmi v0.32.3
        Checking slides-core v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core)
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.71s
    === wasm: the artifact the host embeds
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.03s
       Compiling proc-macro2 v1.0.107
       Compiling quote v1.0.47
       Compiling unicode-ident v1.0.24
       Compiling serde_core v1.0.229
       Compiling cfg-if v1.0.4
       Compiling rustversion v1.0.23
       Compiling smallvec v1.15.2
       Compiling parking_lot_core v0.9.12
       Compiling pin-project-lite v0.2.17
       Compiling getrandom v0.4.3
       Compiling zmij v1.0.23
       Compiling crossbeam-utils v0.8.22
       Compiling serde v1.0.229
       Compiling thiserror v2.0.20
       Compiling serde_json v1.0.151
       Compiling scopeguard v1.2.0
       Compiling memchr v2.8.3
       Compiling event-listener v5.4.2
       Compiling lock_api v0.4.14
       Compiling hashbrown v0.14.5
       Compiling once_cell v1.21.4
       Compiling itoa v1.0.18
       Compiling event-listener-strategy v0.5.4
       Compiling smallstr v0.3.1
       Compiling fastrand v2.5.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/vendor/fastrand-2.5.0)
       Compiling async-lock v3.4.2
       Compiling arc-swap v1.9.2
       Compiling dashmap v6.2.1
       Compiling syn v3.0.4
       Compiling thiserror-impl v2.0.20
       Compiling serde_derive v1.0.229
       Compiling async-trait v0.1.92
       Compiling yrs v0.23.5
       Compiling slides-core v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core)
        Finished `release` profile [optimized] target(s) in 11.82s
    core/target/wasm32-unknown-unknown/release/slides_core.wasm (1228229 bytes)
    === the embedded wasm must match a fresh build
    === rust: test
       Compiling serde_core v1.0.229
       Compiling cfg-if v1.0.4
       Compiling once_cell v1.21.4
       Compiling smallvec v1.15.2
       Compiling parking v2.2.1
       Compiling pin-project-lite v0.2.17
       Compiling zerocopy v0.8.56
       Compiling libc v0.2.189
       Compiling scopeguard v1.2.0
       Compiling crossbeam-utils v0.8.22
       Compiling zmij v1.0.23
       Compiling memchr v2.8.3
       Compiling itoa v1.0.18
       Compiling foldhash v0.2.0
       Compiling libm v0.2.16
       Compiling thiserror v2.0.20
       Compiling num-traits v0.2.19
       Compiling arc-swap v1.9.2
       Compiling event-listener v5.4.2
       Compiling lock_api v0.4.14
       Compiling downcast-rs v1.2.1
       Compiling smallstr v0.3.1
       Compiling equivalent v1.0.2
       Compiling indexmap-nostd v0.4.0
       Compiling fastrand v2.5.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/vendor/fastrand-2.5.0)
       Compiling bitflags v2.13.1
       Compiling multi-stash v0.2.0
       Compiling event-listener-strategy v0.5.4
       Compiling arrayvec v0.7.8
       Compiling semver v1.0.28
       Compiling spin v0.9.9
       Compiling wasmparser-nostd v0.100.2
       Compiling async-lock v3.4.2
       Compiling wasmi_core v0.32.3
       Compiling parking_lot_core v0.9.12
       Compiling serde v1.0.229
       Compiling serde_json v1.0.151
       Compiling hashbrown v0.17.1
       Compiling indexmap v2.14.1
       Compiling wasmparser v0.258.0
       Compiling ahash v0.8.12
       Compiling hashbrown v0.14.5
       Compiling dashmap v6.2.1
       Compiling string-interner v0.17.0
       Compiling wasmi_collections v0.32.3
       Compiling yrs v0.23.5
       Compiling wasmi v0.32.3
       Compiling slides-core v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core)
        Finished `test` profile [unoptimized + debuginfo] target(s) in 14.51s
         Running unittests src/lib.rs (core/target/debug/deps/slides_core-929bfceb2edd4a94)
    
    running 30 tests
    test check::tests::the_empty_document_passes ... ok
    test layout::tests::aside_region_rect ... ok
    test layout::tests::default_region_by_kind ... ok
    test layout::tests::body_region_rect_narrows_for_an_aside ... ok
    test layout::tests::heading_region_rect ... ok
    test layout::tests::media_region_rect ... ok
    test layout::tests::to_canvas_narrows_body_when_an_aside_is_present ... ok
    test layout::tests::to_canvas_splits_a_shared_region_equally_and_sets_z_by_index ... ok
    test check::tests::an_element_inside_a_paragraph_is_reported ... ok
    test layout::tests::to_flow_is_a_no_op_when_already_in_order ... ok
    test check::tests::bare_text_at_fragment_level_is_reported ... ok
    test layout::tests::to_flow_classifies_by_position_and_kind ... ok
    test check::tests::what_the_ops_write_passes ... ok
    test check::tests::a_non_paragraph_child_is_reported ... ok
    test check::tests::y_prosemirror_shapes_pass ... ok
    test markdown::tests::empty_input_is_no_paragraphs_and_lines_keep_blanks ... ok
    test markdown::tests::inline_marks ... ok
    test markdown::tests::marks_nest_and_links_carry_marks ... ok
    test markdown::tests::paragraphs_split_on_blank_lines_and_list_markers ... ok
    test check::tests::an_unknown_formatting_attribute_is_reported ... ok
    test schema::tests::an_empty_map_reads_as_a_set_mark ... ok
    test schema::tests::an_href_map_without_a_string_url_reads_as_no_link ... ok
    test schema::tests::href_is_written_as_a_one_key_map_and_reads_back ... ok
    test layout::tests::to_flow_orders_y_then_x ... ok
    test schema::tests::href_written_as_a_plain_string_still_reads_back ... ok
    test view::tests::malformed_background_is_the_default ... ok
    test view::tests::assets_are_typed_or_skipped ... ok
    test view::tests::malformed_box_is_null_and_phone_keeps_only_typed_fields ... ok
    test view::tests::malformed_fonts_are_null ... ok
    test layout::tests::to_flow_keeps_a_concurrent_text_edit ... ok
    
    test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running tests/no_host_imports.rs (core/target/debug/deps/no_host_imports-184c0d8bf00e14f9)
    
    running 1 test
    test no_host_imports ... ok
    
    test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running tests/ops.rs (core/target/debug/deps/ops-256addce27f366d1)
    
    running 12 tests
    test add_slide_then_view_lists_it ... ok
    test add_block_with_markdown_produces_runs ... ok
    test layout_switch_assigns_boxes ... ok
    test duplicate_slide_remaps_columns_children ... ok
    test columns_children_have_one_parent_and_no_cycles ... ok
    test move_slide_keeps_a_concurrent_text_edit ... ok
    test move_block_keeps_a_concurrent_text_edit ... ok
    test columns_children_must_name_blocks_on_the_slide ... ok
    test ops_are_atomic ... ok
    test remove_block_drops_it_from_columns_children ... ok
    test update_roundtrip ... ok
    test remaining_ops_roundtrip ... ok
    
    test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
    
       Doc-tests slides_core
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
    === rust: fmt (pdf)
    === rust: clippy (pdf)
       Compiling proc-macro2 v1.0.107
       Compiling quote v1.0.47
       Compiling unicode-ident v1.0.24
       Compiling autocfg v1.5.1
        Checking log v0.4.34
       Compiling serde_core v1.0.229
       Compiling libm v0.2.16
        Checking arrayvec v0.7.8
        Checking simd-adler32 v0.3.10
       Compiling crc32fast v1.5.1
        Checking adler2 v2.0.1
        Checking bitflags v2.13.1
        Checking smallvec v1.16.0
        Checking cfg-if v1.0.4
       Compiling libc v0.2.189
        Checking foldhash v0.2.0
       Compiling version_check v0.9.5
        Checking arrayref v0.3.9
        Checking memchr v2.8.3
        Checking equivalent v1.0.2
        Checking roxmltree v0.20.0
        Checking unicode-properties v0.1.4
        Checking unicode-bidi-mirroring v0.4.0
        Checking unicode-script v0.5.8
        Checking miniz_oxide v0.9.1
        Checking polycool v0.4.0
        Checking miniz_oxide v0.8.9
        Checking fdeflate v0.3.7
        Checking unicode-ccc v0.4.0
        Checking tinyvec_macros v0.1.1
        Checking siphasher v1.0.3
        Checking tinyvec v1.13.2
        Checking kurbo v0.13.1
        Checking weezl v0.1.12
       Compiling slotmap v1.1.1
        Checking fontconfig-parser v0.5.8
       Compiling num-traits v0.2.19
        Checking imagesize v0.14.0
        Checking quick-error v2.0.1
        Checking base64 v0.22.1
        Checking zune-core v0.5.3
        Checking color_quant v1.1.0
        Checking byteorder-lite v0.1.0
        Checking flate2 v1.1.10
        Checking roxmltree v0.21.1
        Checking simplecss v0.2.2
        Checking ryu v1.0.23
        Checking gif v0.14.2
        Checking unicode-vo v0.1.0
        Checking rustc-hash v2.1.3
        Checking itoa v1.0.18
        Checking image-webp v0.2.4
        Checking zune-jpeg v0.5.15
        Checking xmlwriter v0.1.0
        Checking pico-args v0.5.0
        Checking unicode-bidi v0.3.18
        Checking data-url v0.3.2
        Checking png v0.18.1
        Checking stable_deref_trait v1.2.1
        Checking pdf-writer v0.15.0
       Compiling serde v1.0.229
       Compiling syn v3.0.5
       Compiling syn v2.0.119
        Checking bumpalo v3.20.3
        Checking svgtypes v0.16.1
        Checking xmp-writer v0.3.3
        Checking core_maths v0.1.1
        Checking semver v1.0.28
        Checking ttf-parser v0.25.1
        Checking memmap2 v0.9.11
        Checking float-cmp v0.9.0
        Checking strict-num v0.1.1
        Checking hashbrown v0.17.1
        Checking indexmap v2.14.2
       Compiling bytemuck_derive v1.12.0
        Checking fontdb v0.23.0
       Compiling synstructure v0.13.2
        Checking wasmparser v0.258.0
       Compiling zerofrom-derive v0.1.7
       Compiling yoke-derive v0.8.2
        Checking bytemuck v1.25.2
        Checking font-types v0.11.3
        Checking tiny-skia-path v0.12.0
        Checking rustybuzz v0.20.1
        Checking rgb v0.8.53
        Checking zerofrom v0.1.8
        Checking yoke v0.8.3
        Checking read-fonts v0.39.2
        Checking tiny-skia v0.12.0
        Checking usvg v0.47.0
        Checking resvg v0.47.0
        Checking skrifa v0.42.1
        Checking write-fonts v0.48.1
        Checking subsetter v0.2.6
        Checking krilla v0.8.2
        Checking krilla-svg v0.8.1
        Checking slides-pdf v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/pdf)
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.29s
    === wasm: the pdf artifact the host embeds
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.03s
       Compiling proc-macro2 v1.0.107
       Compiling quote v1.0.47
       Compiling unicode-ident v1.0.24
       Compiling autocfg v1.5.1
       Compiling simd-adler32 v0.3.10
       Compiling log v0.4.34
       Compiling arrayvec v0.7.8
       Compiling libm v0.2.16
       Compiling smallvec v1.16.0
       Compiling crc32fast v1.5.1
       Compiling adler2 v2.0.1
       Compiling bitflags v2.13.1
       Compiling cfg-if v1.0.4
       Compiling version_check v0.9.5
       Compiling arrayref v0.3.9
       Compiling memchr v2.8.3
       Compiling siphasher v1.0.3
       Compiling fdeflate v0.3.7
       Compiling tinyvec_macros v0.1.1
       Compiling miniz_oxide v0.9.1
       Compiling miniz_oxide v0.8.9
       Compiling polycool v0.4.0
       Compiling unicode-script v0.5.8
       Compiling unicode-bidi-mirroring v0.4.0
       Compiling unicode-ccc v0.4.0
       Compiling hashbrown v0.17.1
       Compiling equivalent v1.0.2
       Compiling slotmap v1.1.1
       Compiling unicode-properties v0.1.4
       Compiling kurbo v0.13.1
       Compiling tinyvec v1.13.2
       Compiling byteorder-lite v0.1.0
       Compiling num-traits v0.2.19
       Compiling quick-error v2.0.1
       Compiling weezl v0.1.12
       Compiling color_quant v1.1.0
       Compiling flate2 v1.1.10
       Compiling imagesize v0.14.0
       Compiling memmap2 v0.9.11
       Compiling base64 v0.22.1
       Compiling zune-core v0.5.3
       Compiling indexmap v2.14.2
       Compiling gif v0.14.2
       Compiling image-webp v0.2.4
       Compiling roxmltree v0.21.1
       Compiling syn v3.0.5
       Compiling syn v2.0.119
       Compiling png v0.18.1
       Compiling float-cmp v0.9.0
       Compiling core_maths v0.1.1
       Compiling ttf-parser v0.25.1
       Compiling strict-num v0.1.1
       Compiling svgtypes v0.16.1
       Compiling zune-jpeg v0.5.15
       Compiling simplecss v0.2.2
       Compiling ryu v1.0.23
       Compiling data-url v0.3.2
       Compiling rustc-hash v2.1.3
       Compiling unicode-bidi v0.3.18
       Compiling itoa v1.0.18
       Compiling stable_deref_trait v1.2.1
       Compiling pico-args v0.5.0
       Compiling unicode-vo v0.1.0
       Compiling xmlwriter v0.1.0
       Compiling pdf-writer v0.15.0
       Compiling xmp-writer v0.3.3
       Compiling bumpalo v3.20.3
       Compiling bytemuck_derive v1.12.0
       Compiling synstructure v0.13.2
       Compiling fontdb v0.23.0
       Compiling zerofrom-derive v0.1.7
       Compiling yoke-derive v0.8.2
       Compiling bytemuck v1.25.2
       Compiling zerofrom v0.1.8
       Compiling font-types v0.11.3
       Compiling tiny-skia-path v0.12.0
       Compiling rustybuzz v0.20.1
       Compiling rgb v0.8.53
       Compiling yoke v0.8.3
       Compiling read-fonts v0.39.2
       Compiling tiny-skia v0.12.0
       Compiling usvg v0.47.0
       Compiling resvg v0.47.0
       Compiling skrifa v0.42.1
       Compiling write-fonts v0.48.1
       Compiling subsetter v0.2.6
       Compiling krilla v0.8.2
       Compiling krilla-svg v0.8.1
       Compiling slides-pdf v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/pdf)
        Finished `release` profile [optimized] target(s) in 22.75s
    core/pdf/target/wasm32-unknown-unknown/release/slides_pdf.wasm (5301002 bytes)
    === the embedded pdf wasm must match a fresh build
    === rust: test (pdf)
       Compiling bytemuck v1.25.2
       Compiling log v0.4.34
       Compiling arrayvec v0.7.8
       Compiling simd-adler32 v0.3.10
       Compiling bitflags v2.13.1
       Compiling smallvec v1.16.0
       Compiling adler2 v2.0.1
       Compiling cfg-if v1.0.4
       Compiling foldhash v0.2.0
       Compiling libm v0.2.16
       Compiling num-traits v0.2.19
       Compiling serde_core v1.0.229
       Compiling equivalent v1.0.2
       Compiling memchr v2.8.3
       Compiling arrayref v0.3.9
       Compiling libc v0.2.189
       Compiling unicode-bidi-mirroring v0.4.0
       Compiling crc32fast v1.5.1
       Compiling tinyvec_macros v0.1.1
       Compiling unicode-script v0.5.8
       Compiling siphasher v1.0.3
       Compiling unicode-properties v0.1.4
       Compiling roxmltree v0.20.0
       Compiling polycool v0.4.0
       Compiling miniz_oxide v0.9.1
       Compiling fdeflate v0.3.7
       Compiling miniz_oxide v0.8.9
       Compiling font-types v0.11.3
       Compiling unicode-ccc v0.4.0
       Compiling tinyvec v1.13.2
       Compiling slotmap v1.1.1
       Compiling weezl v0.1.12
       Compiling kurbo v0.13.1
       Compiling color_quant v1.1.0
       Compiling quick-error v2.0.1
       Compiling base64 v0.22.1
       Compiling read-fonts v0.39.2
       Compiling fontconfig-parser v0.5.8
       Compiling byteorder-lite v0.1.0
       Compiling zune-core v0.5.3
       Compiling imagesize v0.14.0
       Compiling gif v0.14.2
       Compiling float-cmp v0.9.0
       Compiling flate2 v1.1.10
       Compiling image-webp v0.2.4
       Compiling strict-num v0.1.1
       Compiling zune-jpeg v0.5.15
       Compiling core_maths v0.1.1
       Compiling memmap2 v0.9.11
       Compiling ttf-parser v0.25.1
       Compiling tiny-skia-path v0.12.0
       Compiling roxmltree v0.21.1
       Compiling zerofrom v0.1.8
       Compiling simplecss v0.2.2
       Compiling rustc-hash v2.1.3
       Compiling pico-args v0.5.0
       Compiling data-url v0.3.2
       Compiling png v0.18.1
       Compiling svgtypes v0.16.1
       Compiling xmlwriter v0.1.0
       Compiling unicode-vo v0.1.0
       Compiling unicode-bidi v0.3.18
       Compiling stable_deref_trait v1.2.1
       Compiling itoa v1.0.18
       Compiling ryu v1.0.23
       Compiling yoke v0.8.3
       Compiling rgb v0.8.53
       Compiling pdf-writer v0.15.0
       Compiling bumpalo v3.20.3
       Compiling xmp-writer v0.3.3
       Compiling semver v1.0.28
       Compiling hashbrown v0.17.1
       Compiling serde v1.0.229
       Compiling tiny-skia v0.12.0
       Compiling indexmap v2.14.2
       Compiling rustybuzz v0.20.1
       Compiling fontdb v0.23.0
       Compiling wasmparser v0.258.0
       Compiling usvg v0.47.0
       Compiling resvg v0.47.0
       Compiling write-fonts v0.48.1
       Compiling skrifa v0.42.1
       Compiling subsetter v0.2.6
       Compiling krilla v0.8.2
       Compiling krilla-svg v0.8.1
       Compiling slides-pdf v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/pdf)
        Finished `test` profile [unoptimized + debuginfo] target(s) in 17.63s
         Running unittests src/lib.rs (core/pdf/target/debug/deps/slides_pdf-891fafaa44f9fd64)
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running tests/no_host_imports.rs (core/pdf/target/debug/deps/no_host_imports-17ccbb1d62120093)
    
    running 1 test
    test no_host_imports ... ok
    
    test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
    
         Running tests/render.rs (core/pdf/target/debug/deps/render-2e1d7e8b19d78595)
    
    running 6 tests
    test raster_image_is_embedded ... ok
    test a_null_zero_length_pair_is_no_frames_not_a_dereference ... ok
    test text_with_no_fonts_at_all_still_renders_the_shapes ... ok
    test renders_text_as_embedded_glyphs ... ok
    test abi_frames_round_trip ... ok
    test two_svgs_make_two_pages ... ok
    
    test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
    
       Doc-tests slides_pdf
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
    === fixtures: node dependencies
    v24.19.0
    11.17.0
    === fixtures: npm ci (needs the registry — see .amadan/README.md)
    
    added 19 packages, and audited 20 packages in 2s
    
    5 packages are looking for funding
      run `npm fund` for details
    
    found 0 vulnerabilities
    npm warn allow-scripts 1 package has install scripts not yet covered by allowScripts:
    npm warn allow-scripts   esbuild@0.28.2 (postinstall: node install.js)
    npm warn allow-scripts
    npm warn allow-scripts Run `npm approve-scripts --allow-scripts-pending` to review, or `npm approve-scripts <pkg>` to allow.
    === fixtures: the JS side's own tests
    ✔ one finished upload is register_asset plus the block that uses it, in one batch (11.600034ms)
    ✔ a record missing its numbers still makes an op the core accepts (1.298247ms)
    ✔ unusedAssets is what no slide refers to, and remove_asset drops one (2.886394ms)
    ✔ the Unused images list reconciles by id and names each Remove button (1.193943ms)
    ✔ an upload refusal is said in words the person can act on (0.264072ms)
    ✔ clampBox keeps the box inside the frame and no smaller than the minimum (1.796264ms)
    ✔ fixBox writes four decimals (0.318172ms)
    ✔ guides are the thirds plus every other block edge (0.273659ms)
    ✔ snapMove pulls the nearest edge onto a guide within one per cent, and leaves a far one (0.535136ms)
    ✔ snapResize moves only the edges the handle drags (0.269292ms)
    ✔ moveBox and resizeBox by handle (0.303986ms)
    ✔ nudge: arrows move by half a per cent, Shift by two, Alt resizes (0.260615ms)
    ✔ rectBox reads a block rectangle against its frame (0.305208ms)
    ✔ typing into a block is a text change on its slide only (9.55099ms)
    ✔ a block's props changing is structure on its slide (1.603044ms)
    ✔ adding, moving or removing a block is structure on its slide (2.039457ms)
    ✔ the notes are text on their slide (1.04197ms)
    ✔ a slide added, removed or moved is an order change (1.602062ms)
    ✔ one transaction touching several things reports each once (1.023284ms)
    ✔ what the ops write passes, and so does an empty document (9.172857ms)
    ✔ the shapes y-prosemirror and older documents write pass (1.83678ms)
    ✔ an unknown formatting attribute is reported with the core's message (2.137389ms)
    ✔ an element inside a paragraph, a non-paragraph child and bare text are reported (3.025982ms)
    ✔ the unknownmark poison shape is what the check refuses (1.787959ms)
    ✔ y-prosemirror 1.3.7 deletes the words under an unknown mark; sanitising first keeps them (5.299697ms)
    ✔ the vocabulary is the five marks and nothing else (0.130633ms)
    ✔ an empty body is no frames (1.580042ms)
    ✔ frames come back in order with their exact bytes (0.378194ms)
    ✔ a length prefix is big-endian (0.181558ms)
    ✔ a truncated frame throws rather than returning a short update (4.784315ms)
    ✔ deck controls are set_meta (13.146174ms)
    ✔ slide controls are set_slide, and background keeps its colour (3.329008ms)
    ✔ move up and down are move_slide with the right after (2.136557ms)
    ✔ block props: value kinds, region, a shape label (2.753495ms)
    ✔ box fields are set_block on the desktop and set_phone in the phone view (6.229599ms)
    ✔ move block and the layer buttons (3.653992ms)
    ✔ add block: region after the selection on flow, a default box on canvas, a heading level that fits (11.949556ms)
    ✔ a block is named by its type and its first words (0.975546ms)
    ✔ blockChange: a control element to its op (1.909545ms)
    ✔ the Blocks list reconciles by id and keeps its buttons (1.060564ms)
    ✔ open resolves to the button that closed it and the trimmed field (2.587547ms)
    ✔ a second open while the dialog is up joins the first (0.271104ms)
    ✔ a missing dialog mounts as nothing (0.158014ms)
    ✔ a tab advances its own cursor only when its POST is the very next row (3.380253ms)
    ✔ the cursor never moves backwards when a response is overtaken by this tab's own write (0.512694ms)
    ✔ a later response still carries the cursor forward (0.302813ms)
    ✔ a burst of notifications collapses into one fetch at a time (0.251088ms)
    ✔ an event naming a seq the tab already has fetches nothing (0.207817ms)
    ✔ a stopped subscriber drops a response that arrives late (0.814536ms)
    ✔ stop closes the stream, and start opens exactly one (0.313414ms)
    ✔ a hidden tab closes its stream on a shortened deadline, and activity reopens it (1.069501ms)
    ✔ switching away and back inside the grace never drops the stream, so nothing has to be caught up (0.661371ms)
    ✔ a visible tab that is only being READ closes when idle and comes back on any activity (1.215112ms)
    ✔ activity while streaming defers the idle close rather than reopening anything (0.568749ms)
    ✔ a stream failure is never reported as a save failure, and heals on activity (0.254163ms)
    ✔ an empty response advances the cursor without applying anything (0.440871ms)
    ✔ a failed fetch leaves the cursor alone so the next notification retries it (0.626958ms)
    ✔ a decode failure retries once through the raw log, then gives up (1.85871ms)
    ✔ updatesURL spells the query string exactly, in particular raw as the literal raw=1 (0.174384ms)
    ✔ empty_doc_views_as_defaults (4.443152ms)
    ✔ set_meta (3.341409ms)
    ✔ slides: add, move, remove, set_slide, set_notes (7.985607ms)
    ✔ duplicate_slide (3.954821ms)
    ✔ blocks: add, move, remove, set_block (4.683469ms)
    ✔ set_phone (1.481017ms)
    ✔ table cells follow rows and cols (1.802606ms)
    ✔ canvas blocks: box defaults from the region, z from the index (1.966721ms)
    ✔ assets: register and remove (2.60015ms)
    ✔ markdown: every mark, code blocks are plain lines (6.515951ms)
    ✔ batch_is_atomic (2.222597ms)
    ✔ a batch applies in one transaction with the given origin (0.800189ms)
    ✔ columns_children_validated (1.675779ms)
    ✔ layout_switch_round_trip (2.185489ms)
    ✔ view_matches_snapshot_fixtures (18.437033ms)
    ✔ columns children have one parent and no cycles (codex 7) (1.312073ms)
    ✔ canvas-to-flow keeps a concurrent text edit (codex 4) (3.691471ms)
    ✔ move_block keeps a concurrent text edit, and later inserts land where after says (codex 4) (3.358503ms)
    ✔ move_slide keeps a concurrent text edit, and later inserts land where after says (codex 4 at slide level) (2.582899ms)
    ✔ format: {name} and {n} interpolate; an unknown key is left as text (0.974875ms)
    ✔ a beat on connect, then one every twenty seconds (2.253496ms)
    ✔ a move posts once, 200ms after the last of a burst, and re-arms the beat (0.383855ms)
    ✔ a hidden tab stops beating; coming back posts at once (0.288857ms)
    ✔ applySet leaves this tab out and answers what changed (0.630774ms)
    ✔ a set with rubbish in it is read for what it does carry (0.281464ms)
    ✔ initials, and a client id per tab (4.856622ms)
    ✔ a resync that fails is retried with backoff until it succeeds, without ever running twice at once (9.6746ms)
    ✔ the browser's online event retries immediately, not just on the next backoff tick (0.37607ms)
    ✔ reportDivergence before any failure runs the first attempt without a caller ever calling online (3.41675ms)
    ✔ a permanent 4xx drops its batch instead of retrying it, and does not poison the next edit (83.959102ms)
    ✔ a network failure or a 5xx is retried, not dropped (60.007361ms)
    ✔ a 500 is retried the same way a network failure is, never dropped (60.728374ms)
    ✔ the core-written structure reads as ProseMirror marks (10.531346ms)
    ✔ a y-prosemirror round trip preserves bold and the link (3.304182ms)
    ✔ y-prosemirror writes href as the one-key map and marks as {} (1.057198ms)
    ✔ a plain-string href, written before the map shape, still reads (0.82753ms)
    ✔ textFragment writes the same shape as writeText (0.570241ms)
    ✔ safeHref is the server allowlist, and a disallowed href never draws an anchor (0.448004ms)
    ✔ parseHash splits the slide and the block, and survives a stray % (2.363109ms)
    ✔ destroy takes the listeners off, and a second mount leaves one of each (0.713759ms)
    ✔ formatHash is the inverse (1.975749ms)
    ✔ textBlocks finds the text-bearing blocks and skips the rest (2.506265ms)
    ✔ mountTarget is the element whose children are the paragraphs (0.282546ms)
    ✔ paragraphTag keeps the renderer's own markup per type (0.193049ms)
    ✔ blockFragment finds a block's text by slide and block id (8.753546ms)
    ✔ notesFragment finds the slide's notes (1.452995ms)
    ✔ blockIDs and slideIDs are the orders on the stage and the strip (5.508696ms)
    ✔ cellFragments are a table's cells, row-major (1.733648ms)
    ✔ a load that fails leaves the stage on the slide it was showing and says so (6.164174ms)
    ✔ slideAfter is the slide to show once one is gone (0.602261ms)
    ✔ the queue words map to the four states, failed staying failed (0.822922ms)
    ✔ a dropped batch outranks a load error outranks the queue (0.212696ms)
    ✔ dropTarget: before puts it ahead of the item, after behind it, null means first (0.943987ms)
    ✔ a drop that leaves the order as it is is no move (0.195184ms)
    ✔ dropOp is the move_slide (0.785553ms)
    ✔ labelFor is the slide's first heading, else the numbered fallback (7.559713ms)
    ✔ flush re-points every dirty thumbnail and relabels it (3.316514ms)
    ✔ destroy takes the item-menu listener off; a second mount leaves one (0.388333ms)
    ✔ plan says what to add, drop and where each item goes (1.387152ms)
    ✔ sync moves only the items out of place and keeps focus (2.038616ms)
    ✔ desktop view: box and size are the block; hidden and order are always the phone map (2.083699ms)
    ✔ phone view: everything goes to set_phone, carrying the rest of the map (0.626987ms)
    ✔ the ops it makes are ones the document takes (15.836752ms)
    ✔ phoneMap reads only the four keys, and only well-typed (0.223055ms)
    ✔ the stored view is read defensively (0.476387ms)
    ✔ linkAt reads the link under the cursor and nothing elsewhere (8.312174ms)
    ✔ setLink marks the selection (2.713201ms)
    ✔ setLink on a collapsed cursor inside a link replaces that link (5.981775ms)
    ✔ setLink with nothing selected and no link does nothing (3.465743ms)
    ✔ removeLink clears the link under the cursor (0.758332ms)
    ✔ the keymap binds every documented shortcut (0.283748ms)
    ✔ Mod-b toggles bold through the keymap (0.727554ms)
    ✔ setLink refuses an address outside the allowlist and writes nothing (0.871282ms)
    ✔ the state machine runs choose → sign → put → register → op (9.65863ms)
    ✔ a file the deck will not take never reaches the network (0.988641ms)
    ✔ alt text is required before the bytes move, unless the image is decorative (0.339031ms)
    ✔ a step that fails stops the ones after it and reports its own code (0.828943ms)
    ✔ a failure that is not ours still becomes an UploadError (0.791513ms)
    ✔ a second pick while one is in flight is refused, not raced (0.470176ms)
    ✔ an unreadable size is zero rather than a failure (1.125055ms)
    ✔ a per-call applyOp wins, so an upload lands on the block it was chosen for (0.308965ms)
    ✔ checkFile takes exactly the four types (1.164768ms)
    ✔ sha256Hex is the hex digest of the bytes (26.949901ms)
    ✔ refusal reads this app's JSON error shape, and survives one that is not (0.442865ms)
    ✔ malformed fonts are null (3.738158ms)
    ✔ a malformed background is the theme default (1.955ms)
    ✔ a malformed box is null (1.127789ms)
    ✔ the phone layer keeps only its typed fields, order as a whole number (1.024347ms)
    ✔ assets are typed or skipped (3.627373ms)
    ✔ every poison update is deterministic bytes that apply to any deck (10.647481ms)
    ℹ tests 149
    ℹ suites 0
    ℹ pass 149
    ℹ fail 0
    ℹ cancelled 0
    ℹ skipped 0
    ℹ todo 0
    ℹ duration_ms 724.942535
    === the vectors must match a fresh generation
    canvas: 22 ops, 3715 bytes
    columns: 23 ops, 3134 bytes
    every-block: 36 ops, 3180 bytes
    table: 14 ops, 1509 bytes
    title-only: 6 ops, 1136 bytes
    === the editor bundle must match a fresh build
    wrote internal/slides/static/editor.ea69e9f399e840e0.js (375198 bytes)
    === go: vet, gofmt, test, migration check
    go vet ./...
    go: downloading amadan.net/oficina/estilo.git v0.0.0-20260924071126-894afdcb71a9
    go: downloading amadan.net/oficina/home/connect v0.0.0-20260923190447-01166fcfc0a9
    go: downloading github.com/carlosframework/rastrillo v0.23.0
    gofmt needed:
    internal/slides/handlers.go
    internal/slides/home.go
    make: *** [Makefile:91: fmt-check] Error 1
    
    amadan: step gate failed: exit status 2
    
Whole run log
=== gate ===
=== rust: fmt
=== rust: clippy
   Compiling proc-macro2 v1.0.107
   Compiling unicode-ident v1.0.24
   Compiling quote v1.0.47
   Compiling serde_core v1.0.229
   Compiling zerocopy v0.8.56
   Compiling version_check v0.9.5
    Checking cfg-if v1.0.4
   Compiling serde v1.0.229
    Checking once_cell v1.21.4
    Checking smallvec v1.15.2
   Compiling libc v0.2.189
   Compiling crossbeam-utils v0.8.22
   Compiling autocfg v1.5.1
    Checking parking v2.2.1
    Checking pin-project-lite v0.2.17
   Compiling parking_lot_core v0.9.12
   Compiling zmij v1.0.23
   Compiling rustversion v1.0.23
    Checking event-listener v5.4.2
   Compiling thiserror v2.0.20
   Compiling libm v0.2.16
   Compiling serde_json v1.0.151
   Compiling paste v1.0.15
    Checking scopeguard v1.2.0
   Compiling ahash v0.8.12
    Checking event-listener-strategy v0.5.4
    Checking memchr v2.8.3
    Checking lock_api v0.4.14
    Checking foldhash v0.2.0
    Checking itoa v1.0.18
   Compiling num-traits v0.2.19
    Checking async-lock v3.4.2
    Checking smallstr v0.3.1
    Checking fastrand v2.5.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/vendor/fastrand-2.5.0)
    Checking downcast-rs v1.2.1
    Checking indexmap-nostd v0.4.0
    Checking equivalent v1.0.2
    Checking bitflags v2.13.1
    Checking spin v0.9.9
    Checking arrayvec v0.7.8
    Checking semver v1.0.28
    Checking multi-stash v0.2.0
    Checking wasmparser-nostd v0.100.2
    Checking arc-swap v1.9.2
   Compiling syn v3.0.4
   Compiling syn v2.0.119
    Checking wasmi_core v0.32.3
    Checking hashbrown v0.17.1
   Compiling num-derive v0.4.2
    Checking indexmap v2.14.1
   Compiling serde_derive v1.0.229
   Compiling thiserror-impl v2.0.20
   Compiling async-trait v0.1.92
    Checking hashbrown v0.14.5
    Checking dashmap v6.2.1
    Checking string-interner v0.17.0
    Checking yrs v0.23.5
    Checking wasmparser v0.258.0
    Checking wasmi_collections v0.32.3
    Checking wasmi v0.32.3
    Checking slides-core v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.71s
=== wasm: the artifact the host embeds
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.03s
   Compiling proc-macro2 v1.0.107
   Compiling quote v1.0.47
   Compiling unicode-ident v1.0.24
   Compiling serde_core v1.0.229
   Compiling cfg-if v1.0.4
   Compiling rustversion v1.0.23
   Compiling smallvec v1.15.2
   Compiling parking_lot_core v0.9.12
   Compiling pin-project-lite v0.2.17
   Compiling getrandom v0.4.3
   Compiling zmij v1.0.23
   Compiling crossbeam-utils v0.8.22
   Compiling serde v1.0.229
   Compiling thiserror v2.0.20
   Compiling serde_json v1.0.151
   Compiling scopeguard v1.2.0
   Compiling memchr v2.8.3
   Compiling event-listener v5.4.2
   Compiling lock_api v0.4.14
   Compiling hashbrown v0.14.5
   Compiling once_cell v1.21.4
   Compiling itoa v1.0.18
   Compiling event-listener-strategy v0.5.4
   Compiling smallstr v0.3.1
   Compiling fastrand v2.5.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/vendor/fastrand-2.5.0)
   Compiling async-lock v3.4.2
   Compiling arc-swap v1.9.2
   Compiling dashmap v6.2.1
   Compiling syn v3.0.4
   Compiling thiserror-impl v2.0.20
   Compiling serde_derive v1.0.229
   Compiling async-trait v0.1.92
   Compiling yrs v0.23.5
   Compiling slides-core v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core)
    Finished `release` profile [optimized] target(s) in 11.82s
core/target/wasm32-unknown-unknown/release/slides_core.wasm (1228229 bytes)
=== the embedded wasm must match a fresh build
=== rust: test
   Compiling serde_core v1.0.229
   Compiling cfg-if v1.0.4
   Compiling once_cell v1.21.4
   Compiling smallvec v1.15.2
   Compiling parking v2.2.1
   Compiling pin-project-lite v0.2.17
   Compiling zerocopy v0.8.56
   Compiling libc v0.2.189
   Compiling scopeguard v1.2.0
   Compiling crossbeam-utils v0.8.22
   Compiling zmij v1.0.23
   Compiling memchr v2.8.3
   Compiling itoa v1.0.18
   Compiling foldhash v0.2.0
   Compiling libm v0.2.16
   Compiling thiserror v2.0.20
   Compiling num-traits v0.2.19
   Compiling arc-swap v1.9.2
   Compiling event-listener v5.4.2
   Compiling lock_api v0.4.14
   Compiling downcast-rs v1.2.1
   Compiling smallstr v0.3.1
   Compiling equivalent v1.0.2
   Compiling indexmap-nostd v0.4.0
   Compiling fastrand v2.5.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/vendor/fastrand-2.5.0)
   Compiling bitflags v2.13.1
   Compiling multi-stash v0.2.0
   Compiling event-listener-strategy v0.5.4
   Compiling arrayvec v0.7.8
   Compiling semver v1.0.28
   Compiling spin v0.9.9
   Compiling wasmparser-nostd v0.100.2
   Compiling async-lock v3.4.2
   Compiling wasmi_core v0.32.3
   Compiling parking_lot_core v0.9.12
   Compiling serde v1.0.229
   Compiling serde_json v1.0.151
   Compiling hashbrown v0.17.1
   Compiling indexmap v2.14.1
   Compiling wasmparser v0.258.0
   Compiling ahash v0.8.12
   Compiling hashbrown v0.14.5
   Compiling dashmap v6.2.1
   Compiling string-interner v0.17.0
   Compiling wasmi_collections v0.32.3
   Compiling yrs v0.23.5
   Compiling wasmi v0.32.3
   Compiling slides-core v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 14.51s
     Running unittests src/lib.rs (core/target/debug/deps/slides_core-929bfceb2edd4a94)

running 30 tests
test check::tests::the_empty_document_passes ... ok
test layout::tests::aside_region_rect ... ok
test layout::tests::default_region_by_kind ... ok
test layout::tests::body_region_rect_narrows_for_an_aside ... ok
test layout::tests::heading_region_rect ... ok
test layout::tests::media_region_rect ... ok
test layout::tests::to_canvas_narrows_body_when_an_aside_is_present ... ok
test layout::tests::to_canvas_splits_a_shared_region_equally_and_sets_z_by_index ... ok
test check::tests::an_element_inside_a_paragraph_is_reported ... ok
test layout::tests::to_flow_is_a_no_op_when_already_in_order ... ok
test check::tests::bare_text_at_fragment_level_is_reported ... ok
test layout::tests::to_flow_classifies_by_position_and_kind ... ok
test check::tests::what_the_ops_write_passes ... ok
test check::tests::a_non_paragraph_child_is_reported ... ok
test check::tests::y_prosemirror_shapes_pass ... ok
test markdown::tests::empty_input_is_no_paragraphs_and_lines_keep_blanks ... ok
test markdown::tests::inline_marks ... ok
test markdown::tests::marks_nest_and_links_carry_marks ... ok
test markdown::tests::paragraphs_split_on_blank_lines_and_list_markers ... ok
test check::tests::an_unknown_formatting_attribute_is_reported ... ok
test schema::tests::an_empty_map_reads_as_a_set_mark ... ok
test schema::tests::an_href_map_without_a_string_url_reads_as_no_link ... ok
test schema::tests::href_is_written_as_a_one_key_map_and_reads_back ... ok
test layout::tests::to_flow_orders_y_then_x ... ok
test schema::tests::href_written_as_a_plain_string_still_reads_back ... ok
test view::tests::malformed_background_is_the_default ... ok
test view::tests::assets_are_typed_or_skipped ... ok
test view::tests::malformed_box_is_null_and_phone_keeps_only_typed_fields ... ok
test view::tests::malformed_fonts_are_null ... ok
test layout::tests::to_flow_keeps_a_concurrent_text_edit ... ok

test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/no_host_imports.rs (core/target/debug/deps/no_host_imports-184c0d8bf00e14f9)

running 1 test
test no_host_imports ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/ops.rs (core/target/debug/deps/ops-256addce27f366d1)

running 12 tests
test add_slide_then_view_lists_it ... ok
test add_block_with_markdown_produces_runs ... ok
test layout_switch_assigns_boxes ... ok
test duplicate_slide_remaps_columns_children ... ok
test columns_children_have_one_parent_and_no_cycles ... ok
test move_slide_keeps_a_concurrent_text_edit ... ok
test move_block_keeps_a_concurrent_text_edit ... ok
test columns_children_must_name_blocks_on_the_slide ... ok
test ops_are_atomic ... ok
test remove_block_drops_it_from_columns_children ... ok
test update_roundtrip ... ok
test remaining_ops_roundtrip ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

   Doc-tests slides_core

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

=== rust: fmt (pdf)
=== rust: clippy (pdf)
   Compiling proc-macro2 v1.0.107
   Compiling quote v1.0.47
   Compiling unicode-ident v1.0.24
   Compiling autocfg v1.5.1
    Checking log v0.4.34
   Compiling serde_core v1.0.229
   Compiling libm v0.2.16
    Checking arrayvec v0.7.8
    Checking simd-adler32 v0.3.10
   Compiling crc32fast v1.5.1
    Checking adler2 v2.0.1
    Checking bitflags v2.13.1
    Checking smallvec v1.16.0
    Checking cfg-if v1.0.4
   Compiling libc v0.2.189
    Checking foldhash v0.2.0
   Compiling version_check v0.9.5
    Checking arrayref v0.3.9
    Checking memchr v2.8.3
    Checking equivalent v1.0.2
    Checking roxmltree v0.20.0
    Checking unicode-properties v0.1.4
    Checking unicode-bidi-mirroring v0.4.0
    Checking unicode-script v0.5.8
    Checking miniz_oxide v0.9.1
    Checking polycool v0.4.0
    Checking miniz_oxide v0.8.9
    Checking fdeflate v0.3.7
    Checking unicode-ccc v0.4.0
    Checking tinyvec_macros v0.1.1
    Checking siphasher v1.0.3
    Checking tinyvec v1.13.2
    Checking kurbo v0.13.1
    Checking weezl v0.1.12
   Compiling slotmap v1.1.1
    Checking fontconfig-parser v0.5.8
   Compiling num-traits v0.2.19
    Checking imagesize v0.14.0
    Checking quick-error v2.0.1
    Checking base64 v0.22.1
    Checking zune-core v0.5.3
    Checking color_quant v1.1.0
    Checking byteorder-lite v0.1.0
    Checking flate2 v1.1.10
    Checking roxmltree v0.21.1
    Checking simplecss v0.2.2
    Checking ryu v1.0.23
    Checking gif v0.14.2
    Checking unicode-vo v0.1.0
    Checking rustc-hash v2.1.3
    Checking itoa v1.0.18
    Checking image-webp v0.2.4
    Checking zune-jpeg v0.5.15
    Checking xmlwriter v0.1.0
    Checking pico-args v0.5.0
    Checking unicode-bidi v0.3.18
    Checking data-url v0.3.2
    Checking png v0.18.1
    Checking stable_deref_trait v1.2.1
    Checking pdf-writer v0.15.0
   Compiling serde v1.0.229
   Compiling syn v3.0.5
   Compiling syn v2.0.119
    Checking bumpalo v3.20.3
    Checking svgtypes v0.16.1
    Checking xmp-writer v0.3.3
    Checking core_maths v0.1.1
    Checking semver v1.0.28
    Checking ttf-parser v0.25.1
    Checking memmap2 v0.9.11
    Checking float-cmp v0.9.0
    Checking strict-num v0.1.1
    Checking hashbrown v0.17.1
    Checking indexmap v2.14.2
   Compiling bytemuck_derive v1.12.0
    Checking fontdb v0.23.0
   Compiling synstructure v0.13.2
    Checking wasmparser v0.258.0
   Compiling zerofrom-derive v0.1.7
   Compiling yoke-derive v0.8.2
    Checking bytemuck v1.25.2
    Checking font-types v0.11.3
    Checking tiny-skia-path v0.12.0
    Checking rustybuzz v0.20.1
    Checking rgb v0.8.53
    Checking zerofrom v0.1.8
    Checking yoke v0.8.3
    Checking read-fonts v0.39.2
    Checking tiny-skia v0.12.0
    Checking usvg v0.47.0
    Checking resvg v0.47.0
    Checking skrifa v0.42.1
    Checking write-fonts v0.48.1
    Checking subsetter v0.2.6
    Checking krilla v0.8.2
    Checking krilla-svg v0.8.1
    Checking slides-pdf v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/pdf)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.29s
=== wasm: the pdf artifact the host embeds
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.03s
   Compiling proc-macro2 v1.0.107
   Compiling quote v1.0.47
   Compiling unicode-ident v1.0.24
   Compiling autocfg v1.5.1
   Compiling simd-adler32 v0.3.10
   Compiling log v0.4.34
   Compiling arrayvec v0.7.8
   Compiling libm v0.2.16
   Compiling smallvec v1.16.0
   Compiling crc32fast v1.5.1
   Compiling adler2 v2.0.1
   Compiling bitflags v2.13.1
   Compiling cfg-if v1.0.4
   Compiling version_check v0.9.5
   Compiling arrayref v0.3.9
   Compiling memchr v2.8.3
   Compiling siphasher v1.0.3
   Compiling fdeflate v0.3.7
   Compiling tinyvec_macros v0.1.1
   Compiling miniz_oxide v0.9.1
   Compiling miniz_oxide v0.8.9
   Compiling polycool v0.4.0
   Compiling unicode-script v0.5.8
   Compiling unicode-bidi-mirroring v0.4.0
   Compiling unicode-ccc v0.4.0
   Compiling hashbrown v0.17.1
   Compiling equivalent v1.0.2
   Compiling slotmap v1.1.1
   Compiling unicode-properties v0.1.4
   Compiling kurbo v0.13.1
   Compiling tinyvec v1.13.2
   Compiling byteorder-lite v0.1.0
   Compiling num-traits v0.2.19
   Compiling quick-error v2.0.1
   Compiling weezl v0.1.12
   Compiling color_quant v1.1.0
   Compiling flate2 v1.1.10
   Compiling imagesize v0.14.0
   Compiling memmap2 v0.9.11
   Compiling base64 v0.22.1
   Compiling zune-core v0.5.3
   Compiling indexmap v2.14.2
   Compiling gif v0.14.2
   Compiling image-webp v0.2.4
   Compiling roxmltree v0.21.1
   Compiling syn v3.0.5
   Compiling syn v2.0.119
   Compiling png v0.18.1
   Compiling float-cmp v0.9.0
   Compiling core_maths v0.1.1
   Compiling ttf-parser v0.25.1
   Compiling strict-num v0.1.1
   Compiling svgtypes v0.16.1
   Compiling zune-jpeg v0.5.15
   Compiling simplecss v0.2.2
   Compiling ryu v1.0.23
   Compiling data-url v0.3.2
   Compiling rustc-hash v2.1.3
   Compiling unicode-bidi v0.3.18
   Compiling itoa v1.0.18
   Compiling stable_deref_trait v1.2.1
   Compiling pico-args v0.5.0
   Compiling unicode-vo v0.1.0
   Compiling xmlwriter v0.1.0
   Compiling pdf-writer v0.15.0
   Compiling xmp-writer v0.3.3
   Compiling bumpalo v3.20.3
   Compiling bytemuck_derive v1.12.0
   Compiling synstructure v0.13.2
   Compiling fontdb v0.23.0
   Compiling zerofrom-derive v0.1.7
   Compiling yoke-derive v0.8.2
   Compiling bytemuck v1.25.2
   Compiling zerofrom v0.1.8
   Compiling font-types v0.11.3
   Compiling tiny-skia-path v0.12.0
   Compiling rustybuzz v0.20.1
   Compiling rgb v0.8.53
   Compiling yoke v0.8.3
   Compiling read-fonts v0.39.2
   Compiling tiny-skia v0.12.0
   Compiling usvg v0.47.0
   Compiling resvg v0.47.0
   Compiling skrifa v0.42.1
   Compiling write-fonts v0.48.1
   Compiling subsetter v0.2.6
   Compiling krilla v0.8.2
   Compiling krilla-svg v0.8.1
   Compiling slides-pdf v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/pdf)
    Finished `release` profile [optimized] target(s) in 22.75s
core/pdf/target/wasm32-unknown-unknown/release/slides_pdf.wasm (5301002 bytes)
=== the embedded pdf wasm must match a fresh build
=== rust: test (pdf)
   Compiling bytemuck v1.25.2
   Compiling log v0.4.34
   Compiling arrayvec v0.7.8
   Compiling simd-adler32 v0.3.10
   Compiling bitflags v2.13.1
   Compiling smallvec v1.16.0
   Compiling adler2 v2.0.1
   Compiling cfg-if v1.0.4
   Compiling foldhash v0.2.0
   Compiling libm v0.2.16
   Compiling num-traits v0.2.19
   Compiling serde_core v1.0.229
   Compiling equivalent v1.0.2
   Compiling memchr v2.8.3
   Compiling arrayref v0.3.9
   Compiling libc v0.2.189
   Compiling unicode-bidi-mirroring v0.4.0
   Compiling crc32fast v1.5.1
   Compiling tinyvec_macros v0.1.1
   Compiling unicode-script v0.5.8
   Compiling siphasher v1.0.3
   Compiling unicode-properties v0.1.4
   Compiling roxmltree v0.20.0
   Compiling polycool v0.4.0
   Compiling miniz_oxide v0.9.1
   Compiling fdeflate v0.3.7
   Compiling miniz_oxide v0.8.9
   Compiling font-types v0.11.3
   Compiling unicode-ccc v0.4.0
   Compiling tinyvec v1.13.2
   Compiling slotmap v1.1.1
   Compiling weezl v0.1.12
   Compiling kurbo v0.13.1
   Compiling color_quant v1.1.0
   Compiling quick-error v2.0.1
   Compiling base64 v0.22.1
   Compiling read-fonts v0.39.2
   Compiling fontconfig-parser v0.5.8
   Compiling byteorder-lite v0.1.0
   Compiling zune-core v0.5.3
   Compiling imagesize v0.14.0
   Compiling gif v0.14.2
   Compiling float-cmp v0.9.0
   Compiling flate2 v1.1.10
   Compiling image-webp v0.2.4
   Compiling strict-num v0.1.1
   Compiling zune-jpeg v0.5.15
   Compiling core_maths v0.1.1
   Compiling memmap2 v0.9.11
   Compiling ttf-parser v0.25.1
   Compiling tiny-skia-path v0.12.0
   Compiling roxmltree v0.21.1
   Compiling zerofrom v0.1.8
   Compiling simplecss v0.2.2
   Compiling rustc-hash v2.1.3
   Compiling pico-args v0.5.0
   Compiling data-url v0.3.2
   Compiling png v0.18.1
   Compiling svgtypes v0.16.1
   Compiling xmlwriter v0.1.0
   Compiling unicode-vo v0.1.0
   Compiling unicode-bidi v0.3.18
   Compiling stable_deref_trait v1.2.1
   Compiling itoa v1.0.18
   Compiling ryu v1.0.23
   Compiling yoke v0.8.3
   Compiling rgb v0.8.53
   Compiling pdf-writer v0.15.0
   Compiling bumpalo v3.20.3
   Compiling xmp-writer v0.3.3
   Compiling semver v1.0.28
   Compiling hashbrown v0.17.1
   Compiling serde v1.0.229
   Compiling tiny-skia v0.12.0
   Compiling indexmap v2.14.2
   Compiling rustybuzz v0.20.1
   Compiling fontdb v0.23.0
   Compiling wasmparser v0.258.0
   Compiling usvg v0.47.0
   Compiling resvg v0.47.0
   Compiling write-fonts v0.48.1
   Compiling skrifa v0.42.1
   Compiling subsetter v0.2.6
   Compiling krilla v0.8.2
   Compiling krilla-svg v0.8.1
   Compiling slides-pdf v0.1.0 (/home/paulca/.local/state/amadan/runner/repos/oficina__slides/wt/feat__r2-shared-chrome/core/pdf)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 17.63s
     Running unittests src/lib.rs (core/pdf/target/debug/deps/slides_pdf-891fafaa44f9fd64)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/no_host_imports.rs (core/pdf/target/debug/deps/no_host_imports-17ccbb1d62120093)

running 1 test
test no_host_imports ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/render.rs (core/pdf/target/debug/deps/render-2e1d7e8b19d78595)

running 6 tests
test raster_image_is_embedded ... ok
test a_null_zero_length_pair_is_no_frames_not_a_dereference ... ok
test text_with_no_fonts_at_all_still_renders_the_shapes ... ok
test renders_text_as_embedded_glyphs ... ok
test abi_frames_round_trip ... ok
test two_svgs_make_two_pages ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

   Doc-tests slides_pdf

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

=== fixtures: node dependencies
v24.19.0
11.17.0
=== fixtures: npm ci (needs the registry — see .amadan/README.md)

added 19 packages, and audited 20 packages in 2s

5 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npm warn allow-scripts 1 package has install scripts not yet covered by allowScripts:
npm warn allow-scripts   esbuild@0.28.2 (postinstall: node install.js)
npm warn allow-scripts
npm warn allow-scripts Run `npm approve-scripts --allow-scripts-pending` to review, or `npm approve-scripts <pkg>` to allow.
=== fixtures: the JS side's own tests
✔ one finished upload is register_asset plus the block that uses it, in one batch (11.600034ms)
✔ a record missing its numbers still makes an op the core accepts (1.298247ms)
✔ unusedAssets is what no slide refers to, and remove_asset drops one (2.886394ms)
✔ the Unused images list reconciles by id and names each Remove button (1.193943ms)
✔ an upload refusal is said in words the person can act on (0.264072ms)
✔ clampBox keeps the box inside the frame and no smaller than the minimum (1.796264ms)
✔ fixBox writes four decimals (0.318172ms)
✔ guides are the thirds plus every other block edge (0.273659ms)
✔ snapMove pulls the nearest edge onto a guide within one per cent, and leaves a far one (0.535136ms)
✔ snapResize moves only the edges the handle drags (0.269292ms)
✔ moveBox and resizeBox by handle (0.303986ms)
✔ nudge: arrows move by half a per cent, Shift by two, Alt resizes (0.260615ms)
✔ rectBox reads a block rectangle against its frame (0.305208ms)
✔ typing into a block is a text change on its slide only (9.55099ms)
✔ a block's props changing is structure on its slide (1.603044ms)
✔ adding, moving or removing a block is structure on its slide (2.039457ms)
✔ the notes are text on their slide (1.04197ms)
✔ a slide added, removed or moved is an order change (1.602062ms)
✔ one transaction touching several things reports each once (1.023284ms)
✔ what the ops write passes, and so does an empty document (9.172857ms)
✔ the shapes y-prosemirror and older documents write pass (1.83678ms)
✔ an unknown formatting attribute is reported with the core's message (2.137389ms)
✔ an element inside a paragraph, a non-paragraph child and bare text are reported (3.025982ms)
✔ the unknownmark poison shape is what the check refuses (1.787959ms)
✔ y-prosemirror 1.3.7 deletes the words under an unknown mark; sanitising first keeps them (5.299697ms)
✔ the vocabulary is the five marks and nothing else (0.130633ms)
✔ an empty body is no frames (1.580042ms)
✔ frames come back in order with their exact bytes (0.378194ms)
✔ a length prefix is big-endian (0.181558ms)
✔ a truncated frame throws rather than returning a short update (4.784315ms)
✔ deck controls are set_meta (13.146174ms)
✔ slide controls are set_slide, and background keeps its colour (3.329008ms)
✔ move up and down are move_slide with the right after (2.136557ms)
✔ block props: value kinds, region, a shape label (2.753495ms)
✔ box fields are set_block on the desktop and set_phone in the phone view (6.229599ms)
✔ move block and the layer buttons (3.653992ms)
✔ add block: region after the selection on flow, a default box on canvas, a heading level that fits (11.949556ms)
✔ a block is named by its type and its first words (0.975546ms)
✔ blockChange: a control element to its op (1.909545ms)
✔ the Blocks list reconciles by id and keeps its buttons (1.060564ms)
✔ open resolves to the button that closed it and the trimmed field (2.587547ms)
✔ a second open while the dialog is up joins the first (0.271104ms)
✔ a missing dialog mounts as nothing (0.158014ms)
✔ a tab advances its own cursor only when its POST is the very next row (3.380253ms)
✔ the cursor never moves backwards when a response is overtaken by this tab's own write (0.512694ms)
✔ a later response still carries the cursor forward (0.302813ms)
✔ a burst of notifications collapses into one fetch at a time (0.251088ms)
✔ an event naming a seq the tab already has fetches nothing (0.207817ms)
✔ a stopped subscriber drops a response that arrives late (0.814536ms)
✔ stop closes the stream, and start opens exactly one (0.313414ms)
✔ a hidden tab closes its stream on a shortened deadline, and activity reopens it (1.069501ms)
✔ switching away and back inside the grace never drops the stream, so nothing has to be caught up (0.661371ms)
✔ a visible tab that is only being READ closes when idle and comes back on any activity (1.215112ms)
✔ activity while streaming defers the idle close rather than reopening anything (0.568749ms)
✔ a stream failure is never reported as a save failure, and heals on activity (0.254163ms)
✔ an empty response advances the cursor without applying anything (0.440871ms)
✔ a failed fetch leaves the cursor alone so the next notification retries it (0.626958ms)
✔ a decode failure retries once through the raw log, then gives up (1.85871ms)
✔ updatesURL spells the query string exactly, in particular raw as the literal raw=1 (0.174384ms)
✔ empty_doc_views_as_defaults (4.443152ms)
✔ set_meta (3.341409ms)
✔ slides: add, move, remove, set_slide, set_notes (7.985607ms)
✔ duplicate_slide (3.954821ms)
✔ blocks: add, move, remove, set_block (4.683469ms)
✔ set_phone (1.481017ms)
✔ table cells follow rows and cols (1.802606ms)
✔ canvas blocks: box defaults from the region, z from the index (1.966721ms)
✔ assets: register and remove (2.60015ms)
✔ markdown: every mark, code blocks are plain lines (6.515951ms)
✔ batch_is_atomic (2.222597ms)
✔ a batch applies in one transaction with the given origin (0.800189ms)
✔ columns_children_validated (1.675779ms)
✔ layout_switch_round_trip (2.185489ms)
✔ view_matches_snapshot_fixtures (18.437033ms)
✔ columns children have one parent and no cycles (codex 7) (1.312073ms)
✔ canvas-to-flow keeps a concurrent text edit (codex 4) (3.691471ms)
✔ move_block keeps a concurrent text edit, and later inserts land where after says (codex 4) (3.358503ms)
✔ move_slide keeps a concurrent text edit, and later inserts land where after says (codex 4 at slide level) (2.582899ms)
✔ format: {name} and {n} interpolate; an unknown key is left as text (0.974875ms)
✔ a beat on connect, then one every twenty seconds (2.253496ms)
✔ a move posts once, 200ms after the last of a burst, and re-arms the beat (0.383855ms)
✔ a hidden tab stops beating; coming back posts at once (0.288857ms)
✔ applySet leaves this tab out and answers what changed (0.630774ms)
✔ a set with rubbish in it is read for what it does carry (0.281464ms)
✔ initials, and a client id per tab (4.856622ms)
✔ a resync that fails is retried with backoff until it succeeds, without ever running twice at once (9.6746ms)
✔ the browser's online event retries immediately, not just on the next backoff tick (0.37607ms)
✔ reportDivergence before any failure runs the first attempt without a caller ever calling online (3.41675ms)
✔ a permanent 4xx drops its batch instead of retrying it, and does not poison the next edit (83.959102ms)
✔ a network failure or a 5xx is retried, not dropped (60.007361ms)
✔ a 500 is retried the same way a network failure is, never dropped (60.728374ms)
✔ the core-written structure reads as ProseMirror marks (10.531346ms)
✔ a y-prosemirror round trip preserves bold and the link (3.304182ms)
✔ y-prosemirror writes href as the one-key map and marks as {} (1.057198ms)
✔ a plain-string href, written before the map shape, still reads (0.82753ms)
✔ textFragment writes the same shape as writeText (0.570241ms)
✔ safeHref is the server allowlist, and a disallowed href never draws an anchor (0.448004ms)
✔ parseHash splits the slide and the block, and survives a stray % (2.363109ms)
✔ destroy takes the listeners off, and a second mount leaves one of each (0.713759ms)
✔ formatHash is the inverse (1.975749ms)
✔ textBlocks finds the text-bearing blocks and skips the rest (2.506265ms)
✔ mountTarget is the element whose children are the paragraphs (0.282546ms)
✔ paragraphTag keeps the renderer's own markup per type (0.193049ms)
✔ blockFragment finds a block's text by slide and block id (8.753546ms)
✔ notesFragment finds the slide's notes (1.452995ms)
✔ blockIDs and slideIDs are the orders on the stage and the strip (5.508696ms)
✔ cellFragments are a table's cells, row-major (1.733648ms)
✔ a load that fails leaves the stage on the slide it was showing and says so (6.164174ms)
✔ slideAfter is the slide to show once one is gone (0.602261ms)
✔ the queue words map to the four states, failed staying failed (0.822922ms)
✔ a dropped batch outranks a load error outranks the queue (0.212696ms)
✔ dropTarget: before puts it ahead of the item, after behind it, null means first (0.943987ms)
✔ a drop that leaves the order as it is is no move (0.195184ms)
✔ dropOp is the move_slide (0.785553ms)
✔ labelFor is the slide's first heading, else the numbered fallback (7.559713ms)
✔ flush re-points every dirty thumbnail and relabels it (3.316514ms)
✔ destroy takes the item-menu listener off; a second mount leaves one (0.388333ms)
✔ plan says what to add, drop and where each item goes (1.387152ms)
✔ sync moves only the items out of place and keeps focus (2.038616ms)
✔ desktop view: box and size are the block; hidden and order are always the phone map (2.083699ms)
✔ phone view: everything goes to set_phone, carrying the rest of the map (0.626987ms)
✔ the ops it makes are ones the document takes (15.836752ms)
✔ phoneMap reads only the four keys, and only well-typed (0.223055ms)
✔ the stored view is read defensively (0.476387ms)
✔ linkAt reads the link under the cursor and nothing elsewhere (8.312174ms)
✔ setLink marks the selection (2.713201ms)
✔ setLink on a collapsed cursor inside a link replaces that link (5.981775ms)
✔ setLink with nothing selected and no link does nothing (3.465743ms)
✔ removeLink clears the link under the cursor (0.758332ms)
✔ the keymap binds every documented shortcut (0.283748ms)
✔ Mod-b toggles bold through the keymap (0.727554ms)
✔ setLink refuses an address outside the allowlist and writes nothing (0.871282ms)
✔ the state machine runs choose → sign → put → register → op (9.65863ms)
✔ a file the deck will not take never reaches the network (0.988641ms)
✔ alt text is required before the bytes move, unless the image is decorative (0.339031ms)
✔ a step that fails stops the ones after it and reports its own code (0.828943ms)
✔ a failure that is not ours still becomes an UploadError (0.791513ms)
✔ a second pick while one is in flight is refused, not raced (0.470176ms)
✔ an unreadable size is zero rather than a failure (1.125055ms)
✔ a per-call applyOp wins, so an upload lands on the block it was chosen for (0.308965ms)
✔ checkFile takes exactly the four types (1.164768ms)
✔ sha256Hex is the hex digest of the bytes (26.949901ms)
✔ refusal reads this app's JSON error shape, and survives one that is not (0.442865ms)
✔ malformed fonts are null (3.738158ms)
✔ a malformed background is the theme default (1.955ms)
✔ a malformed box is null (1.127789ms)
✔ the phone layer keeps only its typed fields, order as a whole number (1.024347ms)
✔ assets are typed or skipped (3.627373ms)
✔ every poison update is deterministic bytes that apply to any deck (10.647481ms)
ℹ tests 149
ℹ suites 0
ℹ pass 149
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 724.942535
=== the vectors must match a fresh generation
canvas: 22 ops, 3715 bytes
columns: 23 ops, 3134 bytes
every-block: 36 ops, 3180 bytes
table: 14 ops, 1509 bytes
title-only: 6 ops, 1136 bytes
=== the editor bundle must match a fresh build
wrote internal/slides/static/editor.ea69e9f399e840e0.js (375198 bytes)
=== go: vet, gofmt, test, migration check
go vet ./...
go: downloading amadan.net/oficina/estilo.git v0.0.0-20260924071126-894afdcb71a9
go: downloading amadan.net/oficina/home/connect v0.0.0-20260923190447-01166fcfc0a9
go: downloading github.com/carlosframework/rastrillo v0.23.0
gofmt needed:
internal/slides/handlers.go
internal/slides/home.go
make: *** [Makefile:91: fmt-check] Error 1

amadan: step gate failed: exit status 2

amadan: job failed at step gate — its output is above, not at the tail of this log