Skip to content

Add generated workflow validation coverage#13

Merged
leynos merged 32 commits into
mainfrom
act-tests
Jun 6, 2026
Merged

Add generated workflow validation coverage#13
leynos merged 32 commits into
mainfrom
act-tests

Conversation

@leynos

@leynos leynos commented May 31, 2026

Copy link
Copy Markdown
Owner

Summary

This branch strengthens the Python Copier template tests and local validation path so generated projects cover both pure-Python and Python/Rust workflow scenarios. It adds rendered workflow contract checks, wires act validation into generated make test WITH_ACT=1, and gives the parent template repository its own make test entrypoint.

No linked issue, roadmap task, or execplan was found for this branch.

Review walkthrough

Validation

  • uvx ruff format --check tests scripts: 5 files already formatted
  • uvx ruff check tests scripts: All checks passed!
  • uvx --with pytest-copier --with syrupy --with pyyaml ty check tests: All checks passed!
  • uvx --with pytest-copier --with syrupy --with pyyaml pytest tests/test_template.py::test_generated_tooling_contracts -q: 2 passed
  • uvx --with pytest-copier --with syrupy --with pyyaml pytest tests -q: 10 passed, 2 skipped
  • make help: listed test and help
  • make test 2>&1 | tee /tmp/test-agent-template-python-act-tests.out: 10 passed, 2 skipped

Notes

The two skipped tests are the optional act integration tests. They collect successfully and remain gated by the repository fixture unless RUN_ACT_VALIDATION=1 is present; generated projects can now request that path with make test WITH_ACT=1.

leynos added 3 commits May 31, 2026 19:46
Render and assert both pure-Python and Python/Rust template variants using
Rust-template-style helpers. Parse generated TOML and workflow YAML so the
pytest-copier suite checks the local gates, coverage action inputs, release
wheel jobs, and checkout credential policy.

Template `release.yml` as Jinja so Rust projects use the wheel matrix while
pure-Python projects keep the single pure-wheel path.
Let generated projects run local workflow validation with
`make test WITH_ACT=1` by mapping the Make flag to
`RUN_ACT_VALIDATION=1` for the pytest invocation.

Document the flag in generated `AGENTS.md` and assert the rendered
Makefile and guidance contracts for both pure-Python and Python/Rust
variants.
Expose `make test` in the parent repository so template tests run through
`uvx` with the required pytest-copier, PyYAML, and syrupy dependencies.

Document the Makefile entrypoint in the README and suppress nested Make
directory messages so rendered-project snapshots stay stable when tests run
from the parent target.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @leynos, you have reached your weekly rate limit of 2500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@coderabbitai

coderabbitai Bot commented May 31, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Modernise repo test wiring: add uvx-driven Makefile test/help, WITH_ACT toggle and audit gate; disable checkout credential persistence in workflows/actions; add act-enabled CI workflow; provide shared test helpers and tooling/workflow contract tests.

Changes

Template testing and validation

Layer / File(s) Summary
Root repository test infra
Makefile, README.md, scripts/setup_test_deps.sh, tests/__init__.py, tests/__snapshots__/test_template.ambr, tests/test_helpers.py
Declare .PHONY: help test, suppress Make directory printing, abort if uvx missing, add test target using uvx with required template-test --with plugins; update README to prefer make test and document WITH_ACT=1; expand scripts/setup_test_deps.sh to include pyyaml and make-parser; add integration tests for top-level make help/test and snapshot updates.
GitHub Actions credential isolation and release wiring
template/.github/actions/*, template/.github/workflows/*, template/.github/workflows/release.yml.jinja, .github/workflows/ci.yml, .github/workflows/act-validation.yml
Set persist-credentials: false on actions/checkout in composite actions and workflows; add new Act Validation workflow that runs make test WITH_ACT=1; parameterise release job selection for Rust vs pure-Python and Jinja-escape GitHub expressions for concurrency/upload steps.
Template build/test variant toggles and docs
template/Makefile.jinja, template/AGENTS.md.jinja, template/docs/users-guide.md.jinja, template/docs/developers-guide.md, template/pyproject.toml.jinja
Add WITH_ACT ?= 0 and ACT_TEST_ENV which sets RUN_ACT_VALIDATION=1 when truthy; inject $(ACT_TEST_ENV) into pytest invocation; add audit target (runs pip-audit and optionally cargo audit); document make test WITH_ACT=1, local act validation, and tightened snapshot guidance; add pip-audit to dev dependencies.
Test helpers and parsing utilities
tests/helpers/generated_files.py, tests/helpers/rendering.py, tests/helpers/tooling_contracts.py, tests/helpers/__init__.py, tests/__init__.py, docs/developers-guide.md
Add helpers for reading/parsing generated files (text/TOML/YAML), rendering Copier projects, running quality gates, and asserting Makefile/tooling/CI/release/wheel contracts; document helper modules and docstring conventions in developer guide.
Refactor tests and add contract tests
tests/test_template.py, tests/test_github_actions_integration.py, tests/test_helpers.py, tests/test_audit.py, tests/test_parent_ci.py, tests/__snapshots__/test_template.ambr
Refactor template tests to use shared helpers; add test_generated_tooling_contracts, test_generated_github_workflows_match_act_validation_contract, audit-target tests (test_generated_audit_target_runs_expected_tools), parent-CI separation test, and unit tests for helper contracts and CI coverage-action behaviours.

Sequence Diagram(s)

sequenceDiagram
  participant Developer
  participant Makefile
  participant uvx
  participant pytest
  participant act
  Developer->>Makefile: make test WITH_ACT=1
  Makefile->>uvx: env RUN_ACT_VALIDATION=1 uvx run pytest --with pytest-copier --with pyyaml --with syrupy --with make-parser
  uvx->>pytest: run tests/
  Makefile->>act: (when invoked) run act for local workflow validation
  act->>Docker: run containerised workflow steps (verify Docker available)
Loading

Possibly related issues

Possibly related PRs

Poem

Run the tests with make test, swift and spry,
Creds in checkout sealed, no secrets left to pry,
Toggle ACT or Rust when validation calls,
Helpers parse and assert through generated walls,
Contracts keep template artefacts hale and spry.

Use this AI agent prompt format for follow-ups if you need a deeper review or a focussed diff walkthrough.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch act-tests

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

@leynos leynos marked this pull request as ready for review May 31, 2026 20:21
@coderabbitai coderabbitai Bot added the Roadmap label May 31, 2026
coderabbitai[bot]

This comment was marked as resolved.

Make release asset uploads idempotent by passing `--clobber` to
`gh release upload` in the generated release workflow.

Expand the test package documentation and move generated-file parsing and
workflow contract assertions into dedicated helper modules so
`tests/test_template.py` remains focused on top-level test cases.
coderabbitai[bot]

This comment was marked as resolved.

Expand public test and helper docstrings to follow the project NumPy-style
convention. Keep subsidiary workflow contract assertions private so the helper
module exposes only the functions consumed by top-level tests.

Move the CI coverage-action assertion behind a helper to keep
`tests/test_template.py` under the 400-line guideline after the docstring
updates.
@leynos

This comment was marked as resolved.

@coderabbitai

This comment was marked as resolved.

Delegate rendered file reads through the shared generated-file reader so
OS errors become assertion failures consistently.

Document `WITH_ACT` in generated user guidance, document the helper module
split for parent-template contributors, and share the parsed CI workflow
mapping across tooling contract checks.
@leynos

leynos commented Jun 1, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai Have the following now been resolved?

tests/test_template.py (1)

294-294: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win
Bring the two new tests in line with the file's NumPy docstrings.
test_generated_tooling_contracts and test_generated_github_workflows_match_act_validation_contract use single-line docstrings while every sibling test in this module documents Parameters/Returns. Add the same structured sections for consistency.
As per coding guidelines, "Docstrings must follow the numpy style guide. Use a single-line summary for private functions and methods, and full structured docs for all public interfaces."
Also applies to: 352-352

🤖 Detailed instructions

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @tests/test_template.py at line 294, The two tests
test_generated_tooling_contracts and
test_generated_github_workflows_match_act_validation_contract use single-line
docstrings but should follow the module's NumPy-style docstring convention;
update each test's docstring to include a one-line summary plus structured
"Parameters" and "Returns" sections (even if empty or noting None) to match
sibling tests and the project's docstring guidelines so they become consistent
public-style docstrings.

tests/helpers/init.py (1)

1-1: 🧹 Nitpick | 🔵 Trivial | 💤 Low value
Expand the package docstring to cover utility and usage.
Match the treatment applied to tests/__init__.py: describe the utility this helpers package exposes and how test modules import from it.
As per coding guidelines, "Every module must begin with a triple-quoted docstring explaining its purpose, utility, and usage, including example calls if appropriate."

🤖 Detailed instructions

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @tests/helpers/__init__.py at line 1, Update the package docstring in
tests/helpers/init.py to a multi-line triple-quoted description that
explains the purpose of the helpers package (shared test utilities for rendered
Copier template tests), lists the main utilities or modules it exposes (e.g.,
helper functions, fixtures, test data), shows how test modules should import
them (example: from tests.helpers import or from tests.helpers.module
import ), and includes a short usage example mirroring the style in
tests/init.py so readers know how to consume the helpers.

tests/helpers/rendering.py (1)

11-47: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win
Give these public helpers full NumPy-style docstrings.
run_quality_gates, render_project, check_generated_import, and read_generated_file are exported and imported across test modules, so single-line summaries do not suffice. Add Parameters/Returns sections, or rename them with a leading underscore if they are internal-only.
As per coding guidelines, "Docstrings must follow the numpy style guide. Use a single-line summary for private functions and methods, and full structured docs for all public interfaces."

🤖 Detailed instructions

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @tests/helpers/rendering.py around lines 11 - 47, The four public helpers
run_quality_gates, render_project, check_generated_import, and
read_generated_file currently have single-line docstrings; update each to a full
NumPy-style docstring including a short summary plus Parameters (with types and
descriptions) and Returns (and Exceptions where applicable) sections reflecting
their signatures and behavior (e.g., CopierProject tmp_path and copier args for
render_project, package and greeting for check_generated_import, relative_path
for read_generated_file, and that run_quality_gates runs the project's public
quality gate); alternatively, if any are intended to be internal, rename them
with a leading underscore (e.g., _render_project) instead of expanding the
docstring.

tests/helpers/tooling_contracts.py (1)

14-292: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win
Give the exported assertion helpers full NumPy-style docstrings.
Every function here is public and reused by the contract tests, so the single-line summaries fall short. Convert them to full NumPy docstrings (or mark genuinely internal helpers private). The contract logic itself reads correctly.
As per coding guidelines, "Docstrings must follow the numpy style guide. Use a single-line summary for private functions and methods, and full structured docs for all public interfaces."

🤖 Detailed instructions

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @tests/helpers/tooling_contracts.py around lines 14 - 292, The public test
helper functions (assert_common_make_targets,
assert_generated_tooling_contracts, assert_pyproject_contracts,
assert_agents_contracts, assert_makefile_contracts,
assert_ci_workflow_contracts, assert_release_workflow_contracts,
assert_wheel_workflow_contracts, and checkout_steps_disable_credentials)
currently have single-line summaries—replace each with a full NumPy-style
docstring (including a one-line summary plus structured sections like
Parameters, Returns, Raises and Examples where relevant) so they meet the
project's docstring guideline; alternatively, if any helper is intended to be
internal, rename it to a private name (prefix with an underscore) and keep a
single-line summary. Ensure the docstrings reference the function parameters
(e.g., makefile, pyproject, ci_workflow, build_wheels_action, steps) and
describe expected behavior and return values for
checkout_steps_disable_credentials.

@coderabbitai

coderabbitai Bot commented Jun 1, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
echo "=== tests/test_template.py (around lines 285-370) ==="
sed -n '280,380p' tests/test_template.py

echo ""
echo "=== tests/helpers/__init__.py ==="
cat tests/helpers/__init__.py

echo ""
echo "=== tests/helpers/rendering.py ==="
cat tests/helpers/rendering.py

echo ""
echo "=== tests/helpers/tooling_contracts.py (first 310 lines) ==="
sed -n '1,310p' tests/helpers/tooling_contracts.py

Length of output: 19700



@leynos All four items are now resolved.

Comment Status Evidence
tests/test_template.py — NumPy docstrings for the two new tests ✅ Resolved Both test_generated_tooling_contracts and test_generated_github_workflows_match_act_validation_contract now carry full NumPy-style docstrings with Parameters and Returns sections.
tests/helpers/init.py — expanded package docstring ✅ Resolved The package docstring now describes purpose, lists the helper modules, gives import guidance, and includes a worked Examples block matching the style of tests/__init__.py.
tests/helpers/rendering.py — full NumPy docstrings for public helpers ✅ Resolved All four public helpers (run_quality_gates, render_project, check_generated_import, read_generated_file) carry Parameters, Returns, and Raises sections. read_generated_file now delegates to read_generated_text, which also addresses the Unit Architecture inconsistency from the earlier check.
tests/helpers/tooling_contracts.py — full NumPy docstrings for exported helpers ✅ Resolved assert_common_make_targets, assert_generated_tooling_contracts, and assert_ci_coverage_action_contract all have full NumPy docstrings. Internal helpers retain single-line summaries (correct per the guideline). The _parse_ci_workflow helper deduplicates the YAML parse as required.

@coderabbitai

coderabbitai Bot commented Jun 1, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check 1: Unit Architecture - read_generated_file in rendering.py
echo "=== tests/helpers/rendering.py ==="
cat tests/helpers/rendering.py

echo ""
echo "=== tests/helpers/generated_files.py ==="
cat tests/helpers/generated_files.py

Length of output: 8266


🏁 Script executed:

#!/bin/bash
# Check 2: User-facing docs WITH_ACT
echo "=== template/docs/users-guide.md.jinja ==="
fd "users-guide.md.jinja" --exec cat {}

echo ""
echo "=== WITH_ACT mentions in template/docs ==="
rg -rn "WITH_ACT" template/docs/ 2>/dev/null || echo "No WITH_ACT in template/docs/"

Length of output: 2873


🏁 Script executed:

#!/bin/bash
# Check 3: Developer docs
echo "=== docs/developers-guide.md ==="
cat docs/developers-guide.md

echo ""
echo "=== references to helper modules ==="
rg -n "rendering\|generated_files\|tooling_contracts\|Test Helper" docs/ 2>/dev/null || echo "No references in docs/"

Length of output: 4611


🏁 Script executed:

#!/bin/bash
# Check 4: Redundant YAML parsing in tooling_contracts.py
echo "=== tests/helpers/tooling_contracts.py (parse_yaml_mapping calls) ==="
rg -n "parse_yaml_mapping\|_parse_ci_workflow\|_assert_ci_workflow_contracts\|assert_ci_coverage_action_contract" tests/helpers/tooling_contracts.py

Length of output: 608


🏁 Script executed:

#!/bin/bash
echo "=== tests/helpers/tooling_contracts.py ==="
cat tests/helpers/tooling_contracts.py

Length of output: 17911



@leynos All four checks are now resolved.

Check Status Evidence
Unit Architecture ✅ Resolved read_generated_file delegates entirely to read_generated_text(project / relative_path); the Raises docstring entry is pytest.fail.Exception. Error semantics are now uniform.
User-Facing Documentation ✅ Resolved template/docs/users-guide.md.jinja contains a full "Local GitHub Actions Validation" section documenting make test WITH_ACT=1 and the RUN_ACT_VALIDATION=1 mapping.
Developer Documentation ✅ Resolved docs/developers-guide.md has a "### Test Helper Modules" sub-section under "Test Strategy" documenting all three helper modules with their public APIs.
Performance and Resource Use ✅ Resolved _parse_ci_workflow centralises the YAML parse; assert_generated_tooling_contracts parses once and passes parsed_ci_workflow= into _assert_ci_workflow_contracts; assert_ci_coverage_action_contract also calls _parse_ci_workflow rather than parse_yaml_mapping directly.

No further work is required for this PR.

@leynos

leynos commented Jun 2, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 2, 2026

Copy link
Copy Markdown
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@leynos

leynos commented Jun 3, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 3, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

coderabbitai[bot]

This comment was marked as resolved.

Use the mandated Oxford `-ize` spelling in the test helper module
section of the developer guide.
Cover generated-file parsing failures, rendered-file read errors, and
public tooling contract edge cases without rendering full Copier projects.

These tests make helper fallibility contracts explicit for OSError, invalid
TOML, invalid YAML, wrong schema shapes, Makefile target checks, and CI
coverage action requirements.
coderabbitai[bot]

This comment was marked as resolved.

leynos added 2 commits June 3, 2026 12:14
Avoid monkey-patching `Path.read_text` when testing generated-file read
errors, defer the `CopierProject` import to type checking, and add explicit
messages to direct equality assertions.
Expand helper module docstrings to describe their relationships within the
test helper layer.

Use a tmp_path-scoped missing file for generated-file read error coverage and
add direct tests for the parent Makefile help and test target contracts.
@leynos

leynos commented Jun 3, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@leynos

leynos commented Jun 4, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai Have the following now been resolved?

tests/helpers/tooling_contracts.py (1)

59-725: 🛠️ Refactor suggestion | 🟠 Major | 🏗️ Heavy lift
Split this helper module before merge.
Break this file into smaller helpers by domain. It now bundles pyproject, Makefile, AGENTS, CI, act-validation, release, and wheel assertions into one module, which breaches the 400 logical-line cap and makes failures harder to isolate. As per coding guidelines, "Files must not exceed 400 logical lines: Decompose large modules into subpackages".

🤖 Detailed instructions

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @tests/helpers/tooling_contracts.py around lines 59 - 725, The module
tests/helpers/tooling_contracts.py is too large and must be split into focused
helper modules; refactor by extracting domain-specific assertions (e.g.
pyproject checks in _assert_pyproject_contracts, Makefile checks in
_assert_makefile_contracts and _parse_makefile_rules, AGENTS checks in
_assert_agents_contracts and _documented_make_targets, CI and coverage checks in
_assert_ci_workflow_contracts and assert_ci_coverage_action_contract,
act-validation in _assert_act_validation_workflow_contracts, release in
_assert_release_workflow_contracts, and wheel workflow checks in
_assert_wheel_workflow_contracts) into separate files under tests/helpers (for
example helpers/pyproject_contracts.py, helpers/makefile_contracts.py,
helpers/agents_contracts.py, helpers/ci_contracts.py,
helpers/release_contracts.py, helpers/wheel_contracts.py); keep public
orchestrator assert_generated_tooling_contracts that imports and delegates to
these extracted functions, update imports and tests to use the new modules, and
ensure each new file stays under the 400 logical-line limit and retains original
function names and signatures to minimize callers changes.

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
echo "=== Current state of tests/helpers/tooling_contracts.py ==="
wc -l tests/helpers/tooling_contracts.py

echo ""
echo "=== List files under tests/helpers/ ==="
fd . tests/helpers/ --type f

echo ""
echo "=== tests/helpers/tooling_contracts.py full content ==="
cat tests/helpers/tooling_contracts.py

Length of output: 5485



@leynos Yes, this is resolved.

tests/helpers/tooling_contracts.py is now 141 lines — well under the 400-line cap — and acts purely as an orchestrator. Domain assertions have been extracted into six focused modules:

New module Domain
tests/helpers/pyproject_contracts.py pyproject.toml packaging contracts
tests/helpers/makefile_contracts.py Makefile target contracts
tests/helpers/agents_contracts.py AGENTS.md guidance contracts
tests/helpers/ci_contracts.py CI workflow & coverage action contracts
tests/helpers/release_contracts.py Release workflow contracts
tests/helpers/wheel_contracts.py Wheel workflow/action contracts

The public API (assert_generated_tooling_contracts, assert_common_make_targets, assert_ci_coverage_action_contract) is unchanged, so no call-site changes were needed.

@leynos

leynos commented Jun 4, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai Have the following now been resolved?

README.md (1)

29-30: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win
Fix missing make-parser dependency in scripts/setup_test_deps.sh docs/code
tests/helpers/tooling_contracts.py imports make_parser, but scripts/setup_test_deps.sh installs only pytest-copier PyYAML syrupy. The Makefile’s uvx test invocation includes --with make-parser, so running outside the Makefile will miss it. Install make-parser in scripts/setup_test_deps.sh (and update the README text if needed) or document why make-parser is intentionally excluded from the manual setup path.

Triage: [type:docstyle]

🤖 Detailed instructions

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @README.md around lines 29 - 30, The README docs and setup script omit the
Python dependency "make-parser" required by tests/helpers/tooling_contracts.py
and the Makefile's uvx test invocation (which uses --with make-parser); update
scripts/setup_test_deps.sh to install make-parser alongside pytest-copier,
PyYAML and syrupy (or, if intentional, add a clear README note explaining why
make-parser is excluded and that running tests outside the Makefile requires
installing make-parser manually), and ensure the README line about running
scripts/setup_test_deps.sh reflects this change.

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
echo "=== Current state of tests/helpers/ directory ==="
fd . tests/helpers/ --type f

echo ""
echo "=== Line count of tests/helpers/tooling_contracts.py ==="
wc -l tests/helpers/tooling_contracts.py

echo ""
echo "=== List all files under tests/helpers/ with line counts ==="
fd . tests/helpers/ --type f --exec wc -l {}

Length of output: 1275



@leynos Yes, this is resolved.

tests/helpers/tooling_contracts.py has been reduced to 141 lines. The domain-specific assertions have been extracted into six focused submodules, each well under the 400-line cap:

Module Lines
agents_contracts.py 178
ci_contracts.py 210
makefile_contracts.py 142
pyproject_contracts.py 61
release_contracts.py 62
wheel_contracts.py 50

The orchestrator tooling_contracts.py itself is now 141 lines, delegating to these extracted modules.

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
echo "=== scripts/setup_test_deps.sh ==="
cat scripts/setup_test_deps.sh

echo ""
echo "=== README.md (lines 20-45) ==="
sed -n '20,45p' README.md

echo ""
echo "=== Makefile (test target) ==="
grep -n "make-parser\|pytest-copier\|pyyaml\|syrupy" Makefile

Length of output: 1682



@leynos Yes, this is resolved.

scripts/setup_test_deps.sh now installs make-parser alongside pytest-copier, pyyaml, and syrupy, matching the --with make-parser flag in the Makefile's uvx invocation. The README already directs users to scripts/setup_test_deps.sh for the manual-install path without any caveats needed.

@coderabbitai

This comment was marked as resolved.

leynos added 3 commits June 4, 2026 19:42
Add developer-guide coverage for the root Makefile targets, WITH_ACT flag, and
separate parent CI workflows for normal template tests and act validation.
Mirror the parent act-validation workflow hardening into the rendered template:
restrict workflow token permissions, pin markdownlint-cli2 and mbake, and verify
the downloaded act archive checksum before extraction.

Extend generated workflow contract assertions to cover these protections.
Add the generated audit target to the README make all flowchart, including
pip-audit and cargo audit branches, and expand the caption. Wrap the opening
README sentence so markdownlint passes.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tests/helpers/agents_contracts.py`:
- Around line 166-173: The loop over command_contracts currently indexes
makefile_rules[target] directly which raises a raw KeyError; before building
commands in the for target, checks in command_contracts loop, add an explicit
guard/assert that target exists in makefile_rules (e.g., assert target in
makefile_rules with a clear error message referencing target and
command_contracts) or use makefile_rules.get(target) and fail with an assertion
if None, then continue to join recipes — update references to
makefile_rules[target] in this block (inside the loop) so contract failures
produce an actionable assertion instead of a KeyError.

In `@tests/test_parent_ci.py`:
- Around line 63-65: The combined assert checking act_workflow should be split
into two atomic asserts so failures identify which fragment is missing: replace
the single assert that tests both "act_Linux_x86_64.tar.gz" and "${ACT_VERSION}"
with two asserts that each check one substring against act_workflow (e.g.,
assert "act_Linux_x86_64.tar.gz" in act_workflow, "expected parent
act-validation workflow to include act_Linux_x86_64.tar.gz" and assert
"${ACT_VERSION}" in act_workflow, "expected parent act-validation workflow to
include ${ACT_VERSION}"), referencing the existing act_workflow variable in
test_parent_ci.py.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 6768993c-c2a0-4f1d-af55-d44de492f5c0

📥 Commits

Reviewing files that changed from the base of the PR and between a22c033 and a280a9a.

📒 Files selected for processing (14)
  • .github/workflows/act-validation.yml
  • .github/workflows/ci.yml
  • README.md
  • docs/developers-guide.md
  • template/.github/workflows/act-validation.yml.jinja
  • template/Makefile.jinja
  • tests/helpers/agents_contracts.py
  • tests/helpers/ci_contracts.py
  • tests/helpers/makefile_contracts.py
  • tests/helpers/pyproject_contracts.py
  • tests/helpers/release_contracts.py
  • tests/helpers/tooling_contracts.py
  • tests/helpers/wheel_contracts.py
  • tests/test_parent_ci.py
💤 Files with no reviewable changes (1)
  • template/Makefile.jinja

Comment thread tests/helpers/agents_contracts.py
Comment thread tests/test_parent_ci.py Outdated
@leynos

leynos commented Jun 5, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai pause

@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown
✅ Action performed

Reviews paused.

Add an explicit generated Makefile target guard before joining parsed recipes so
missing command contracts fail with an actionable assertion instead of KeyError.
Split the parent act workflow URL assertion into separate archive and version
checks for clearer failure messages.
@leynos

leynos commented Jun 5, 2026

Copy link
Copy Markdown
Owner Author

@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:

Run make test WITH_ACT=1
  make test WITH_ACT=1
  shell: /usr/bin/bash -e {0}
  env:
    ACT_VERSION: v0.2.80
    MARKDOWNLINT_CLI2_VERSION: 0.22.1
    MBAKE_VERSION: 1.4.6
    pythonLocation: /opt/hostedtoolcache/Python/3.13.13/x64
    PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.13.13/x64/lib/pkgconfig
    Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.13/x64
    Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.13/x64
    Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.13/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.13.13/x64/lib
    UV_CACHE_DIR: /home/runner/work/_temp/setup-uv-cache
    CARGO_INCREMENTAL: 0
    CARGO_PROFILE_DEV_DEBUG: 0
    CARGO_TERM_COLOR: always
    RUST_BACKTRACE: short
    RUSTFLAGS: -D warnings
    CARGO_UNSTABLE_SPARSE_REGISTRY: true
    CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
    SCCACHE_PATH: /opt/hostedtoolcache/sccache/0.15.0/x64/sccache
    ACTIONS_CACHE_SERVICE_V2: on
    ACTIONS_RESULTS_URL: https://results-receiver.actions.githubusercontent.com/
    ACTIONS_RUNTIME_TOKEN: ***
RUN_ACT_VALIDATION=1 /opt/hostedtoolcache/uv/0.11.19/x86_64/uvx --with pytest-copier --with pyyaml --with syrupy --with make-parser pytest tests/
Downloading pydantic-core (2.0MiB)
 Downloaded pydantic-core
Installed 30 packages in 27ms
============================= test session starts ==============================
platform linux -- Python 3.13.13, pytest-9.0.3, pluggy-1.6.0
rootdir: /home/runner/work/agent-template-python/agent-template-python
configfile: pytest.ini
plugins: syrupy-5.3.1, gitconfig-0.9.0, copier-0.4.1, dir-equal-0.2.1
collected 27 items

tests/test_audit.py ..                                                   [  7%]
tests/test_github_actions_integration.py xF                              [ 14%]
tests/test_helpers.py ...........                                        [ 55%]
tests/test_parent_ci.py .                                                [ 59%]
tests/test_template.py ...........                                       [100%]

=================================== FAILURES ===================================
_ test_generated_workflow_runs_with_shared_coverage_action[ActRust-act_rust-True-rust-artifacts] _

act_ready = None
copier = CopierFixture(template=PosixPath('/tmp/pytest-of-runner/pytest-0/src'), defaults={}, monkeypatch=<_pytest.monkeypatch.MonkeyPatch object at 0x7f9191b30270>)
tmp_path = PosixPath('/tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1')
name = 'ActRust', package = 'act_rust', use_rust = True
artifact_dir = 'rust-artifacts'

    @pytest.mark.parametrize(
        ("name", "package", "use_rust", "artifact_dir"),
        [
            ("ActPure", "act_pure", False, "pure-artifacts"),
            ("ActRust", "act_rust", True, "rust-artifacts"),
        ],
    )
    @pytest.mark.act
    def test_generated_workflow_runs_with_shared_coverage_action(
        act_ready: None,
        copier: CopierFixture,
        tmp_path: Path,
        name: str,
        package: str,
        use_rust: bool,
        artifact_dir: str,
    ) -> None:
        """Validate a generated CI workflow through act.
    
        Parameters
        ----------
        act_ready
            Fixture that skips the test unless act validation is explicitly enabled
            and a compatible runtime is reachable.
        copier
            ``pytest-copier`` fixture used to render the template.
        tmp_path
            Temporary directory for the rendered project and act artifacts.
        name
            Project name passed to the Copier template.
        package
            Package name passed to the Copier template.
        use_rust
            Whether to render the Rust-extension variant.
        artifact_dir
            Directory name, under ``tmp_path``, used for act artifacts.
    
        Returns
        -------
        None
            The test passes after the workflow runs and the expected generated
            workflow contract is observed.
    
        Raises
        ------
        AssertionError
            Raised when generated workflow content or act observations are missing.
    
        Examples
        --------
        Run this parametrized test with local act validation enabled::
    
            RUN_ACT_VALIDATION=1 python -m pytest -m act -v
        """
        project = copier.copy(
            tmp_path / package,
            project_name=name,
            package_name=package,
            use_rust=use_rust,
        )
        prepare_git_repository(project)
    
        code, logs = run_act(project, artifact_dir=tmp_path / artifact_dir)
    
        workflow = (project / ".github" / "workflows" / "ci.yml").read_text(
            encoding="utf-8"
        )
        assert "leynos/shared-actions/.github/actions/generate-coverage" in workflow, (
            "Generated workflow should use the shared generate-coverage action"
        )
        if use_rust:
            assert "cargo-manifest: rust_extension/Cargo.toml" in workflow, (
                "Rust workflow should pass the Rust extension manifest to coverage"
            )
>       assert_act_result(project, code, logs, use_rust=use_rust)

tests/test_github_actions_integration.py:387: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

project = CopierProject(path=PosixPath('/tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust'), copier=Copier.../pytest-of-runner/pytest-0/src'), defaults={}, monkeypatch=<_pytest.monkeypatch.MonkeyPatch object at 0x7f9191b30270>))
code = 1
logs = '{"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Set up job","step":"...nfo","msg":"Start server on http://10.1.0.119:34567","time":"2026-06-05T11:39:33Z"}\nError: Job \'lint-test\' failed\n'

    def assert_act_result(
        project: CopierProject, code: int, logs: str, *, use_rust: bool
    ) -> None:
        """Assert the act workflow result for a rendered project.
    
        Parameters
        ----------
        project
            Rendered project whose workflow should have produced ``coverage.xml``.
        code
            Return code from the act subprocess.
        logs
            Combined act output from ``run_act``.
        use_rust
            Whether Rust workflow steps are expected in the logs.
    
        Returns
        -------
        None
            The helper returns when the workflow passed or xfails for the known act
            composite-output issue after required checks succeeded.
    
        Raises
        ------
        AssertionError
            Raised when required artifacts, log evidence, or a zero return code are
            missing.
    
        Examples
        --------
        Assert the act result after running the workflow::
    
            assert_act_result(project, code, logs, use_rust=False)
        """
>       assert (project / "coverage.xml").exists(), (
            "act workflow should write coverage.xml in the generated project"
        )
E       AssertionError: act workflow should write coverage.xml in the generated project
E       assert False
E        +  where False = exists()
E        +    where exists = (CopierProject(path=PosixPath('/tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust'), copier=Copier.../pytest-of-runner/pytest-0/src'), defaults={}, monkeypatch=<_pytest.monkeypatch.MonkeyPatch object at 0x7f9191b30270>)) / 'coverage.xml').exists

tests/test_github_actions_integration.py:296: AssertionError
----------------------------- Captured stdout call -----------------------------


----------------------------- Captured stderr call -----------------------------

Copying from template version 99.99.99
    create  act_rust
    create  act_rust/pure.py
    create  act_rust/__init__.py
    create  LICENSE
    create  .gitignore
    create  .github
    create  .github/actions
    create  .github/actions/pure-python-wheel
    create  .github/actions/pure-python-wheel/action.yml
    create  .github/actions/build-wheels
    create  .github/actions/build-wheels/action.yml
    create  .github/dependabot.yml
    create  .github/workflows
    create  .github/workflows/act-validation.yml
    create  .github/workflows/build-wheels.yml
    create  .github/workflows/ci.yml
    create  .github/workflows/release.yml
    create  .github/workflows/get-codescene-sha.yml
    create  rust_extension
    create  rust_extension/clippy.toml
    create  rust_extension/Cargo.toml
    create  rust_extension/src
    create  rust_extension/src/lib.rs
    create  docs
    create  docs/developers-guide.md
    create  docs/contents.md
    create  docs/users-guide.md
    create  docs/local-validation-of-github-actions-with-act-and-pytest.md
    create  docs/scripting-standards.md
    create  docs/documentation-style-guide.md
    create  docs/complexity-antipatterns-and-refactoring-strategies.md
 identical  docs
    create  docs/rust-extension.md
    create  tests
    create  tests/test_stub.py
    create  pyproject.toml
    create  .markdownlint-cli2.jsonc
    create  .rules
    create  .rules/python-typing.md
    create  .rules/python-generators.md
    create  .rules/python-context-managers.md
    create  .rules/python-exception-design-raising-handling-and-logging.md
    create  .rules/python-return.md
    create  .rules/python-00.md
    create  .rules/python-pyproject.md
    create  Makefile
    create  README.md
    create  AGENTS.md
make: *** [Makefile:14: test] Error 1
--------------------------- snapshot report summary ----------------------------
3 snapshots passed.
=========================== short test summary info ============================
FAILED tests/test_github_actions_integration.py::test_generated_workflow_runs_with_shared_coverage_action[ActRust-act_rust-True-rust-artifacts] - AssertionError: act workflow should write coverage.xml in the generated project
assert False
 +  where False = exists()
 +    where exists = (CopierProject(path=PosixPath('/tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust'), copier=Copier.../pytest-of-runner/pytest-0/src'), defaults={}, monkeypatch=<_pytest.monkeypatch.MonkeyPatch object at 0x7f9191b30270>)) / 'coverage.xml').exists
============= 1 failed, 25 passed, 1 xfailed in 601.46s (0:10:01) ==============
Error: Process completed with exit code 2.

@coderabbitai

This comment was marked as resolved.

leynos added 4 commits June 5, 2026 18:14
Add a step-level RUSTFLAGS override to the generated Rust CI tool installation
step so host-inherited -D warnings does not break cargo install for third-party
tools under act. Keep project build and test steps unaffected.

Assert the rendered Rust workflow contains the override.
Check act logs for coverage and test execution before requiring coverage.xml on
disk. This lets the known act composite-output/archive xfail apply after tests
and coverage have been observed, instead of failing early with a misleading
coverage-file assertion.
Require temporary lint suppressions in rendered AGENTS.md to link to the planned fix or implementation that will remove the suppression.
Add a generated AGENTS contract assertion so the guidance does not regress.
Pin parent and rendered workflows to shared-actions commit 455d9ed.
Constrain generated pytest discovery to the tests tree for xdist-backed SlipCover coverage.
Add parent Makefile gate targets and contracts so check-fmt, lint, typecheck, and test all run from the repository root.
@leynos

leynos commented Jun 5, 2026

Copy link
Copy Markdown
Owner Author

@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:

Run make test WITH_ACT=1
RUN_ACT_VALIDATION=1 /opt/hostedtoolcache/uv/0.11.19/x86_64/uvx --with pytest-copier --with pyyaml --with syrupy --with make-parser pytest tests/
Downloading pydantic-core (2.0MiB)
 Downloaded pydantic-core
Installed 30 packages in 13ms
============================= test session starts ==============================
platform linux -- Python 3.13.13, pytest-9.0.3, pluggy-1.6.0
rootdir: /home/runner/work/agent-template-python/agent-template-python
configfile: pytest.ini
plugins: syrupy-5.3.1, gitconfig-0.9.0, copier-0.4.1, dir-equal-0.2.1
collected 27 items

tests/test_audit.py ..                                                   [  7%]
tests/test_github_actions_integration.py xF                              [ 14%]
tests/test_helpers.py ...........                                        [ 55%]
tests/test_parent_ci.py .                                                [ 59%]
tests/test_template.py ...........                                       [100%]

=================================== FAILURES ===================================
_ test_generated_workflow_runs_with_shared_coverage_action[ActRust-act_rust-True-rust-artifacts] _

act_ready = None
copier = CopierFixture(template=PosixPath('/tmp/pytest-of-runner/pytest-0/src'), defaults={}, monkeypatch=<_pytest.monkeypatch.MonkeyPatch object at 0x7f1544a34380>)
tmp_path = PosixPath('/tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1')
name = 'ActRust', package = 'act_rust', use_rust = True
artifact_dir = 'rust-artifacts'

    @pytest.mark.parametrize(
        ("name", "package", "use_rust", "artifact_dir"),
        [
            ("ActPure", "act_pure", False, "pure-artifacts"),
            ("ActRust", "act_rust", True, "rust-artifacts"),
        ],
    )
    @pytest.mark.act
    def test_generated_workflow_runs_with_shared_coverage_action(
        act_ready: None,
        copier: CopierFixture,
        tmp_path: Path,
        name: str,
        package: str,
        use_rust: bool,
        artifact_dir: str,
    ) -> None:
        """Validate a generated CI workflow through act.
    
        Parameters
        ----------
        act_ready
            Fixture that skips the test unless act validation is explicitly enabled
            and a compatible runtime is reachable.
        copier
            ``pytest-copier`` fixture used to render the template.
        tmp_path
            Temporary directory for the rendered project and act artifacts.
        name
            Project name passed to the Copier template.
        package
            Package name passed to the Copier template.
        use_rust
            Whether to render the Rust-extension variant.
        artifact_dir
            Directory name, under ``tmp_path``, used for act artifacts.
    
        Returns
        -------
        None
            The test passes after the workflow runs and the expected generated
            workflow contract is observed.
    
        Raises
        ------
        AssertionError
            Raised when generated workflow content or act observations are missing.
    
        Examples
        --------
        Run this parametrized test with local act validation enabled::
    
            RUN_ACT_VALIDATION=1 python -m pytest -m act -v
        """
        project = copier.copy(
            tmp_path / package,
            project_name=name,
            package_name=package,
            use_rust=use_rust,
        )
        prepare_git_repository(project)
    
        code, logs = run_act(project, artifact_dir=tmp_path / artifact_dir)
    
        workflow = (project / ".github" / "workflows" / "ci.yml").read_text(
            encoding="utf-8"
        )
        assert "leynos/shared-actions/.github/actions/generate-coverage" in workflow, (
            "Generated workflow should use the shared generate-coverage action"
        )
        if use_rust:
            assert "cargo-manifest: rust_extension/Cargo.toml" in workflow, (
                "Rust workflow should pass the Rust extension manifest to coverage"
            )
>       assert_act_result(project, code, logs, use_rust=use_rust)

tests/test_github_actions_integration.py:385: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_github_actions_integration.py:296: in assert_act_result
    assert_ci_exercised_expected_steps(logs, use_rust=use_rust)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

logs = '{"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Set up job","step":"...info","msg":"Start server on http://10.1.0.16:34567","time":"2026-06-05T18:47:40Z"}\nError: Job \'lint-test\' failed\n'

    def assert_ci_exercised_expected_steps(logs: str, *, use_rust: bool) -> None:
        """Assert that act logs include the expected test and coverage steps.
    
        Parameters
        ----------
        logs
            Combined act output from ``run_act``.
        use_rust
            Whether the rendered project should include Rust-extension workflow
            steps.
    
        Returns
        -------
        None
            The helper returns after all expected workflow observations are present.
    
        Raises
        ------
        AssertionError
            Raised when coverage, Python tests, or required Rust checks are missing
            from the act logs.
    
        Examples
        --------
        Verify the observed steps after an act run::
    
            assert_ci_exercised_expected_steps(logs, use_rust=True)
        """
        saw_coverage = False
        saw_python = False
        saw_rust = not use_rust
        for event in iter_json_log_events(logs):
            output = str(event_text(event, "Output", "output", "message", "msg"))
            step = str(event_text(event, "name", "step_name", "Step", "step"))
            in_coverage_step = GENERATE_COVERAGE_STEP in step
            saw_coverage = saw_coverage or (
                in_coverage_step
                and ("coverage.xml" in output or "Current coverage" in output)
            )
            saw_python = saw_python or (
                in_coverage_step and ("run_python.py" in output or "pytest -v" in output)
            )
            saw_rust = saw_rust or (
                in_coverage_step
                and (
                    "run_rust.py" in output
                    or "cargo nextest" in output
                    or "cargo llvm-cov" in output
                )
            )
    
>       assert saw_coverage, f"coverage action step was not observed:\n{logs}"
E       AssertionError: coverage action step was not observed:
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Set up job","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:40Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"🚀  Start image=catthehacker/ubuntu:act-latest","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:40Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker pull image=catthehacker/ubuntu:act-latest platform= username= forcePull=true","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:40Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"using DockerAuthConfig authentication for docker pull","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:40Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker create image=catthehacker/ubuntu:act-latest platform= entrypoint=[\"tail\" \"-f\" \"/dev/null\"] cmd=[] network=\"host\"","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker run image=catthehacker/ubuntu:act-latest platform= entrypoint=[\"tail\" \"-f\" \"/dev/null\"] cmd=[] network=\"host\"","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[node --no-warnings -e console.log(process.execPath)] user= workdir=","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Set up job","step":"Set up job","stepResult":"success","stepid":["--setup-job"],"time":"2026-06-05T18:47:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/setup-python' # ref=a26af69be951a213d495a4c3e4e4022e16d87065","stage":"Pre","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:47:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86","stage":"Pre","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:47:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/leynos/shared-actions' # ref=455d9ed03477c0026da96c2541ca26569a74acac","stage":"Pre","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:47:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Set up Rust","stage":"Pre","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:47:49Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:47:49Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (explicit toolchain)","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:47:49Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","0","8"],"time":"2026-06-05T18:47:49Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Pre","step":"Set up Rust","stepID":["3","0","8"],"time":"2026-06-05T18:48:03Z"}
E         {"dryrun":false,"executionTime":14100021699,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (explicit toolchain) [14.100021699s]","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"stepResult":"success","time":"2026-06-05T18:48:03Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"time":"2026-06-05T18:48:03Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (rust-toolchain file)","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"time":"2026-06-05T18:48:04Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","1","8"],"time":"2026-06-05T18:48:04Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Pre","step":"Set up Rust","stepID":["3","1","8"],"time":"2026-06-05T18:48:04Z"}
E         {"dryrun":false,"executionTime":706613601,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (rust-toolchain file) [706.613601ms]","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"stepResult":"success","time":"2026-06-05T18:48:04Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"time":"2026-06-05T18:48:04Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (stable default)","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"time":"2026-06-05T18:48:05Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","2","8"],"time":"2026-06-05T18:48:05Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Pre","step":"Set up Rust","stepID":["3","2","8"],"time":"2026-06-05T18:48:05Z"}
E         {"dryrun":false,"executionTime":501211938,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (stable default) [501.211938ms]","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"stepResult":"success","time":"2026-06-05T18:48:05Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=08807647e7069bb48b6ef5acd8ec9567f424441b","stage":"Pre","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T18:48:05Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Pre","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T18:48:06Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=0057852bfaa89a56745cba8c7296529d2fc39830","stage":"Pre","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T18:48:06Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mozilla-actions/sccache-action' # ref=7d986dd989559c6ecdb630a3fd2557667be217ad","stage":"Pre","step":"Set up Rust","stepID":["3","7"],"time":"2026-06-05T18:48:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mozilla-actions/sccache-action' # ref=7d986dd989559c6ecdb630a3fd2557667be217ad","stage":"Pre","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T18:48:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/msys2/setup-msys2' # ref=4f806de0a5a7294ffabaff804b38a9b435a73bda","stage":"Pre","step":"Set up Rust","stepID":["3","11"],"time":"2026-06-05T18:48:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mbround18/setup-osxcross' # ref=b26146d499c54979ed3d023266865dc188881911","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"time":"2026-06-05T18:48:48Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Setup osxcross (macOS SDK + linker)","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"time":"2026-06-05T18:48:48Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v3","stage":"Pre","step":"Set up Rust","stepID":["3","12","cache"],"time":"2026-06-05T18:48:48Z"}
E         {"dryrun":false,"executionTime":39394265151,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Setup osxcross (macOS SDK + linker) [39.394265151s]","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"stepResult":"success","time":"2026-06-05T18:49:28Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=0057852bfaa89a56745cba8c7296529d2fc39830","stage":"Pre","step":"Set up Rust","stepID":["3","openbsd-stdlib-cache"],"time":"2026-06-05T18:49:28Z"}
E         {"dryrun":false,"executionTime":99679835754,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Set up Rust [1m39.679835754s]","stage":"Pre","step":"Set up Rust","stepID":["3"],"stepResult":"success","time":"2026-06-05T18:49:28Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=f13886b937689c021905a6b90929199931d60db1","stage":"Pre","step":"Cache Rust lint and test tools","stepID":["4"],"time":"2026-06-05T18:49:28Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/leynos/shared-actions' # ref=455d9ed03477c0026da96c2541ca26569a74acac","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"time":"2026-06-05T18:49:42Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Test and Measure Coverage","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"time":"2026-06-05T18:49:42Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=08807647e7069bb48b6ef5acd8ec9567f424441b","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","0"],"time":"2026-06-05T18:49:42Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","0"],"time":"2026-06-05T18:49:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","restore-baselines"],"time":"2026-06-05T18:49:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","4"],"time":"2026-06-05T18:49:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","9"],"time":"2026-06-05T18:49:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","13"],"time":"2026-06-05T18:49:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/upload-artifact' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","15"],"time":"2026-06-05T18:49:45Z"}
E         {"dryrun":false,"executionTime":2914456602,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Test and Measure Coverage [2.914456602s]","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"stepResult":"success","time":"2026-06-05T18:49:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Check out repository","stage":"Main","step":"Check out repository","stepID":["0"],"time":"2026-06-05T18:49:45Z"}
E         {"dryrun":false,"executionTime":189475,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Check out repository [189.475µs]","stage":"Main","step":"Check out repository","stepID":["0"],"stepResult":"success","time":"2026-06-05T18:49:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Set up Python","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/ dst=/var/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/dist/setup/index.js] user= workdir=","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"Installed versions","command":"group","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::group::Installed versions\n","raw":"::group::Installed versions\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(node:31) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(Use `node --trace-deprecation ...` to show where the warning was created)\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Successfully set up CPython (3.13.13)\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"","command":"endgroup","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::endgroup::\n","raw":"::endgroup::\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
Error: Unable to process command 'E         {"arg":"/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json","raw":"##[add-matcher]/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}' successfully.
Error: Could not find a part of the path '/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}'.
E         {"dryrun":false,"executionTime":365878526,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Set up Python [365.878526ms]","stage":"Main","step":"Set up Python","stepID":["1"],"stepResult":"success","time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: pythonLocation=/opt/hostedtoolcache/Python/3.13.13/x64","name":"pythonLocation","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/lib/pkgconfig","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: PKG_CONFIG_PATH=/opt/hostedtoolcache/Python/3.13.13/x64/lib/pkgconfig","name":"PKG_CONFIG_PATH","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python2_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python2_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python3_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python3_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/lib","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: LD_LIBRARY_PATH=/opt/hostedtoolcache/Python/3.13.13/x64/lib","name":"LD_LIBRARY_PATH","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"3.13.13","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: python-version=3.13.13","name":"python-version","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/bin/python","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: python-path=/opt/hostedtoolcache/Python/3.13.13/x64/bin/python","name":"python-path","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/Python/3.13.13/x64","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/Python/3.13.13/x64/bin","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install uv","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/ dst=/var/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/dist/setup/index.js] user= workdir=","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(node:44) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(Use `node --trace-deprecation ...` to show where the warning was created)\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Found uv in tool-cache for 0.11.19\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /root/.local/bin to the path\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /opt/hostedtoolcache/uv/0.11.19/x86_64 to the path\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
Error: Unable to process command 'E         {"arg":"/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json","raw":"##[add-matcher]/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json\n","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}' successfully.
Error: Could not find a part of the path '/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json\n","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}'.
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Set UV_CACHE_DIR to /tmp/setup-uv-cache\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Successfully installed uv version 0.11.19\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"executionTime":647467991,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install uv [647.467991ms]","stage":"Main","step":"Install uv","stepID":["2"],"stepResult":"success","time":"2026-06-05T18:49:46Z"}
E         {"arg":"/tmp/setup-uv-cache","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: UV_CACHE_DIR=/tmp/setup-uv-cache","name":"UV_CACHE_DIR","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","name":"uv-path","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uvx-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","name":"uvx-path","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"0.11.19","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-version=0.11.19","name":"uv-version","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/root/.local/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.local/bin","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/uv/0.11.19/x86_64","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Set up Rust","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/ dst=/var/run/act/actions/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:49:46Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install rust (explicit toolchain)","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/ dst=/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main : construct rustup command line\necho \"targets=$(for t in ${targets//,/ }; do echo -n ' --target' $t; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"components=$(for c in ${components//,/ }; do echo -n ' --component' $c; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"downgrade=\" \u003e\u003e $GITHUB_OUTPUT\n","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-flags.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"executionTime":48362691,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main : construct rustup command line\necho \"targets=$(for t in ${targets//,/ }; do echo -n ' --target' $t; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"components=$(for c in ${components//,/ }; do echo -n ' --component' $c; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"downgrade=\" \u003e\u003e $GITHUB_OUTPUT\n [48.362691ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"stepResult":"success","time":"2026-06-05T18:49:47Z"}
E         {"arg":"","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: downgrade=","name":"downgrade","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T18:49:47Z"}
E         {"arg":"","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: targets=","name":"targets","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T18:49:47Z"}
E         {"arg":" --component rustfmt --component clippy --component llvm-tools-preview","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: components= --component rustfmt --component clippy --component llvm-tools-preview","name":"components","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Setting Environment Variables","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-2.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"executionTime":46779224,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Setting Environment Variables [46.779224ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"stepResult":"success","time":"2026-06-05T18:49:47Z"}
E         {"arg":"0","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_INCREMENTAL=0","name":"CARGO_INCREMENTAL","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
E         {"arg":"0","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_PROFILE_DEV_DEBUG=0","name":"CARGO_PROFILE_DEV_DEBUG","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
E         {"arg":"short","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: RUST_BACKTRACE=short","name":"RUST_BACKTRACE","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
E         {"arg":"-D warnings","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: RUSTFLAGS=-D warnings","name":"RUSTFLAGS","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
E         {"arg":"true","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_UNSTABLE_SPARSE_REGISTRY=true","name":"CARGO_UNSTABLE_SPARSE_REGISTRY","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
E         {"arg":"sparse","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse","name":"CARGO_REGISTRIES_CRATES_IO_PROTOCOL","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install Rust Problem Matcher","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-3.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T18:49:47Z"}
E         {"arg":"/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json","raw":"::add-matcher::/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json\n","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"executionTime":47344030,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install Rust Problem Matcher [47.34403ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"stepResult":"success","time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install rustup, if needed","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-4.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: downloading installer\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: It looks like you have an existing rustup settings file at:\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: /root/.rustup/settings.toml\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: Rustup will install the default toolchain as specified in the settings file,\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: instead of the one inferred from the default host triple.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: profile set to default\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: default host triple is x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: skipping toolchain installation\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Rust is installed now. Great!\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"To get started you may need to restart your current shell.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"This would reload your PATH environment variable to include\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Cargo's bin directory ($HOME/.cargo/bin).\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"To configure your current shell, you need to source\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"the corresponding env file under $HOME/.cargo.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"This is usually done by running one of the following (note the leading DOT):\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":". \"$HOME/.cargo/env\"            # For sh/bash/zsh/ash/dash/pdksh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.fish\"  # For fish\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"~/.cargo/env.nu\"  # For nushell\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.tcsh\"  # For tcsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":". \"$HOME/.cargo/env.ps1\"        # For pwsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.xsh\"   # For xonsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"executionTime":481816157,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install rustup, if needed [481.816157ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"stepResult":"success","time":"2026-06-05T18:49:47Z"}
E         {"arg":"/root/.cargo/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.cargo/bin","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main rustup toolchain install stable","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-5.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: syncing channel updates for stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: latest update on 2026-05-28 for version 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: downloading 6 components\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:47Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  stable-x86_64-unknown-linux-gnu installed - rustc 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: default toolchain set to stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: override toolchain for /tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust set to stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"executionTime":9357978313,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main rustup toolchain install stable [9.357978313s]","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"stepResult":"success","time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Print installed versions","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-versions.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"rustc 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"binary: rustc\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-hash: ac68faa20c58cbccd01ee7208bf3b6e93a7d7f96\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-date: 2026-05-25\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"host: x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"release: 1.96.0\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"LLVM version: 22.1.2\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo 1.96.0 (30a34c682 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"release: 1.96.0\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-hash: 30a34c6821b57de0aaec83a901aca39f88f6778c\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-date: 2026-05-25\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"host: x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"libgit2: 1.9.2 (sys:0.20.4 vendored)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"libcurl: 8.19.0-DEV (sys:0.4.87+curl-8.19.0 vendored ssl:OpenSSL/3.5.4)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"ssl: OpenSSL 3.5.4 30 Sep 2025\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"os: Ubuntu 24.4.0 (noble) [64-bit]\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: This is the version for the rustup toolchain manager, not the rustc compiler.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: the currently active `rustc` version is `rustc 1.96.0 (ac68faa20 2026-05-25)`\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"rustup 1.29.0 (28d1352db 2026-03-05)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: This is the version for the rustup toolchain manager, not the rustc compiler.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: the currently active `rustc` version is `rustc 1.96.0 (ac68faa20 2026-05-25)`\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"executionTime":156514327,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Print installed versions [156.514327ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"stepResult":"success","time":"2026-06-05T18:49:57Z"}
E         {"arg":"rustc 1.96.0 (ac68faa20 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustc-version=rustc 1.96.0 (ac68faa20 2026-05-25)","name":"rustc-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"arg":"cargo 1.96.0 (30a34c682 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cargo-version=cargo 1.96.0 (30a34c682 2026-05-25)","name":"cargo-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"arg":"rustup 1.29.0 (28d1352db 2026-03-05)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustup-version=rustup 1.29.0 (28d1352db 2026-03-05)","name":"rustup-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"arg":"20260525ac68","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cachekey=20260525ac68","name":"cachekey","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Downgrade registry access protocol when needed","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-7.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"executionTime":46150760,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Downgrade registry access protocol when needed [46.15076ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"stepResult":"success","time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Main","step":"Set up Rust","stepID":["3","0","8"],"time":"2026-06-05T18:49:57Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Main","step":"Set up Rust","stepID":["3","0","8"],"time":"2026-06-05T18:49:58Z"}
E         {"arg":"rustc 1.96.0 (ac68faa20 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustc-version=rustc 1.96.0 (ac68faa20 2026-05-25)","name":"rustc-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:58Z"}
E         {"arg":"cargo 1.96.0 (30a34c682 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cargo-version=cargo 1.96.0 (30a34c682 2026-05-25)","name":"cargo-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:58Z"}
E         {"arg":"rustup 1.29.0 (28d1352db 2026-03-05)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustup-version=rustup 1.29.0 (28d1352db 2026-03-05)","name":"rustup-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:58Z"}
E         {"arg":"20260525ac68","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cachekey=20260525ac68","name":"cachekey","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:58Z"}
E         {"dryrun":false,"executionTime":10988446879,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ❌  Failure - Main Install rust (explicit toolchain) [10.988446879s]","stage":"Main","step":"Set up Rust","stepID":["3","0"],"stepResult":"failure","time":"2026-06-05T18:49:58Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:58Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=08807647e7069bb48b6ef5acd8ec9567f424441b","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T18:49:58Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T18:49:58Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/workflow/hashfiles/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T18:49:58Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/workflow/hashfiles/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","openbsd-stdlib-cache"],"time":"2026-06-05T18:49:58Z"}
E         {"dryrun":false,"executionTime":12081061804,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ❌  Failure - Main Set up Rust [12.081061804s]","stage":"Main","step":"Set up Rust","stepID":["3"],"stepResult":"failure","time":"2026-06-05T18:49:58Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:49:58Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Post Set up Rust","stage":"Post","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:49:59Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/ dst=/var/run/act/actions/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/","stage":"Post","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:49:59Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Post Install rust (explicit toolchain)","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"time":"2026-06-05T18:49:59Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/ dst=/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"time":"2026-06-05T18:49:59Z"}
E         {"dryrun":false,"executionTime":15675652,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Post Install rust (explicit toolchain) [15.675652ms]","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"stepResult":"success","time":"2026-06-05T18:49:59Z"}
E         {"dryrun":false,"executionTime":131961063,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Post Set up Rust [131.961063ms]","stage":"Post","step":"Set up Rust","stepID":["3"],"stepResult":"success","time":"2026-06-05T18:49:59Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Complete job","step":"Complete job","stepid":["--complete-job"],"time":"2026-06-05T18:49:59Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Complete job","step":"Complete job","stepResult":"success","stepid":["--complete-job"],"time":"2026-06-05T18:49:59Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","jobResult":"failure","level":"info","matrix":{},"msg":"🏁  Job failed","time":"2026-06-05T18:49:59Z"}
E         
E         {"level":"info","msg":"Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock'","time":"2026-06-05T18:47:40Z"}
E         {"level":"info","msg":"Start server on http://10.1.0.16:34567","time":"2026-06-05T18:47:40Z"}
E         Error: Job 'lint-test' failed
E         
E       assert False

tests/test_github_actions_integration.py:257: AssertionError
----------------------------- Captured stdout call -----------------------------


----------------------------- Captured stderr call -----------------------------

Copying from template version 99.99.99
    create  act_rust
    create  act_rust/pure.py
    create  act_rust/__init__.py
    create  LICENSE
    create  .gitignore
    create  .github
    create  .github/actions
    create  .github/actions/pure-python-wheel
    create  .github/actions/pure-python-wheel/action.yml
    create  .github/actions/build-wheels
    create  .github/actions/build-wheels/action.yml
    create  .github/dependabot.yml
    create  .github/workflows
    create  .github/workflows/act-validation.yml
    create  .github/workflows/build-wheels.yml
    create  .github/workflows/ci.yml
    create  .github/workflows/release.yml
    create  .github/workflows/get-codescene-sha.yml
    create  rust_extension
    create  rust_extension/clippy.toml
    create  rust_extension/Cargo.toml
    create  rust_extension/src
    create  rust_extension/src/lib.rs
    create  docs
    create  docs/developers-guide.md
    create  docs/contents.md
    create  docs/users-guide.md
    create  docs/local-validation-of-github-actions-with-act-and-pytest.md
    create  docs/scripting-standards.md
    create  docs/documentation-style-guide.md
    create  docs/complexity-antipatterns-and-refactoring-strategies.md
 identical  docs
    create  docs/rust-extension.md
    create  tests
    create  tests/test_stub.py
    create  pyproject.toml
    create  .markdownlint-cli2.jsonc
    create  .rules
    create  .rules/python-typing.md
    create  .rules/python-generators.md
    create  .rules/python-context-managers.md
    create  .rules/python-exception-design-raising-handling-and-logging.md
    create  .rules/python-return.md
    create  .rules/python-00.md
    create  .rules/python-pyproject.md
    create  Makefile
    create  README.md
    create  AGENTS.md
--------------------------- snapshot report summary ----------------------------
3 snapshots passed.
=========================== short test summary info ============================
FAILED tests/test_github_actions_integration.py::test_generated_workflow_runs_with_shared_coverage_action[ActRust-act_rust-True-rust-artifacts] - AssertionError: coverage action step was not observed:
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Set up job","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:40Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"🚀  Start image=catthehacker/ubuntu:act-latest","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:40Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker pull image=catthehacker/ubuntu:act-latest platform= username= forcePull=true","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:40Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"using DockerAuthConfig authentication for docker pull","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:40Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker create image=catthehacker/ubuntu:act-latest platform= entrypoint=[\"tail\" \"-f\" \"/dev/null\"] cmd=[] network=\"host\"","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker run image=catthehacker/ubuntu:act-latest platform= entrypoint=[\"tail\" \"-f\" \"/dev/null\"] cmd=[] network=\"host\"","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[node --no-warnings -e console.log(process.execPath)] user= workdir=","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T18:47:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Set up job","step":"Set up job","stepResult":"success","stepid":["--setup-job"],"time":"2026-06-05T18:47:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/setup-python' # ref=a26af69be951a213d495a4c3e4e4022e16d87065","stage":"Pre","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:47:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86","stage":"Pre","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:47:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/leynos/shared-actions' # ref=455d9ed03477c0026da96c2541ca26569a74acac","stage":"Pre","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:47:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Set up Rust","stage":"Pre","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:47:49Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:47:49Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (explicit toolchain)","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:47:49Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","0","8"],"time":"2026-06-05T18:47:49Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Pre","step":"Set up Rust","stepID":["3","0","8"],"time":"2026-06-05T18:48:03Z"}
  {"dryrun":false,"executionTime":14100021699,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (explicit toolchain) [14.100021699s]","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"stepResult":"success","time":"2026-06-05T18:48:03Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"time":"2026-06-05T18:48:03Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (rust-toolchain file)","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"time":"2026-06-05T18:48:04Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","1","8"],"time":"2026-06-05T18:48:04Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Pre","step":"Set up Rust","stepID":["3","1","8"],"time":"2026-06-05T18:48:04Z"}
  {"dryrun":false,"executionTime":706613601,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (rust-toolchain file) [706.613601ms]","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"stepResult":"success","time":"2026-06-05T18:48:04Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"time":"2026-06-05T18:48:04Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (stable default)","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"time":"2026-06-05T18:48:05Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","2","8"],"time":"2026-06-05T18:48:05Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Pre","step":"Set up Rust","stepID":["3","2","8"],"time":"2026-06-05T18:48:05Z"}
  {"dryrun":false,"executionTime":501211938,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (stable default) [501.211938ms]","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"stepResult":"success","time":"2026-06-05T18:48:05Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=08807647e7069bb48b6ef5acd8ec9567f424441b","stage":"Pre","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T18:48:05Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Pre","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T18:48:06Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=0057852bfaa89a56745cba8c7296529d2fc39830","stage":"Pre","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T18:48:06Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mozilla-actions/sccache-action' # ref=7d986dd989559c6ecdb630a3fd2557667be217ad","stage":"Pre","step":"Set up Rust","stepID":["3","7"],"time":"2026-06-05T18:48:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mozilla-actions/sccache-action' # ref=7d986dd989559c6ecdb630a3fd2557667be217ad","stage":"Pre","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T18:48:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/msys2/setup-msys2' # ref=4f806de0a5a7294ffabaff804b38a9b435a73bda","stage":"Pre","step":"Set up Rust","stepID":["3","11"],"time":"2026-06-05T18:48:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mbround18/setup-osxcross' # ref=b26146d499c54979ed3d023266865dc188881911","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"time":"2026-06-05T18:48:48Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Setup osxcross (macOS SDK + linker)","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"time":"2026-06-05T18:48:48Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v3","stage":"Pre","step":"Set up Rust","stepID":["3","12","cache"],"time":"2026-06-05T18:48:48Z"}
  {"dryrun":false,"executionTime":39394265151,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Setup osxcross (macOS SDK + linker) [39.394265151s]","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"stepResult":"success","time":"2026-06-05T18:49:28Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=0057852bfaa89a56745cba8c7296529d2fc39830","stage":"Pre","step":"Set up Rust","stepID":["3","openbsd-stdlib-cache"],"time":"2026-06-05T18:49:28Z"}
  {"dryrun":false,"executionTime":99679835754,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Set up Rust [1m39.679835754s]","stage":"Pre","step":"Set up Rust","stepID":["3"],"stepResult":"success","time":"2026-06-05T18:49:28Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=f13886b937689c021905a6b90929199931d60db1","stage":"Pre","step":"Cache Rust lint and test tools","stepID":["4"],"time":"2026-06-05T18:49:28Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/leynos/shared-actions' # ref=455d9ed03477c0026da96c2541ca26569a74acac","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"time":"2026-06-05T18:49:42Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Test and Measure Coverage","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"time":"2026-06-05T18:49:42Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=08807647e7069bb48b6ef5acd8ec9567f424441b","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","0"],"time":"2026-06-05T18:49:42Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","0"],"time":"2026-06-05T18:49:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","restore-baselines"],"time":"2026-06-05T18:49:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","4"],"time":"2026-06-05T18:49:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","9"],"time":"2026-06-05T18:49:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","13"],"time":"2026-06-05T18:49:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/upload-artifact' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","15"],"time":"2026-06-05T18:49:45Z"}
  {"dryrun":false,"executionTime":2914456602,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Test and Measure Coverage [2.914456602s]","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"stepResult":"success","time":"2026-06-05T18:49:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Check out repository","stage":"Main","step":"Check out repository","stepID":["0"],"time":"2026-06-05T18:49:45Z"}
  {"dryrun":false,"executionTime":189475,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Check out repository [189.475µs]","stage":"Main","step":"Check out repository","stepID":["0"],"stepResult":"success","time":"2026-06-05T18:49:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Set up Python","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/ dst=/var/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/dist/setup/index.js] user= workdir=","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"Installed versions","command":"group","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::group::Installed versions\n","raw":"::group::Installed versions\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(node:31) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(Use `node --trace-deprecation ...` to show where the warning was created)\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Successfully set up CPython (3.13.13)\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"","command":"endgroup","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::endgroup::\n","raw":"::endgroup::\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
Error: Unable to process command '  {"arg":"/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json","raw":"##[add-matcher]/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}' successfully.
Error: Could not find a part of the path '/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}'.
  {"dryrun":false,"executionTime":365878526,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Set up Python [365.878526ms]","stage":"Main","step":"Set up Python","stepID":["1"],"stepResult":"success","time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: pythonLocation=/opt/hostedtoolcache/Python/3.13.13/x64","name":"pythonLocation","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/lib/pkgconfig","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: PKG_CONFIG_PATH=/opt/hostedtoolcache/Python/3.13.13/x64/lib/pkgconfig","name":"PKG_CONFIG_PATH","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python2_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python2_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python3_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python3_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/lib","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: LD_LIBRARY_PATH=/opt/hostedtoolcache/Python/3.13.13/x64/lib","name":"LD_LIBRARY_PATH","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"3.13.13","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: python-version=3.13.13","name":"python-version","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/bin/python","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: python-path=/opt/hostedtoolcache/Python/3.13.13/x64/bin/python","name":"python-path","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/Python/3.13.13/x64","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/Python/3.13.13/x64/bin","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install uv","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/ dst=/var/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/dist/setup/index.js] user= workdir=","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(node:44) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(Use `node --trace-deprecation ...` to show where the warning was created)\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Found uv in tool-cache for 0.11.19\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /root/.local/bin to the path\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /opt/hostedtoolcache/uv/0.11.19/x86_64 to the path\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
Error: Unable to process command '  {"arg":"/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json","raw":"##[add-matcher]/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json\n","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}' successfully.
Error: Could not find a part of the path '/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json\n","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}'.
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Set UV_CACHE_DIR to /tmp/setup-uv-cache\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Successfully installed uv version 0.11.19\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"executionTime":647467991,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install uv [647.467991ms]","stage":"Main","step":"Install uv","stepID":["2"],"stepResult":"success","time":"2026-06-05T18:49:46Z"}
  {"arg":"/tmp/setup-uv-cache","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: UV_CACHE_DIR=/tmp/setup-uv-cache","name":"UV_CACHE_DIR","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","name":"uv-path","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uvx-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","name":"uvx-path","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"0.11.19","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-version=0.11.19","name":"uv-version","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/root/.local/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.local/bin","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/uv/0.11.19/x86_64","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Set up Rust","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/ dst=/var/run/act/actions/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:49:46Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install rust (explicit toolchain)","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/ dst=/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main : construct rustup command line\necho \"targets=$(for t in ${targets//,/ }; do echo -n ' --target' $t; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"components=$(for c in ${components//,/ }; do echo -n ' --component' $c; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"downgrade=\" \u003e\u003e $GITHUB_OUTPUT\n","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-flags.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"executionTime":48362691,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main : construct rustup command line\necho \"targets=$(for t in ${targets//,/ }; do echo -n ' --target' $t; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"components=$(for c in ${components//,/ }; do echo -n ' --component' $c; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"downgrade=\" \u003e\u003e $GITHUB_OUTPUT\n [48.362691ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"stepResult":"success","time":"2026-06-05T18:49:47Z"}
  {"arg":"","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: downgrade=","name":"downgrade","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T18:49:47Z"}
  {"arg":"","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: targets=","name":"targets","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T18:49:47Z"}
  {"arg":" --component rustfmt --component clippy --component llvm-tools-preview","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: components= --component rustfmt --component clippy --component llvm-tools-preview","name":"components","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Setting Environment Variables","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-2.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"executionTime":46779224,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Setting Environment Variables [46.779224ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"stepResult":"success","time":"2026-06-05T18:49:47Z"}
  {"arg":"0","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_INCREMENTAL=0","name":"CARGO_INCREMENTAL","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
  {"arg":"0","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_PROFILE_DEV_DEBUG=0","name":"CARGO_PROFILE_DEV_DEBUG","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
  {"arg":"short","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: RUST_BACKTRACE=short","name":"RUST_BACKTRACE","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
  {"arg":"-D warnings","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: RUSTFLAGS=-D warnings","name":"RUSTFLAGS","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
  {"arg":"true","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_UNSTABLE_SPARSE_REGISTRY=true","name":"CARGO_UNSTABLE_SPARSE_REGISTRY","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
  {"arg":"sparse","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse","name":"CARGO_REGISTRIES_CRATES_IO_PROTOCOL","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install Rust Problem Matcher","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-3.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T18:49:47Z"}
  {"arg":"/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json","raw":"::add-matcher::/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json\n","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"executionTime":47344030,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install Rust Problem Matcher [47.34403ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"stepResult":"success","time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install rustup, if needed","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-4.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: downloading installer\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: It looks like you have an existing rustup settings file at:\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: /root/.rustup/settings.toml\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: Rustup will install the default toolchain as specified in the settings file,\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: instead of the one inferred from the default host triple.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: profile set to default\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: default host triple is x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: skipping toolchain installation\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Rust is installed now. Great!\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"To get started you may need to restart your current shell.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"This would reload your PATH environment variable to include\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Cargo's bin directory ($HOME/.cargo/bin).\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"To configure your current shell, you need to source\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"the corresponding env file under $HOME/.cargo.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"This is usually done by running one of the following (note the leading DOT):\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":". \"$HOME/.cargo/env\"            # For sh/bash/zsh/ash/dash/pdksh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.fish\"  # For fish\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"~/.cargo/env.nu\"  # For nushell\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.tcsh\"  # For tcsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":". \"$HOME/.cargo/env.ps1\"        # For pwsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.xsh\"   # For xonsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"executionTime":481816157,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install rustup, if needed [481.816157ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"stepResult":"success","time":"2026-06-05T18:49:47Z"}
  {"arg":"/root/.cargo/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.cargo/bin","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main rustup toolchain install stable","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-5.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: syncing channel updates for stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: latest update on 2026-05-28 for version 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: downloading 6 components\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:47Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  stable-x86_64-unknown-linux-gnu installed - rustc 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: default toolchain set to stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: override toolchain for /tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust set to stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"executionTime":9357978313,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main rustup toolchain install stable [9.357978313s]","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"stepResult":"success","time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Print installed versions","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-versions.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"rustc 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"binary: rustc\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-hash: ac68faa20c58cbccd01ee7208bf3b6e93a7d7f96\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-date: 2026-05-25\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"host: x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"release: 1.96.0\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"LLVM version: 22.1.2\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo 1.96.0 (30a34c682 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"release: 1.96.0\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-hash: 30a34c6821b57de0aaec83a901aca39f88f6778c\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-date: 2026-05-25\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"host: x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"libgit2: 1.9.2 (sys:0.20.4 vendored)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"libcurl: 8.19.0-DEV (sys:0.4.87+curl-8.19.0 vendored ssl:OpenSSL/3.5.4)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"ssl: OpenSSL 3.5.4 30 Sep 2025\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"os: Ubuntu 24.4.0 (noble) [64-bit]\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: This is the version for the rustup toolchain manager, not the rustc compiler.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: the currently active `rustc` version is `rustc 1.96.0 (ac68faa20 2026-05-25)`\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"rustup 1.29.0 (28d1352db 2026-03-05)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: This is the version for the rustup toolchain manager, not the rustc compiler.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: the currently active `rustc` version is `rustc 1.96.0 (ac68faa20 2026-05-25)`\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"executionTime":156514327,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Print installed versions [156.514327ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"stepResult":"success","time":"2026-06-05T18:49:57Z"}
  {"arg":"rustc 1.96.0 (ac68faa20 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustc-version=rustc 1.96.0 (ac68faa20 2026-05-25)","name":"rustc-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"arg":"cargo 1.96.0 (30a34c682 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cargo-version=cargo 1.96.0 (30a34c682 2026-05-25)","name":"cargo-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"arg":"rustup 1.29.0 (28d1352db 2026-03-05)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustup-version=rustup 1.29.0 (28d1352db 2026-03-05)","name":"rustup-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"arg":"20260525ac68","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cachekey=20260525ac68","name":"cachekey","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Downgrade registry access protocol when needed","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-7.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"executionTime":46150760,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Downgrade registry access protocol when needed [46.15076ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"stepResult":"success","time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Main","step":"Set up Rust","stepID":["3","0","8"],"time":"2026-06-05T18:49:57Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Main","step":"Set up Rust","stepID":["3","0","8"],"time":"2026-06-05T18:49:58Z"}
  {"arg":"rustc 1.96.0 (ac68faa20 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustc-version=rustc 1.96.0 (ac68faa20 2026-05-25)","name":"rustc-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:58Z"}
  {"arg":"cargo 1.96.0 (30a34c682 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cargo-version=cargo 1.96.0 (30a34c682 2026-05-25)","name":"cargo-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:58Z"}
  {"arg":"rustup 1.29.0 (28d1352db 2026-03-05)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustup-version=rustup 1.29.0 (28d1352db 2026-03-05)","name":"rustup-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:58Z"}
  {"arg":"20260525ac68","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cachekey=20260525ac68","name":"cachekey","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:58Z"}
  {"dryrun":false,"executionTime":10988446879,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ❌  Failure - Main Install rust (explicit toolchain) [10.988446879s]","stage":"Main","step":"Set up Rust","stepID":["3","0"],"stepResult":"failure","time":"2026-06-05T18:49:58Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T18:49:58Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=08807647e7069bb48b6ef5acd8ec9567f424441b","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T18:49:58Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T18:49:58Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/workflow/hashfiles/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T18:49:58Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/workflow/hashfiles/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","openbsd-stdlib-cache"],"time":"2026-06-05T18:49:58Z"}
  {"dryrun":false,"executionTime":12081061804,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ❌  Failure - Main Set up Rust [12.081061804s]","stage":"Main","step":"Set up Rust","stepID":["3"],"stepResult":"failure","time":"2026-06-05T18:49:58Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"The runs.using key in action.yml must be one of: [composite docker node12 node16 node20], got node24","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:49:58Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Post Set up Rust","stage":"Post","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:49:59Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/ dst=/var/run/act/actions/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/","stage":"Post","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T18:49:59Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Post Install rust (explicit toolchain)","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"time":"2026-06-05T18:49:59Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/ dst=/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"time":"2026-06-05T18:49:59Z"}
  {"dryrun":false,"executionTime":15675652,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Post Install rust (explicit toolchain) [15.675652ms]","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"stepResult":"success","time":"2026-06-05T18:49:59Z"}
  {"dryrun":false,"executionTime":131961063,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Post Set up Rust [131.961063ms]","stage":"Post","step":"Set up Rust","stepID":["3"],"stepResult":"success","time":"2026-06-05T18:49:59Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Complete job","step":"Complete job","stepid":["--complete-job"],"time":"2026-06-05T18:49:59Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Complete job","step":"Complete job","stepResult":"success","stepid":["--complete-job"],"time":"2026-06-05T18:49:59Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","jobResult":"failure","level":"info","matrix":{},"msg":"🏁  Job failed","time":"2026-06-05T18:49:59Z"}
  
  {"level":"info","msg":"Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock'","time":"2026-06-05T18:47:40Z"}
  {"level":"info","msg":"Start server on http://10.1.0.16:34567","time":"2026-06-05T18:47:40Z"}
  Error: Job 'lint-test' failed
  
assert False
============= 1 failed, 25 passed, 1 xfailed in 523.74s (0:08:43) ==============
make: *** [Makefile:14: test] Error 1
Error: Process completed with exit code 2.

@coderabbitai

This comment was marked as resolved.

Upgrade parent and rendered act-validation workflows to act v0.2.84 so act supports Node24 JavaScript actions.
Add a local act version preflight that skips optional act-backed tests when the installed binary is too old.
Scrub host GitHub auth tokens from act subprocess environments so stale local credentials do not break public action clones.
@leynos

leynos commented Jun 5, 2026

Copy link
Copy Markdown
Owner Author

@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:

Run make test WITH_ACT=1
  make test WITH_ACT=1
  shell: /usr/bin/bash -e {0}
  env:
    ACT_VERSION: v0.2.84
    MARKDOWNLINT_CLI2_VERSION: 0.22.1
    MBAKE_VERSION: 1.4.6
    pythonLocation: /opt/hostedtoolcache/Python/3.13.13/x64
    PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.13.13/x64/lib/pkgconfig
    Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.13/x64
    Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.13/x64
    Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.13/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.13.13/x64/lib
    UV_CACHE_DIR: /home/runner/work/_temp/setup-uv-cache
    CARGO_INCREMENTAL: 0
    CARGO_PROFILE_DEV_DEBUG: 0
    CARGO_TERM_COLOR: always
    RUST_BACKTRACE: short
    RUSTFLAGS: -D warnings
    CARGO_UNSTABLE_SPARSE_REGISTRY: true
    CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
    UV_PYTHON_INSTALL_DIR: /home/runner/work/_temp/uv-python-dir
    SCCACHE_PATH: /opt/hostedtoolcache/sccache/0.15.0/x64/sccache
    ACTIONS_CACHE_SERVICE_V2: on
    ACTIONS_RESULTS_URL: https://results-receiver.actions.githubusercontent.com/
    ACTIONS_RUNTIME_TOKEN: ***
RUN_ACT_VALIDATION=1 /opt/hostedtoolcache/uv/0.11.19/x86_64/uvx --with pytest-copier --with pyyaml --with syrupy --with make-parser pytest tests/
Downloading pydantic-core (2.0MiB)
 Downloaded pydantic-core
Installed 30 packages in 109ms
============================= test session starts ==============================
platform linux -- Python 3.13.13, pytest-9.0.3, pluggy-1.6.0
rootdir: /home/runner/work/agent-template-python/agent-template-python
configfile: pytest.ini
plugins: syrupy-5.3.1, gitconfig-0.9.0, copier-0.4.1, dir-equal-0.2.1
collected 32 items

tests/test_audit.py ..                                                   [  6%]
tests/test_github_actions_integration.py xF                              [ 12%]
tests/test_helpers.py ................                                   [ 62%]
tests/test_parent_ci.py .                                                [ 65%]
tests/test_template.py ...........                                       [100%]

=================================== FAILURES ===================================
_ test_generated_workflow_runs_with_shared_coverage_action[ActRust-act_rust-True-rust-artifacts] _

act_ready = None
copier = CopierFixture(template=PosixPath('/tmp/pytest-of-runner/pytest-0/src'), defaults={}, monkeypatch=<_pytest.monkeypatch.MonkeyPatch object at 0x7fa1cde30380>)
tmp_path = PosixPath('/tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1')
name = 'ActRust', package = 'act_rust', use_rust = True
artifact_dir = 'rust-artifacts'

    @pytest.mark.parametrize(
        ("name", "package", "use_rust", "artifact_dir"),
        [
            ("ActPure", "act_pure", False, "pure-artifacts"),
            ("ActRust", "act_rust", True, "rust-artifacts"),
        ],
    )
    @pytest.mark.act
    def test_generated_workflow_runs_with_shared_coverage_action(
        act_ready: None,
        copier: CopierFixture,
        tmp_path: Path,
        name: str,
        package: str,
        use_rust: bool,
        artifact_dir: str,
    ) -> None:
        """Validate a generated CI workflow through act.
    
        Parameters
        ----------
        act_ready
            Fixture that skips the test unless act validation is explicitly enabled
            and a compatible runtime is reachable.
        copier
            ``pytest-copier`` fixture used to render the template.
        tmp_path
            Temporary directory for the rendered project and act artifacts.
        name
            Project name passed to the Copier template.
        package
            Package name passed to the Copier template.
        use_rust
            Whether to render the Rust-extension variant.
        artifact_dir
            Directory name, under ``tmp_path``, used for act artifacts.
    
        Returns
        -------
        None
            The test passes after the workflow runs and the expected generated
            workflow contract is observed.
    
        Raises
        ------
        AssertionError
            Raised when generated workflow content or act observations are missing.
    
        Examples
        --------
        Run this parametrized test with local act validation enabled::
    
            RUN_ACT_VALIDATION=1 python -m pytest -m act -v
        """
        project = copier.copy(
            tmp_path / package,
            project_name=name,
            package_name=package,
            use_rust=use_rust,
        )
        prepare_git_repository(project)
    
        code, logs = run_act(project, artifact_dir=tmp_path / artifact_dir)
    
        workflow = (project / ".github" / "workflows" / "ci.yml").read_text(
            encoding="utf-8"
        )
        assert "leynos/shared-actions/.github/actions/generate-coverage" in workflow, (
            "Generated workflow should use the shared generate-coverage action"
        )
        if use_rust:
            assert "cargo-manifest: rust_extension/Cargo.toml" in workflow, (
                "Rust workflow should pass the Rust extension manifest to coverage"
            )
>       assert_act_result(project, code, logs, use_rust=use_rust)

tests/test_github_actions_integration.py:385: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_github_actions_integration.py:296: in assert_act_result
    assert_ci_exercised_expected_steps(logs, use_rust=use_rust)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

logs = '{"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Set up job","step":"...nfo","msg":"Start server on http://10.1.0.205:34567","time":"2026-06-05T20:41:32Z"}\nError: Job \'lint-test\' failed\n'

    def assert_ci_exercised_expected_steps(logs: str, *, use_rust: bool) -> None:
        """Assert that act logs include the expected test and coverage steps.
    
        Parameters
        ----------
        logs
            Combined act output from ``run_act``.
        use_rust
            Whether the rendered project should include Rust-extension workflow
            steps.
    
        Returns
        -------
        None
            The helper returns after all expected workflow observations are present.
    
        Raises
        ------
        AssertionError
            Raised when coverage, Python tests, or required Rust checks are missing
            from the act logs.
    
        Examples
        --------
        Verify the observed steps after an act run::
    
            assert_ci_exercised_expected_steps(logs, use_rust=True)
        """
        saw_coverage = False
        saw_python = False
        saw_rust = not use_rust
        for event in iter_json_log_events(logs):
            output = str(event_text(event, "Output", "output", "message", "msg"))
            step = str(event_text(event, "name", "step_name", "Step", "step"))
            in_coverage_step = GENERATE_COVERAGE_STEP in step
            saw_coverage = saw_coverage or (
                in_coverage_step
                and ("coverage.xml" in output or "Current coverage" in output)
            )
            saw_python = saw_python or (
                in_coverage_step and ("run_python.py" in output or "pytest -v" in output)
            )
            saw_rust = saw_rust or (
                in_coverage_step
                and (
                    "run_rust.py" in output
                    or "cargo nextest" in output
                    or "cargo llvm-cov" in output
                )
            )
    
>       assert saw_coverage, f"coverage action step was not observed:\n{logs}"
E       AssertionError: coverage action step was not observed:
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Set up job","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"🚀  Start image=catthehacker/ubuntu:act-latest","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker pull image=catthehacker/ubuntu:act-latest platform= username= forcePull=true","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"using DockerAuthConfig authentication for docker pull","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker create image=catthehacker/ubuntu:act-latest platform= entrypoint=[\"tail\" \"-f\" \"/dev/null\"] cmd=[] network=\"host\"","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:38Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker run image=catthehacker/ubuntu:act-latest platform= entrypoint=[\"tail\" \"-f\" \"/dev/null\"] cmd=[] network=\"host\"","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:39Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[node --no-warnings -e console.log(process.execPath)] user= workdir=","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:39Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Set up job","step":"Set up job","stepResult":"success","stepid":["--setup-job"],"time":"2026-06-05T20:41:39Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/setup-python' # ref=a26af69be951a213d495a4c3e4e4022e16d87065","stage":"Pre","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:41:39Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86","stage":"Pre","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:41:39Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/leynos/shared-actions' # ref=455d9ed03477c0026da96c2541ca26569a74acac","stage":"Pre","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:41:40Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Set up Rust","stage":"Pre","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:41:41Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:41:41Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (explicit toolchain)","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:41:41Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","0","8"],"time":"2026-06-05T20:41:41Z"}
E         {"dryrun":false,"executionTime":13218038115,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (explicit toolchain) [13.218038115s]","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"stepResult":"success","time":"2026-06-05T20:41:54Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"time":"2026-06-05T20:41:54Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (rust-toolchain file)","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"time":"2026-06-05T20:41:55Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","1","8"],"time":"2026-06-05T20:41:55Z"}
E         {"dryrun":false,"executionTime":496646995,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (rust-toolchain file) [496.646995ms]","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"stepResult":"success","time":"2026-06-05T20:41:55Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"time":"2026-06-05T20:41:55Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (stable default)","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"time":"2026-06-05T20:41:55Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","2","8"],"time":"2026-06-05T20:41:55Z"}
E         {"dryrun":false,"executionTime":503648665,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (stable default) [503.648665ms]","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"stepResult":"success","time":"2026-06-05T20:41:56Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=08807647e7069bb48b6ef5acd8ec9567f424441b","stage":"Pre","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:41:56Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=0057852bfaa89a56745cba8c7296529d2fc39830","stage":"Pre","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:41:56Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mozilla-actions/sccache-action' # ref=7d986dd989559c6ecdb630a3fd2557667be217ad","stage":"Pre","step":"Set up Rust","stepID":["3","7"],"time":"2026-06-05T20:42:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mozilla-actions/sccache-action' # ref=7d986dd989559c6ecdb630a3fd2557667be217ad","stage":"Pre","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:42:33Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/msys2/setup-msys2' # ref=4f806de0a5a7294ffabaff804b38a9b435a73bda","stage":"Pre","step":"Set up Rust","stepID":["3","11"],"time":"2026-06-05T20:42:33Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mbround18/setup-osxcross' # ref=b26146d499c54979ed3d023266865dc188881911","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"time":"2026-06-05T20:42:36Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Setup osxcross (macOS SDK + linker)","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"time":"2026-06-05T20:42:36Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v3","stage":"Pre","step":"Set up Rust","stepID":["3","12","cache"],"time":"2026-06-05T20:42:36Z"}
E         {"dryrun":false,"executionTime":35356412267,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Setup osxcross (macOS SDK + linker) [35.356412267s]","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"stepResult":"success","time":"2026-06-05T20:43:12Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=0057852bfaa89a56745cba8c7296529d2fc39830","stage":"Pre","step":"Set up Rust","stepID":["3","openbsd-stdlib-cache"],"time":"2026-06-05T20:43:12Z"}
E         {"dryrun":false,"executionTime":91382086159,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Set up Rust [1m31.382086159s]","stage":"Pre","step":"Set up Rust","stepID":["3"],"stepResult":"success","time":"2026-06-05T20:43:12Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=f13886b937689c021905a6b90929199931d60db1","stage":"Pre","step":"Cache Rust lint and test tools","stepID":["4"],"time":"2026-06-05T20:43:12Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/leynos/shared-actions' # ref=455d9ed03477c0026da96c2541ca26569a74acac","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"time":"2026-06-05T20:43:26Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Test and Measure Coverage","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"time":"2026-06-05T20:43:26Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=08807647e7069bb48b6ef5acd8ec9567f424441b","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","0"],"time":"2026-06-05T20:43:26Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","restore-baselines"],"time":"2026-06-05T20:43:27Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","4"],"time":"2026-06-05T20:43:28Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","9"],"time":"2026-06-05T20:43:29Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","13"],"time":"2026-06-05T20:43:29Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/upload-artifact' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","15"],"time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"executionTime":3657868546,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Test and Measure Coverage [3.657868546s]","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"stepResult":"success","time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Check out repository","stage":"Main","step":"Check out repository","stepID":["0"],"time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"executionTime":144327,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Check out repository [144.327µs]","stage":"Main","step":"Check out repository","stepID":["0"],"stepResult":"success","time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Set up Python","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/ dst=/var/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/dist/setup/index.js] user= workdir=","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"arg":"Installed versions","command":"group","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::group::Installed versions\n","raw":"::group::Installed versions\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(node:31) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(Use `node --trace-deprecation ...` to show where the warning was created)\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Successfully set up CPython (3.13.13)\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"arg":"","command":"endgroup","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::endgroup::\n","raw":"::endgroup::\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
Error: Unable to process command 'E         {"arg":"/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json","raw":"##[add-matcher]/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}' successfully.
Error: Could not find a part of the path '/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}'.
E         {"dryrun":false,"executionTime":356980171,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Set up Python [356.980171ms]","stage":"Main","step":"Set up Python","stepID":["1"],"stepResult":"success","time":"2026-06-05T20:43:30Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: pythonLocation=/opt/hostedtoolcache/Python/3.13.13/x64","name":"pythonLocation","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/lib/pkgconfig","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: PKG_CONFIG_PATH=/opt/hostedtoolcache/Python/3.13.13/x64/lib/pkgconfig","name":"PKG_CONFIG_PATH","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python2_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python2_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python3_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python3_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/lib","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: LD_LIBRARY_PATH=/opt/hostedtoolcache/Python/3.13.13/x64/lib","name":"LD_LIBRARY_PATH","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"arg":"3.13.13","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: python-version=3.13.13","name":"python-version","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/bin/python","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: python-path=/opt/hostedtoolcache/Python/3.13.13/x64/bin/python","name":"python-path","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/Python/3.13.13/x64","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/Python/3.13.13/x64/bin","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install uv","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/ dst=/var/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:30Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/dist/setup/index.js] user= workdir=","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(node:44) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(Use `node --trace-deprecation ...` to show where the warning was created)\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Found uv in tool-cache for 0.11.19\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /root/.local/bin to the path\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /opt/hostedtoolcache/uv/0.11.19/x86_64 to the path\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
Error: Unable to process command 'E         {"arg":"/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json","raw":"##[add-matcher]/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json\n","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}' successfully.
Error: Could not find a part of the path '/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json\n","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}'.
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Set UV_CACHE_DIR to /tmp/setup-uv-cache\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Successfully installed uv version 0.11.19\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"executionTime":656965943,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install uv [656.965943ms]","stage":"Main","step":"Install uv","stepID":["2"],"stepResult":"success","time":"2026-06-05T20:43:31Z"}
E         {"arg":"/tmp/setup-uv-cache","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: UV_CACHE_DIR=/tmp/setup-uv-cache","name":"UV_CACHE_DIR","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","name":"uv-path","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uvx-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","name":"uvx-path","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":"0.11.19","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-version=0.11.19","name":"uv-version","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":"/root/.local/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.local/bin","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/uv/0.11.19/x86_64","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Set up Rust","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/ dst=/var/run/act/actions/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install rust (explicit toolchain)","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/ dst=/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main : construct rustup command line\necho \"targets=$(for t in ${targets//,/ }; do echo -n ' --target' $t; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"components=$(for c in ${components//,/ }; do echo -n ' --component' $c; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"downgrade=\" \u003e\u003e $GITHUB_OUTPUT\n","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-flags.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"executionTime":44337546,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main : construct rustup command line\necho \"targets=$(for t in ${targets//,/ }; do echo -n ' --target' $t; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"components=$(for c in ${components//,/ }; do echo -n ' --component' $c; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"downgrade=\" \u003e\u003e $GITHUB_OUTPUT\n [44.337546ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"stepResult":"success","time":"2026-06-05T20:43:31Z"}
E         {"arg":"","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: downgrade=","name":"downgrade","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":"","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: targets=","name":"targets","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":" --component rustfmt --component clippy --component llvm-tools-preview","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: components= --component rustfmt --component clippy --component llvm-tools-preview","name":"components","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Setting Environment Variables","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-2.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"executionTime":49821306,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Setting Environment Variables [49.821306ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"stepResult":"success","time":"2026-06-05T20:43:31Z"}
E         {"arg":"0","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_INCREMENTAL=0","name":"CARGO_INCREMENTAL","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":"0","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_PROFILE_DEV_DEBUG=0","name":"CARGO_PROFILE_DEV_DEBUG","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":"short","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: RUST_BACKTRACE=short","name":"RUST_BACKTRACE","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":"-D warnings","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: RUSTFLAGS=-D warnings","name":"RUSTFLAGS","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":"true","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_UNSTABLE_SPARSE_REGISTRY=true","name":"CARGO_UNSTABLE_SPARSE_REGISTRY","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
E         {"arg":"sparse","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse","name":"CARGO_REGISTRIES_CRATES_IO_PROTOCOL","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install Rust Problem Matcher","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-3.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T20:43:32Z"}
E         {"arg":"/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json","raw":"::add-matcher::/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json\n","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"executionTime":46432084,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install Rust Problem Matcher [46.432084ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"stepResult":"success","time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install rustup, if needed","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-4.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: downloading installer\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: It looks like you have an existing rustup settings file at:\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: /root/.rustup/settings.toml\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: Rustup will install the default toolchain as specified in the settings file,\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: instead of the one inferred from the default host triple.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: profile set to default\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: default host triple is x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: skipping toolchain installation\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Rust is installed now. Great!\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"To get started you may need to restart your current shell.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"This would reload your PATH environment variable to include\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Cargo's bin directory ($HOME/.cargo/bin).\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"To configure your current shell, you need to source\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"the corresponding env file under $HOME/.cargo.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"This is usually done by running one of the following (note the leading DOT):\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":". \"$HOME/.cargo/env\"            # For sh/bash/zsh/ash/dash/pdksh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.fish\"  # For fish\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"~/.cargo/env.nu\"  # For nushell\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.tcsh\"  # For tcsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":". \"$HOME/.cargo/env.ps1\"        # For pwsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.xsh\"   # For xonsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"executionTime":471843365,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install rustup, if needed [471.843365ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"stepResult":"success","time":"2026-06-05T20:43:32Z"}
E         {"arg":"/root/.cargo/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.cargo/bin","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main rustup toolchain install stable","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-5.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: syncing channel updates for stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: latest update on 2026-05-28 for version 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: downloading 6 components\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:32Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:42Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  stable-x86_64-unknown-linux-gnu installed - rustc 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:42Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:42Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: default toolchain set to stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:42Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: override toolchain for /tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust set to stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:42Z"}
E         {"dryrun":false,"executionTime":10380219087,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main rustup toolchain install stable [10.380219087s]","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"stepResult":"success","time":"2026-06-05T20:43:42Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Print installed versions","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:42Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-versions.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:42Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"rustc 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"binary: rustc\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-hash: ac68faa20c58cbccd01ee7208bf3b6e93a7d7f96\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-date: 2026-05-25\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"host: x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"release: 1.96.0\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"LLVM version: 22.1.2\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo 1.96.0 (30a34c682 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"release: 1.96.0\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-hash: 30a34c6821b57de0aaec83a901aca39f88f6778c\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-date: 2026-05-25\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"host: x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"libgit2: 1.9.2 (sys:0.20.4 vendored)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"libcurl: 8.19.0-DEV (sys:0.4.87+curl-8.19.0 vendored ssl:OpenSSL/3.5.4)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"ssl: OpenSSL 3.5.4 30 Sep 2025\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"os: Ubuntu 24.4.0 (noble) [64-bit]\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: This is the version for the rustup toolchain manager, not the rustc compiler.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: the currently active `rustc` version is `rustc 1.96.0 (ac68faa20 2026-05-25)`\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"rustup 1.29.0 (28d1352db 2026-03-05)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: This is the version for the rustup toolchain manager, not the rustc compiler.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: the currently active `rustc` version is `rustc 1.96.0 (ac68faa20 2026-05-25)`\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"executionTime":227912608,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Print installed versions [227.912608ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"stepResult":"success","time":"2026-06-05T20:43:43Z"}
E         {"arg":"20260525ac68","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cachekey=20260525ac68","name":"cachekey","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"arg":"rustc 1.96.0 (ac68faa20 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustc-version=rustc 1.96.0 (ac68faa20 2026-05-25)","name":"rustc-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"arg":"cargo 1.96.0 (30a34c682 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cargo-version=cargo 1.96.0 (30a34c682 2026-05-25)","name":"cargo-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"arg":"rustup 1.29.0 (28d1352db 2026-03-05)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustup-version=rustup 1.29.0 (28d1352db 2026-03-05)","name":"rustup-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Downgrade registry access protocol when needed","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-7.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"executionTime":51193460,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Downgrade registry access protocol when needed [51.19346ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"stepResult":"success","time":"2026-06-05T20:43:43Z"}
E         {"arg":"rustc 1.96.0 (ac68faa20 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustc-version=rustc 1.96.0 (ac68faa20 2026-05-25)","name":"rustc-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:43Z"}
E         {"arg":"cargo 1.96.0 (30a34c682 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cargo-version=cargo 1.96.0 (30a34c682 2026-05-25)","name":"cargo-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:43Z"}
E         {"arg":"rustup 1.29.0 (28d1352db 2026-03-05)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustup-version=rustup 1.29.0 (28d1352db 2026-03-05)","name":"rustup-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:43Z"}
E         {"arg":"20260525ac68","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cachekey=20260525ac68","name":"cachekey","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"executionTime":11495317825,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install rust (explicit toolchain) [11.495317825s]","stage":"Main","step":"Set up Rust","stepID":["3","0"],"stepResult":"success","time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install cargo-binstall","stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-3.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ set -o pipefail\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ set -o pipefail\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ case \"${BINSTALL_VERSION:-}\" in\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"++ mktemp -d\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ cd /tmp/tmp.yEjc3iHPph\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' -z v1.16.6 ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ base_url=https://github.com/cargo-bins/cargo-binstall/releases/download/v1.16.6/cargo-binstall-\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"++ uname -s\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ os=Linux\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' Linux = Darwin ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' Linux = Linux ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"++ uname -m\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ machine=x86_64\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' x86_64 = armv7l ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ target=x86_64-unknown-linux-musl\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' x86_64 = armv7 ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ url=https://github.com/cargo-bins/cargo-binstall/releases/download/v1.16.6/cargo-binstall-x86_64-unknown-linux-musl.tgz\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ do_curl https://github.com/cargo-bins/cargo-binstall/releases/download/v1.16.6/cargo-binstall-x86_64-unknown-linux-musl.tgz\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ curl --retry 10 -A 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0' -L --proto =https --tlsv1.2 -sSf https://github.com/cargo-bins/cargo-binstall/releases/download/v1.16.6/cargo-binstall-x86_64-unknown-linux-musl.tgz\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ tar -xvzf -\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo-binstall\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ ./cargo-binstall --self-install\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ CARGO_HOME=/root/.cargo\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ case \":$PATH:\" in\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' -n '' ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo-binstall: resolved cargo_home_bin=/root/.cargo/bin\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo-binstall: appended /root/.cargo/bin to GITHUB_PATH\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo-binstall: /root/.cargo/bin already on PATH; skipping prepend\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo-binstall 1.16.6 verified\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"executionTime":433158220,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install cargo-binstall [433.15822ms]","stage":"Main","step":"Set up Rust","stepID":["3","3"],"stepResult":"success","time":"2026-06-05T20:43:43Z"}
E         {"arg":"/root/.cargo/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.cargo/bin","stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install uv","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/ dst=/var/run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:43Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/dist/setup/index.cjs] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"UV_CACHE_DIR is already set to /tmp/setup-uv-cache\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Trying to find version for uv in: /tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust/uv.toml\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Could not find file: /tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust/uv.toml\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Trying to find version for uv in: /tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust/pyproject.toml\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Could not determine uv version from uv.toml or pyproject.toml. Falling back to latest.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Fetching manifest data from https://raw.githubusercontent.com/astral-sh/versions/main/v1/uv.ndjson ...\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Found uv in tool-cache for 0.11.19\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /root/.local/bin to the path\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /opt/hostedtoolcache/uv/0.11.19/x86_64 to the path\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Set UV_PYTHON_INSTALL_DIR to /root/.local/share/uv/python\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /root/.local/share/uv/python to the path\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
Error: Unable to process command 'E         {"arg":"/run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/.github/python.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/.github/python.json","raw":"##[add-matcher]/run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/.github/python.json\n","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}' successfully.
Error: Could not find a part of the path '/run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/.github/python.json\n","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}'.
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Set UV_CACHE_DIR to /tmp/setup-uv-cache\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Successfully installed uv version 0.11.19\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"executionTime":594408634,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install uv [594.408634ms]","stage":"Main","step":"Set up Rust","stepID":["3","4"],"stepResult":"success","time":"2026-06-05T20:43:44Z"}
E         {"arg":"/root/.local/share/uv/python","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: UV_PYTHON_INSTALL_DIR=/root/.local/share/uv/python","name":"UV_PYTHON_INSTALL_DIR","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"arg":"/tmp/setup-uv-cache","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: UV_CACHE_DIR=/tmp/setup-uv-cache","name":"UV_CACHE_DIR","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","name":"uv-path","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uvx-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","name":"uvx-path","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"arg":"0.11.19","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-version=0.11.19","name":"uv-version","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"arg":"3.13.13","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: python-version=3.13.13","name":"python-version","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"arg":"/root/.local/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.local/bin","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/uv/0.11.19/x86_64","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"arg":"/root/.local/share/uv/python","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.local/share/uv/python","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/workflow/hashfiles/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Cache cargo registry","stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-cache@0057852bfaa89a56745cba8c7296529d2fc39830/ dst=/var/run/act/actions/actions-cache@0057852bfaa89a56745cba8c7296529d2fc39830/","stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/actions-cache@0057852bfaa89a56745cba8c7296529d2fc39830/dist/restore/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(node:349) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(Use `node --trace-deprecation ...` to show where the warning was created)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Cache not found for input keys: Linux-cargo-debug-, Linux-cargo-debug-\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"executionTime":421944494,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Cache cargo registry [421.944494ms]","stage":"Main","step":"Set up Rust","stepID":["3","6"],"stepResult":"success","time":"2026-06-05T20:43:44Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Run sccache","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/mozilla-actions-sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad/ dst=/var/run/act/actions/mozilla-actions-sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad/","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/mozilla-actions-sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad/dist/setup/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
E         {"arg":"Error: Input required and not supplied: token","command":"error","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"error","matrix":{},"msg":"  ❗  ::error::Error: Input required and not supplied: token\n","raw":"::error::Error: Input required and not supplied: token\n","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
E         {"arg":"Input required and not supplied: token","command":"error","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"error","matrix":{},"msg":"  ❗  ::error::Input required and not supplied: token\n","raw":"::error::Input required and not supplied: token\n","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"executionTime":162997990,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ❌  Failure - Main Run sccache [162.99799ms]","stage":"Main","step":"Set up Rust","stepID":["3","8"],"stepResult":"failure","time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"exitcode '1': failure","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/workflow/hashfiles/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","openbsd-stdlib-cache"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"executionTime":13689957367,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ❌  Failure - Main Set up Rust [13.689957367s]","stage":"Main","step":"Set up Rust","stepID":["3"],"stepResult":"failure","time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"exitcode '1': failure","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Post Set up Rust","stage":"Post","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/ dst=/var/run/act/actions/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/","stage":"Post","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Post Run sccache","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/mozilla-actions-sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad/dist/show_stats/index.js] user= workdir=","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
E         {"arg":"Get human-readable stats","command":"group","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::group::Get human-readable stats\n","raw":"::group::Get human-readable stats\n","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
E         {"arg":"","command":"endgroup","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::endgroup::\n","raw":"::endgroup::\n","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
E         {"arg":"Error: Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.","command":"error","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"error","matrix":{},"msg":"  ❗  ::error::Error: Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.\n","raw":"::error::Error: Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.\n","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
E         {"arg":"Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.","command":"error","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"error","matrix":{},"msg":"  ❗  ::error::Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.\n","raw":"::error::Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.\n","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"executionTime":93181308,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ❌  Failure - Post Run sccache [93.181308ms]","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"stepResult":"failure","time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/workflow/hashfiles/index.js] user= workdir=","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Post Install rust (explicit toolchain)","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/ dst=/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"executionTime":19449581,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Post Install rust (explicit toolchain) [19.449581ms]","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"stepResult":"success","time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"exitcode '1': failure","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"executionTime":372840068,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Post Set up Rust [372.840068ms]","stage":"Post","step":"Set up Rust","stepID":["3"],"stepResult":"success","time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Complete job","step":"Complete job","stepid":["--complete-job"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Complete job","step":"Complete job","stepResult":"success","stepid":["--complete-job"],"time":"2026-06-05T20:43:45Z"}
E         {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","jobResult":"failure","level":"info","matrix":{},"msg":"🏁  Job failed","time":"2026-06-05T20:43:45Z"}
E         
E         {"level":"info","msg":"Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock'","time":"2026-06-05T20:41:32Z"}
E         {"level":"info","msg":"Start server on http://10.1.0.205:34567","time":"2026-06-05T20:41:32Z"}
E         Error: Job 'lint-test' failed
E         
E       assert False

tests/test_github_actions_integration.py:257: AssertionError
----------------------------- Captured stdout call -----------------------------


----------------------------- Captured stderr call -----------------------------

Copying from template version 99.99.99
    create  act_rust
    create  act_rust/pure.py
    create  act_rust/__init__.py
    create  LICENSE
    create  .gitignore
    create  .github
    create  .github/actions
    create  .github/actions/pure-python-wheel
    create  .github/actions/pure-python-wheel/action.yml
    create  .github/actions/build-wheels
    create  .github/actions/build-wheels/action.yml
    create  .github/dependabot.yml
    create  .github/workflows
    create  .github/workflows/act-validation.yml
    create  .github/workflows/build-wheels.yml
    create  .github/workflows/ci.yml
    create  .github/workflows/release.yml
    create  .github/workflows/get-codescene-sha.yml
    create  rust_extension
    create  rust_extension/clippy.toml
    create  rust_extension/Cargo.toml
    create  rust_extension/src
    create  rust_extension/src/lib.rs
    create  docs
    create  docs/developers-guide.md
    create  docs/contents.md
    create  docs/users-guide.md
    create  docs/local-validation-of-github-actions-with-act-and-pytest.md
    create  docs/scripting-standards.md
    create  docs/documentation-style-guide.md
    create  docs/complexity-antipatterns-and-refactoring-strategies.md
 identical  docs
    create  docs/rust-extension.md
    create  tests
    create  tests/test_stub.py
    create  pyproject.toml
    create  .markdownlint-cli2.jsonc
    create  .rules
    create  .rules/python-typing.md
    create  .rules/python-generators.md
    create  .rules/python-context-managers.md
    create  .rules/python-exception-design-raising-handling-and-logging.md
    create  .rules/python-return.md
    create  .rules/python-00.md
    create  .rules/python-pyproject.md
    create  Makefile
    create  README.md
    create  AGENTS.md
--------------------------- snapshot report summary ----------------------------
3 snapshots passed.
=========================== short test summary info ============================
FAILED tests/test_github_actions_integration.py::test_generated_workflow_runs_with_shared_coverage_action[ActRust-act_rust-True-rust-artifacts] - AssertionError: coverage action step was not observed:
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Set up job","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"🚀  Start image=catthehacker/ubuntu:act-latest","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker pull image=catthehacker/ubuntu:act-latest platform= username= forcePull=true","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"using DockerAuthConfig authentication for docker pull","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker create image=catthehacker/ubuntu:act-latest platform= entrypoint=[\"tail\" \"-f\" \"/dev/null\"] cmd=[] network=\"host\"","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:38Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker run image=catthehacker/ubuntu:act-latest platform= entrypoint=[\"tail\" \"-f\" \"/dev/null\"] cmd=[] network=\"host\"","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:39Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[node --no-warnings -e console.log(process.execPath)] user= workdir=","step":"Set up job","stepid":["--setup-job"],"time":"2026-06-05T20:41:39Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Set up job","step":"Set up job","stepResult":"success","stepid":["--setup-job"],"time":"2026-06-05T20:41:39Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/setup-python' # ref=a26af69be951a213d495a4c3e4e4022e16d87065","stage":"Pre","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:41:39Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86","stage":"Pre","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:41:39Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/leynos/shared-actions' # ref=455d9ed03477c0026da96c2541ca26569a74acac","stage":"Pre","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:41:40Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Set up Rust","stage":"Pre","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:41:41Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:41:41Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (explicit toolchain)","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:41:41Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","0","8"],"time":"2026-06-05T20:41:41Z"}
  {"dryrun":false,"executionTime":13218038115,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (explicit toolchain) [13.218038115s]","stage":"Pre","step":"Set up Rust","stepID":["3","0"],"stepResult":"success","time":"2026-06-05T20:41:54Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"time":"2026-06-05T20:41:54Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (rust-toolchain file)","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"time":"2026-06-05T20:41:55Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","1","8"],"time":"2026-06-05T20:41:55Z"}
  {"dryrun":false,"executionTime":496646995,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (rust-toolchain file) [496.646995ms]","stage":"Pre","step":"Set up Rust","stepID":["3","1"],"stepResult":"success","time":"2026-06-05T20:41:55Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions-rust-lang/setup-rust-toolchain' # ref=9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"time":"2026-06-05T20:41:55Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Install rust (stable default)","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"time":"2026-06-05T20:41:55Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=v2","stage":"Pre","step":"Set up Rust","stepID":["3","2","8"],"time":"2026-06-05T20:41:55Z"}
  {"dryrun":false,"executionTime":503648665,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Install rust (stable default) [503.648665ms]","stage":"Pre","step":"Set up Rust","stepID":["3","2"],"stepResult":"success","time":"2026-06-05T20:41:56Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=08807647e7069bb48b6ef5acd8ec9567f424441b","stage":"Pre","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:41:56Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=0057852bfaa89a56745cba8c7296529d2fc39830","stage":"Pre","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:41:56Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mozilla-actions/sccache-action' # ref=7d986dd989559c6ecdb630a3fd2557667be217ad","stage":"Pre","step":"Set up Rust","stepID":["3","7"],"time":"2026-06-05T20:42:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mozilla-actions/sccache-action' # ref=7d986dd989559c6ecdb630a3fd2557667be217ad","stage":"Pre","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:42:33Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/msys2/setup-msys2' # ref=4f806de0a5a7294ffabaff804b38a9b435a73bda","stage":"Pre","step":"Set up Rust","stepID":["3","11"],"time":"2026-06-05T20:42:33Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/mbround18/setup-osxcross' # ref=b26146d499c54979ed3d023266865dc188881911","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"time":"2026-06-05T20:42:36Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Setup osxcross (macOS SDK + linker)","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"time":"2026-06-05T20:42:36Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v3","stage":"Pre","step":"Set up Rust","stepID":["3","12","cache"],"time":"2026-06-05T20:42:36Z"}
  {"dryrun":false,"executionTime":35356412267,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Setup osxcross (macOS SDK + linker) [35.356412267s]","stage":"Pre","step":"Set up Rust","stepID":["3","12"],"stepResult":"success","time":"2026-06-05T20:43:12Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=0057852bfaa89a56745cba8c7296529d2fc39830","stage":"Pre","step":"Set up Rust","stepID":["3","openbsd-stdlib-cache"],"time":"2026-06-05T20:43:12Z"}
  {"dryrun":false,"executionTime":91382086159,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Set up Rust [1m31.382086159s]","stage":"Pre","step":"Set up Rust","stepID":["3"],"stepResult":"success","time":"2026-06-05T20:43:12Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/Swatinem/rust-cache' # ref=f13886b937689c021905a6b90929199931d60db1","stage":"Pre","step":"Cache Rust lint and test tools","stepID":["4"],"time":"2026-06-05T20:43:12Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/leynos/shared-actions' # ref=455d9ed03477c0026da96c2541ca26569a74acac","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"time":"2026-06-05T20:43:26Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Pre Test and Measure Coverage","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"time":"2026-06-05T20:43:26Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/astral-sh/setup-uv' # ref=08807647e7069bb48b6ef5acd8ec9567f424441b","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","0"],"time":"2026-06-05T20:43:26Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","restore-baselines"],"time":"2026-06-05T20:43:27Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","4"],"time":"2026-06-05T20:43:28Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","9"],"time":"2026-06-05T20:43:29Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/cache' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","13"],"time":"2026-06-05T20:43:29Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ☁  git clone 'https://github.com/actions/upload-artifact' # ref=v4","stage":"Pre","step":"Test and Measure Coverage","stepID":["13","15"],"time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"executionTime":3657868546,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Pre Test and Measure Coverage [3.657868546s]","stage":"Pre","step":"Test and Measure Coverage","stepID":["13"],"stepResult":"success","time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Check out repository","stage":"Main","step":"Check out repository","stepID":["0"],"time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"executionTime":144327,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Check out repository [144.327µs]","stage":"Main","step":"Check out repository","stepID":["0"],"stepResult":"success","time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Set up Python","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/ dst=/var/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/dist/setup/index.js] user= workdir=","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"arg":"Installed versions","command":"group","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::group::Installed versions\n","raw":"::group::Installed versions\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(node:31) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(Use `node --trace-deprecation ...` to show where the warning was created)\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Successfully set up CPython (3.13.13)\n","raw_output":true,"stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"arg":"","command":"endgroup","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::endgroup::\n","raw":"::endgroup::\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
Error: Unable to process command '  {"arg":"/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json","raw":"##[add-matcher]/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}' successfully.
Error: Could not find a part of the path '/run/act/actions/actions-setup-python@a26af69be951a213d495a4c3e4e4022e16d87065/.github/python.json\n","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}'.
  {"dryrun":false,"executionTime":356980171,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Set up Python [356.980171ms]","stage":"Main","step":"Set up Python","stepID":["1"],"stepResult":"success","time":"2026-06-05T20:43:30Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: pythonLocation=/opt/hostedtoolcache/Python/3.13.13/x64","name":"pythonLocation","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/lib/pkgconfig","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: PKG_CONFIG_PATH=/opt/hostedtoolcache/Python/3.13.13/x64/lib/pkgconfig","name":"PKG_CONFIG_PATH","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python2_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python2_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: Python3_ROOT_DIR=/opt/hostedtoolcache/Python/3.13.13/x64","name":"Python3_ROOT_DIR","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/lib","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: LD_LIBRARY_PATH=/opt/hostedtoolcache/Python/3.13.13/x64/lib","name":"LD_LIBRARY_PATH","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"arg":"3.13.13","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: python-version=3.13.13","name":"python-version","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/bin/python","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: python-path=/opt/hostedtoolcache/Python/3.13.13/x64/bin/python","name":"python-path","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/Python/3.13.13/x64","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"arg":"/opt/hostedtoolcache/Python/3.13.13/x64/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/Python/3.13.13/x64/bin","stage":"Main","step":"Set up Python","stepID":["1"],"time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install uv","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/ dst=/var/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:30Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/dist/setup/index.js] user= workdir=","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(node:44) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(Use `node --trace-deprecation ...` to show where the warning was created)\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Found uv in tool-cache for 0.11.19\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /root/.local/bin to the path\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /opt/hostedtoolcache/uv/0.11.19/x86_64 to the path\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
Error: Unable to process command '  {"arg":"/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json","raw":"##[add-matcher]/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json\n","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}' successfully.
Error: Could not find a part of the path '/run/act/actions/astral-sh-setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86/.github/python.json\n","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}'.
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Set UV_CACHE_DIR to /tmp/setup-uv-cache\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Successfully installed uv version 0.11.19\n","raw_output":true,"stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"executionTime":656965943,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install uv [656.965943ms]","stage":"Main","step":"Install uv","stepID":["2"],"stepResult":"success","time":"2026-06-05T20:43:31Z"}
  {"arg":"/tmp/setup-uv-cache","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: UV_CACHE_DIR=/tmp/setup-uv-cache","name":"UV_CACHE_DIR","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","name":"uv-path","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uvx-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","name":"uvx-path","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"arg":"0.11.19","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-version=0.11.19","name":"uv-version","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"arg":"/root/.local/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.local/bin","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/uv/0.11.19/x86_64","stage":"Main","step":"Install uv","stepID":["2"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Set up Rust","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/ dst=/var/run/act/actions/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install rust (explicit toolchain)","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/ dst=/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main : construct rustup command line\necho \"targets=$(for t in ${targets//,/ }; do echo -n ' --target' $t; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"components=$(for c in ${components//,/ }; do echo -n ' --component' $c; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"downgrade=\" \u003e\u003e $GITHUB_OUTPUT\n","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-flags.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"executionTime":44337546,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main : construct rustup command line\necho \"targets=$(for t in ${targets//,/ }; do echo -n ' --target' $t; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"components=$(for c in ${components//,/ }; do echo -n ' --component' $c; done)\" \u003e\u003e $GITHUB_OUTPUT\necho \"downgrade=\" \u003e\u003e $GITHUB_OUTPUT\n [44.337546ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"stepResult":"success","time":"2026-06-05T20:43:31Z"}
  {"arg":"","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: downgrade=","name":"downgrade","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T20:43:31Z"}
  {"arg":"","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: targets=","name":"targets","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T20:43:31Z"}
  {"arg":" --component rustfmt --component clippy --component llvm-tools-preview","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: components= --component rustfmt --component clippy --component llvm-tools-preview","name":"components","stage":"Main","step":"Set up Rust","stepID":["3","0","flags"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Setting Environment Variables","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-2.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"executionTime":49821306,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Setting Environment Variables [49.821306ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"stepResult":"success","time":"2026-06-05T20:43:31Z"}
  {"arg":"0","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_INCREMENTAL=0","name":"CARGO_INCREMENTAL","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
  {"arg":"0","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_PROFILE_DEV_DEBUG=0","name":"CARGO_PROFILE_DEV_DEBUG","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
  {"arg":"short","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: RUST_BACKTRACE=short","name":"RUST_BACKTRACE","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
  {"arg":"-D warnings","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: RUSTFLAGS=-D warnings","name":"RUSTFLAGS","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
  {"arg":"true","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_UNSTABLE_SPARSE_REGISTRY=true","name":"CARGO_UNSTABLE_SPARSE_REGISTRY","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
  {"arg":"sparse","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse","name":"CARGO_REGISTRIES_CRATES_IO_PROTOCOL","stage":"Main","step":"Set up Rust","stepID":["3","0","2"],"time":"2026-06-05T20:43:31Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install Rust Problem Matcher","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-3.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T20:43:32Z"}
  {"arg":"/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json","raw":"::add-matcher::/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/rust.json\n","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"executionTime":46432084,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install Rust Problem Matcher [46.432084ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","3"],"stepResult":"success","time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install rustup, if needed","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-4.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: downloading installer\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: It looks like you have an existing rustup settings file at:\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: /root/.rustup/settings.toml\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: Rustup will install the default toolchain as specified in the settings file,\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"warn: instead of the one inferred from the default host triple.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: profile set to default\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: default host triple is x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: skipping toolchain installation\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Rust is installed now. Great!\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"To get started you may need to restart your current shell.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"This would reload your PATH environment variable to include\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Cargo's bin directory ($HOME/.cargo/bin).\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"To configure your current shell, you need to source\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"the corresponding env file under $HOME/.cargo.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"This is usually done by running one of the following (note the leading DOT):\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":". \"$HOME/.cargo/env\"            # For sh/bash/zsh/ash/dash/pdksh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.fish\"  # For fish\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"~/.cargo/env.nu\"  # For nushell\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.tcsh\"  # For tcsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":". \"$HOME/.cargo/env.ps1\"        # For pwsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"source \"$HOME/.cargo/env.xsh\"   # For xonsh\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"executionTime":471843365,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install rustup, if needed [471.843365ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"stepResult":"success","time":"2026-06-05T20:43:32Z"}
  {"arg":"/root/.cargo/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.cargo/bin","stage":"Main","step":"Set up Rust","stepID":["3","0","4"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main rustup toolchain install stable","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-5.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: syncing channel updates for stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: latest update on 2026-05-28 for version 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: downloading 6 components\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:32Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:42Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  stable-x86_64-unknown-linux-gnu installed - rustc 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:42Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:42Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: default toolchain set to stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:42Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: override toolchain for /tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust set to stable-x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"time":"2026-06-05T20:43:42Z"}
  {"dryrun":false,"executionTime":10380219087,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main rustup toolchain install stable [10.380219087s]","stage":"Main","step":"Set up Rust","stepID":["3","0","5"],"stepResult":"success","time":"2026-06-05T20:43:42Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Print installed versions","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:42Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-versions.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:42Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"rustc 1.96.0 (ac68faa20 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"binary: rustc\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-hash: ac68faa20c58cbccd01ee7208bf3b6e93a7d7f96\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-date: 2026-05-25\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"host: x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"release: 1.96.0\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"LLVM version: 22.1.2\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo 1.96.0 (30a34c682 2026-05-25)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"release: 1.96.0\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-hash: 30a34c6821b57de0aaec83a901aca39f88f6778c\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"commit-date: 2026-05-25\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"host: x86_64-unknown-linux-gnu\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"libgit2: 1.9.2 (sys:0.20.4 vendored)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"libcurl: 8.19.0-DEV (sys:0.4.87+curl-8.19.0 vendored ssl:OpenSSL/3.5.4)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"ssl: OpenSSL 3.5.4 30 Sep 2025\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"os: Ubuntu 24.4.0 (noble) [64-bit]\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: This is the version for the rustup toolchain manager, not the rustc compiler.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: the currently active `rustc` version is `rustc 1.96.0 (ac68faa20 2026-05-25)`\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"rustup 1.29.0 (28d1352db 2026-03-05)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: This is the version for the rustup toolchain manager, not the rustc compiler.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"info: the currently active `rustc` version is `rustc 1.96.0 (ac68faa20 2026-05-25)`\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"executionTime":227912608,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Print installed versions [227.912608ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"stepResult":"success","time":"2026-06-05T20:43:43Z"}
  {"arg":"20260525ac68","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cachekey=20260525ac68","name":"cachekey","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"arg":"rustc 1.96.0 (ac68faa20 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustc-version=rustc 1.96.0 (ac68faa20 2026-05-25)","name":"rustc-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"arg":"cargo 1.96.0 (30a34c682 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cargo-version=cargo 1.96.0 (30a34c682 2026-05-25)","name":"cargo-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"arg":"rustup 1.29.0 (28d1352db 2026-03-05)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustup-version=rustup 1.29.0 (28d1352db 2026-03-05)","name":"rustup-version","stage":"Main","step":"Set up Rust","stepID":["3","0","versions"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Downgrade registry access protocol when needed","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-0-composite-7.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"executionTime":51193460,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Downgrade registry access protocol when needed [51.19346ms]","stage":"Main","step":"Set up Rust","stepID":["3","0","7"],"stepResult":"success","time":"2026-06-05T20:43:43Z"}
  {"arg":"rustc 1.96.0 (ac68faa20 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustc-version=rustc 1.96.0 (ac68faa20 2026-05-25)","name":"rustc-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:43Z"}
  {"arg":"cargo 1.96.0 (30a34c682 2026-05-25)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cargo-version=cargo 1.96.0 (30a34c682 2026-05-25)","name":"cargo-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:43Z"}
  {"arg":"rustup 1.29.0 (28d1352db 2026-03-05)","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: rustup-version=rustup 1.29.0 (28d1352db 2026-03-05)","name":"rustup-version","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:43Z"}
  {"arg":"20260525ac68","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: cachekey=20260525ac68","name":"cachekey","stage":"Main","step":"Set up Rust","stepID":["3","0"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"executionTime":11495317825,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install rust (explicit toolchain) [11.495317825s]","stage":"Main","step":"Set up Rust","stepID":["3","0"],"stepResult":"success","time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install cargo-binstall","stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3-composite-3.sh] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ set -o pipefail\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ set -o pipefail\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ case \"${BINSTALL_VERSION:-}\" in\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"++ mktemp -d\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ cd /tmp/tmp.yEjc3iHPph\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' -z v1.16.6 ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ base_url=https://github.com/cargo-bins/cargo-binstall/releases/download/v1.16.6/cargo-binstall-\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"++ uname -s\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ os=Linux\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' Linux = Darwin ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' Linux = Linux ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"++ uname -m\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ machine=x86_64\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' x86_64 = armv7l ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ target=x86_64-unknown-linux-musl\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' x86_64 = armv7 ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ url=https://github.com/cargo-bins/cargo-binstall/releases/download/v1.16.6/cargo-binstall-x86_64-unknown-linux-musl.tgz\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ do_curl https://github.com/cargo-bins/cargo-binstall/releases/download/v1.16.6/cargo-binstall-x86_64-unknown-linux-musl.tgz\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ curl --retry 10 -A 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0' -L --proto =https --tlsv1.2 -sSf https://github.com/cargo-bins/cargo-binstall/releases/download/v1.16.6/cargo-binstall-x86_64-unknown-linux-musl.tgz\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ tar -xvzf -\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo-binstall\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ ./cargo-binstall --self-install\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ CARGO_HOME=/root/.cargo\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ case \":$PATH:\" in\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"+ '[' -n '' ']'\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo-binstall: resolved cargo_home_bin=/root/.cargo/bin\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo-binstall: appended /root/.cargo/bin to GITHUB_PATH\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo-binstall: /root/.cargo/bin already on PATH; skipping prepend\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"cargo-binstall 1.16.6 verified\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"executionTime":433158220,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install cargo-binstall [433.15822ms]","stage":"Main","step":"Set up Rust","stepID":["3","3"],"stepResult":"success","time":"2026-06-05T20:43:43Z"}
  {"arg":"/root/.cargo/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.cargo/bin","stage":"Main","step":"Set up Rust","stepID":["3","3"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Install uv","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/ dst=/var/run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:43Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/dist/setup/index.cjs] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"UV_CACHE_DIR is already set to /tmp/setup-uv-cache\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Trying to find version for uv in: /tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust/uv.toml\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Could not find file: /tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust/uv.toml\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Trying to find version for uv in: /tmp/pytest-of-runner/pytest-0/test_generated_workflow_runs_w1/act_rust/pyproject.toml\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Could not determine uv version from uv.toml or pyproject.toml. Falling back to latest.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Fetching manifest data from https://raw.githubusercontent.com/astral-sh/versions/main/v1/uv.ndjson ...\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Found uv in tool-cache for 0.11.19\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /root/.local/bin to the path\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /opt/hostedtoolcache/uv/0.11.19/x86_64 to the path\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Set UV_PYTHON_INSTALL_DIR to /root/.local/share/uv/python\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Added /root/.local/share/uv/python to the path\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
Error: Unable to process command '  {"arg":"/run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/.github/python.json","command":"add-matcher","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓ add-matcher /run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/.github/python.json","raw":"##[add-matcher]/run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/.github/python.json\n","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}' successfully.
Error: Could not find a part of the path '/run/act/actions/astral-sh-setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b/.github/python.json\n","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}'.
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Set UV_CACHE_DIR to /tmp/setup-uv-cache\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Successfully installed uv version 0.11.19\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"executionTime":594408634,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Install uv [594.408634ms]","stage":"Main","step":"Set up Rust","stepID":["3","4"],"stepResult":"success","time":"2026-06-05T20:43:44Z"}
  {"arg":"/root/.local/share/uv/python","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: UV_PYTHON_INSTALL_DIR=/root/.local/share/uv/python","name":"UV_PYTHON_INSTALL_DIR","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"arg":"/tmp/setup-uv-cache","command":"set-env","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-env:: UV_CACHE_DIR=/tmp/setup-uv-cache","name":"UV_CACHE_DIR","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uv","name":"uv-path","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uvx-path=/opt/hostedtoolcache/uv/0.11.19/x86_64/uvx","name":"uvx-path","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"arg":"0.11.19","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: uv-version=0.11.19","name":"uv-version","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"arg":"3.13.13","command":"set-output","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::set-output:: python-version=3.13.13","name":"python-version","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"arg":"/root/.local/bin","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.local/bin","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"arg":"/opt/hostedtoolcache/uv/0.11.19/x86_64","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /opt/hostedtoolcache/uv/0.11.19/x86_64","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"arg":"/root/.local/share/uv/python","command":"add-path","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ⚙  ::add-path:: /root/.local/share/uv/python","stage":"Main","step":"Set up Rust","stepID":["3","4"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/workflow/hashfiles/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Cache cargo registry","stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-cache@0057852bfaa89a56745cba8c7296529d2fc39830/ dst=/var/run/act/actions/actions-cache@0057852bfaa89a56745cba8c7296529d2fc39830/","stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/actions-cache@0057852bfaa89a56745cba8c7296529d2fc39830/dist/restore/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(node:349) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"(Use `node --trace-deprecation ...` to show where the warning was created)\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"Cache not found for input keys: Linux-cargo-debug-, Linux-cargo-debug-\n","raw_output":true,"stage":"Main","step":"Set up Rust","stepID":["3","6"],"time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"executionTime":421944494,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Main Cache cargo registry [421.944494ms]","stage":"Main","step":"Set up Rust","stepID":["3","6"],"stepResult":"success","time":"2026-06-05T20:43:44Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Main Run sccache","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/mozilla-actions-sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad/ dst=/var/run/act/actions/mozilla-actions-sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad/","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/mozilla-actions-sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad/dist/setup/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
  {"arg":"Error: Input required and not supplied: token","command":"error","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"error","matrix":{},"msg":"  ❗  ::error::Error: Input required and not supplied: token\n","raw":"::error::Error: Input required and not supplied: token\n","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
  {"arg":"Input required and not supplied: token","command":"error","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"error","matrix":{},"msg":"  ❗  ::error::Input required and not supplied: token\n","raw":"::error::Input required and not supplied: token\n","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"executionTime":162997990,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ❌  Failure - Main Run sccache [162.99799ms]","stage":"Main","step":"Set up Rust","stepID":["3","8"],"stepResult":"failure","time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"exitcode '1': failure","stage":"Main","step":"Set up Rust","stepID":["3","8"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/workflow/hashfiles/index.js] user= workdir=","stage":"Main","step":"Set up Rust","stepID":["3","openbsd-stdlib-cache"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"executionTime":13689957367,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ❌  Failure - Main Set up Rust [13.689957367s]","stage":"Main","step":"Set up Rust","stepID":["3"],"stepResult":"failure","time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"exitcode '1': failure","stage":"Main","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Post Set up Rust","stage":"Post","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/ dst=/var/run/act/actions/leynos-shared-actions-.github-actions-setup-rust@455d9ed03477c0026da96c2541ca26569a74acac/","stage":"Post","step":"Set up Rust","stepID":["3"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Post Run sccache","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/actions/mozilla-actions-sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad/dist/show_stats/index.js] user= workdir=","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
  {"arg":"Get human-readable stats","command":"group","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::group::Get human-readable stats\n","raw":"::group::Get human-readable stats\n","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
  {"arg":"","command":"endgroup","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"info","matrix":{},"msg":"  ❓  ::endgroup::\n","raw":"::endgroup::\n","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
  {"arg":"Error: Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.","command":"error","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"error","matrix":{},"msg":"  ❗  ::error::Error: Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.\n","raw":"::error::Error: Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.\n","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
  {"arg":"Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.","command":"error","dryrun":false,"job":"CI/lint-test","jobID":"lint-test","kvPairs":{},"level":"error","matrix":{},"msg":"  ❗  ::error::Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.\n","raw":"::error::Unable to locate executable file: undefined. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.\n","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"executionTime":93181308,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ❌  Failure - Post Run sccache [93.181308ms]","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"stepResult":"failure","time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker exec cmd=[/opt/acttoolcache/node/24.16.0/x64/bin/node /var/run/act/workflow/hashfiles/index.js] user= workdir=","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Post Install rust (explicit toolchain)","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  🐳  docker cp src=/home/runner/.cache/act/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/ dst=/var/run/act/actions/actions-rust-lang-setup-rust-toolchain@9d7e65c320fdb52dcd45ffaa68deb6c02c8754d9/","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"executionTime":19449581,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Post Install rust (explicit toolchain) [19.449581ms]","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8","7","6","5","4","3","2","1","0"],"stepResult":"success","time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"error","matrix":{},"msg":"exitcode '1': failure","stage":"Post","step":"Set up Rust","stepID":["3","16","15","openbsd-stdlib-cache","13","12","11","10","9","8"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"executionTime":372840068,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Post Set up Rust [372.840068ms]","stage":"Post","step":"Set up Rust","stepID":["3"],"stepResult":"success","time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"⭐ Run Complete job","step":"Complete job","stepid":["--complete-job"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","level":"info","matrix":{},"msg":"  ✅  Success - Complete job","step":"Complete job","stepResult":"success","stepid":["--complete-job"],"time":"2026-06-05T20:43:45Z"}
  {"dryrun":false,"job":"CI/lint-test","jobID":"lint-test","jobResult":"failure","level":"info","matrix":{},"msg":"🏁  Job failed","time":"2026-06-05T20:43:45Z"}
  
  {"level":"info","msg":"Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock'","time":"2026-06-05T20:41:32Z"}
  {"level":"info","msg":"Start server on http://10.1.0.205:34567","time":"2026-06-05T20:41:32Z"}
  Error: Job 'lint-test' failed
  
assert False
============= 1 failed, 30 passed, 1 xfailed in 533.89s (0:08:53) ==============
make: *** [Makefile:14: test] Error 1
Error: Process completed with exit code 2.

@coderabbitai

This comment was marked as resolved.

Expose ACT_GITHUB_TOKEN only on the parent act-validation test step and forward it to nested act as the GITHUB_TOKEN secret.
Keep ambient GITHUB_TOKEN and GH_TOKEN sanitisation unchanged so stale local credentials are not inherited accidentally.
Add unit coverage for both the no-secret and explicit-secret run_act command paths.
@leynos leynos merged commit 0f62dca into main Jun 6, 2026
5 checks passed
@leynos leynos deleted the act-tests branch June 6, 2026 07:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant