Skip to content

docs(sccm): prepare role-aware server intake corpus (#335) - #337

Merged
adamgell merged 4 commits into
codex/parser-family-skeletonfrom
codex/sccm-335-intake-prep
Jul 30, 2026
Merged

docs(sccm): prepare role-aware server intake corpus (#335)#337
adamgell merged 4 commits into
codex/parser-family-skeletonfrom
codex/sccm-335-intake-prep

Conversation

@adamgell

@adamgell adamgell commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Scope

Issue-scoped preparation slice for #335:

  • role-aware server source catalog and native adapter design
  • additive SCCM manifest proposal with producer role separated from workflow subject
  • configured-path, role/topology, rotation, collision, encoding, collection-limit, and chronology provenance
  • 11 synthetic/sanitized intake scenarios with 20 artifacts and 16 evidence files
  • concrete two-configured-root/same-basename collision case
  • conservative coverage semantics for absent, access-denied, capped, skipped, unsupported, malformed/partial evidence

This PR contains preparation docs and fixtures only. It adds no production parser/Tauri code and does not claim a missing default path proves a missing or broken server role.

Dependency state

Production pure/native server intake remains blocked on the reviewed #318 wire contract. Native Windows/server-lab validation is a future acceptance source and is not claimed here.

Fixture matrix

Complete multi-role, configured non-default path, same-basename/two-root collision, current/.log.lo_/numbered/timestamped rotations, multiline CCM, absent DP, access-denied MP, capped SUP workflow, skipped IIS, unsupported DB supplement, and unsorted input.

Verification

  • exact-byte corpus validator — 11 scenarios / 20 artifacts / 16 evidence files, pass
  • JSON/path/reference/no-orphan/privacy/CCM/chronology/producer-subject contract — pass
  • cargo test --locked -p cmtraceopen-parser — 571 passed
  • cargo clippy --locked -p cmtraceopen-parser --all-targets -- -D warnings — pass
  • cargo check --locked -p cmtraceopen-parser --target wasm32-unknown-unknown — pass
  • npx tsc --noEmit — pass
  • git diff --check f2caccf..HEAD — pass

Review gates

Independent semantic review is requested and remains required. CodeRabbit review is explicitly requested. No merge or production interface expansion is authorized by this preparation PR.

Refs #335
Refs #317

Summary by CodeRabbit

  • Documentation

    • Added guidance for preparing and interpreting SCCM server intake data, including supported artifact metadata, privacy safeguards, coverage gaps, rotation handling, and deterministic processing expectations.
  • Tests

    • Added comprehensive synthetic scenarios covering multiple server roles, non-default paths, duplicate filenames, multiline records, rotated logs, capped or unavailable captures, skipped supplemental sources, unsupported data, and manifest ordering.
    • Added expected outcomes to clarify artifact classification, provenance, health findings, and follow-up capture requests.

Copilot AI review requested due to automatic review settings July 30, 2026 18:51

Copy link
Copy Markdown
Owner Author

@coderabbitai review

Please review this #335 preparation slice against the server-intake execution contract. Focus on producer-role versus workflow-subject provenance, collision-safe paths, exact byte/limit semantics, chronology, conservative coverage states, sanitization, and the absence of production/native-acceptance claims.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

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

Next review available in: 15 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: cc088e35-ab5e-4dbc-9fbe-4b2538f626c9

📥 Commits

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

⛔ Files ignored due to path filters (13)
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/capped-sup/evidence/sccm/server/site-server/server-sup-sync/subject-software-update-point/instance-17eae15500d8968f/root-b11afca548220198/current/wsyncmgr.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/evidence/sccm/server/management-point/server-mp-policy/root-7d4a9c2e/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/evidence/sccm/server/management-point/server-mp-policy/root-b83f10d6/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/site-server/server-dp-distribution/subject-distribution-point/current/distmgr.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/site-server/server-sitecomp/current/sitecomp.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/site-server/server-sup-sync/subject-software-update-point/current/wsyncmgr.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/configured-nondefault-path/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/evidence/sccm/server/site-server/server-sitecomp/current/sitecomp.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/evidence/sccm/server/site-server/server-status/current/statmgr.log is excluded by !**/*.log
📒 Files selected for processing (27)
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/README.md
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/absent-dp/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/absent-dp/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/access-denied-mp/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/access-denied-mp/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/capped-sup/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/capped-sup/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/configured-nondefault-path/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/configured-nondefault-path/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/lo_/MP_GetPolicy.log.lo_
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/numbered-2/MP_GetPolicy.log.2
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/timestamped-20260729-235700/MP_GetPolicy.log.20260729-235700
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/skipped-iis/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/skipped-iis/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsupported-db-supplement/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsupported-db-supplement/manifest.json
  • docs/sccm/preparation/issue-335-server-intake.md
📝 Walkthrough

Walkthrough

Adds a provisional Issue #335 design contract and synthetic SCCM server intake fixtures covering topology, provenance, capture states, path handling, rotations, ordering, and evidence expectations.

Changes

SCCM server intake

Layer / File(s) Summary
Intake contract and validation rules
docs/sccm/preparation/issue-335-server-intake.md, crates/cmtraceopen-parser/tests/fixtures/sccm/server/README.md
Defines source classification, manifest and provenance fields, capture-state semantics, normalization rules, validation requirements, fixture boundaries, and unresolved shared-contract mappings.
Server intake scenario fixtures
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/*/manifest.json, crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/*/expected.json
Adds synthetic expected outputs and manifests for multi-role capture, configured paths, basename collisions, multiline records, ordering, absent, denied, capped, skipped, and unsupported scenarios.
Rotation lineage evidence
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/*
Adds four synthetic MP policy rotation artifacts and expected lineage, canonical ordering, provenance, and evidence metadata.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related issues

  • #335 — The change directly adds the role-aware SCCM server intake design and fixture foundation described by this issue.

Suggested reviewers: copilot

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the doc-focused SCCM server intake corpus preparation for issue #335.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.

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

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

@adamgell I’ll review the #335 preparation slice against those execution-contract criteria, including the stated scope boundary and non-claims around production/native acceptance.

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

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 the SCCM Server role-aware intake corpus for issue #335 by adding design documentation plus a synthetic, privacy-safe fixture matrix (manifests, expected outputs, and minimal evidence files) that will later be mapped onto the shared SCCM schema from #318.

Changes:

  • Add the role-aware server intake preparation doc (source catalog, manifest/provenance proposal, adapter design notes, and fixture matrix).
  • Add synthetic SCCM server intake fixtures for 11 scenarios (manifests + expected outputs) covering role/topology provenance, configured-path collisions, rotations, multiline logical records, and conservative coverage states.
  • Add minimal synthetic evidence files referenced by the manifests for captured/capped artifacts.

Reviewed changes

Copilot reviewed 27 out of 40 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
docs/sccm/preparation/issue-335-server-intake.md Prep doc describing role-aware server intake constraints, source catalog, and fixture intent for #335 pending #318 contracts.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/README.md Documents fixture privacy guarantees, scenario structure, and validation expectations.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/manifest.json Scenario manifest: multi-role topology with producer/subject split.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/expected.json Scenario expectations: canonical ordering + conservative coverage assertions.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log Minimal CCM evidence for MP policy (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/site-server/server-dp-distribution/subject-distribution-point/current/distmgr.log Minimal CCM evidence for site-produced DP workflow subject (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/site-server/server-sitecomp/current/sitecomp.log Minimal CCM evidence for site component log (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/site-server/server-sup-sync/subject-software-update-point/current/wsyncmgr.log Minimal CCM evidence for site-produced SUP workflow subject (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/configured-nondefault-path/manifest.json Scenario manifest: configured non-default root + absent default candidate semantics.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/configured-nondefault-path/expected.json Scenario expectations: candidate-only absence does not imply role absence.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/configured-nondefault-path/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log Minimal CCM evidence for configured-root MP policy (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/manifest.json Scenario manifest: two configured roots with colliding basenames requiring collision-safe paths.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/expected.json Scenario expectations: no overwrite/merge; distinct fingerprints and references.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/evidence/sccm/server/management-point/server-mp-policy/root-7d4a9c2e/current/MP_GetPolicy.log Evidence for collision case root A (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/evidence/sccm/server/management-point/server-mp-policy/root-b83f10d6/current/MP_GetPolicy.log Evidence for collision case root B (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/manifest.json Scenario manifest: current + rotated (timestamped/numbered/lo_) members with shared lineage.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/expected.json Scenario expectations: stable rotation ordering and collision-safe unique paths.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/timestamped-20260729-235700/MP_GetPolicy.log.20260729-235700 Evidence for timestamped rotation (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/numbered-2/MP_GetPolicy.log.2 Evidence for numbered rotation (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/lo_/MP_GetPolicy.log.lo_ Evidence for .lo_ rotation (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log Evidence for current log (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/manifest.json Scenario manifest: multiline logical record framing case.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/expected.json Scenario expectations: physical 2-line record becomes 1 logical record.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log Evidence with a CCM record spanning multiple physical lines.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/absent-dp/manifest.json Scenario manifest: default DP candidate absent without observed DP role.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/absent-dp/expected.json Scenario expectations: coverage gap only; forbidden role-health inference.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/access-denied-mp/manifest.json Scenario manifest: access-denied capture state for MP policy.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/access-denied-mp/expected.json Scenario expectations: access coverage + bounded next-request guidance.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/capped-sup/manifest.json Scenario manifest: capped capture with explicit byte limit + truncation marker.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/capped-sup/expected.json Scenario expectations: capped coverage; not parseable; no terminal SUP health.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/capped-sup/evidence/sccm/server/site-server/server-sup-sync/subject-software-update-point/current/wsyncmgr.log Minimal capped evidence payload for SUP control log (partial).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/skipped-iis/manifest.json Scenario manifest: optional IIS supplemental source explicitly skipped.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/skipped-iis/expected.json Scenario expectations: skip preserved; not a required-source failure.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsupported-db-supplement/manifest.json Scenario manifest: explicitly unsupported DB export retained but unclassified.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsupported-db-supplement/expected.json Scenario expectations: unsupported retained outside reducers; no DB/role inference.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/manifest.json Scenario manifest: deliberately unsorted artifact list for canonicalization tests.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/expected.json Scenario expectations: canonical sort + byte-identical normalized output.
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log Evidence for unsorted-manifest MP policy (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/evidence/sccm/server/site-server/server-sitecomp/current/sitecomp.log Evidence for unsorted-manifest site component log (captured).
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/evidence/sccm/server/site-server/server-status/current/statmgr.log Evidence for unsorted-manifest site status log (captured).

Comment thread crates/cmtraceopen-parser/tests/fixtures/sccm/server/README.md Outdated
Comment thread docs/sccm/preparation/issue-335-server-intake.md Outdated

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

🧹 Nitpick comments (1)
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/expected.json (1)

14-16: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Cover exact byte accounting in all expected fixtures.

The expected outputs validate encoding and collection limits but omit bytesCopied, so byte-counting regressions can pass.

  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/expected.json#L14-L16: assert 173 and 172.
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/expected.json#L5-L5: assert 207.
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/expected.json#L8-L12: assert each rotation artifact’s exact copied-byte value from its manifest.
🤖 Prompt for 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.

In
`@crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/expected.json`
around lines 14 - 16, Update the expected artifactProvenance entries to include
exact bytesCopied values: set the two collision artifacts to 173 and 172 in
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/expected.json
lines 14-16, set the multiline artifact to 207 in
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/expected.json
line 5, and set each rotation artifact to its exact copied-byte value from its
manifest in
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/expected.json
lines 8-12.
🤖 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/intake/capped-sup/manifest.json`:
- Line 9: Update the manifest entry’s relativePath for artifactId
"sup-sync-capped" to include deterministic, sanitized components for
workflowSubject.instanceHandle and configuredPathProvenance.pathFingerprint, or
use the established collision-suffix contract. Preserve the existing evidence
directory structure while ensuring captures from different subject instances or
configured roots cannot resolve to the same path.

In `@docs/sccm/preparation/issue-335-server-intake.md`:
- Around line 70-71: Update the artifactId definition in the manifest artifact
documentation to require deterministic derivation from the canonical producer,
source, subject, path, and rotation identity rather than discovery order.
Specify collision disambiguation while preserving uniqueness across all artifact
states, so reordering manifest input cannot change sort keys or evidence
references.
- Around line 119-123: The preparation rotation-order documentation must define
a total deterministic ordering across timestamped, numbered, and current
members, including exact sort keys and tie-breakers for multiple files, equal
timestamps, and cross-family comparisons. Update the rotation-order statement
and associated `rotations` fixture guidance so normalized output and evidence
IDs cannot vary between equivalent inputs.
- Around line 72-76: Define one exact byte-limit contract in
docs/sccm/preparation/issue-335-server-intake.md at lines 72-76, specifying
whether limits count raw or encoded bytes, that limits are inclusive, how
multibyte content is handled, and how capped payloads are represented. Update
crates/cmtraceopen-parser/tests/fixtures/sccm/server/README.md at lines 40-45 to
require bytesCopied validation against that same explicitly defined quantity.
- Around line 124-128: Define a single chronology relation in
docs/sccm/preparation/issue-335-server-intake.md lines 124-128: identify the
authoritative timestamp for multi-record files, specify the comparison direction
and allowed clock-skew tolerance between rotated filenames and record times, and
state that invalid or unknown offsets cannot be normalized or compared. Apply
the same rule in crates/cmtraceopen-parser/tests/fixtures/sccm/server/README.md
lines 54-56 by replacing any undefined exact-match validation with the
documented relation.
- Around line 102-106: The versioned manifest export must also sanitize captured
evidence payloads and their derived fields, not only host/path fields. In the
writer and public-export flow described here, either enforce that evidence
payloads remain internal-only or apply and test redaction before export while
preserving the existing status distinctions and approved opaque handles.
- Around line 94-100: Update the capture writer requirements so collision keys
are computed before any artifacts are written, or root/instance identity is
always included for sources that may collide. Ensure allocation is
deterministic, writes are atomic and no-overwrite, and distinct roots or
instances retain separate artifact IDs/evidence references without normalization
merging.

---

Nitpick comments:
In
`@crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/expected.json`:
- Around line 14-16: Update the expected artifactProvenance entries to include
exact bytesCopied values: set the two collision artifacts to 173 and 172 in
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/expected.json
lines 14-16, set the multiline artifact to 207 in
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/expected.json
line 5, and set each rotation artifact to its exact copied-byte value from its
manifest in
crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/expected.json
lines 8-12.
🪄 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: db6f08f4-491d-4020-abe9-b35c27d20234

📥 Commits

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

⛔ Files ignored due to path filters (13)
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/capped-sup/evidence/sccm/server/site-server/server-sup-sync/subject-software-update-point/current/wsyncmgr.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/evidence/sccm/server/management-point/server-mp-policy/root-7d4a9c2e/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/evidence/sccm/server/management-point/server-mp-policy/root-b83f10d6/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/site-server/server-dp-distribution/subject-distribution-point/current/distmgr.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/site-server/server-sitecomp/current/sitecomp.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/evidence/sccm/server/site-server/server-sup-sync/subject-software-update-point/current/wsyncmgr.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/configured-nondefault-path/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/evidence/sccm/server/management-point/server-mp-policy/current/MP_GetPolicy.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/evidence/sccm/server/site-server/server-sitecomp/current/sitecomp.log is excluded by !**/*.log
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/evidence/sccm/server/site-server/server-status/current/statmgr.log is excluded by !**/*.log
📒 Files selected for processing (27)
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/README.md
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/absent-dp/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/absent-dp/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/access-denied-mp/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/access-denied-mp/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/capped-sup/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/capped-sup/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/collision-same-basename-configured-roots/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/complete-multi-role/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/configured-nondefault-path/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/configured-nondefault-path/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/multiline/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/lo_/MP_GetPolicy.log.lo_
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/numbered-2/MP_GetPolicy.log.2
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/evidence/sccm/server/management-point/server-mp-policy/timestamped-20260729-235700/MP_GetPolicy.log.20260729-235700
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/rotations/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/skipped-iis/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/skipped-iis/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsorted-manifest/manifest.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsupported-db-supplement/expected.json
  • crates/cmtraceopen-parser/tests/fixtures/sccm/server/intake/unsupported-db-supplement/manifest.json
  • docs/sccm/preparation/issue-335-server-intake.md

Comment thread docs/sccm/preparation/issue-335-server-intake.md Outdated
Comment thread docs/sccm/preparation/issue-335-server-intake.md
Comment thread docs/sccm/preparation/issue-335-server-intake.md Outdated
Comment thread docs/sccm/preparation/issue-335-server-intake.md Outdated
Comment thread docs/sccm/preparation/issue-335-server-intake.md Outdated
Comment thread docs/sccm/preparation/issue-335-server-intake.md Outdated
@adamgell adamgell self-assigned this Jul 30, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

Round 3 commit ebfdab6 addresses the requested producer-placement, bundle-scoped identity, true capped-CCM, collision, raw-byte, redaction, rotation-order, chronology, and exact-byte contract findings. Please re-review the complete current diff; existing requested-changes history is intentionally preserved until this pass completes.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

@adamgell I’ll re-review the complete current diff, specifically validating the Round 3 fixes against the server-intake execution contract and the preparation-only/native-acceptance scope boundaries.

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

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