Skip to content

Catalogue front-end source authority (frontend-0.1.1)#355

Draft
leynos wants to merge 8 commits into
mainfrom
frontend-0-1-1-front-end-source-authority-catalogue
Draft

Catalogue front-end source authority (frontend-0.1.1)#355
leynos wants to merge 8 commits into
mainfrom
frontend-0-1-1-front-end-source-authority-catalogue

Conversation

@leynos
Copy link
Copy Markdown
Owner

@leynos leynos commented May 20, 2026

Summary

Implements roadmap task (frontend-0.1.1) by adding the front-end source authority catalogue and marking the roadmap entry complete.

  • Adds docs/frontend-source-authority-catalogue.md with per-topic authority classifications and named reconciliation follow-ups.
  • Updates docs/frontend-roadmap.md to mark item 0.1.1 done and cite the catalogue.
  • Updates docs/developers-guide.md and docs/contents.md so contributors can find the catalogue; also corrects the front-end build target to make fe-build.
  • Keeps the implementation ExecPlan current at docs/execplans/frontend-0-1-1-front-end-source-authority-catalogue.md.

Validation

  • make fmt: passed
  • make markdownlint: passed
  • make nixie: passed
  • css-view --help: passed; no executable front-end surface changed, so there was no URL-backed UI for css-view or Playwright to exercise
  • coderabbit review --agent: passed with zero findings
  • make check-fmt: passed
  • make lint: passed
  • make test: passed

References

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 20, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 091831e7-573b-4d27-b3e3-a110820bbd02

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch frontend-0-1-1-front-end-source-authority-catalogue

Comment @coderabbitai help to get the list of available commands and usage tips.

@sourcery-ai
Copy link
Copy Markdown

sourcery-ai Bot commented May 20, 2026

Reviewer's Guide

Adds a detailed execution plan (ExecPlan) document describing how to design, implement, validate, and accept a front-end source authority catalogue for roadmap item 0.1.1, without yet adding the catalogue itself or changing runtime behaviour.

Flow diagram for implementing the front-end source authority catalogue (flow diagram)

flowchart LR
  A[ExecPlan approved] --> B[Create docs/frontend-source-authority-catalogue.md]
  B --> C[Classify sources by topic
platform, data, UX state, API,
styling, accessibility,
localization, testing]
  C --> D[Mark each topic
authoritative or needs_reconciliation]
  D --> E[Update docs/frontend-roadmap.md
item 0.1.1]
  D --> F[Update docs/developers-guide.md
if workflow changes]
  E --> G[Run validation
make fmt, markdownlint, nixie,
check-fmt, lint, test]
  G --> H[Run css-view and Playwright
or record no executable UI]
  H --> I[Run coderabbit review --agent
and resolve in-scope concerns]
  I --> J[Commit with git commit -F
and push branch]
  J --> K[Open or update
implementation pull request]
Loading

File-Level Changes

Change Details Files
Introduce a comprehensive ExecPlan documenting constraints, risks, validation gates, and concrete steps for building the front-end source authority catalogue for roadmap item 0.1.1.
  • Define constraints, tolerances, and risks governing the catalogue implementation and its scope boundaries versus other roadmap items.
  • Describe required validation workflow, including make targets, css-view, Playwright probing, and CodeRabbit review expectations.
  • Record current discoveries about repository docs, specs, tooling availability, and lockfile behaviour, and encode them into the plan as findings and mitigations.
  • Specify the structure, content expectations, and acceptance criteria for the future frontend-source-authority catalogue document, including classification vocabulary and follow-up labels.
  • Outline concrete implementation steps, git workflow, and commit message pattern to use once the plan is approved.
docs/execplans/frontend-0-1-1-front-end-source-authority-catalogue.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

codescene-delta-analysis[bot]

This comment was marked as outdated.

codescene-delta-analysis[bot]

This comment was marked as outdated.

codescene-delta-analysis[bot]

This comment was marked as outdated.

@leynos
Copy link
Copy Markdown
Owner Author

leynos commented May 24, 2026

@coderabbitai Please investigate the cause of the following issue using codegraph exploration and research, identify a fix and provide an AI coding agent prompt for the fix:

        FAIL [  66.900s] ( 663/1083) backend::catalogue_descriptor_ingestion_bdd catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases
  stdout ───

    running 1 test
    test catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases has been running for over 60 seconds
    test catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases ... FAILED

    failures:

    failures:
        catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases

    test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 8 filtered out; finished in 66.89s
    
  stderr ───
    The application panicked (crashed).
    Message:  Test cluster setup failed: shared cluster initialisation previously failed: BootstrapError { kind: Other, report: 
       0: bootstrap failed: BootstrapError { kind: Other, report: 
             0: postgresql_embedded::setup() failed
             1: error decoding response body

          Location:
             /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/pg-embed-setup-unpriv-0.5.0/src/cluster/worker_invoker/mod.rs:324

            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
             1: <color_eyre[4a6c1a81a86bd8ac]::config::EyreHook>::into_eyre_hook::{closure#0}<unknown>
                at <unknown source file>:<unknown line>
             2: eyre[1398b1bcc1e1dd02]::capture_handler<unknown>
                at <unknown source file>:<unknown line>
             3: <eyre[1398b1bcc1e1dd02]::Report>::from_msg::<&str, postgresql_embedded[f183ea83f2d35107]::error::Error><unknown>
                at <unknown source file>:<unknown line>
             4: <pg_embedded_setup_unpriv[837144491eb209a9]::cluster::worker_invoker::WorkerInvoker>::invoke::<pg_embedded_setup_unpriv[837144491eb209a9]::cluster::startup::invoke_lifecycle::{closure#0}><unknown>
                at <unknown source file>:<unknown line>
      20: test[c65da38a65dc07d1]::run_test::{closure#1}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/test/src/lib.rs:698
      21: std[d28b1718532fa52a]::sys::backtrace::__rust_begin_short_backtrace::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/sys/backtrace.rs:166
      22: std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/thread/lifecycle.rs:70
      23: <core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/core/src/panic/unwind_safe.rs:275
      24: std[d28b1718532fa52a]::panicking::catch_unwind::do_call::<core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panicking.rs:581
      25: std[d28b1718532fa52a]::panicking::catch_unwind::<(), core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panicking.rs:544
      26: std[d28b1718532fa52a]::panic::catch_unwind::<core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panic.rs:359
      27: std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/thread/lifecycle.rs:68
      28: <std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1} as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/core/src/ops/function.rs:250
      29: <alloc[87b0fb19d3271c63]::boxed::Box<dyn core[667c7a611d73a360]::ops::function::FnOnce<(), Output = ()> + core[667c7a611d73a360]::marker::Send> as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/alloc/src/boxed.rs:2275
      30: <std[d28b1718532fa52a]::sys::thread::unix::Thread>::new::thread_start<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/sys/thread/unix.rs:118

    Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering.
    Run with RUST_BACKTRACE=full to include source snippets.

  Cancelling due to test failure: 3 tests still running
        PASS [  58.484s] ( 664/1083) backend::diesel_login_users_adapters db_present_mode_handles_users_table_loss_with_stable_outcomes
        PASS [  58.824s] ( 665/1083) backend::diesel_login_users_adapters db_present_mode_supports_login_and_users_with_stable_contracts
        PASS [  59.141s] ( 666/1083) backend::diesel_login_users_adapters startup_modes_reject_invalid_credentials_with_unauthorised_envelope::case_2
────────────
     Summary [  89.454s] 666/1083 tests run: 665 passed, 1 failed, 4 skipped
        FAIL [  66.900s] ( 663/1083) backend::catalogue_descriptor_ingestion_bdd catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases
warning: 417/1083 tests were not run due to test failure (run with --no-fail-fast to run all tests, or run with --max-fail)
error: test run failed

@coderabbitai

This comment was marked as resolved.

@leynos
Copy link
Copy Markdown
Owner Author

leynos commented May 24, 2026

@coderabbitai Please investigate the cause of the following issue using codegraph exploration and research, identify a fix and provide an AI coding agent prompt for the fix:

        FAIL [  66.900s] ( 663/1083) backend::catalogue_descriptor_ingestion_bdd catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases
  stdout ───

    running 1 test
    test catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases has been running for over 60 seconds
    test catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases ... FAILED

    failures:

    failures:
        catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases

    test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 8 filtered out; finished in 66.89s
    
  stderr ───
    The application panicked (crashed).
    Message:  Test cluster setup failed: shared cluster initialisation previously failed: BootstrapError { kind: Other, report: 
       0: bootstrap failed: BootstrapError { kind: Other, report: 
             0: postgresql_embedded::setup() failed
             1: error decoding response body

          Location:
             /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/pg-embed-setup-unpriv-0.5.0/src/cluster/worker_invoker/mod.rs:324

            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
             1: <color_eyre[4a6c1a81a86bd8ac]::config::EyreHook>::into_eyre_hook::{closure#0}<unknown>
                at <unknown source file>:<unknown line>
             2: eyre[1398b1bcc1e1dd02]::capture_handler<unknown>
                at <unknown source file>:<unknown line>
             3: <eyre[1398b1bcc1e1dd02]::Report>::from_msg::<&str, postgresql_embedded[f183ea83f2d35107]::error::Error><unknown>
                at <unknown source file>:<unknown line>
             4: <pg_embedded_setup_unpriv[837144491eb209a9]::cluster::worker_invoker::WorkerInvoker>::invoke::<pg_embedded_setup_unpriv[837144491eb209a9]::cluster::startup::invoke_lifecycle::{closure#0}><unknown>
                at <unknown source file>:<unknown line>
             5: <pg_embedded_setup_unpriv[837144491eb209a9]::cluster::TestCluster>::new_split<unknown>
                at <unknown source file>:<unknown line>
             6: pg_embedded_setup_unpriv[837144491eb209a9]::test_support::shared_singleton::shared_cluster_handle<unknown>
                at <unknown source file>:<unknown line>
             7: catalogue_descriptor_ingestion_bdd[76bd25c4cb256bf4]::support::atexit_cleanup::shared_cluster_handle<unknown>
                at <unknown source file>:<unknown line>
             8: <catalogue_descriptor_ingestion_bdd[76bd25c4cb256bf4]::catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases::{closure#0} as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once<unknown>
                at <unknown source file>:<unknown line>
             9: <fn() -> core[667c7a611d73a360]::result::Result<(), alloc[87b0fb19d3271c63]::string::String> as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/core/src/ops/function.rs:250
            10: test[c65da38a65dc07d1]::__rust_begin_short_backtrace::<core[667c7a611d73a360]::result::Result<(), alloc[87b0fb19d3271c63]::string::String>, fn() -> core[667c7a611d73a360]::result::Result<(), alloc[87b0fb19d3271c63]::string::String>><unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/test/src/lib.rs:724
            11: test[c65da38a65dc07d1]::run_test_in_process::{closure#0}<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/test/src/lib.rs:747
            12: <core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<test[c65da38a65dc07d1]::run_test_in_process::{closure#0}> as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/core/src/panic/unwind_safe.rs:275
            13: std[d28b1718532fa52a]::panicking::catch_unwind::do_call::<core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<test[c65da38a65dc07d1]::run_test_in_process::{closure#0}>, core[667c7a611d73a360]::result::Result<(), alloc[87b0fb19d3271c63]::string::String>><unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panicking.rs:581
            14: std[d28b1718532fa52a]::panicking::catch_unwind::<core[667c7a611d73a360]::result::Result<(), alloc[87b0fb19d3271c63]::string::String>, core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<test[c65da38a65dc07d1]::run_test_in_process::{closure#0}>><unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panicking.rs:544
            15: std[d28b1718532fa52a]::panic::catch_unwind::<core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<test[c65da38a65dc07d1]::run_test_in_process::{closure#0}>, core[667c7a611d73a360]::result::Result<(), alloc[87b0fb19d3271c63]::string::String>><unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panic.rs:359
            16: test[c65da38a65dc07d1]::run_test_in_process<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/test/src/lib.rs:747
            17: test[c65da38a65dc07d1]::run_test::{closure#0}<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/test/src/lib.rs:668
            18: test[c65da38a65dc07d1]::run_test::{closure#1}<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/test/src/lib.rs:698
            19: std[d28b1718532fa52a]::sys::backtrace::__rust_begin_short_backtrace::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()><unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/sys/backtrace.rs:166
            20: std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/thread/lifecycle.rs:70
            21: <core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/core/src/panic/unwind_safe.rs:275
            22: std[d28b1718532fa52a]::panicking::catch_unwind::do_call::<core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()><unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panicking.rs:581
            23: std[d28b1718532fa52a]::panicking::catch_unwind::<(), core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>><unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panicking.rs:544
            24: std[d28b1718532fa52a]::panic::catch_unwind::<core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()><unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panic.rs:359
            25: std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/thread/lifecycle.rs:68
            26: <std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1} as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/core/src/ops/function.rs:250
            27: <alloc[87b0fb19d3271c63]::boxed::Box<dyn core[667c7a611d73a360]::ops::function::FnOnce<(), Output = ()> + core[667c7a611d73a360]::marker::Send> as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/alloc/src/boxed.rs:2275
            28: <std[d28b1718532fa52a]::sys::thread::unix::Thread>::new::thread_start<unknown>
                at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/sys/thread/unix.rs:118

          Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering.
      20: test[c65da38a65dc07d1]::run_test::{closure#1}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/test/src/lib.rs:698
      21: std[d28b1718532fa52a]::sys::backtrace::__rust_begin_short_backtrace::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/sys/backtrace.rs:166
      22: std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/thread/lifecycle.rs:70
      23: <core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/core/src/panic/unwind_safe.rs:275
      24: std[d28b1718532fa52a]::panicking::catch_unwind::do_call::<core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panicking.rs:581
      25: std[d28b1718532fa52a]::panicking::catch_unwind::<(), core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panicking.rs:544
      26: std[d28b1718532fa52a]::panic::catch_unwind::<core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panic.rs:359
      27: std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/thread/lifecycle.rs:68
      28: <std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1} as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/core/src/ops/function.rs:250
      29: <alloc[87b0fb19d3271c63]::boxed::Box<dyn core[667c7a611d73a360]::ops::function::FnOnce<(), Output = ()> + core[667c7a611d73a360]::marker::Send> as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/alloc/src/boxed.rs:2275
      30: <std[d28b1718532fa52a]::sys::thread::unix::Thread>::new::thread_start<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/sys/thread/unix.rs:118

    Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering.
    Run with RUST_BACKTRACE=full to include source snippets.

  Cancelling due to test failure: 3 tests still running
        PASS [  58.484s] ( 664/1083) backend::diesel_login_users_adapters db_present_mode_handles_users_table_loss_with_stable_outcomes
        PASS [  58.824s] ( 665/1083) backend::diesel_login_users_adapters db_present_mode_supports_login_and_users_with_stable_contracts
        PASS [  59.141s] ( 666/1083) backend::diesel_login_users_adapters startup_modes_reject_invalid_credentials_with_unauthorised_envelope::case_2
────────────
     Summary [  89.454s] 666/1083 tests run: 665 passed, 1 failed, 4 skipped
        FAIL [  66.900s] ( 663/1083) backend::catalogue_descriptor_ingestion_bdd catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases
warning: 417/1083 tests were not run due to test failure (run with --no-fail-fast to run all tests, or run with --max-fail)
error: test run failed

@coderabbitai

This comment was marked as resolved.

@leynos
Copy link
Copy Markdown
Owner Author

leynos commented May 26, 2026

@coderabbitai Please investigate the cause of the following issue using codegraph exploration and research, identify a fix and provide an AI coding agent prompt for the fix:

        FAIL [  66.900s] ( 663/1083) backend::catalogue_descriptor_ingestion_bdd catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases
  stdout ───

    running 1 test
    test catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases has been running for over 60 seconds
    test catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases ... FAILED

    failures:

    failures:
        catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases

    test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 8 filtered out; finished in 66.89s
    
  stderr ───
    The application panicked (crashed).
    Message:  Test cluster setup failed: shared cluster initialisation previously failed: BootstrapError { kind: Other, report: 
       0: bootstrap failed: BootstrapError { kind: Other, report: 
             0: postgresql_embedded::setup() failed
             1: error decoding response body

          Location:
             /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/pg-embed-setup-unpriv-0.5.0/src/cluster/worker_invoker/mod.rs:324

            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
             1: <color_eyre[4a6c1a81a86bd8ac]::config::EyreHook>::into_eyre_hook::{closure#0}<unknown>
                at <unknown source file>:<unknown line>
             2: eyre[1398b1bcc1e1dd02]::capture_handler<unknown>
                at <unknown source file>:<unknown line>
             3: <eyre[1398b1bcc1e1dd02]::Report>::from_msg::<&str, postgresql_embedded[f183ea83f2d35107]::error::Error><unknown>
                at <unknown source file>:<unknown line>
             4: <pg_embedded_setup_unpriv[837144491eb209a9]::cluster::worker_invoker::WorkerInvoker>::invoke::<pg_embedded_setup_unpriv[837144491eb209a9]::cluster::startup::invoke_lifecycle::{closure#0}><unknown>
                at <unknown source file>:<unknown line>
      20: test[c65da38a65dc07d1]::run_test::{closure#1}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/test/src/lib.rs:698
      21: std[d28b1718532fa52a]::sys::backtrace::__rust_begin_short_backtrace::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/sys/backtrace.rs:166
      22: std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/thread/lifecycle.rs:70
      23: <core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/core/src/panic/unwind_safe.rs:275
      24: std[d28b1718532fa52a]::panicking::catch_unwind::do_call::<core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panicking.rs:581
      25: std[d28b1718532fa52a]::panicking::catch_unwind::<(), core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panicking.rs:544
      26: std[d28b1718532fa52a]::panic::catch_unwind::<core[667c7a611d73a360]::panic::unwind_safe::AssertUnwindSafe<std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()><unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/panic.rs:359
      27: std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked::<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/thread/lifecycle.rs:68
      28: <std[d28b1718532fa52a]::thread::lifecycle::spawn_unchecked<test[c65da38a65dc07d1]::run_test::{closure#1}, ()>::{closure#1} as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/core/src/ops/function.rs:250
      29: <alloc[87b0fb19d3271c63]::boxed::Box<dyn core[667c7a611d73a360]::ops::function::FnOnce<(), Output = ()> + core[667c7a611d73a360]::marker::Send> as core[667c7a611d73a360]::ops::function::FnOnce<()>>::call_once<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/alloc/src/boxed.rs:2275
      30: <std[d28b1718532fa52a]::sys::thread::unix::Thread>::new::thread_start<unknown>
          at /rustc/e50aa6fba4e63ab34c72bf9acfd2c307c1155d1a/library/std/src/sys/thread/unix.rs:118

    Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering.
    Run with RUST_BACKTRACE=full to include source snippets.

  Cancelling due to test failure: 3 tests still running
        PASS [  58.484s] ( 664/1083) backend::diesel_login_users_adapters db_present_mode_handles_users_table_loss_with_stable_outcomes
        PASS [  58.824s] ( 665/1083) backend::diesel_login_users_adapters db_present_mode_supports_login_and_users_with_stable_contracts
        PASS [  59.141s] ( 666/1083) backend::diesel_login_users_adapters startup_modes_reject_invalid_credentials_with_unauthorised_envelope::case_2
────────────
     Summary [  89.454s] 666/1083 tests run: 665 passed, 1 failed, 4 skipped
        FAIL [  66.900s] ( 663/1083) backend::catalogue_descriptor_ingestion_bdd catalogue_and_descriptor_ingestion_supports_success_failure_and_nullable_edge_cases
warning: 417/1083 tests were not run due to test failure (run with --no-fail-fast to run all tests, or run with --max-fail)
error: test run failed

@coderabbitai

This comment was marked as resolved.

@leynos

This comment was marked as resolved.

@coderabbitai

This comment was marked as resolved.

codescene-delta-analysis[bot]

This comment was marked as outdated.

codescene-delta-analysis[bot]

This comment was marked as outdated.

leynos added 7 commits May 26, 2026 21:21
Add the draft ExecPlan for roadmap item 0.1.1 so the source
authority catalogue can be reviewed before implementation starts.
Record the approval gate, source ownership strategy, validation
expectations, Wyvern findings, Firecrawl checks, and current tooling
constraints.
Add the front-end source authority catalogue for roadmap item 0.1.1
so later implementation tasks can cite an owning document or a named
reconciliation follow-up.

Mark the roadmap item complete and point contributor documentation at
the new catalogue. Correct the front-end build target in the developers'
guide while updating that workflow section.
Mark the implementation ExecPlan complete after the catalogue commit, branch
push, and draft pull request update finished.
Pin the embedded PostgreSQL binary release source used by backend test
bootstrap to the Theseus binary repository when no override is already set.
Keep existing `POSTGRESQL_RELEASES_URL` values intact so CI and local runs can
still opt into a different source deliberately.

Update `postgresql_embedded`, `pg-embed-setup-unpriv`, and the Makefile
`pg_worker` install version together so the test runner does not keep using
an older bootstrap helper while the backend depends on the newer crates.
Split the PostgreSQL embedded binary cache out of the Cargo cache in CI so
`Cargo.lock` churn does not evict the downloaded server archive. Point
`POSTGRESQL_RELEASES_URL` at the Theseus releases endpoint to keep test
bootstrap downloads on the intended source.

Keep the existing `GITHUB_TOKEN` and `PG_EMBEDDED_WORKER` test environment
intact.
Align the `POSTGRESQL_RELEASES_URL` bootstrap comment with the CI timeout
failure mode and keep the pinned Theseus releases endpoint explicit.

Refresh `Cargo.lock` after rerunning the embedded PostgreSQL dependency
update so the lockfile records the current resolver output.
Record the lockfile normalization produced by the required embedded
Postgres dependency update so CI and local builds use the same resolved
graph.
@lodyai lodyai Bot force-pushed the frontend-0-1-1-front-end-source-authority-catalogue branch from 58d462f to c21ed6f Compare May 26, 2026 19:34
codescene-delta-analysis[bot]

This comment was marked as outdated.

Add a CI cache warm-up script that downloads the exact Theseus
PostgreSQL archive, verifies its checksum, and populates the
pg-embed-setup-unpriv binary cache before nextest starts.

Cache both postgresql_embedded and pg-embed-setup-unpriv binary
directories, and align CI nextest scheduling with the repository
Makefile so first-use cluster bootstrap is serialized. Extend the
pg-embed nextest group to cover the remaining PostgreSQL-backed
integration binaries.

Stabilize the audit exception property test by excluding Fast Check's
intentional `Invalid Date` values from a property that exercises real
calendar dates.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant