docs: resolve final coherence review nits

This commit is contained in:
Nicholas Dudfield
2026-07-17 07:45:18 +07:00
parent d125ac958a
commit ae8a413acd
4 changed files with 15 additions and 12 deletions

View File

@@ -486,12 +486,15 @@ would make a retained latch's accepted witness unreplayable.
The destination account's SignerList remains the actual remote authority. Its
keys, weights, optional operator signer, and rotation policy are client/operator
configuration that source consensus cannot verify. The committee cap matches
`STTx::maxMultiSigners()`; reserving a separate operator entry reduces the
maximum validator roster usable by that destination account. A lower remote
threshold weakens the claimed custody policy, while a higher threshold may
strand an otherwise sufficient source witness. Target ledger validation and the
returning XPOP are separate from this authorization decision.
configuration that source consensus cannot verify. Export's 32-member source
cap matches the expanded `STTx::maxMultiSigners()` capacity used by network-0
signing rules. A destination without `featureExpandedSignerList` supports only
eight entries and must configure a smaller committee; reserving a separate
operator entry likewise reduces the maximum validator roster usable by that
destination account. A lower remote threshold weakens the claimed custody
policy, while a higher threshold may strand an otherwise sufficient source
witness. Target ledger validation and the returning XPOP are separate from
this authorization decision.
The extended proposal machinery is enabled when either feature needs signed
sidecar fields. Do not make Export depend on RNG availability just because RNG

View File

@@ -4103,7 +4103,7 @@ readEntropySnapshot(ApplyView& view)
sle->getFieldU16(sfEntropyDenominator)};
}
// byteCount must be a multiple of 32.
// Callers normalize byteCount to a multiple of 32.
// minTier is the CALLER'S stated class requirement (a required hook API
// argument — there is deliberately no network-wide default). Count and
// denominator policy is available separately through entropy_status().
@@ -4117,7 +4117,7 @@ fairRng(
if (byteCount > 512)
byteCount = 512;
// force the byte count to be a multiple of 32
// Preserve the caller's 32-byte block invariant defensively.
byteCount &= ~0b11111;
if (byteCount == 0)

View File

@@ -943,8 +943,8 @@ Import::preflight(PreflightContext const& ctx)
};
if (hasInsufficientQuorum(quorum, validationCount))
{
JLOG(ctx.j.warn()) << "Import: xpop did not contain an 80% quorum for "
"the txn it purports to prove. "
JLOG(ctx.j.warn()) << "Import: xpop did not contain the required "
"quorum for the txn it purports to prove. "
<< tx.getTransactionID();
return temMALFORMED;
}

View File

@@ -104,13 +104,13 @@ struct ConsensusParms
* round (e.g. restarting after a crash) enters as proposing=false
* and cannot generate commitments until consensus promotes it to
* proposing — which takes at least one full round of observing.
* Waiting the full 10s just delays the inevitable ZERO-entropy
* Waiting the full 10s just delays the inevitable non-zero Tier-1
* fallback and slows recovery for the restarting node (it can't
* catch up until the survivors close a ledger).
*
* 3s is long enough for commits to propagate on any reasonable
* network, but short enough that a missing-node scenario recovers
* quickly via the ZERO-entropy fallback path.
* quickly via the Tier-1 fallback path.
*/
std::chrono::milliseconds rngPIPELINE_TIMEOUT = std::chrono::seconds{3};