Skip to content

docs(sccm): prepare deterministic client intake corpus (#319) - #339

Merged
adamgell merged 4 commits into
codex/parser-family-skeletonfrom
codex/sccm-319-intake-provenance-fix
Jul 30, 2026
Merged

docs(sccm): prepare deterministic client intake corpus (#319)#339
adamgell merged 4 commits into
codex/parser-family-skeletonfrom
codex/sccm-319-intake-provenance-fix

Conversation

@adamgell

Copy link
Copy Markdown
Owner

Scope

Issue-scoped preparation for #319 client intake:

  • design-only client source catalog, physical capture identity, and workflow memberships
  • additive manifest/native adapter test design
  • six synthetic scenarios: complete, missing root, access denied, cap, rotations, and two-root/same-basename collision
  • one physical LocationServices.log capture with sorted content/location memberships
  • exact bytes, encoding, collection limits, chronology, canonical rotations, redacted path fingerprints, and deterministic ordering
  • a true 128-byte capped partial record with zero complete/successful CCM records

This PR contains preparation docs/fixtures only. It adds no speculative production API and does not reinterpret generic collection-manifest semantics.

Dependency state

Production pure/native #319 intake remains downstream of reviewed #318 wire/evidence contracts. Native Windows configured-root, canonicalization, ACL/reparse, and rotation acceptance remains pending and is not claimed.

Verification

  • exact-byte corpus validator — 6 scenarios / 30 artifacts / 18 captured / 12 noncapture / 18 evidence files, pass
  • complete CCM records — 16 valid; capped fragment — 0 complete/0 successful, pass
  • JSON/path/reference/no-orphan/privacy/chronology/identity/collision checks — pass
  • cargo test --locked -p cmtraceopen-parser — 571 passed
  • strict parser Clippy — pass
  • wasm32 check — pass
  • npx tsc --noEmit — pass
  • diff/status checks — pass

CodeRabbit and independent semantic review are requested. No issue closure or native acceptance claim.

Refs #319
Refs #317

Copilot AI review requested due to automatic review settings July 30, 2026 19:06

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

Please review the complete #319 preparation range against deterministic intake, physical identity/group membership, exact byte/encoding/limit, collision, rotation, coverage-only, sanitization, and no-native-acceptance constraints.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@adamgell, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 4 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3755f8ba-68f1-4fd7-8c36-69080b04dd83

📥 Commits

Reviewing files that changed from the base of the PR and between f2caccf and 0f4099e.

⛔ Files ignored due to path filters (16)
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/access-denied/evidence/client-policy-state/current/CIAgent.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/capped/evidence/client-content/current/DataTransferService.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/collision/evidence/client-app-enforce/root-a/current/AppEnforce.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/collision/evidence/client-app-enforce/root-b/current/AppEnforce.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-app-enforce/current/AppEnforce.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-app-intent/current/AppIntentEval.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-ccmsetup/current/ccmsetup.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-content/current/CAS.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-evaluation/current/CcmEval.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-identity/current/ClientIDManagerStartup.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-location-services-shared/current/LocationServices.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-policy-agent/current/PolicyAgent.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-policy-state/current/CIAgent.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-updates/current/ScanAgent.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-windows-update-supplemental/current/ReportingEvents.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/rotations/evidence/client-app-enforce/current/AppEnforce.log is excluded by !**/*.log
📒 Files selected for processing (17)
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/README.md
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/access-denied/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/access-denied/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/capped/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/capped/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/collision/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/collision/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/missing-root/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/missing-root/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/rotations/evidence/client-app-enforce/lo/AppEnforce.log.lo_
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/rotations/evidence/client-app-enforce/numbered-2/AppEnforce.log.2
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/rotations/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/rotations/manifest.json
  • crates/cmtraceopen-parser/tests/sccm_client_intake_fixture_contract.rs
  • docs/sccm/preparation/issue-319-client-intake.md

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

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

@adamgell: I’ll perform a complete review of #339 against the stated #319 preparation constraints, including determinism, capture identity/membership, byte-accurate fixtures and caps, collision/rotation coverage, sanitization, and ensuring no native acceptance is implied.

✅ 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 46 minutes.

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.

🟡 Not ready to approve

The capped evidence fixture currently contains a “[cut]” placeholder and does not match the stated exact 128-byte truncation/bytesCopied contract, undermining the determinism claims of the corpus.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

This review doesn't count toward merge requirements. Sign up for the private preview to control whether Copilot approvals count.

Pull request overview

This PR adds preparation documentation and a synthetic, deterministic SCCM client “intake corpus” intended to support issue #319’s upcoming implementation and tests, without introducing production code or finalizing the #318 public contract.

Changes:

  • Add a design/boundary document describing the bounded client source catalog, determinism rules, and proposed (proposal-only) manifest adapter shape for #319.
  • Add synthetic client intake fixture directories for key scenarios (complete, missing-root, access-denied, capped, rotations, collision) with proposed manifest.json, expected.json, and minimal evidence files.
  • Add fixture README documenting privacy/sanitization rules and intended assertions for replay once #318 contracts are published.
File summaries
File Description
docs/sccm/preparation/issue-319-client-intake.md Defines #319 intake catalog, determinism/rotation rules, and fixture/test design boundaries.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/README.md Documents synthetic fixture intent, privacy constraints, and scenario assertions.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/rotations/manifest.json Proposed manifest input for rotation grouping determinism scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/rotations/expected.json Proposed expected output/coverage assertions for rotations scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/rotations/evidence/client-app-enforce/numbered-2/AppEnforce.log.2 Synthetic CCM-style evidence fragment for numbered rotation.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/rotations/evidence/client-app-enforce/lo/AppEnforce.log.lo_ Synthetic CCM-style evidence fragment for .lo_ rotation.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/rotations/evidence/client-app-enforce/current/AppEnforce.log Synthetic CCM-style evidence fragment for current log.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/missing-root/manifest.json Proposed manifest input for “no roots discovered” coverage scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/missing-root/expected.json Proposed expected output/requests for missing-root scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/manifest.json Proposed manifest input representing baseline “complete” capture set.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/expected.json Proposed expected coverage and physical-artifact assertions for complete scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-windows-update-supplemental/current/ReportingEvents.log Synthetic supplemental evidence file for complete scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-updates/current/ScanAgent.log Synthetic CCM-style evidence fragment for updates group.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-policy-state/current/CIAgent.log Synthetic CCM-style evidence fragment for policy-state group.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-policy-agent/current/PolicyAgent.log Synthetic CCM-style evidence fragment for policy-agent group.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-location-services-shared/current/LocationServices.log Synthetic CCM-style evidence fragment for shared location-services artifact.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-identity/current/ClientIDManagerStartup.log Synthetic CCM-style evidence fragment for identity group.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-evaluation/current/CcmEval.log Synthetic CCM-style evidence fragment for evaluation group.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-content/current/CAS.log Synthetic CCM-style evidence fragment for content group.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-ccmsetup/current/ccmsetup.log Synthetic CCM-style evidence fragment for ccmsetup group.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-app-intent/current/AppIntentEval.log Synthetic CCM-style evidence fragment for app-intent group.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/complete/evidence/client-app-enforce/current/AppEnforce.log Synthetic CCM-style evidence fragment for app-enforce group.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/collision/manifest.json Proposed manifest input for same-basename / two-root collision scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/collision/expected.json Proposed expected output/coverage assertions for collision scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/collision/evidence/client-app-enforce/root-b/current/AppEnforce.log Synthetic CCM-style evidence fragment for collision root-b artifact.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/collision/evidence/client-app-enforce/root-a/current/AppEnforce.log Synthetic CCM-style evidence fragment for collision root-a artifact.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/capped/manifest.json Proposed manifest input for capped/truncated fragment scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/capped/expected.json Proposed expected output/requests and “no diagnosis” constraints for capped scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/capped/evidence/client-content/current/DataTransferService.log Intended truncated evidence fragment for capped scenario (currently inconsistent).
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/access-denied/manifest.json Proposed manifest input for access-denied coverage scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/access-denied/expected.json Proposed expected output/requests and “no diagnosis” constraints for access-denied scenario.
crates/cmtraceopen-parser/tests/fixtures/sccm/client/intake/access-denied/evidence/client-policy-state/current/CIAgent.log Synthetic CCM-style evidence fragment for the captured policy-state artifact in access-denied scenario.
Review details
  • Files reviewed: 16/32 changed files
  • Comments generated: 1
  • Review effort level: Low

We're testing this review assessment. Please use 👍 or 👎 to tell us if it's correct.

Comment thread crates/cmtraceopen-parser/tests/fixtures/sccm/client/README.md Outdated

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

Please re-review current head 0f4099e, especially the exact capped-source prefix, inclusive raw-byte-before-decoding contract, expected digest/provenance, and focused parser regression. Do not treat error-looking retained text or parse fallback as a terminal workflow/server finding.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

@adamgell: Re-reviewing current head 0f4099e with focused attention to the exact capped-source prefix, inclusive raw-byte-before-decoding limit contract, expected digest/provenance, and parser regression coverage. I will not treat retained error-looking text or parse fallback as a terminal workflow/server finding.

✅ 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 4 minutes.

@adamgell
adamgell merged commit 59c8aba into codex/parser-family-skeleton Jul 30, 2026
1 check passed
adamgell added a commit that referenced this pull request Aug 4, 2026
Reviewed synthetic client-intake preparation slice. Production native collection remains blocked on approved #318 contracts and native Windows validation.
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.

2 participants