Skip to content

release: promote physical-proven P0.7 finishing stack to main - #345

Merged
masarray merged 53 commits into
mainfrom
release-candidate/p0.7-finishing-r7-f8306ec
Sep 20, 2026
Merged

masarray merged 53 commits into
mainfrom
release-candidate/p0.7-finishing-r7-f8306ec

Conversation

@masarray

@masarray masarray commented Sep 20, 2026 •

Copy link
Copy Markdown
Owner

Purpose

Promote the exact physically accepted P0.7 finishing stack to main without changing its tested tree.

Immutable candidate

  • candidate SHA: f8306eca77c08a797a60db1219431c18ff84d2b4
  • good finishing base: 0d0b9204d6637e3d62e2eee94000386ae43cd0e9
  • engine lock: 648124097621046f5f127ceb1cf853fea54db730
  • original physically-good R7 artifact: 10599133416
  • candidate R7 artifact: 10601132063

Current main is an ancestor of the good finishing base; there is no divergent main-side source change to reconcile.

Candidate validation already green

Merge policy

Use a normal merge commit, never squash/rebase. The merge is acceptable only if:

  1. expected PR head is still exactly f8306eca77c08a797a60db1219431c18ff84d2b4;
  2. merged commit tree is byte-for-byte identical to the candidate tree;
  3. engine lock remains 648124097621046f5f127ceb1cf853fea54db730;
  4. post-merge main workflows remain green.

Rollback anchor before this promotion:
backup/main-pre-p0.7-release-20260920 -> a69469a61893f8a3d49012de583f592e3e1e1105.

Release candidate anchor:
release-candidate/p0.7-finishing-r7-f8306ec -> f8306eca77c08a797a60db1219431c18ff84d2b4.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f8306eca77

ℹ️ 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".

Comment on lines +257 to +258
var liveDirectory = discovery.DataSetDirectories.SingleOrDefault(result =>
result.IsSuccess && SameStaticReference(result.DataSetReference, dataSetReference));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Verify SCL DataSet order against the live IED

In the SCL-assisted workflow, ConnectUsingSclAsync fills discovery.DataSetDirectories using BuildModelDataSetDirectories(_liveModel, "TrustedScl"), so liveDirectory here comes from the same SCL model as modelDirectory. The new comparison therefore always self-validates instead of checking the connected IED; if the loaded SCL has stale membership or ordering, the RCB is armed and report values are positionally assigned to the wrong signals. Preserve a real GetDataSetDirectoriesAsync verification or equivalent independently acquired live evidence before arming.

AGENTS.md reference: AGENTS.md:L145-L149

Useful? React with 👍 / 👎.

Comment on lines +70 to +74
if (TryNormalizeBoolean(normalizedValue, out var boolean) ||
(IsBooleanDataType(dataType) &&
TryNormalizeBooleanCode(normalizedValue, out boolean)))
{
return boolean ? "True [1]" : "False [0]";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Normalize bracketed booleans before detecting report edges

For hybrid monitoring, polling starts immediately and formats a Boolean as True/False, while the first report now formats the same state as True [1]/False [0]. HasExactSemanticEdge normalizes the former as bool:1 but the latter as state:1, so an unchanged first report increments the sequence and can emit a false SOE event. Make the edge normalizer treat these representations as equivalent, or use the same Boolean representation for both polling and reporting.

AGENTS.md reference: AGENTS.md:L153-L153

Useful? React with 👍 / 👎.

Comment on lines +130 to +132
targetDoType.SetAttributeValue("cdc", "INS");
stVal.SetAttributeValue("bType", "INT32");
stVal.Attribute("type")?.Remove();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Gate the counter rewrite on authoritative type evidence

Any live model containing the literal MPLS_GGIO1.CBClsCounter path is rewritten to INS/INT32, regardless of the model's actual CDC and attribute type; the added regression fixture even supplies InferredCdc = "SPS" and still expects this rewrite. On another device or firmware where that object is legitimately Boolean/SPS, saving SCL corrupts its engineering schema and subsequently removes its non-integer instance value. Apply this correction only when authoritative device/type evidence proves the integer semantics rather than using the object name alone.

AGENTS.md reference: AGENTS.md:L153-L153

Useful? React with 👍 / 👎.

@masarray
masarray merged commit 4305f11 into main Sep 20, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant