Skip to content
Bitcoin Roots

v31.1-roots.1 · Commit 8: [PATCH 08/17] chore(roots): integrate v31 identity and maintenance tooling

AGENTS.md

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

File metadata
new file mode 100644
index 0000000000000000000000000000000000000000..f4b8b55d2b235cf08eb2e354213cc59ff3248c12

Download original patch · Release notes

Diff rows 1–85 of 85. 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,85 @@
1
+ # Bitcoin Roots contributor and agent guide
2
+
3
+ This unpublished candidate is based directly on authenticated Bitcoin Core
4
+ v31.1 (`9be056a8a72b624dae9623b2f7bded92c2a21c91`). Selected Bitcoin Knots
5
+ `29.3.knots20260507` behavior is historical lineage, not another upstream or a
6
+ consensus specification. Read `README.md`, `doc/roots-features.md`,
7
+ `doc/wallet-privacy.md` and `doc/roots-v31-port-review.md` before changing behavior.
8
+
9
+ ## Invariants and scope
10
+
11
+ - Roots remains compatible with Bitcoin Core consensus. Local mempool, relay
12
+ and template rejection must not invalidate consensus-valid blocks.
13
+ - Do not add or imply RDTS/BIP110 enforcement. Dormant statistics, historical
14
+ notes and unused support helpers do not establish active features.
15
+ - Preserve wallet authorization, transient-secret handling, descriptor/SQLite
16
+ boundaries and the separation of wallet, node and GUI through interfaces.
17
+ - Keep consensus, serialization, validation, networking, wallet and cryptographic
18
+ changes minimal, with observable regressions. Avoid incidental refactoring.
19
+ - Keep historical/upstream attribution and protocol identifiers. Do not mass
20
+ rebrand comments, translated text, old release notes or embedded subtrees.
21
+ - Use disposable explicit regtest datadirs, including for daemon/wallet/GUI help
22
+ generation. Early option setup can access wallet directories before printing
23
+ help; do not point development commands at a real wallet/datadir.
24
+ - Preserve unrelated work and public refs. No dependency installation, system
25
+ install, release dispatch, tagging, signing, publication or main promotion
26
+ is authorized merely by an implementation task.
27
+
28
+ `src/` owns production C++; `test/functional/` owns isolated RPC/P2P integration;
29
+ `src/qt/test/` owns GUI tests; `ci/test/` owns maintenance fixtures and cadence;
30
+ `ci/release/` owns Git-native release validation/export; `depends/` owns pinned
31
+ release dependencies. Follow `doc/design/libraries.md` and
32
+ `doc/developer-notes.md`. Do not cosmetically edit vendored subtrees or manually
33
+ edit generated translations. Register added files in the relevant CMake target.
34
+
35
+ ## Builds and evidence
36
+
37
+ Use out-of-source CMake and conservative fixed parallelism. Minimums include
38
+ CMake 3.22, Python 3.10, GCC 12.1 or Clang 17, Boost 1.74 and libevent 2.1.8;
39
+ see `doc/dependencies.md` for actual supported profiles. Wallet/tests default on,
40
+ GUI defaults off, embedded libraries default on. Qt5/Qt6 selection is supported.
41
+ Optional IPC/USDT/ZeroMQ/system-library/platform gaps are not passing evidence.
42
+ Windows GUI builds that request MiniUPnPc also request its optional vcpkg feature.
43
+
44
+ ```sh
45
+ cmake -S . -B build -DENABLE_IPC=OFF
46
+ cmake --build build --target bitcoind test_bitcoin -j 2
47
+ python3 ci/test/roots-regressions.py plan --cadence fast \
48
+ --files-json '["src/policy/policy.cpp"]'
49
+ python3 -m unittest discover -s ci/test
50
+ ```
51
+
52
+ Use affected regressions and short time-bounded smoke checks while editing;
53
+ retain one full applicable suite at acceptance. Reuse evidence only when tested
54
+ code, binaries and fixtures match, recording provenance. Broad optional-platform,
55
+ extended and longer sanitizer/fuzz coverage belongs to scheduled/manual assurance;
56
+ see `ci/README.md` for exact budgets and commands. Input counts are results, not
57
+ campaign quotas. Preserve failure logs and state executed/skipped counts; a
58
+ compile or local YAML check does not establish a hosted or cross-platform pass.
59
+ Never relink binaries while dependent tests use the same build directory.
60
+
61
+ Manpages and `share/examples/bitcoin.conf` come only from current candidate help
62
+ through `contrib/devtools/gen-manpages.py` and `gen-bitcoin-conf.sh`. Use isolated
63
+ help wrappers when needed. Inspect generated diffs for profile-specific omissions
64
+ and reproducible output. Do not substitute older help or hand-edit the manuals.
65
+
66
+ ## Maintenance and release boundaries
67
+
68
+ Git history is the source of Roots patches. Start `roots/<version>` at its exact
69
+ authenticated Core tag and port semantic commits; never merge an older Roots
70
+ line into a new base or rewrite published history. Review topic branches and
71
+ use exact canonical source/CI parity for promotions. See `contrib/roots/README.md`.
72
+
73
+ Portable patches exclude `.github/**` and replay with `git am -3 --keep-cr`;
74
+ product paths must match the selected tip while Core hosting files stay unchanged.
75
+ Retain author/contributor credit, including Jaromil and devjoinedthechat.
76
+ Signing and new-draft creation stay confined to the permanent tag workflow's
77
+ release environment; manual rehearsal remains read-only and cannot publish.
78
+ Existing draft/public releases block replacement. Manifest signing, Git-tag
79
+ signing and platform signing are distinct; expanded notice coverage is deferred.
80
+
81
+ Before handoff, run focused tests, relevant lint, `git diff --check`, and inspect
82
+ sorted intended scope/status. Disclose missing tools, dependencies and platform
83
+ coverage. Do not commit build trees, caches, fuzz crash artifacts, generated
84
+ patch exports or workspace-local coordination/evidence data. Org plans are never
85
+ Git deliverables; inspect staged names and bytes before an accepted commit.