Skip to content

test(sccm): prepare hierarchy and replication corpus - #379

Merged
adamgell merged 28 commits into
codex/parser-family-skeletonfrom
codex/sccm-331-hierarchy-replication-corpus
Jul 31, 2026
Merged

test(sccm): prepare hierarchy and replication corpus#379
adamgell merged 28 commits into
codex/parser-family-skeletonfrom
codex/sccm-331-hierarchy-replication-corpus

Conversation

@adamgell

@adamgell adamgell commented Jul 31, 2026

Copy link
Copy Markdown
Owner

Tracks #331

Scope

Preparation-only hierarchy/replication contract corpus. This does not add a production reducer or native collection path. It keeps role-local evidence independent and hands any later cross-side work to #333.

Fixture matrix

  • healthy exact link/message flow
  • two same-minute sender failures for distinct CHD/SEC targets
  • receiver terminal failure
  • backlog/retry without promoted causality
  • recovery under one exact key
  • unknown/invalid offset
  • rotation split that cannot form a logical record
  • absent remote source as coverage
  • incomplete evidence
  • topology/key mismatch that remains unlinked

All fixtures are synthetic/sanitized. The manifest proposal preserves origin/target role and host provenance, explicit coverage states, rotation lineage, versioned profiles, cited line ranges, bounded follow-up requests, and deterministic ordering. Multi-target scenarios now bind each transaction target to an explicitly declared topology target.

TDD evidence

  • Initial corpus test was red because the fixture root did not exist.
  • A focused topology test was red because CHD/SEC transactions were backed by an ambiguous MULTI target.
  • The smallest correction declares a primary target plus explicit additional target and rejects transaction keys outside the manifest topology.

Verification

  • cargo test --locked -p cmtraceopen-parser --test sccm_server_hierarchy_and_replication_fixture_contract — 7 passed
  • cargo test --locked -p cmtraceopen-parser --test sccm_server_intake_fixture_contract — 1 passed
  • cargo test --locked -p cmtraceopen-parser --test sccm_spine_contract — 61 passed
  • cargo test --locked -p cmtraceopen-parser — 661 tests listed, green
  • cargo clippy --locked -p cmtraceopen-parser --all-targets -- -D warnings — green
  • cargo check --locked -p cmtraceopen-parser --target wasm32-unknown-unknown — green
  • npm exec -- tsc --noEmit — green
  • Rust 1.88 scoped rustfmt --check, jq empty, and git diff --check — green

Dependencies and limits

Built from merged codex/parser-family-skeleton head 25b37333affde22b4ef8a19f4a5f3d89c082b599. Production implementation remains blocked on stable #318/#335 interfaces and review. No live Windows/SCCM acceptance is claimed. Issue remains open after this preparation slice.

Review state

Draft pending exact-head CodeRabbit and independent review. Do not merge on compilation alone.

Summary by CodeRabbit

  • Tests

    • Added comprehensive validation for SCCM hierarchy and replication scenarios, including healthy transfers, failures, retries, recovery, incomplete evidence, rotation boundaries, timestamp issues, and topology mismatches.
    • Added checks for artifact provenance, coverage, transaction identity, confidence, state progression, and safe handling of unsupported correlations or fabricated data.
    • Added synthetic scenario fixtures covering sender, receiver, remote-source, and site-token conditions.
  • Documentation

    • Added guidance for preparing and interpreting hierarchy-and-replication evidence, including accepted sources, required metadata, recovery conditions, and follow-up requests.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Added a synthetic SCCM hierarchy-and-replication corpus, preparation rules, physical evidence, expected results, and comprehensive contract tests for valid scenarios and adversarial mutations.

Changes

SCCM hierarchy and replication corpus

Layer / File(s) Summary
Corpus contract and preparation rules
docs/sccm/preparation/issue-331-hierarchy-replication-corpus.md, crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/README.md, crates/cmtraceopen-parser/Cargo.toml
Defines evidence scope, topology and state rules, confidence handling, bounded requests, prohibited interpretations, and the test-only hashing dependency.
Scenario manifests and expected results
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/*
Adds synthetic manifests, expected outputs, and rotation evidence for healthy, failed, retried, recovered, incomplete, absent-source, offset, topology, rotation, and token scenarios.
Fixture loading and contract validation
crates/cmtraceopen-parser/tests/sccm_server_hierarchy_and_replication_fixture_contract.rs
Adds fixture loading, candidate grouping, evidence matching, semantic derivation, schema validation, topology checks, timestamp checks, confidence gates, and request validation.
Scenario and mutation regression coverage
crates/cmtraceopen-parser/tests/sccm_server_hierarchy_and_replication_fixture_contract.rs
Adds scenario tests and fail-closed mutation tests for identity, provenance, coverage, causal claims, requests, rotations, timestamps, and fabricated evidence.

Estimated code review effort: 4 (Complex) | ~60 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 36.36% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: preparing a synthetic SCCM hierarchy and replication test corpus.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands.

@adamgell

Copy link
Copy Markdown
Owner Author

@coderabbitai review\n\nPlease review exact head e1c65146a9f3d479278d50386e7335a17bbb9d7b. Treat any skipped, rate-limited, status-only, or stale-head response as no approval.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

@adamgell I will review PR #379 at exact head e1c65146a9f3d479278d50386e7335a17bbb9d7b. A skipped, rate-limited, status-only, or stale-head result is not an approval.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@adamgell

Copy link
Copy Markdown
Owner Author

@coderabbitai review\n\nRetry the substantive review at exact head e1c65146a9f3d479278d50386e7335a17bbb9d7b; the prior attempt was rate-limited/status-only and is not approval.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

@adamgell I will run a substantive review for PR #379 at exact head e1c65146a9f3d479278d50386e7335a17bbb9d7b. I will not treat the prior rate-limited or status-only result as approval.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@adamgell adamgell added test Testing related sccm SCCM/ConfigMgr related parser Log parser related enhancement New feature or request labels Jul 31, 2026
@adamgell adamgell added this to the SCCM End-to-End Diagnostics milestone Jul 31, 2026

@adamgell adamgell left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Independent exact-head review — BLOCKED

Reviewed exact 25b37333affde22b4ef8a19f4a5f3d89c082b599..e1c65146a9f3d479278d50386e7335a17bbb9d7b. Keep PR #379 draft/open.

Four reproduced contract blockers are attached inline:

  • Physical evidence host handles are only prefix-checked and are not bound to origin or target topology, so incompatible-host evidence can retain exact topology and High confidence.
  • Coverage-gap IDs need not resolve to a declared non-captured manifest artifact; fabricated IDs pass the current assert_ne check.
  • The reorder test compares two BTreeSet values built from the same elements, so it cannot prove byte-identical candidate output.
  • The required negative for a generic CCM message containing a site-code-looking string is absent.

Verification at the exact head: focused #331 7/7, full parser suite, server intake, and spine pass; default strict Clippy passes; Rust 1.88 wasm32, TypeScript, owned rustfmt, and diff checks pass. Rust 1.88 strict Clippy reports the same 59 unrelated base findings and full-workspace formatting reports the documented unrelated baseline; neither touches owned files.

CodeRabbit has not supplied a substantive review: its responses are rate-limited or status-only and therefore are not approval. Require permanent adversarial regressions, corrected exact-head gates, fresh substantive CodeRabbit, and a different independent PASS before readiness or merge.

@adamgell

Copy link
Copy Markdown
Owner Author

Exact-head #331 review-fix evidence

Pushed bc457feff93ab384b5f77815510855fab1b4a61d and resolved only the four handled P1 threads from the independent exact-head review.

Scope and dependency state

RED → GREEN

  • Fresh checkout exposed the remote branch at 4/7 because six target-side synthetic evidence files lived under ignored target/ directories and were never tracked. The files are now committed explicitly and their manifest byte counts are enforced.
  • Eight adversarial mutations were RED: origin evidence on a target host, target evidence on the origin host, additional-target evidence on the primary host, fabricated gap ID, and missing/duplicate/unknown/unknown-field coverage rows. All now fail closed.
  • Reversed candidate output was RED because grouping was input-order dependent. Exact-key groups now serialize canonically, and a real same-key numbered-rotation provenance collision keeps both facts.
  • The plan-required generic CCM CHD message was RED on missing corpus coverage. generic-site-token now normalizes as raw CCM evidence but produces zero exact hierarchy candidates/transactions.

Fixture matrix

Eleven synthetic/sanitized scenarios: healthy, sender failure, receiver failure, backlog/retry, recovery, absent remote source, invalid offset, topology mismatch, rotation split, capped/incomplete, and generic site-code token. Origin/primary/additional-target host direction, exact coverage closure, provenance collision, and no-time-only/cross-side cause boundaries are pinned.

Verification

  • cargo test --locked -p cmtraceopen-parser --test sccm_server_hierarchy_and_replication_fixture_contract8/8
  • cargo test --locked -p cmtraceopen-parser --test sccm_server_intake_fixture_contract1/1
  • cargo test --locked -p cmtraceopen-parser --test sccm_spine_contract61/61
  • cargo test --locked -p cmtraceopen-parser — pass
  • cargo clippy --locked -p cmtraceopen-parser --all-targets -- -D warnings — pass
  • cargo +1.88.0 check --locked -p cmtraceopen-parser --target wasm32-unknown-unknown — pass
  • TypeScript tsc --noEmit, all fixture JSON, owned-file rustfmt, and git diff --check — pass
  • Rust 1.88 strict Clippy remains the same 59 unrelated uninlined_format_args baseline; full-workspace rustfmt remains the same 17 unrelated files. Neither includes SCCM Server: diagnose hierarchy and replication workflows #331-owned files.

@adamgell

Copy link
Copy Markdown
Owner Author

@coderabbitai review

Please perform a fresh substantive review of exact head bc457feff93ab384b5f77815510855fab1b4a61d, including the host/topology binding, exact coverage-gap closure, canonical collision-preserving candidate bytes, generic CCM site-token negative, and newly tracked target-side fixture assets. This PR remains draft/unmerged pending that exact-head result.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

@adamgell I will perform a fresh substantive review of PR #379 at exact head bc457feff93ab384b5f77815510855fab1b4a61d.

I will review the specified host/topology binding, coverage-gap closure, canonical collision preservation, generic CCM site-token negative case, and target-side fixture assets. This request is not an approval.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@adamgell adamgell left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Independent exact-head review — BLOCKED

Reviewed exact 25b37333affde22b4ef8a19f4a5f3d89c082b599..bc457feff93ab384b5f77815510855fab1b4a61d. Keep PR #379 draft/open.

The four prior P1s are closed at this SHA: physical producer hosts are bound to origin/target topology including the additional-target site/host mapping; gap IDs close against one exact typed non-captured manifest/coverage row; candidate facts are canonically serialized byte-for-byte across reordered inputs while distinct rotation provenance survives; and the generic CCM site-token fixture normalizes as evidence but creates no hierarchy candidate. The six formerly ignored target-side .log assets are tracked, synthetic/sanitized, normalized, and cited by exact evidence references.

A new executable P1 blocks readiness: the invalidOffset artifact-request arm is not bound to the request source, direction, basename, or declared target topology. Rewriting the clock-offset request to server-hierarchy-control / both / XYZ / replmgr.log left the focused request test and the entire 9-test disposable probe run green. Inline reproduction: #379 (comment). The exact source/role/direction/site/basename request must be derived from the invalid-offset artifacts, and both must mean the bounded union of origin and target.

Two secondary exactness items are attached: the README omits tracked sender.lo_, and documentation assertions embed LF-only line breaks. The authenticated CodeRabbit CLI review found both plus the request-binding issue. I independently reproduced the hard blocker. Hosted CodeRabbit review 4825780195 is a real formal APPROVED review object on exact bc457fe and is not stale, but its no-finding result is superseded by the executable mutation.

Fresh clean-head verification: #331 8/8, server intake 1/1, spine 61/61, full parser 662/662, active Rust strict Clippy, Rust 1.88 wasm32, TypeScript, 22 JSON files, owned rustfmt, and range diff checks pass. Rust 1.88 strict Clippy has the exact base 59-finding baseline and full workspace formatting has the exact base 17-file/24-hunk baseline; neither includes #331 files.

Require a separate fix owner, permanent RED-to-GREEN request-provenance tests, fresh substantive CodeRabbit readback, and a different independent exact-head review. Do not merge, mark ready, close #331, claim production reducers, or claim live Windows acceptance.

@adamgell

Copy link
Copy Markdown
Owner Author

🟢 Correction ownership claimed for the current #331 review round. I am working only in /Users/Adam.Gell/repo/cmtraceopen/.worktrees/sccm-331-request-provenance-fix on new branch codex/sccm-331-request-provenance-fix, based exactly on blocked SHA bc457feff93ab384b5f77815510855fab1b4a61d. Scope is the three unresolved review threads: fail-closed invalid-offset request provenance, exact rotated-source inventory, and line-ending-stable boundary assertions. Test-first RED/GREEN evidence and aggregate gates will be posted before any guarded non-force fast-forward of the PR branch. PR stays draft/open.

@adamgell

Copy link
Copy Markdown
Owner Author

🟢 #331 round-2 correction claimed in a fresh isolated worktree from exact head edd6461c6635a461a6b87884c44bae937e0531fa. I am reproducing the current bounded-host/path and closed-grammar findings with permanent focused tests before changing production code. Push remains gated on focused + intake + spine + full parser + strict Clippy + Rust 1.88 wasm + TypeScript + fixture JSON + scoped format/diff/clean verification.

@adamgell

Copy link
Copy Markdown
Owner Author

#331 round-2 correction pushed

Exact head: 142ff8d3aea0121b1ca080c70dc1448e13552161

Commits:

  • 04adaf83 — permanent RED regressions; focused result was 21 passed / 4 failed for the intended host, path, key/profile, and disposition/terminal gaps.
  • 142ff8d3 — smallest GREEN: 128-byte bounded safe server payloads; 512-byte total / 128-byte segment relative paths; shared SCCM: add shared diagnostic contracts and source catalog #318 normalize_key grammar for message/link/site; exact profile/phase/disposition/terminal admission and disposition-terminal coherence before candidate creation.

Verification at this head:

  • cargo test --locked -p cmtraceopen-parser --test sccm_server_hierarchy_and_replication_fixture_contract — 25/25
  • cargo test --locked -p cmtraceopen-parser --test sccm_server_intake_fixture_contract — 1/1
  • cargo test --locked -p cmtraceopen-parser --test sccm_spine_contract — 136/136
  • cargo test --locked -p cmtraceopen-parser — 754/754, exit 0
  • cargo clippy --locked -p cmtraceopen-parser --all-targets -- -D warnings — pass
  • cargo +1.88.0 check --locked -p cmtraceopen-parser --target wasm32-unknown-unknown — pass
  • npx tsc --noEmit — pass
  • jq empty over owned hierarchy fixtures — 22/22 JSON
  • Rust 1.88 scoped rustfmt, range git diff --check, and clean worktree — pass

Global cargo +1.88.0 fmt --check --all still reports only the inherited 17 non-#331 files; the owned #331 contract is clean. Both handled P1 threads were replied to and resolved; current unresolved thread count is 0.

The PR stays draft/open. Fresh substantive exact-head CodeRabbit and a different independent exact-head re-review remain required. No native collection, production reducer expansion, merge/readiness, or live-Windows claim is made.

@adamgell

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

Please perform a fresh substantive review of exact head 142ff8d3aea0121b1ca080c70dc1448e13552161 against prior head edd6461c6635a461a6b87884c44bae937e0531fa. Verify that the permanent RED/GREEN correction bounds every candidate host/path provenance value and closes exact profile/message/link/site/disposition/terminal grammar before candidate creation, while preserving the #331 preparation-only and #333 no-correlation boundaries. A draft skip, stale-head response, status-only response, rate limit, or prior approval is not approval for this exact head.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='142ff8d3aea0121b1ca080c70dc1448e13552161'
base='edd6461c6635a461a6b87884c44bae937e0531fa'
contract='crates/cmtraceopen-parser/tests/sccm_server_hierarchy_and_replication_fixture_contract.rs'
document='docs/sccm/preparation/issue-331-hierarchy-replication-corpus.md'

printf '%s\n' '== exact commit verification =='
printf 'checked-out HEAD: '; git rev-parse HEAD
printf 'requested head: '; git rev-parse "$head"
printf 'requested base: '; git rev-parse "$base"
printf 'merge base: '; git merge-base "$base" "$head"
printf 'base ancestor of head: '; git merge-base --is-ancestor "$base" "$head" && echo yes

printf '%s\n' '== changed files =='
git diff --name-status "$base..$head"

printf '%s\n' '== range summary =='
git diff --stat "$base..$head"

printf '%s\n' '== contract function map =='
ast-grep outline "$contract" --items all --type function --view signatures

printf '%s\n' '== changed validation, grammar, and regression references =='
git diff --no-ext-diff --unified=18 "$base..$head" -- "$contract" "$document" \
  | rg -n -C 10 -i \
    'safe_server_handle|relative_path|path.*segment|candidate|provenance|normalize_key|profile|message|link|site|disposition|terminal|confidence|mutation|correlation|`#331`|`#333`'

printf '%s\n' '== current relevant symbols =='
rg -n -C 7 -i \
  'fn (safe_server_handle|safe_relative_path|artifact_has_exact_public_provenance|artifact_is_exact_candidate|validate.*candidate|normalize.*key|validate.*profile|validate.*disposition|validate.*terminal)|MAX_.*(HANDLE|PATH|SEGMENT)|EXACT_SOURCE_VERSION|disposition|terminal|cross.side|correlation|`#333`' \
  "$contract" "$document"

printf '%s\n' '== range whitespace =='
git diff --check "$base..$head"

Length of output: 141060


🏁 Script executed:

#!/bin/bash
set -euo pipefail

contract='crates/cmtraceopen-parser/tests/sccm_server_hierarchy_and_replication_fixture_contract.rs'

printf '%s\n' '== provenance and candidate admission helpers =='
sed -n '72,360p' "$contract"

printf '%s\n' '== candidate construction and serialization =='
sed -n '420,610p' "$contract"

printf '%s\n' '== new permanent regressions =='
sed -n '3560,3790p' "$contract"

printf '%s\n' '== shared key-normalization declarations and implementation =='
rg -n -C 10 --type rust \
  'pub (fn )?normalize_key\b|fn normalize_key\b|enum SccmCorrelationKeyKind|enum SccmKeyConfidence' \
  crates

printf '%s\n' '== every HierarchyCandidateFact field assignment =='
rg -n -C 5 \
  'HierarchyCandidateFact \{|artifact_id:|producer_host_handle:|relative_path:|path_fingerprint:|rotation_kind:|rotation_value:|rotation_lineage_id:' \
  "$contract"

printf '%s\n' '== candidate provenance field validation references =='
rg -n -C 4 \
  'producerHostHandle|relativePath|sanitizedSourcePath|pathFingerprint|lineageId|rotation.*value|rotationValue|safe_(opaque|segmented|server)' \
  "$contract"

Length of output: 67790


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='edd6461c6635a461a6b87884c44bae937e0531fa'
head='142ff8d3aea0121b1ca080c70dc1448e13552161'
contract='crates/cmtraceopen-parser/tests/sccm_server_hierarchy_and_replication_fixture_contract.rs'
keys='crates/cmtraceopen-parser/src/sccm/keys.rs'

printf '%s\n' '== shared SCCM key normalization rules =='
ast-grep outline "$keys" --items all --type function --view signatures
sed -n '1,155p' "$keys"

printf '%s\n' '== topology and artifact-schema provenance validation =='
sed -n '1129,1395p' "$contract"

printf '%s\n' '== complete exact diff =='
git diff --no-ext-diff --unified=8 "$base..$head" -- "$contract"

printf '%s\n' '== exact `#331` and `#333` boundary assertions =='
sed -n '1430,1490p;2048,2065p' "$contract"
rg -n -C 3 -i '`#331`|`#333`|cross-side|correlation|time alone|native collection|production' \
  docs/sccm/preparation/issue-331-hierarchy-replication-corpus.md "$contract"

printf '%s\n' '== repository status =='
git status --short

Length of output: 58133


🏁 Script executed:

#!/bin/bash
set -euo pipefail

sed -n '319,415p' crates/cmtraceopen-parser/src/sccm/keys.rs

Length of output: 3826


@adamgell Full review completed for exact head 142ff8d3aea0121b1ca080c70dc1448e13552161 against edd6461c6635a461a6b87884c44bae937e0531fa.

I found no blocking issue in the reviewed range.

The correction closes the requested controls:

  • safe:server: host-handle payloads use the 128-byte bounded opaque-ID rule.
  • Candidate physical paths have a 512-byte total limit and a 128-byte segment limit.
  • Candidate admission validates serialized host, path, fingerprint, rotation, and lineage provenance before it constructs a candidate fact.
  • Message and link IDs use the shared bounded opaque-ID grammar.
  • Site codes use the shared exact three-character grammar.
  • The parser rejects values that require normalization.
  • The parser admits only the exact profile, declared phase, declared disposition, and coherent disposition/terminal combinations.
  • The new regressions reject oversized host and path values and invalid key, profile, disposition, and terminal inputs.

The #331 boundary remains intact. The contract remains preparation-only. It does not enable native collection or production correlation. It requires #333 correlation to remain unperformed and rejects time-only eligibility.

This result applies only to exact head 142ff8d3aea0121b1ca080c70dc1448e13552161.

You are interacting with an AI system.

@adamgell

Copy link
Copy Markdown
Owner Author

Independent exact-head review claimed at 142ff8d3aea0121b1ca080c70dc1448e13552161 in fresh detached worktree /Users/Adam.Gell/repo/cmtraceopen/.worktrees/review-331-142ff8-root.

I will not edit or push. Review scope is the corrected host/path bounds, shared key grammar, exact profile/phase/disposition/terminal admission, coverage/rotation/topology provenance, deterministic output, source-card-only boundary, and no #333 causal/correlation claim. Prior stale approvals and status-only CodeRabbit output are not clearance. PR remains draft/open.

@adamgell adamgell left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Independent exact-head review — BLOCKED

Reviewed exact a8a367c661cd17bd1e73b87724c143ec8565ffc7...142ff8d3aea0121b1ca080c70dc1448e13552161 in a fresh detached worktree. Keep PR #379 draft/open.

Three P1 contract roots are attached inline:

  • Candidate serialization drops the shared usable timestamp provenance after filtering for normalized UTC, so a future consumer cannot independently validate cross-host ordering.
  • Lexically safe producer handles and path fingerprints can still carry identity-bearing payloads and are serialized verbatim.
  • Equal UTC instants across different host artifacts pass as usable ordered evidence and preserve the High ceiling; only strictly reversed UTC is rejected.

Disposable evidence was test-first and then removed. Two narrow candidate probes ran 2 passed / 2 failed: healthy candidate facts had no timestampOrdering/utcMillis, and safe:server:RealUser plus synthetic:RealUser reached output. A direct target despool mutation made receive equal in UTC to the origin sender; the plan-critical transaction validator still passed 1/1 as usable. The review worktree is restored clean at the exact SHA.

Committed-head gates are otherwise green: #331 focused 25/25; server intake 1/1; spine 136/136; full parser 754/754; strict all-target Clippy; Rust 1.88 wasm32; TypeScript no-emit; frontend 40/524; 22/22 JSON files; owned-file Rust 1.88 rustfmt; diff/cleanliness. Workspace rustfmt still reports the inherited 17-file non-#331 baseline.

Require permanent RED-to-GREEN regressions for all three roots, a fresh substantive CodeRabbit review at the resulting exact SHA, and a different independent exact-head PASS. This remains preparation-only: no production reducer/native collector and no live Windows acceptance claim.

@adamgell

Copy link
Copy Markdown
Owner Author

@coderabbitai review

Please run a fresh substantive hosted review of exact head 142ff8d3aea0121b1ca080c70dc1448e13552161. Include the candidate timestamp-provenance handoff, public provenance de-identification, and equal-UTC cross-host chronology gates reproduced in independent review 4829355278. A skipped, incremental/status-only, rate-limited, or stale-head response is not approval.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

@adamgell I will run a fresh substantive hosted full review for exact head 142ff8d3aea0121b1ca080c70dc1448e13552161.

The review will include the candidate timestamp-provenance handoff, public provenance de-identification, and equal-UTC cross-host chronology gates from independent review 4829355278.

A skipped, incremental, status-only, rate-limited, or stale-head result is not approval.

✅ Action performed

Full review finished.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 14 minutes.

@adamgell

Copy link
Copy Markdown
Owner Author

🟢 #331 correction round claimed from exact 142ff8d3aea0121b1ca080c70dc1448e13552161.

Owner/worktree: /Users/Adam.Gell/repo/cmtraceopen/.worktrees/sccm-331-142f-round3
Local branch: codex/sccm-331-142f-round3
PR branch target after verification: codex/sccm-331-hierarchy-replication-corpus

Prep-only owned scope: the #331 hierarchy/replication contract test, synthetic fixture metadata/evidence only if a focused regression requires it, and the #331 preparation documentation. No production reducer, shared SCCM model, native capture, correlation code, or live Windows claim.

TDD starts with permanent RED regressions for all three exact-head P1 roots: preserve shared timestamp provenance in candidate facts; reject identity-bearing safe-looking host/fingerprint payloads through explicit versioned/domain-separated construction; and treat equal UTC as ordered only within one artifact with strictly forward physical lines. No push occurs until focused and aggregate gates pass; the PR remains draft/open.

@adamgell

Copy link
Copy Markdown
Owner Author

🟢 #331 correction pushed at exact head da2b4ca2436bb70c2bb03f09c31f69f493f91930 (draft/open).

RED 4067dc10d0abe82179c0341fb27c683455672486: focused contract reproduced exactly 3 failures with the prior 25 tests still green:

  • candidate fact omitted the shared timestamp object;
  • safe:server:RealUser / synthetic:RealUser reached serialized candidate output;
  • equal UTC across sender/despool artifacts retained usable/high ordering.

GREEN da2b4ca2436bb70c2bb03f09c31f69f493f91930:

  • candidate facts serialize the exact shared SccmTimestamp shape;
  • producer-host and path-fingerprint values become versioned, domain-separated SHA-256 provenance tokens before serialization;
  • usable equal UTC now requires the same artifact plus a strictly forward physical line range; distinct-artifact equality fails closed;
  • added synthetic equal-instant positive/negative evidence only; no production reducer/native collector/correlation/live-Windows claim.

Verification:

  • cargo test --locked -p cmtraceopen-parser --test sccm_server_hierarchy_and_replication_fixture_contract — PASS 28/28
  • cargo test --locked -p cmtraceopen-parser — PASS
  • cargo clippy --locked -p cmtraceopen-parser --all-targets -- -D warnings — PASS
  • cargo check --locked -p cmtraceopen-parser --target wasm32-unknown-unknown — PASS
  • owned-file Rustfmt and git diff --check — PASS; worktree clean
  • cargo fmt --check --all — inherited workspace baseline remains RED in unrelated ESP/Tauri files; the owned SCCM Server: diagnose hierarchy and replication workflows #331 test file is clean and was not broadened.

Fresh exact-head hosted CodeRabbit and independent review are required before clearance.

@adamgell

Copy link
Copy Markdown
Owner Author

@coderabbitai review

Please run a fresh substantive hosted full review of exact head da2b4ca2436bb70c2bb03f09c31f69f493f91930 against prior reviewed head 142ff8d3aea0121b1ca080c70dc1448e13552161. Verify all three permanent RED-to-GREEN roots: exact shared timestamp provenance in candidate facts; versioned/domain-separated de-identification of safe-looking host/fingerprint payloads; and equal UTC usable only on the same artifact with strictly forward physical lines. Confirm the slice stays preparation-only with no production reducer, native collection, cross-side causal claim, or live-Windows acceptance. A skipped, incremental/status-only, rate-limited, or stale-head response is not approval.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

@adamgell I will run a fresh substantive full review of exact head da2b4ca2436bb70c2bb03f09c31f69f493f91930 against 142ff8d3aea0121b1ca080c70dc1448e13552161.

The review will verify the three RED-to-GREEN corrections and the preparation-only boundaries. A skipped, incremental, status-only, rate-limited, or stale-head result will not count as approval.

✅ Action performed

Full review finished.

@adamgell

Copy link
Copy Markdown
Owner Author

Independent exact-head review started in a fresh detached, read-only worktree at da2b4ca2436bb70c2bb03f09c31f69f493f91930 (base a8a367c661cd17bd1e73b87724c143ec8565ffc7). I did not author #331 and will make no edits or pushes. Review will independently reproduce the three prior P1 roots and positive guards: retained timestamp provenance on candidate facts, fail-closed identity-bearing host/fingerprint serialization, and no equal-UTC ordering across distinct hosts. Focused hierarchy tests plus parser/Clippy/Rust 1.88 wasm32/privacy/format gates will run before a final fetched-remote/PR-head guard and formal PASS/BLOCK.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/manifest.json`:
- Line 10: The healthy-02-sender manifest entry must match the supplied physical
artifact. Update its relativePath from the current sender.log location to the
evidence path containing origin/lo_/sender.lo_, and change the rotation metadata
from current to the corresponding lo_ rotation while preserving the artifact’s
identity and other fields.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4e4abcf8-874c-475c-8307-3c3bc59b77b4

📥 Commits

Reviewing files that changed from the base of the PR and between a8a367c and da2b4ca.

⛔ Files ignored due to path filters (21)
  • Cargo.lock is excluded by !**/*.lock
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/absent-remote-source/evidence/server-hierarchy-transfer/origin/current/sender.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/backlog-retry/evidence/server-hierarchy-control/origin/current/replmgr.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/clock-offset-unknown/evidence/server-hierarchy-transfer/origin/current/sender.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/clock-offset-unknown/evidence/server-hierarchy-transfer/target/current/despool.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/generic-site-token/evidence/server-hierarchy-transfer/origin/current/sender.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-control/origin/current/replmgr.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-control/origin/equal-instant/replmgr.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-control/target/current/rcmctrl.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-transfer/origin/current/sender.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-transfer/target/current/despool.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-transfer/target/equal-instant/despool.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/incomplete/evidence/server-hierarchy-control/origin/current/replmgr.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/receiver-processing-failure/evidence/server-hierarchy-transfer/origin/current/sender.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/receiver-processing-failure/evidence/server-hierarchy-transfer/target/current/despool.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/recovery/evidence/server-hierarchy-transfer/origin/current/sender.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/recovery/evidence/server-hierarchy-transfer/target/current/despool.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/rotation-boundary/evidence/server-hierarchy-transfer/origin/current/sender.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/sender-failure/evidence/server-hierarchy-transfer/origin/current/sender.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/topology-mismatch/evidence/server-hierarchy-transfer/origin/current/sender.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/topology-mismatch/evidence/server-hierarchy-transfer/target/current/despool.log is excluded by !**/*.log
📒 Files selected for processing (28)
  • crates/cmtraceopen-parser/Cargo.toml
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/README.md
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/absent-remote-source/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/absent-remote-source/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/backlog-retry/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/backlog-retry/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/clock-offset-unknown/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/clock-offset-unknown/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/generic-site-token/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/generic-site-token/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-transfer/origin/lo_/sender.lo_
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/incomplete/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/incomplete/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/receiver-processing-failure/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/receiver-processing-failure/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/recovery/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/recovery/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/rotation-boundary/evidence/server-hierarchy-transfer/origin/lo_/sender.lo_
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/rotation-boundary/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/rotation-boundary/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/sender-failure/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/sender-failure/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/topology-mismatch/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/topology-mismatch/manifest.json
  • crates/cmtraceopen-parser/tests/sccm_server_hierarchy_and_replication_fixture_contract.rs
  • docs/sccm/preparation/issue-331-hierarchy-replication-corpus.md

@adamgell adamgell left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

INDEPENDENT EXACT-HEAD REVIEW: PASS

Reviewed fresh detached head da2b4ca2436bb70c2bb03f09c31f69f493f91930 against base a8a367c661cd17bd1e73b87724c143ec8565ffc7. I did not author #331, made no edits or pushes, and immediately before this verdict confirmed detached local HEAD, fetched origin/codex/sccm-331-hierarchy-replication-corpus, and PR head all match the exact SHA.

Findings: none actionable.

The three prior P1 roots and positive guards are closed:

  • candidate facts serialize the exact shared timestamp object (originalDisplay, offsetMinutes, utcMillis, orderingState), retaining provenance needed by later consumers;
  • safe-looking identity inputs are never serialized raw: producer-host and path-fingerprint inputs use fixed sccm-provenance:v1 domain-separated SHA-256 tokens, with distinct domains producing distinct fixed-width lowercase digests;
  • equal UTC across distinct artifacts fails the usable ordering gate, while equal UTC on one artifact remains usable only with a strictly forward physical line range.

Reproduced verification: focused hierarchy contract 28/28; full parser 757/757; strict all-target parser Clippy; Rust 1.88 wasm32; TypeScript; 22/22 JSON; 22 synthetic evidence files; scoped Rust 1.88 rustfmt; range git diff --check; sanitized fixture/document privacy scan; clean detached worktree. Workspace-wide fmt remains red only on the inherited 17 non-#331 files.

CodeRabbit exact-head disposition: its review was substantive but the sole manifest mismatch finding is not valid. origin/current/sender.log exists at 323 bytes and exactly matches the healthy manifest. The additional byte-identical origin/lo_/sender.lo_ is intentionally mutation-only evidence for the complete rotated-sender positive and mismatch negatives added in bda57d83. Evidence and withdrawal request: #379 (comment) . No fixture change is appropriate; the separate hosted-review thread can be resolved after that disposition is acknowledged.

Scope remains preparation/source-contract only. No production reducer, native collection, client/server correlation, cross-side causal claim, or live Windows acceptance is implemented or claimed. Keep the PR draft/open until owner dependency, hosted-review disposition, native validation, and downstream #333 gates are handled.

@adamgell
adamgell marked this pull request as ready for review July 31, 2026 20:40
Copilot AI review requested due to automatic review settings July 31, 2026 20:40
@adamgell
adamgell merged commit 886b062 into codex/parser-family-skeleton Jul 31, 2026
1 check passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Prepares a synthetic, publication-safe SCCM server hierarchy/replication corpus for Issue #331 by adding a strict fixture contract (manifests + expected outputs + bounded evidence files) plus a comprehensive test that enforces deterministic, fail-closed behavior while production reducers/intake remain dependency-blocked (#318/#335).

Changes:

  • Added a preparation document defining the evidence boundary, topology/time constraints, coverage semantics, and scenario matrix for the hierarchy/replication workflow.
  • Added a large fixture-contract test that validates schema/identity strictness, deterministic projection, bounded follow-up requests, and “no time-only / no causal claims” guarantees.
  • Added synthetic fixture corpus (scenario directories with manifest.json, expected.json, and minimal evidence files) and a dev-only hash dependency used by tests.

Reviewed changes

Copilot reviewed 27 out of 49 changed files in this pull request and generated no comments.

Show a summary per file
File Description
docs/sccm/preparation/issue-331-hierarchy-replication-corpus.md Defines the #331 preparation-only contract boundary, topology/time rules, coverage semantics, and scenario matrix.
crates/cmtraceopen-parser/tests/sccm_server_hierarchy_and_replication_fixture_contract.rs Enforces the corpus contract via deterministic, fail-closed schema/identity/provenance/time/coverage assertions and scenario matrices.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/README.md Documents fixture intent, evidence boundaries, and safety/determinism constraints.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/topology-mismatch/manifest.json Adds topology-mismatch scenario manifest (multi-target topology + mismatched keys).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/topology-mismatch/expected.json Expected output for topology-mismatch (no transactions; source-local mismatch observations).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/topology-mismatch/evidence/server-hierarchy-transfer/origin/current/sender.log Synthetic sender evidence for topology-mismatch scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/topology-mismatch/evidence/server-hierarchy-transfer/target/current/despool.log Synthetic despool evidence for topology-mismatch scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/sender-failure/manifest.json Adds sender-failure scenario manifest.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/sender-failure/expected.json Expected output for sender-failure (two distinct terminal transactions for CHD/SEC).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/sender-failure/evidence/server-hierarchy-transfer/origin/current/sender.log Synthetic sender evidence for sender-failure scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/rotation-boundary/manifest.json Adds rotation-boundary scenario manifest (split fragments across current/lo_).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/rotation-boundary/expected.json Expected output for rotation-boundary (no transactions; bounded rotation-split request).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/rotation-boundary/evidence/server-hierarchy-transfer/origin/current/sender.log Truncated synthetic current sender fragment for rotation-boundary scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/rotation-boundary/evidence/server-hierarchy-transfer/origin/lo_/sender.lo_ Truncated synthetic lo_ sender fragment for rotation-boundary scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/recovery/manifest.json Adds recovery scenario manifest.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/recovery/expected.json Expected output for recovery (retry then success => recovered).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/recovery/evidence/server-hierarchy-transfer/origin/current/sender.log Synthetic sender evidence for recovery scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/recovery/evidence/server-hierarchy-transfer/target/current/despool.log Synthetic despool evidence for recovery scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/receiver-processing-failure/manifest.json Adds receiver-processing-failure scenario manifest.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/receiver-processing-failure/expected.json Expected output for receiver-processing-failure (terminal failure at target processing).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/receiver-processing-failure/evidence/server-hierarchy-transfer/origin/current/sender.log Synthetic sender evidence for receiver-processing-failure scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/receiver-processing-failure/evidence/server-hierarchy-transfer/target/current/despool.log Synthetic despool evidence for receiver-processing-failure scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/incomplete/manifest.json Adds incomplete/capped scenario manifest.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/incomplete/expected.json Expected output for incomplete/capped scenario (coverage-only + bounded capped request).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/incomplete/evidence/server-hierarchy-control/origin/current/replmgr.log Truncated synthetic replmgr evidence for incomplete/capped scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/manifest.json Adds healthy-link scenario manifest.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/expected.json Expected output for healthy-link (full high-confidence terminal success).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-control/origin/current/replmgr.log Synthetic replmgr evidence for healthy-link scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-control/origin/equal-instant/replmgr.log Equal-UTC replmgr evidence variant for ordering constraints.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-transfer/origin/current/sender.log Synthetic sender evidence for healthy-link scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-transfer/origin/lo_/sender.lo_ Synthetic rotated lo_ sender evidence for healthy-link scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-transfer/target/current/despool.log Synthetic despool evidence for healthy-link scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-transfer/target/equal-instant/despool.log Equal-UTC despool evidence variant for ordering constraints.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/healthy-link/evidence/server-hierarchy-control/target/current/rcmctrl.log Synthetic rcmctrl evidence for healthy-link scenario (ack + terminal).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/generic-site-token/manifest.json Adds generic-site-token negative scenario manifest.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/generic-site-token/expected.json Expected output for generic-site-token (no candidates/transactions).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/generic-site-token/evidence/server-hierarchy-transfer/origin/current/sender.log Generic CCM message containing a site-like token but not the exact hierarchy grammar.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/clock-offset-unknown/manifest.json Adds clock-offset-unknown scenario manifest (invalid offsets).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/clock-offset-unknown/expected.json Expected output for clock-offset-unknown (unusable ordering + bounded invalidOffset request).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/clock-offset-unknown/evidence/server-hierarchy-transfer/origin/current/sender.log Synthetic sender evidence with invalid offset.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/clock-offset-unknown/evidence/server-hierarchy-transfer/target/current/despool.log Synthetic despool evidence with invalid offset.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/backlog-retry/manifest.json Adds backlog-retry scenario manifest.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/backlog-retry/expected.json Expected output for backlog-retry (medium-confidence deferred/backlog).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/backlog-retry/evidence/server-hierarchy-control/origin/current/replmgr.log Synthetic replmgr evidence for backlog-retry scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/absent-remote-source/manifest.json Adds absent-remote-source scenario manifest (explicit absent target artifact).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/absent-remote-source/expected.json Expected output for absent-remote-source (coverage gap + bounded coverageAbsent request).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/hierarchy_and_replication/absent-remote-source/evidence/server-hierarchy-transfer/origin/current/sender.log Synthetic sender evidence for absent-remote-source scenario.
crates/cmtraceopen-parser/Cargo.toml Adds sha2 as a dev-dependency for the new tests.
Cargo.lock Locks the newly added sha2 dev-dependency.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request parser Log parser related sccm SCCM/ConfigMgr related test Testing related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants