P0: adaptive multivendor SV measurement foundation#46
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 31ded4fe9d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| var samplingEvidence = HasProtectionRateEvidence(evidence); | ||
| if (!evidence.IsSclBound && !samplingEvidence) | ||
| return SvEngineeringScale.RawOnly("The fixed layout is visible, but sampling or SCL evidence is insufficient for engineering scaling."); | ||
|
|
||
| var source = evidence.IsSclBound | ||
| ? SvEngineeringScaleSource.SclBackedLegacy92LeStyle | ||
| : SvEngineeringScaleSource.Legacy92LeStyleStructuralInference; | ||
| var confidence = evidence.IsSclBound | ||
| ? SvEngineeringScaleConfidence.SclBacked | ||
| : SvEngineeringScaleConfidence.Inferred; |
There was a problem hiding this comment.
Keep SCL binding from certifying a scale
For any SCL-bound stream whose 64-byte 4I+4U payload uses device-specific raw multipliers, this condition accepts the stream without sampling evidence and the resolver then applies the fixed 0.001/0.01 conversions while labelling them SclBacked. In this codebase the SCL payload layout supplies element types and offsets, not a scaling multiplier, so a valid but differently scaled bound stream will display incorrect A/V values as SCL-backed engineering measurements. Require explicit scale/CT/VT context (or keep this path raw/provisional) rather than treating binding alone as scale evidence.
AGENTS.md reference: AGENTS.md:L24-L28
Useful? React with 👍 / 👎.
| if (resolvedTimebase.IsResolved || !_timebase.IsResolved) | ||
| _timebase = resolvedTimebase; |
There was a problem hiding this comment.
Discard the old timebase after an unresolved reconfiguration
When an already resolved stream changes confRev, sample rate, or layout and the new evidence cannot resolve a timebase, this guard retains the prior configuration's frequency, samples-per-cycle, and counter wrap indefinitely. The subsequent loop uses that stale wrap to classify smpCnt, and the snapshot continues generating a waveform/phasors using the old cycle length, so a reconfigured live stream can be shown as healthy engineering data or spuriously report gaps rather than reverting to the intended unresolved-timebase state. Reset/replace the cached resolution when the configuration changes or its sampling declarations no longer match.
AGENTS.md reference: AGENTS.md:L7-L7
Useful? React with 👍 / 👎.
Scope
This draft starts the real-device/multivendor Subscriber hardening program using SMU615-style installed-base traffic as the first reference case, without adding vendor-name conditionals to the protocol core.
Implemented in this tranche
smpCnttransition tracking for normal wrap, gaps, duplicates, out-of-order traffic, and trusted restartsBADstatus styling fixesValidation at head
31ded4fSafety boundary
Named vendor identity is not used as a scaling rule. Unknown or conflicting streams remain visible in raw counts. This is an engineering analyzer enhancement, not a conformance or calibrated-test claim.
Still pending after this draft tranche