v31.1-roots.1 · Commit 2: [PATCH 02/17] feat(policy): preserve Roots parsing and local transaction checks
doc/feature-contracts/policy-parsing.md
Before: doc/feature-contracts/policy-parsing.md · After: doc/feature-contracts/policy-parsing.md
File metadata
index c646bfdb4e044ea02e58efdfbcd61a9eae1795dd..56bc4b7f24de486e995d038a448fc40fd9ace75d 100644
Download original patch · Release notes
Diff rows 1–58 of 58. 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.
doc/feature-contracts/policy-parsing.md
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
# Roots policy input compatibility
|
|
2
2
|
|
|
3
|
-
**v31 candidate status: deferred.** This preserved contract describes the
|
|
4
|
-
accepted 30.3 source, including its documented gaps; the foundation does not
|
|
5
|
-
implement its Roots controls or RPC fields. Source code/test paths below refer
|
|
6
|
-
to `10d772eb7f4b00b5193428a0dde4c06558d6c297`, not current candidate behavior.
|
|
7
|
-
[The port review](../roots-v31-port-review.md) records ownership and current gates.
|
|
3
|
+
**v31 candidate status: L7 implementation tested; final milestone review pending.** Scoped
|
|
4
|
+
grammar and local policy consumers are carried. `datacarriercost`,
|
|
5
|
+
`subdustfeepenalty`, `mempoolreplacement`, `mempooltruc`, `spkreuse` and
|
|
6
|
+
`dustdynamic` are parsing-only until L8; `blockmaxsize` and `blockprioritysize`
|
|
7
|
+
are parsing-only until L9. Help labels these staged controls and explicit use emits a startup warning;
|
|
8
|
+
acceptance of their syntax does not establish enforcement. Core's current
|
|
9
|
+
replacement/mining algorithms continue to operate meanwhile. Only integrated
|
|
10
|
+
Roots `confrw` precedence awaits L12; CLI, ordinary config and JSON settings
|
|
11
|
+
passed the L7.1 startup matrix. Candidate tests are
|
|
12
|
+
[`policy_args_tests.cpp`](../../src/test/policy_args_tests.cpp) and
|
|
13
|
+
[`feature_policy_args.py`](../../test/functional/feature_policy_args.py).
|
|
14
|
+
L7.2 carries the source
|
|
15
|
+
[`policy_args` fuzz target](../../src/test/fuzz/policy_args.cpp): Boolean and
|
|
16
|
+
integer independent grammar oracles, trailing-junk rejection, quarter-vbyte
|
|
17
|
+
canonical round trips, dynamic-mode syntax round trips, JSON types and raw
|
|
18
|
+
negation. Clang 19 ASan/UBSan/libFuzzer executed 103,911 inputs over 121 seconds
|
|
19
|
+
with seed 31 and no findings. This bounds the reported campaign, not all inputs.
|
|
20
|
+
Historical paths/results below are source evidence.
|
|
8
21
|
|
|
9
22
|
**Contract ID: policy-parsing.** Scope: startup input for the Roots-added local
|
|
10
23
|
policy controls listed below. This contract supplements `runtime-config` and the
|
|
@@ -173,10 +186,12 @@ The matrix produced 127 clean startups/shutdowns, 30 expected startup diagnostic
|
|
|
173
186
|
and the three existing runtime aborts described below. All 160 outcomes matched
|
|
174
187
|
the source-derived characterization; an expected rejection is not a test failure.
|
|
175
188
|
|
|
176
|
-
**Existing runtime gap:** non-off `dustdynamic` modes can parse successfully but
|
|
189
|
+
**Historical source runtime gap (repair authorized for L8):** non-off `dustdynamic` modes can parse successfully but
|
|
177
190
|
abort startup because the mempool is constructed without its required scheduler.
|
|
178
191
|
Parser acceptance does not prove these modes operate. This contract records that
|
|
179
|
-
baseline failure; repairing scheduler wiring is a separate runtime change.
|
|
192
|
+
baseline failure; The user authorized a bounded L8 runtime repair with node-owned scheduling,
|
|
193
|
+
retry/shutdown lifetime safety, unavailable-estimate floor fallback and safe
|
|
194
|
+
multiplier scaling. It is not implemented by L7 parsing.
|
|
180
195
|
|
|
181
196
|
Acceptance: policy_args_tests.cpp (`src/test/policy_args_tests.cpp`, source reference)
|
|
182
197
|
`boolean_values`, `integer_boundaries`, `carrier_cost_compatibility`, `mode_tokens`,
|
|
@@ -247,3 +262,16 @@ probe failed before testing. GCC sanitizer compilation and execution succeeded.
|
|
|
247
262
|
The executed campaigns therefore used corpus replay, including generated
|
|
248
263
|
mutations, with no coverage-guided engine. A coverage-guided libFuzzer campaign
|
|
249
264
|
remains an explicit evidence gap, and cannot be claimed from these replay counts.
|
|
265
|
+
|
|
266
|
+
## Candidate split and current gates
|
|
267
|
+
|
|
268
|
+
L7 carries complete-token/negation/type/cost/mode syntax and local standardness,
|
|
269
|
+
carrier budgets, fixed dust and relay age/maturity. The native v31 cluster limits
|
|
270
|
+
and typed script flags remain intact. Mode-resolution/enforcement tests belong
|
|
271
|
+
L8, and template-normalization tests belong L9; their source assertions are
|
|
272
|
+
retained as explicit owning-theme gates, not represented as L7 passes.
|
|
273
|
+
|
|
274
|
+
`feature_policy_args.py` retains independently runnable CLI/config/JSON cases;
|
|
275
|
+
only its historical text read/write-config integration cases defer to L12.
|
|
276
|
+
`policy_args_tests` retains parser boundaries and local/ephemeral defaults.
|
|
277
|
+
Dynamic-dust grammar is tested without a runtime support claim.
|