Skip to content

G2.6 P1.5b: subset-scoped legacy dchg compatibility - #102

Merged
masarray merged 3 commits into
mainfrom
g2.6-p1.5b-subset-compatibility
Aug 28, 2026
Merged

G2.6 P1.5b: subset-scoped legacy dchg compatibility#102
masarray merged 3 commits into
mainfrom
g2.6-p1.5b-subset-compatibility

Conversation

@masarray

Copy link
Copy Markdown
Owner

Goal

Close the remaining P1.5 field blocker without widening the evidence boundary.

The persisted legacy InformationReportProven chain is broader than the later physical A3 dchg proof. The persisted activation/report/envelope member sequence remains unchanged and authoritative as qualification evidence; the later NO-GI dchg proof must authorize only its exact ordered member subset.

Change

Adds MmsGuardedDynamicReportLegacySubsetCompatibilityPolicy and MmsGuardedDynamicReportLegacySubsetRuntimePlanner.

The validator requires:

  • supported profile schema;
  • current identity compatibility;
  • InformationReportProven or stronger state;
  • successful persisted activation + actual InformationReport chain;
  • legacy stored report kind exactly GeneralInterrogation;
  • exact persisted activation/report RCB and DataSet equality;
  • exact persisted activation/report full member-sequence equality;
  • full persisted report sequence inside the accepted envelope;
  • complete separately supplied physical NO-GI dchg evidence;
  • exact stable identity / model fingerprint / profile revision;
  • exact persisted RCB match;
  • nonempty unique physical dchg members;
  • physical dchg members are an ordered subset of BOTH the unchanged persisted report sequence and accepted envelope.

The runtime planner then restricts dynamic planning to only that physical dchg subset, at most one dynamic RCB group, while static reporting retains precedence and all unproven members remain polling.

Important non-change

  • The persisted GI-classified report proof is never rewritten to DataChange.
  • The broader persisted member set is never promoted to dchg authority.
  • No profile save or mutation.
  • No ProductionEligible authorization.
  • No arbitrary free-RCB substitution.
  • Fresh association capability and exact live availability remain mandatory.

Regression coverage

Adds a representative broader stored chain (4 members) with a later 2-member physical dchg subset and verifies:

  • only the 2-member subset becomes dynamic;
  • stored GI profile remains unchanged;
  • reversed/outside subset fails closed;
  • stored activation/report sequence mismatch fails closed;
  • identity mismatch and incomplete physical evidence fail closed;
  • ProductionEligible remains false.

@masarray
masarray merged commit 0965f67 into main Aug 28, 2026
1 check passed

@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: fcfff990d5

ℹ️ 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 dynamicIntent = options.AllowDynamicBrcb || options.AllowDynamicUrcb;

var authorized = dynamicIntent &&
capability.MayAttemptDynamicReports &&

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 authorization on the proven RCB's capability

When another empty RCB satisfies the association capability evaluator but evidence.RcbReference lacks readable RptEna or TrgOps evidence, this association-wide boolean still authorizes the proven RCB. The subsequent restricted hybrid planner considers that RCB dynamically usable based only on empty/free state; checked MmsPersistentReportMonitor, which can define the DataSet and write DatSet before discovering that TrgOps is unavailable, while RunGuardedDynamicReportSessionAsync does not enforce it at all. Require the capability entry for the exact evidence RCB to be a dynamic-write candidate before emitting this plan.

AGENTS.md reference: AGENTS.md:L151-L156

Useful? React with 👍 / 👎.

Comment on lines +273 to +275
var plan = MmsHybridReportAcquisitionPlanner.Build(
catalog,
requestedSignals,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve evidence order when building the dynamic plan

For valid physical evidence whose member order differs from lexical signal order—for example evidence [Z, A] with both signals requested—this call delegates to MmsHybridReportAcquisitionPlanner.PlanDynamicCoverage, which sorts resolved members by SignalKey and emits [A, Z]. ValidateDynamicSegments then correctly rejects that sequence and falls back to polling, so legitimate subset evidence can never enable dynamic reporting unless its DataSet order happens to match lexical catalog order. Reorder the resolved/requested inputs by evidence.MemberReferences before building the dynamic segment.

AGENTS.md reference: AGENTS.md:L140-L145

Useful? React with 👍 / 👎.

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