Skip to content

ci: add t31_lite_tp-link-tapo-tc70-v3 - #111

Closed
NHellFire wants to merge 1 commit into
OpenIPC:masterfrom
NHellFire:ci/tapo-tc70
Closed

ci: add t31_lite_tp-link-tapo-tc70-v3#111
NHellFire wants to merge 1 commit into
OpenIPC:masterfrom
NHellFire:ci/tapo-tc70

Conversation

@NHellFire

Copy link
Copy Markdown
Contributor

Realised I'd forgotten to do this.

@openipc-ai

Copy link
Copy Markdown
Contributor

Thanks for this, and sorry it went unanswered. The device you're asking for is the right ask — t31_lite_tp-link-tapo-tc70-v3 has a complete devices/ directory and has never once been built.

The mechanism moved out from under this PR, though. Since #120 the build matrix is no longer a list in master.yml; it is derived from the tree, and the devices that existed but were in no matrix at the time were frozen into a NOT_BUILT opt-out in .github/scripts/ci-matrix.py so that a device falling out of CI would be a test failure rather than a silent skip. The TC70 v3 is one of those seven, which is why this branch now conflicts — the block it appends to is gone.

I've opened #132, which removes it (and the KC110, from #108) from NOT_BUILT. That's this PR's request, expressed the way the selector now wants it. Since a change to ci-matrix.py cannot narrow the matrix, #132 runs the full 109-device build, so the TC70 v3 gets proven in that run.

Leaving this open until #132 lands, then closing it as done rather than rejected.

openipc-ai added a commit that referenced this pull request Aug 27, 2026
Step 6 of "Adding a new device" still says to add `- <device>` to the
matrix in .github/workflows/master.yml, and calls that matrix "the *only*
build registry". Neither has been true since #120 moved the matrix into
.github/scripts/ci-matrix.py, where it is derived from the tree rather
than listed. master.yml now has no device list at all.

This is not a hypothetical staleness. Two of the pull requests open right
now do exactly what step 6 says: #111 (Tapo TC70 v3) and #108 (KC110)
each append a line to a block that no longer exists, so both are merge
conflicts rather than the one-line changes they were written as. Their
authors did the documented thing.

So step 6 is now the opposite instruction -- there is nothing to add, and
adding it is the mistake. It also names NOT_BUILT, since that is the one
list a contributor could reasonably go looking for, and says to leave it
alone.

Two adjacent claims went stale with the same change and are fixed here:
the master.yml bullet described a cron-and-dispatch workflow with no
pull_request trigger, and nothing in the file mentioned ci-matrix.py at
all -- including that --self-test runs in the Select devices job and will
fail a PR that puts the tree and the selector out of step. Step 8 no
longer says "locally" as though that were the only way a device gets
built.
openipc-ai added a commit that referenced this pull request Aug 27, 2026
)

Step 6 of "Adding a new device" still said to add `- <device>` to the matrix in
.github/workflows/master.yml, and called that matrix "the *only* build registry".
Neither has been true since #120 moved the matrix into .github/scripts/ci-matrix.py,
where it is derived from the tree rather than listed. master.yml has no device list
at all.

Not a hypothetical staleness: #111 (Tapo TC70 v3) and #108 (KC110) each append a line
to a block that no longer exists, so both are merge conflicts rather than the one-line
changes they were written as. Their authors did the documented thing.

So step 6 is now the opposite instruction -- there is nothing to add, and adding it is
the mistake. It also names NOT_BUILT, since that is the one list a contributor could
reasonably go looking for, and says to leave it alone.

Two adjacent claims went stale with the same change: the master.yml bullet described a
cron-and-dispatch workflow with no pull_request trigger, and nothing mentioned
ci-matrix.py at all -- including that --self-test runs in the Select devices job and
will fail a PR that puts the tree and the selector out of step.

A second correction, caught by Qodo in review: "opening the PR is what gets the device
built" holds only for a non-draft PR. classify() returns needs_build=False for a draft
and self_test() asserts it; master.yml lists ready_for_review in its triggers precisely
because a PR opened as a draft would otherwise never build once marked ready. Left as
written, a contributor could open a draft, see no build, and read that as the device
being fine. The ci:full label is documented for the same reason -- it is the other
contributor-facing lever over the matrix.
openipc-ai added a commit that referenced this pull request Aug 27, 2026
Both devices have had a complete devices/<dir>/ in this tree for a long time and had
never once been built. #120 froze that state rather than changing it -- it put the 7
defconfigs that were in no master.yml matrix into NOT_BUILT so that a device falling out
of CI would be a test failure instead of a silent skip. Freezing was right for a change
whose job was to not alter what gets built; it was never meant to be permanent for
devices whose only problem is that nobody added the matrix line.

Two contributors did try to add that line. #111 (Tapo TC70 v3, July) and #108 (KC110,
June) both append to the device list in master.yml, which is where the registry lived
when they were written. It does not live there any more -- the matrix is read off the
tree -- so both PRs are merge conflicts now, and the devices they asked for are exactly
the two entries removed here. This is their CI half, landed the way the selector wants
it. #108 also carries a BR2_OPENIPC_MAJESTIC="ultimate" line and a vendor
libsns_ov2735.so for the no-video bug; those are unaffected and stay with that PR.

The two self-test cases that used t31_lite_tp-link-tapo-tc70-v3 as their example of an
unbuilt device move to t31_lite_xiaomi-mjsxj05hl, which is still in NOT_BUILT. The
overlay case also switches to a path that exists, since the device it now names has no
etc/inittab.

Neither device had ever been through a build, so this PR was where we found out. That
was affordable exactly once: a change to ci-matrix.py cannot narrow -- it is what does
the narrowing -- so this ran the full matrix and proved both in the same run. Both are
green:

    Firmware (hi3518ev200_ultimate_tplink-kasa-kc110)   SUCCESS
    Firmware (t31_lite_tp-link-tapo-tc70-v3)            SUCCESS
@openipc-ai

Copy link
Copy Markdown
Contributor

Done — closing this as completed, not rejected. What you asked for is on master.

#132 landed as 9df259c and removed t31_lite_tp-link-tapo-tc70-v3 from the NOT_BUILT opt-out in .github/scripts/ci-matrix.py, which is where device registration moved when #120 replaced the master.yml matrix with one derived from the tree. That is why this branch went stale through no fault of yours: the block you appended to no longer exists, and CLAUDE.md was still telling contributors to edit it (fixed separately in #134).

On master now:

$ echo devices/t31_lite_tp-link-tapo-tc70-v3/br-ext-chip-ingenic/configs/\
t31_lite_tp-link-tapo-tc70-v3_defconfig | python3 .github/scripts/ci-matrix.py --stdin
ci-matrix: 1/110 devices (needs_build=True) --- narrowed to the affected devices
  t31_lite_tp-link-tapo-tc70-v3

It also went through its first-ever build in #132's run and came out green, so the device is genuinely building, not just listed. It is in the nightly from here on, and any future change under devices/t31_lite_tp-link-tapo-tc70-v3/ will build just that device on the PR.

Thanks for flagging it — the device had been sitting in the tree unbuilt for months and this is what got it noticed.

@openipc-ai openipc-ai closed this Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants