<feed xmlns='http://www.w3.org/2005/Atom'>
<title>threadx.git/.github/workflows/regression_test.yml, branch v6.4.1_cert</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/threadx.git/atom/.github/workflows/regression_test.yml?h=v6.4.1_cert</id>
<link rel='self' href='http://cgit.235523.xyz/threadx.git/atom/.github/workflows/regression_test.yml?h=v6.4.1_cert'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/'/>
<updated>2026-09-14T23:29:00Z</updated>
<entry>
<title>Granted the reusable workflow calls the permissions their jobs request</title>
<updated>2026-09-14T23:29:00Z</updated>
<author>
<name>Frédéric Desbiens</name>
<email>frederic.desbiens@eclipse-foundation.org</email>
</author>
<published>2026-09-14T23:29:00Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=63f6ea77bfe34877315f611b48a02deb625ee0da'/>
<id>urn:sha1:63f6ea77bfe34877315f611b48a02deb625ee0da</id>
<content type='text'>
Every run on this branch ended in startup_failure with no jobs scheduled, no
log and no annotation. Dispatching v6.4.1_rel's own unmodified workflow fails
identically, so this predates the certification branch.

A reusable workflow cannot hold more permission than the job that calls it.
regression_template.yml's own jobs ask for checks: write and pull-requests:
write, and its deploy job asks for pages: write and id-token: write, but the
calling jobs here declared nothing at all and so got the repository default.
Once that default became read-only the calls began to be rejected while the run
graph was being built, which is why the failure arrives before any job exists to
carry the error.

Each calling job now spells out the same set, which is what master's successor
branches already do.

Assisted-by: Claude Code (Opus 5) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Pinned the certification build environment and enabled CI on the certification branch</title>
<updated>2026-09-14T22:06:27Z</updated>
<author>
<name>Frédéric Desbiens</name>
<email>frederic.desbiens@eclipse-foundation.org</email>
</author>
<published>2026-09-14T22:06:27Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=f38bc2151e1c30390f19d36613537bc5ce4ddec7'/>
<id>urn:sha1:f38bc2151e1c30390f19d36613537bc5ce4ddec7</id>
<content type='text'>
The regression workflows ran on ubuntu-latest with nothing pinned, and the
coverage numbers they produce are certification evidence. Two things follow from
that, and the first is urgent rather than theoretical.

These sources declare cmake_minimum_required(VERSION 3.0.0) and CMake removed
compatibility below 3.5 in 4.0, so this branch stops configuring the day the
hosted image moves to CMake 4.x -- no change here, no warning. Worse, the branch
did not need GitHub's help to get there: scripts/install.sh ran

  pip install --upgrade cmake

which installs exactly the CMake version that cannot configure these sources. It
also installed gcovr 4.1, which is far too old for the tracefile and threshold
options the coverage scripts use, and called sudo, which does not exist in a
container.

The job now runs inside debian:trixie, which carries GCC 14, gcc-multilib and
CMake 3.31.6. Being below 4.x, that configures the sources with no policy
override and no edit to CMakeLists.txt. The coverage build is 32-bit, so multilib
is not optional. install.sh installs the distribution toolchain plus gcovr 8.6,
prints all three versions into the job log, and then asserts them: GCC major 14,
CMake major below 4, gcovr exactly 8.6. The image tag is a moving target that
point releases rebuild, and a toolchain that drifts should fail by name and
number rather than quietly produce evidence built with something else.

git is installed before the checkout, because actions/checkout otherwise falls
back to a REST API tarball and leaves no .git behind, and the commit the evidence
was built from is part of the evidence. The Pages preparation step no longer
calls sudo, since the steps run as root in the container.

Nothing gated on the coverage number before: it was published, not enforced.
coverage.sh --merge now ends with a gcovr pass carrying --fail-under-line and
--fail-under-branch, after the reports are written so a failed gate still leaves
the report that explains it.

  ThreadX   99.50% line   80.00% branch
  SMP       99.40% line   83.00% branch

These are a ratchet, raised as each batch of gaps closes, and deliberately not
100%: a gate nothing can pass gets switched off. They sit below the measured
figures rather than at them, because the same tree does not measure identically
twice -- branches on the resume-from-ISR path are reached or missed depending on
how the host schedules the run, and two clean runs of the ThreadX suite differ by
2 lines and 19 branches. A gate set at the best observation fails on a tree
nobody changed.

Verified by raising each threshold above the measurement: line returns 2, branch
returns 4, the merged report is still written, and run.sh reports the failure
rather than swallowing it -- a run with all 95 tests passing exits 2 when the
line gate is not met.

regression_test.yml now triggers on the certification branch as well as master.
regression_template.yml needed no filter; it is workflow_call only.

Publishing stays on master. The deploy job replaces the project's public coverage
site wholesale and its condition fires on any push, so without a guard the first
push of this branch would have published its numbers as the project's. The
certification branch produces its evidence as workflow artifacts instead.

Assisted-by: Claude Code (Opus 5) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Split artifacts for multiple jobs (#324)</title>
<updated>2023-11-24T05:59:26Z</updated>
<author>
<name>TiejunZhou</name>
<email>50469179+TiejunMS@users.noreply.github.com</email>
</author>
<published>2023-11-24T05:59:26Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=5f9c713c4805b2fb412889be213fee676f328809'/>
<id>urn:sha1:5f9c713c4805b2fb412889be213fee676f328809</id>
<content type='text'>
* Test multiple code coverage pages

* Add affix to artifacts

* Test uploading code coverage as artifact

* Deploy GitHub pages at last for multiple jobs

* Test using unified upload pages

* Disable test cases to accelerate experiment

* Fix escape character $

* Revert "Test using unified upload pages"

This reverts commit 3668d9f67253651c8cea38e9aba639dff081168d.

* Set destination for downloaded artifact

* Use a different artifact name

* Fix escape value

* Revert "Disable test cases to accelerate experiment"

This reverts commit 8468f17d0298a483692ab613524bc6ab5443a67a.

* Override duplicated github-pages in artifact

* Revert "Override duplicated github-pages in artifact"

This reverts commit 17a83aa97df4233417e20d31d36aa61e976dbebf.

* Delete Duplicate Code Coverage Artifact</content>
</entry>
<entry>
<title>Convert ADO pipelines to GitHub actions (#321)</title>
<updated>2023-11-23T05:17:52Z</updated>
<author>
<name>TiejunZhou</name>
<email>50469179+TiejunMS@users.noreply.github.com</email>
</author>
<published>2023-11-23T05:17:52Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=11a7db22b4626a4afd183891b2a8f4fa60a137b4'/>
<id>urn:sha1:11a7db22b4626a4afd183891b2a8f4fa60a137b4</id>
<content type='text'>
* Convert ADO pipelines to GitHub actions

* Remove version in uses as not valid for local workflows

* Fix cmake path and add deploy url affix

* Add SMP build job

* Fix code coverage URL

* Add affix to titles of steps

* Remove ADO pipelines

* Add affix to titles of code coverage

* separate PR results for multiple jobs

* Revert "separate PR results for multiple jobs"

This reverts commit 6da13540fd460b6571c6bfe0196abe52e4b1cccf.

* separate PR results for multiple jobs</content>
</entry>
</feed>
