Repository navigation
Fold develop-v1.19.0 back into develop for 1.19.0 - #664
Conversation
* Expose appliance mode and baked ref in the sister feed Part of #452. Implemented by an operator-run GPT session at the owner's request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Drop added test comment Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: pithead-developer[bot] <328836012+pithead-developer[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: pithead-developer[bot] <4933481+pithead-developer[bot]@users.noreply.github.com>
* Automate docs replay, API allowlist, and uninstall checks Part of #586. Implemented by an operator-run GPT session at the owner's request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test: register the allowlist kernel test in CI and drop the replay wrapper (#586) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: pithead-developer[bot] <328836012+pithead-developer[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: pithead-developer[bot] <4933481+pithead-developer[bot]@users.noreply.github.com>
* Add an opt-in shared-host resource profile Part of #577. Implemented by an operator-run gpt-6-astra session at the owner's request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore: remove added source comments Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * test: allow the nft teardown call in the shared-host uninstall stub Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * test: run the shared-host suites under coverage and cover dedicated uninstall and lockdown doctor paths Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * test: report shared-host suite output when it fails under run.sh Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * test: give the shared-host lifecycle suite the envsubst stub and stay inside the run.sh budget Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * test: pass the stub directory only to the lifecycle suite and keep the donation exit status Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix: size and isolate the shared-host build within the memory ceiling Compute build parallelism from memory_max_mb in shared mode and stop a running miner before compiling, so the compiler and the miner never compete for the same cgroup memory ceiling. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test: add an opt-in shared-host tier4-e2e phase on a real rig Switches the rig to shared_host, verifies the effective slice limits, the miner's cgroup, the generated XMRig settings, status and an accepted share, then restores the dedicated configuration and compares unrelated host settings before, during and after. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix: let a capability-less shared-host miner write its log, harden the shared-host e2e phase The shared unit keeps no capabilities, so a root miner could not write the operator-owned xmrig.log after re-own (bench job 3494 saw no stratum job in the log). Re-own now gives the generated config and log to the miner account in shared mode. The e2e phase removes its marker as soon as the profile is applied, prints unit and log diagnostics on failure, survives a missing dataset line and checks the slice by load state and miner cgroup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix: stop the owned shared-host slice when the profile is disabled Removing the slice's unit file left the started slice active (bench job 3495). Removal now waits until the miner has left the slice, then stops the slice, deletes the owned fragment and reloads systemd; apply, upgrade and setup run it again after their restart. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test: clear an empty leftover shared-host slice before the e2e phase applies the profile Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test: judge shared-host slice removal by fragment and active state systemd synthesizes any slice name on demand, so LoadState stays loaded after the owned fragment is gone (bench job 3502). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix: keep the shared-host config operator-readable and never stop a busy slice Without miner_user the generated config is now root-owned with the operator's group and mode 0640, so non-root doctor and support-bundle still read it. Slice removal now defers while any process (miner or helper) is in the slice, when the cgroup cannot be read, or when the stop fails, and only then deletes the owned fragment. The e2e pre-step requires an existing, empty, non-transient, unreferenced slice, the final check requires an inactive slice, and failure diagnostics no longer print the miner journal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: pithead-developer[bot] <328836012+pithead-developer[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: pithead-developer[bot] <4933481+pithead-developer[bot]@users.noreply.github.com>
* Qualify historical RigForge benchmark claims Part of #580. Implemented by an operator-run gpt-6-astra session at the owner's request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs: drop pre-GA coordination and restore the THP stock-gap caveat Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs: source the benchmark provenance and qualify the THP caveat Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs: match the README benchmark row to the index wording Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs: re-head after removing closing keywords from the PR body (#580 stays open) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: pithead-developer[bot] <328836012+pithead-developer[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: pithead-developer[bot] <4933481+pithead-developer[bot]@users.noreply.github.com>
* Support solo daemon pools and report node health Part of #528. Implemented by an operator-run GPT session at the owner's request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Remove explanatory comments from rigforge.sh Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Cover daemon node warnings in apply and stopped-miner doctor Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Keep daemon pool tests under the file budget Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Render the daemon proof config to a regular file The atomic config install reads config.json back, which blocks on a FIFO. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: pithead-developer[bot] <328836012+pithead-developer[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: pithead-developer[bot] <4933481+pithead-developer[bot]@users.noreply.github.com>
* Warn when source configuration changes after generation Part of #445. Implemented by an operator-run gpt-6-astra session at the owner's request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Remove added source comments Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Skip the apply stamp for staged generation Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: pithead-developer[bot] <328836012+pithead-developer[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: pithead-developer[bot] <4933481+pithead-developer[bot]@users.noreply.github.com>
* Add JSON doctor reports with stable check IDs Part of #440. Implemented by an operator-run gpt-6-astra session at the owner's request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: ignore synthetic empty-token fixture in gitleaks history Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Move doctor check helpers into util/doctor-report.sh to fit the file budget Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Drop the explanatory comment on the doctor dispatch Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Give daemon-pool doctor rows the pool-connection ID Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Cover the stopped-service daemon doctor row Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: pithead-developer[bot] <328836012+pithead-developer[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: pithead-developer[bot] <4933481+pithead-developer[bot]@users.noreply.github.com> Co-authored-by: Vijit Singh <vijit.n.singh@gmail.com>
Conflicts resolved in Makefile, tests/run.sh and tests/e2e-pithead.sh (both sides' entries kept), rigforge.sh (comment-only, both deletions kept) and tests/coverage.sh (develop's early output wipe kept so the source proofs survive). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fold adds #606's five doctor-JSON rows to connect and #617's allowlist row to network, so the harness now retains connect 8, network 10 and 9 for each replay group (which nests connect). tests/worker-proof.py and docs/dev/worker-proof.md still carried the develop-side totals (3, 9, 4, 4), so every valid receipt for those groups was rejected and test-worker-proof.py failed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fixture's stub connect and network phases still emitted the develop-side totals (3 and 9), so its receipts no longer matched tests/worker-proof.py after the fold. The replay stub nests connect and now totals 9 without its own change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n its budget #606's doctor JSON requires every check to carry a stable ID, but #609's generated-configuration rows had none, so the daemon-pool doctor-JSON cases failed. The 1.19.0 tip fails the same four cases; pushes to develop-v1.19.0 never ran CI. The rows now report config-apply. The fold took tests/e2e-pithead.sh to 569 lines against its 563 ceiling, which may not rise. The allowlist helper is sourced in the existing control/tokens chain (same order) and its result row is a one-line if, with identical behaviour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#643's test pinned the kcov include pattern to rigforge.sh and util/proposed-grub.sh. The fold keeps 1.19.0's addition of util/config-apply-state.sh to tests/coverage.sh, so the fake kcov refused the run as out of scope. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Adversarial review of the fold at Scope: the conflict resolutions, plus every place where a 1.19.0 feature (#637, #617, #611, #639, #645, #609, #606) meets code that v1.18.1 rewrote after that feature was reviewed. Four reviewers each took one lens: render pipeline, lifecycle, feed and security, tests and CI. Each serious finding was re-checked by an independent skeptic, and six further notes were verified separately. Merge interactions found and fixed on this branch. Neither side was wrong on its own.
Checked and clean:
Real, but already on the 1.19.0 side, so filed rather than fixed here: #665 (watchdog guard ahead of the thermal stop), #666 (shared-host render temp file left on disk) and #667 (e2e proof gaps). Three notes were refuted: the daemon feed connection shape is deliberate and pinned by a test, the daemon wallet in the feed is a public address already served, and the shared-host rebuild downtime is documented. Local proof at this head:
CI at this head: all 10 checks green (test suite, shellcheck + shfmt, coverage, both stock-home setups, Docker end-to-end, markdownlint, yamllint, zizmor, gitleaks). 🤖 Generated with Claude Code |
What's the problem
develop-v1.19.0was created on 2026-11-07 to keep feature work offdevelopwhile 1.18.1 was overdue. 1.18.1 is now published, so that reason is gone. On 2026-11-08 the owner ruled that RigForge moves on to 1.19.0 with no 1.18.2, and that the integration branch folds back intodevelop.The branch holds seven merged feature PRs that are not on
develop:It is also 9 commits behind
develop, which carries the v1.18.1 release and #661.How I fixed it
fold/develop-v1.19.0-into-developstarts atdevelop-v1.19.0(eb50ae22) and mergesdevelop(d41b6d3a).Makefile,tests/run.sh: kept both sides' new test entries.tests/e2e-pithead.sh: kept both sides' new test sources.rigforge.sh: the conflict is comments only. Both sides deleted overlapping comment lines, and both deletions are kept, with no code change.tests/coverage.sh: kept Verify cached jq before use and preserve fresh coverage proofs #643's earlyrm -rf "$OUT". The branch still had the old wipe after the source proofs are written, which would deletesource-files.sha256. The merged file equalsdevelop's plus the branch's intended changes:util/config-apply-state.shin the coverage include pattern and the header wording.developas one commit.develop-v1.19.0(Add validated XMRig configuration overlays #604, Support configurable RandomX modes and initialization #605, Preserve optional XMRig pool fields #607, Keep RigForge in control of generated XMRig config #608, Verify XMRig benchmarks and add bounded stress checks #610) move todevelopwith arebase --onto develop develop-v1.19.0.v1.19.0andv2.x - post-GAmilestones returns todevelop.Here is the proof
1539c4f5: the merge commitfdc11f22(parentseb50ae22,d41b6d3a) plus five fix commits for merge interactions, all listed in the review record: Fold develop-v1.19.0 back into develop for 1.19.0 #664 (comment)test-doctor-json.sh: 51 passed, 0 failed;test-worker-proof.py: 24 OK;test-worker-proof.sh: 21 passed;test-config-apply-state.shandtest-coverage-cache.shpass;develop;adversarial-reviewstatus is posted at this head.🤖 Generated with Claude Code