v30.3-roots.1 · Commit 12: [PATCH 12/68] release: add pre-tag artifact rehearsal
AGENTS.md
Before: /dev/null · After: AGENTS.md
File metadata
new file mode 100644 index 0000000000000000000000000000000000000000..a593ae772cc2b58b690cc1a406bce164d8abca91
Download original patch · Release notes
Diff rows 401–472 of 472. 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,472 @@ (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`. Authenticate the official Core tag and its signer
|
|
471
|
+
key through independent trusted sources, run `git verify-tag v30.3`, and record
|
|
472
|
+
both the signature result and its trust basis before claiming verification.
|