diff --git a/machine-docs/JOURNAL-5.md b/machine-docs/JOURNAL-5.md index 7264102..17e58b3 100644 --- a/machine-docs/JOURNAL-5.md +++ b/machine-docs/JOURNAL-5.md @@ -421,3 +421,80 @@ Conclusion: failed. This points to a true recipe upgrade regression, not a stale cc-ci test. Next: move to the next enrolled V5/V6 candidate (`n8n`, then `lasuite-docs`, then `keycloak`). + +## 2026-06-01 — Operator-directed seeded stale-test case: custom-html + +Per operator direction, I stopped searching for a naturally occurring stale-test recipe and switched to a +deliberately seeded sandbox case. + +Seeded recipe PR used: +- `https://git.autonomic.zone/recipe-maintainers/custom-html/pulls/3` +- branch `v5-stale-docroot` + +I first inspected the pre-existing PR state and found the earlier docroot-move attempt was too broad: +it broke backup/restore/custom for real, so it was not a clean stale-test simulation. + +Re-seeded the same sandbox PR into a narrower stale-test case on the host recipe checkout: +- kept the real upgrade crossover (`1.10.0+1.28.0 -> 1.11.2+1.29.0`) +- reverted the volume/docroot move +- added a specific nginx location override for `*.txt`: + - keep `.html` as normal `text/html` + - force `.txt` to `application/octet-stream` +- final seed commit on the recipe PR branch: + - `71e7326 fix: force octet-stream for seeded txt files` + +DEFAULT / V5 real-path evidence: +- Trigger: + - `POST=1 MAX_WAIT=90 INTERVAL=5 /srv/cc-ci-orch/.claude/skills/recipe-upgrade/testme-on-pr.sh custom-html 3` + -> `VERDICT=RED` + -> `BUILD=https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/75` +- Poll-only re-check: + - `POST=0 MAX_WAIT=20 INTERVAL=5 /srv/cc-ci-orch/.claude/skills/recipe-upgrade/testme-on-pr.sh custom-html 3` + -> `VERDICT=RED` + -> `BUILD=https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/75` +- Authenticated Drone log inspection for build `#75`: + - install PASS + - upgrade PASS + - backup PASS + - restore PASS + - custom FAIL only + - exact failing assertion: + `tests/custom-html/functional/test_content_type_header.py` + expected `.txt` `Content-Type` to start with `text/plain`, got `application/octet-stream` +- DEFAULT-mode explanatory recipe PR comment posted with NO cc-ci test edit: + - `https://git.autonomic.zone/recipe-maintainers/custom-html/pulls/3#issuecomment-13883` + - comment explains the seeded sandbox MIME change and tells the operator to re-run + `/recipe-upgrade custom-html --with-tests` + +`--with-tests` / V6 real-path evidence: +- Created a fresh dedicated cc-ci clone: + - `/tmp/opencode/cc-ci-v6-custom-mime` +- Created the minimal paired branch: + - branch: `v6-custom-html-mime` + - commit: `826daec fix(tests): accept seeded custom-html txt mime` + - remote branch: `origin/v6-custom-html-mime` +- Scope of the test PR branch: + - only `tests/custom-html/functional/test_content_type_header.py` changed + - `.txt` now expects `application/octet-stream` for the seeded sandbox case +- Opened paired cc-ci PR: + - `https://git.autonomic.zone/recipe-maintainers/cc-ci/pulls/3` +- Materialized isolated host checkout: + - `/root/cc-ci-v6-custom-mime` +- Cold branch-checkout verification on cc-ci: + - `REMOTE_ROOT=/root/cc-ci-v6-custom-mime RECIPE=custom-html REF=v5-stale-docroot /srv/cc-ci-orch/.claude/skills/ci-test-review/verify-pr.sh` + - result: + `VERDICT: GREEN — custom-html PR (REF=v5-stale-docroot) passed cold full-suite x1. Ready for operator merge (NOT merged).` + - host log: + `cc-ci:/root/cc-ci-review-logs/verify-custom-html-20260601T200544Z.1.log` + +Pairing notes posted: +- recipe PR note: + `https://git.autonomic.zone/recipe-maintainers/custom-html/pulls/3#issuecomment-13894` +- cc-ci PR note: + `https://git.autonomic.zone/recipe-maintainers/cc-ci/pulls/3#issuecomment-13896` + +Conclusion: +- The operator-directed seeded stale-test case is now fully exercised: + - DEFAULT mode leaves an explanatory recipe-PR comment and makes no cc-ci test edit + - `--with-tests` opens a paired cc-ci test PR and the branch-checkout verification is GREEN +- Next phase work is V8 `/upgrade-all`, V8a `cc-ci-upgrader`, then V9 cleanup/closeout. diff --git a/machine-docs/STATUS-5.md b/machine-docs/STATUS-5.md index 6d88ad7..d07567d 100644 --- a/machine-docs/STATUS-5.md +++ b/machine-docs/STATUS-5.md @@ -6,9 +6,9 @@ ## Current focus -V5 next: continue searching for a genuine stale-test case on an enrolled sandbox recipe. `lasuite-meet` -is now enrolled and its upgrade PR is GREEN after a minimal harness fix, so it does not provide the V5 -stale-test branch either. +Per operator direction, V5/V6 now use a deliberately seeded stale-test sandbox case rather than waiting +for a naturally occurring one. The active seeded pair is `custom-html` recipe PR `#3` plus cc-ci test +PR `#3`. Next: carry that evidence into the remaining V8, V8a, and V9 work. ## Fixes applied (A5-1, A5-2, related) @@ -74,8 +74,8 @@ preferred, `/root/cc-ci` fallback) instead of hard-coding `/root/cc-ci`. | V2 — testme-on-pr.sh reads verdict | DONE | GREEN ✓ (build #29/#35); RED ✓ (build #34); rerun fix ✓ (build #43) | | V3 — /recipe-upgrade sandbox GREEN | DONE | custom-html-tiny PR#2; build #29 SUCCESS | | V4 — 3-iter regression loop | DONE | custom-html-tiny PR#5; build #34 RED, build #37 GREEN | -| V5 — stale-test DEFAULT = comment | IN PROGRESS | matrix-synapse default-mode comment posted, but later invalidated as a likely real regression; next candidate pending | -| V6 — --with-tests opens+verifies cc-ci test PR | TODO | matrix-synapse branch invalidated by real regression; next candidate pending | +| V5 — stale-test DEFAULT = comment | DONE | seeded custom-html PR#3, build #75 RED only on stale txt MIME assertion; explanatory comment posted; no test edits | +| V6 — --with-tests opens+verifies cc-ci test PR | DONE | paired cc-ci PR#3 opened; cold branch-checkout verify GREEN against custom-html PR#3 | | V7 — mirror reconciliation | DONE | PR#1 superseded, PR#4 merged-upstream, main=upstream ✓ | | V8 — /upgrade-all DEFAULT run | TODO | | | V8a — cc-ci-upgrader agent | TODO | | @@ -134,11 +134,37 @@ preferred, `/root/cc-ci` fallback) instead of hard-coding `/root/cc-ci`. app still fails the real post-upgrade assertion: the pre-upgrade Matrix user cannot log in after the upgrade (`HTTP 403 Invalid username or password`). That points to a true recipe upgrade regression, not a stale test. +- Seeded Phase-5 sandbox stale-test case (operator-directed simulation): + - Recipe PR: `https://git.autonomic.zone/recipe-maintainers/custom-html/pulls/3` + - branch: `v5-stale-docroot`, head `71e7326a` + - seeded behavior: `.txt` files are intentionally served as `application/octet-stream` while the + app remains externally healthy and lifecycle tiers still pass. + - DEFAULT/V5 evidence: + - `POST=1 ... testme-on-pr.sh custom-html 3` -> build `#75` + - `POST=0 ... testme-on-pr.sh custom-html 3` -> + `VERDICT=RED BUILD=https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/75` + - build `#75` summary: install PASS, upgrade PASS, backup PASS, restore PASS, only custom FAIL + - exact failing stale assertion: `tests/custom-html/functional/test_content_type_header.py` + expected `.txt` `Content-Type` to start with `text/plain`, but got `application/octet-stream` + - explanatory recipe-PR comment with no cc-ci test edit: + `https://git.autonomic.zone/recipe-maintainers/custom-html/pulls/3#issuecomment-13883` + - `--with-tests`/V6 evidence: + - paired cc-ci branch: `origin/v6-custom-html-mime` @ `826daec` + - paired cc-ci PR: `https://git.autonomic.zone/recipe-maintainers/cc-ci/pulls/3` + - minimal test change: only `tests/custom-html/functional/test_content_type_header.py` updated so + the seeded sandbox `.txt` response expects `application/octet-stream` + - cold branch-checkout verification on cc-ci: + `REMOTE_ROOT=/root/cc-ci-v6-custom-mime RECIPE=custom-html REF=v5-stale-docroot /srv/cc-ci-orch/.claude/skills/ci-test-review/verify-pr.sh` + - expected/observed result: + `VERDICT: GREEN — custom-html PR (REF=v5-stale-docroot) passed cold full-suite x1. Ready for operator merge (NOT merged).` + Host log: `cc-ci:/root/cc-ci-review-logs/verify-custom-html-20260601T200544Z.1.log` + - cross-link comments posted: + - recipe PR note: `https://git.autonomic.zone/recipe-maintainers/custom-html/pulls/3#issuecomment-13894` + - cc-ci PR note: `https://git.autonomic.zone/recipe-maintainers/cc-ci/pulls/3#issuecomment-13896` ## Verification next step -- Move to the next enrolled candidate for V5/V6. Current shortlist: `n8n` first, then `lasuite-docs`, - then `keycloak`. +- With seeded V5/V6 now exercised, move on to V8 `/upgrade-all`, V8a `cc-ci-upgrader`, and V9 cleanup. ## Phase 5 gates