[archreview R2-11 Phase C] Flip runtime driver parsers to strict (typo'd enum -> BadNodeIdUnknown) #457
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Status: deliberately-deferred behavior change (recorded, not shipped). R2-11 Parts 1+2 shipped (consolidated
TagConfigIntent.Parse, shared strict-capableTagConfigJsonreaders,Inspect()warnings, deploy-gateDeployment:TagConfigValidationMode= Warn default | Error opt-in).What's left (Phase C): flip the runtime driver parsers to strict so a typo'd enum surfaces
BadNodeIdUnknowninstead of a silently wrong-widthGood. This is a genuine behavior change and is intentionally gated on operational rollout: land it only after fleets have runDeployment:TagConfigValidationMode=Errorclean, so no deployed config breaks on the flip.Source of record:
archreview/plans/STATUS.md§"Deferred behavior-change follow-up" + the R2-11 row.Acceptance:
TagConfigValidationMode=Error.BadNodeIdUnknown; add regression coverage across the 6 typed drivers.Shipped in #465 (master
c417502d).Item 2 (flip + regression) — DONE. New
TagConfigJson.TryReadEnumStrict; all six equipment-tag parsers switched to it. A typo'd enum ->TryParsefalse ->EquipmentTagRefResolver.TryResolvefalse ->BadNodeIdUnknown. Coverage: six*EquipmentTagParserStrictnessTestsinverted (Freeze_typo_*->Typo_*_rejects_the_tag+Valid_*_still_parses), aTryReadEnumStrictmatrix, and a driver-level end-to-end proof driving the realAbCipDriver.ReadAsync(Driver_read_of_a_typod_dataType_ref_surfaces_BadNodeIdUnknown). Modbus flips all three enum fields; the rest flipdataType.Item 1 (fleets deploy clean under
Errormode) — operator rollout step, not code. TheDeployment:TagConfigValidationMode=Errordeploy gate is unchanged and unit-proven (AdminOperationsActorTagConfigGateTests): underErrorit folds any typo'd-enum warning into deploy rejects. So a real fleet that deploys clean underErrorhas, by construction, no typo'd enums and is safe on this flip. Running production fleets inErrormode is the operator's pre-flight; it can't be exercised from the dev environment (the docker-dev seed is Galaxy-only/stubbed, i.e. not representative). The golden parity corpus carries no typo'd enums, so the flip is a no-op there.Closing as code-complete; the operational rollout remains the standing recommendation before enabling this on a fleet that has never run
Errormode.