Skip to content
Bitcoin Roots

v29.4-roots.1 · Commit 12: [PATCH 12/13] release: add pre-tag artifact rehearsal

AGENTS.md

Before: /dev/null · After: AGENTS.md

File metadata
new file mode 100644
index 0000000000000000000000000000000000000000..234b3b55b179950a5b650efb09d4ee0e710451f2

Download original patch · Release notes

Diff rows 401–471 of 471. Line numbers refer to the original before/after files.

+ Added− RemovedUnmarked lines are context.

Scroll the code area horizontally to read long lines. The two line-number columns refer to before and after.

AGENTS.md ADDED
@@ -0,0 +1,471 @@ (continued)
401
+ - Manpages in `doc/man/` and `share/examples/bitcoin.conf` are generated from
402
+ built help output using `contrib/devtools/gen-manpages.py` and
403
+ `contrib/devtools/gen-bitcoin-conf.sh`. Regenerate them only when their source
404
+ help/config interface changes and verify the diff.
405
+ - Do not commit build trees, functional-test caches/temp dirs, fuzz artifacts,
406
+ core dumps, coverage output, editor metadata, or local `.gestalt/` data.
407
+ - Preserve unrelated working-tree changes. Check `git status --short` before
408
+ and after work. Do not reset, clean, or delete files you did not create.
409
+ - Do not update lockfiles, vendored subtrees, generated translations, snapshots,
410
+ or release artifacts as collateral effects.
411
+ - Documentation links and commands may be inherited from upstream. When a
412
+ statement is fork-sensitive, verify it against this checkout before repeating
413
+ it. Fix only the stale material relevant to the current change.
414
+
415
+ ## Before handing off
416
+
417
+ Summarize what changed and why, list exact verification commands and outcomes,
418
+ and disclose anything not run or any dependency that prevented it. At minimum:
419
+
420
+ ```bash
421
+ git diff --check
422
+ git status --short
423
+ git diff --stat
424
+ ```
425
+
426
+ Then run the focused test(s), an appropriate `ctest`/functional subset, and
427
+ relevant lint. Review the final diff for accidental consensus changes, policy
428
+ boundary violations, generated-file churn, branding regressions, secrets,
429
+ absolute local paths, and test-only debug code. A successful compile alone is
430
+ not sufficient evidence for behavioral changes.
431
+
432
+ ## Git-native Roots patch and release workflow
433
+
434
+ Git history is the source of truth for Roots patches. Keep each supported Core
435
+ version as a linear semantic series on `roots/<core-version>`, starting at the
436
+ exact matching Bitcoin Core tag. Use reviewable `topic/<core-version>/<area>`
437
+ branches for development, disposable `integration/<core-version>` branches for
438
+ combined CI, `promote/<core-version>` branches to merge a canonical tree into
439
+ `main`, and `archive/*` only to preserve superseded public history. Release
440
+ tags point to canonical `roots/*` tips, not promotion commits on `main`.
441
+
442
+ For a new Core generation, create `roots/<new-version>` directly from the new
443
+ official Core tag. Port the prior Roots commits semantically in logical order,
444
+ usually with `git cherry-pick -x`, dropping behavior Core adopted and explaining
445
+ material rewrites. Do not merge the previous Roots branch into the new Core
446
+ branch. Compare generations with `git range-diff`, keep policy rejection out of
447
+ block validity, and rerun the tests owned by every ported feature.
448
+
449
+ Do not check generated patch files into Git. Release automation exports the
450
+ canonical range with `git format-patch`, excludes `.github/**` from the portable
451
+ product patch, and verifies replay onto the matching Core base. Because the
452
+ series contains inherited CRLF files, apply the released mbox with
453
+ `git am -3 --keep-cr <bitcoin-roots-*.patch>`.
454
+
455
+ Before assigning a permanent release tag:
456
+
457
+ 1. Merge the reviewed promotion PR and verify its tree equals the canonical tip.
458
+ 2. Dispatch `Release artifacts` from `main` with the future Roots tag and the
459
+ full 40-hex `origin/roots/<core-version>` commit.
460
+ 3. Require all five platform builds and independently inspect the packages and
461
+ patch. Manual rehearsal must create neither a remote tag nor a release.
462
+ 4. Re-fetch refs, create one annotated tag at the unchanged canonical tip, run
463
+ the release-source validator, and push only that tag. Never move it.
464
+ 5. Verify the tag-triggered draft's packages, patch, `SHA512SUMS`, optional
465
+ signature, tag target, and source tree before publishing the unchanged draft.
466
+ 6. Repeat tag, asset, checksum, and signature-if-present verification through an
467
+ unauthenticated client after publication.
468
+
469
+ The detailed commands and branch maintenance rules are in
470
+ `contrib/roots/README.md`. The local Bitcoin Core v29.4 tag is signed, but the
471
+ signer public key is absent; do not claim local cryptographic verification.