Round 6 applied the carrier ruling; finish the remaining regression review
Written 2026-10-11 08:58 UTC.
RE-VERIFY: This is a current snapshot. Query https://github.com/CodexCoder21Organization/BuildTestEmbedded/pull/1423 and inspect remote branch refs. Related https://github.com/CodexCoder21Organization/BuildTestEmbedded/pull/1370 is MERGED at e24a21cfe8f2f798bf58ecd916ed0446330a1bb3. The orchestrator completes this side note.
Round 6 applied the exact tested round 5 carrier proposal under the explicit chanfix6 authorization. Saved proposal and applied file are byte-identical, and the complete outcome assertion suffix is byte-identical to original (SHA256 aa3a55e13f4d0c2a3d208650de38888ad151f3ef9fe4433cd35b04ef4f07793b). The real server acknowledges normal completion after its writer stops; the stream joins before executor close. The brief's sentence about recording a close exception differs from the saved proposal; this round followed its explicit instruction to apply that exact proposal and added no exception catch. The prior authorization question is resolved.
Exactly one PR branch head was pushed, ae041756715ef88720dbc337ac2245fbc5ad8b38, with --force-with-lease. Latest main was rebased after the related disposition PR merged. Classifier order: terminal streaming owner close; terminal no-send after replacement failure; other no-send may retry. Main's public wait observers and retired-channel ownership are preserved. Detailed decline/reply diagnostics and contextual retirement constructors coexist.
NOT READY: final-source native regression e2eResumeFromInstallingDoesNotReplayAfterSshChannelFailure fails at test line 293, expecting session-retirement ambiguity wording and receiving channel-closed-without-exit-status ambiguity wording. No existing outcome or fixture was changed for this additional case. Full exact expected/actual and stack are in the selected XML and findings on the evidence branch. It needs reliable attribution before an additional named fixture edit or product fix. Final-source gates: regressions 10/11; duplicate probe 1/1; carrier 3/3 (native D plus two local real-server processes); related SSH subset 9/47 (seven local plus two native overlaps). All credited passes are first attempts; D's READ journal has 12 canonical ordinal-one attempts, eleven passes and one failure. Five submissions, maximum two in flight. No sixth submission.
D: https://buildtest.kotlin.build/run?id=6f222ff3, FAILED 11/12 selected; 4346 rows over 44 pages. E: https://buildtest.kotlin.build/run?id=e9604d57, externally CANCELED before testing with reason "Review probe needs its public returned-value type specified before compilation; no test verdict claimed." This lane did not request the cancellation and does not infer who did. Earlier A/B/C passed the requested gates before rebase and are history only. Local subset draft compiles that included full-service scenarios are explicitly uncredited; only seven complete public SSH function bodies have passing XML.
| Repository |
Branch |
Remote head |
State |
| BuildTestEmbedded |
wip/chanfix1-fix |
ae041756715ef88720dbc337ac2245fbc5ad8b38 |
PR OPEN, READY; review result NOT READY, one regression failure |
| BuildTestEmbedded |
wip/chanfix6-evidence |
f3fe2f2a958adf0b33d4d15cddf6a66a651e868d |
Full combined source, findings, XML, journals, exact subset and proposal |
| BuildTestEmbedded |
wip/chanfix5-evidence |
67c78c5cd90d5d51ab787f55282496643d7179da |
Prior source, controls, passing carrier proposal |
Description PATCH is verified byte-for-byte. Immediately after push, the PR metadata read still showed the previous head while git ls-remote verified the new head; record that as metadata delay, not a failed push. The PR remains OPEN and READY. No merge, enqueue, deploy or publication; reader2 pin unchanged. All submitted remote runs are terminal; no cancellation by this lane. Cleanup and process audit recorded in chanfix6 findings. Compiled artifacts are excluded from evidence.
Next: orchestrator reviews the failing exact diagnostic path and decides the next scoped round; it completes this side note because the carrier ruling has been applied. This lane does not watch full PR CI.
Historical round 5 record
Handoff: Rule on carrier fixture completion and finish the SSH change review
Written 2026-10-11 07:59 UTC.
RE-VERIFY: This is a write-time snapshot. Check https://github.com/CodexCoder21Organization/BuildTestEmbedded/pull/1423 for state, head and CI, and https://github.com/CodexCoder21Organization/BuildTestEmbedded/pull/1370 for merge state before acting. Fetch and rebase before builds. The current findings and complete evidence are on the evidence branch below.
Mission
The user asked chanfix5 to finish round 4's three items: distinguish executor callback closure from the library's close text, quote the exact authorization for earlier expected-message/fixture edits, and fix the buffered delivered-interrupt fixture's observation. All three items are complete and pushed as one new PR head. Final readiness is held by one additional existing carrier fixture whose cleanup conflicts with the required terminal-close behavior. A tested fixture-only proposal exists but was not applied because the common brief requires authorization for each named existing-test edit.
Findings and completed work
- An IOException from a caller callback using the library close text was classified as session loss and replayed an accepted command. The adopted public real-server probe fails three times on d07989e6 in round 4 and once independently here; all failures count two server starts instead of one. The callback closure signal is now a private SshExecutorClosedWhileStreamingException, explicitly terminal in isSessionDeadException, carrying closedByOwner to report caller or service-owner closure. Both streaming paths check before and after callbacks. Library text matching remains in read/available adapters only. Restoring the shared callback/classifier text makes the probe fail again.
- The buffered command fixture expected execInternal at line 780 or 805, while the completion sleeps moved to 799 and 824. Buffered commands use output sinks and polling, not the ChannelInputStream adapter. The old fixture fails its exact CI observation message locally. The corrected fixture captures one stack and matches execInternal, sleepPreservingSshCallerInterrupt, and Thread.sleep, preserving every setup/outcome/cleanup assertion and budget. It passes 3/3.
- The PR description now quotes file:line and exact old/new text for both refusal-message edits and both earlier fixture edits, each with the required exact standing-approval sentence. It also records the current buffered fixture edit and its authorization. All five other protected tests are byte-identical to d07989e6. Existing streaming completion observation still points to source line 1357.
- Native B passes 11/11 selected first attempts. Native A passes 11/12 selected first attempts: ten regressions plus held consumer. Its carrier fixture finishes all progress checks, then closes the accepted continuous stream during cleanup and treats the expected terminal close exception as a probe failure. The unchanged local fixture reproduces this. The proposed fixture retains the real server exit callback, sends normal completion when its writer stops, and moves the existing 5000-ms stream join before executor close. Its complete outcome assertion suffix, iterations, and budgets are byte-identical. It passes locally against the same product classes. Authorization to apply this extra named fixture change is pending.
- Core gates: replay 3/3, diagnostics 3/3, buffered interrupt 3/3, held consumer 4/4, ruled tests 2/2; extra owner/final-callback cases 3/3 each, both prefetch cases pass, persistent refusal passes. Eleven regressions remain 10/11 on the pushed head. No retry passes credited. Both native runs have complete paged rows and READ attempt journals with one ordinal-one canonical attempt per selected test.
Relevant PRs and branches
| Repo |
Branch |
Remote head |
PR |
Contents |
State |
| CodexCoder21Organization/BuildTestEmbedded |
wip/chanfix1-fix |
14b5fc898cf7aaad64b6a496fd6ce8d63def5fcf |
https://github.com/CodexCoder21Organization/BuildTestEmbedded/pull/1423 |
Three requested fixes; clean checkout; one new head pushed |
OPEN, READY; core targeted gates pass; carrier fixture gate still fails |
| CodexCoder21Organization/BuildTestEmbedded |
wip/chanfix5-evidence |
67c78c5cd90d5d51ab787f55282496643d7179da |
No PR |
Current source checkpoint, findings, baseline/mutation/native XML, attempt journals, tested proposed carrier patch |
Durable evidence; proposal not applied |
The separate disposition PR https://github.com/CodexCoder21Organization/BuildTestEmbedded/pull/1370 was still OPEN at the last rebase. It has a queue ref created by its separate owner. This lane did not enqueue anything. Main was 331819489630c52809b476b2a66639bf62b84e43 and the rebase made no change, so the conditional 47-scenario gate did not apply. Check again before the next build.
No deployment or publication was performed in chanfix5. The previously published com.github.mwiede:jsch:0.2.18-reader2 pin is unchanged, as is build.kts. Publication source and the earlier library tests remain linked in the PR description. No production host connection, merge or queue action occurred.
Next steps
- Re-verify the current PR head and related disposition PR merge state. Read findings and the tested carrier proposal.
- Obtain the orchestrator's ruling on that named fixture-only edit. common.md says existing-test edits require a named authorization; this task authorized the buffered fixture but did not name the additional carrier fixture. Do not alter its outcome assertions, iterations or time limits. If authorized, apply the saved patch and quote its old/new fixture changes and authorization in the PR description.
- Run the carrier regression through the native public test script and review the XML. Its evidence-only baseline and proposed controls are already red/green 1/1; the actual PR test remains unchanged. Do not blindly requeue the failed native batch.
- Fetch/rebase immediately before building and the next PR update. If the separate disposition PR has merged and touches this classification, combine the rules: not sent before send may retry; not sent after reconnect failure is terminal; executor closure during streaming is terminal with accepted disposition. Run its specified 47-scenario set once if those lines changed. Do not claim the previous tests cover a new rebase automatically.
- Update the description, push one head for the next authorized round, keep the PR READY, and stop at orchestrator review. No enqueue, merge, deploy or publish is authorized. The already completed native runs have no pending work to cancel.
Commands and useful evidence
Native A: https://buildtest.kotlin.build/run?id=f6715f48, 12 selectors, 11/12 first attempts. Native B: https://buildtest.kotlin.build/run?id=57007243, 11 selectors, 11/11 first attempts. Both finished; 43 result pages and 4282 discovered rows each. The CLI's complete getTestResults response hit its known 1048576-byte limit. Read /api/test-results?id=<id>&page=N and /api/test-attempts?id=<id>; the latter records the canonical ordinal. XML reconstructed from these responses lives under investigations/chanfix5.
Run targeted tests with LC_ALL=C.UTF-8 scripts/test.bash --local --test execStreamingAttemptDoesNotStarveVirtualThreadCarrier --log <xml>, after acquiring a shared build slot. Fresh compilation can take about twenty minutes. Repetition gates use no more than two concurrent remote submissions and six total per round, each at most twelve selectors. This round used only two submissions; both terminal, none canceled. Raw-run watchers are observation-only and have exited. Do not watch new PR CI in this lane; the orchestrator owns that wait.
The narrow local harness must compile with -module-name buildtest_embedded when using a previously compiled service; otherwise internal-method names differ and fail before SSH registration. That initial harness construction error was retained separately and was not counted as a product failure or pass. Product code, original scenario bodies and all evidence XML are retained; compiled classes, dependency jars, machine-specific caches, and process snapshots are deliberately not pushed.