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. Before is on the left; after is on the right. Unified view fits narrow screens more easily.
doc/feature-contracts/policy-parsing.md
CHANGED
|
@@ -1,10 +1,23 @@
|
|
| 1 |
# Roots policy input compatibility
|
| 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
**Contract ID: policy-parsing.** Scope: startup input for the Roots-added local
|
| 10 |
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 |
and the three existing runtime aborts described below. All 160 outcomes matched
|
| 174 |
the source-derived characterization; an expected rejection is not a test failure.
|
| 175 |
|
| 176 |
-
**Existing runtime gap:** non-off `dustdynamic` modes can parse successfully but
|
| 177 |
abort startup because the mempool is constructed without its required scheduler.
|
| 178 |
Parser acceptance does not prove these modes operate. This contract records that
|
| 179 |
-
baseline failure; repairing scheduler wiring is a separate runtime change.
|
|
|
|
|
|
|
| 180 |
|
| 181 |
Acceptance: policy_args_tests.cpp (`src/test/policy_args_tests.cpp`, source reference)
|
| 182 |
`boolean_values`, `integer_boundaries`, `carrier_cost_compatibility`, `mode_tokens`,
|
|
@@ -247,3 +262,16 @@ probe failed before testing. GCC sanitizer compilation and execution succeeded.
|
|
| 247 |
The executed campaigns therefore used corpus replay, including generated
|
| 248 |
mutations, with no coverage-guided engine. A coverage-guided libFuzzer campaign
|
| 249 |
remains an explicit evidence gap, and cannot be claimed from these replay counts.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
# Roots policy input compatibility
|
| 2 |
|
| 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.
|
| 21 |
|
| 22 |
**Contract ID: policy-parsing.** Scope: startup input for the Roots-added local
|
| 23 |
policy controls listed below. This contract supplements `runtime-config` and the
|
|
|
|
| 186 |
and the three existing runtime aborts described below. All 160 outcomes matched
|
| 187 |
the source-derived characterization; an expected rejection is not a test failure.
|
| 188 |
|
| 189 |
+
**Historical source runtime gap (repair authorized for L8):** non-off `dustdynamic` modes can parse successfully but
|
| 190 |
abort startup because the mempool is constructed without its required scheduler.
|
| 191 |
Parser acceptance does not prove these modes operate. This contract records that
|
| 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.
|
| 195 |
|
| 196 |
Acceptance: policy_args_tests.cpp (`src/test/policy_args_tests.cpp`, source reference)
|
| 197 |
`boolean_values`, `integer_boundaries`, `carrier_cost_compatibility`, `mode_tokens`,
|
|
|
|
| 262 |
The executed campaigns therefore used corpus replay, including generated
|
| 263 |
mutations, with no coverage-guided engine. A coverage-guided libFuzzer campaign
|
| 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.
|