Document actual provider/channel layout and how to customize it (fixes #50) - #66
Open
ZayanKhan-12 wants to merge 2 commits into
Open
ZayanKhan-12 wants to merge 2 commits into
ZayanKhan-12 wants to merge 2 commits into
Conversation
The README stated the manifest "consists of 16 individual providers, each with 7 channels". The manifest actually defines 46 channels: WEC through WEC6 have 7 each, WEC7 has 3, WEC8 through WEC15 have none, and WEC16 has a single placeholder. Readers reasonably expected 112 channels and found the gap undocumented. Changes: - Correct the inventory and add a provider table with GUIDs, channel counts and free slots, explaining that WEC8-WEC15 are intentional headroom rather than an oversight. - Explain the 7-channel limit: each provider imports the System channel, consuming one of its 8 slots. - Add a "Customizing the manifest" section covering how to add a channel, the naming and symbol rules, why provider GUIDs must not change, and the rename/unload/disk-sizing pitfalls. - Fix WEC4-Windows-Update, which the manifest spells WEC4-Windows-Updates. A subscription copied from the README would have targeted a channel that does not exist and collected nothing. - Document WEC16-Test, which was defined but unlisted. Also adds validate-event-channels.py, which cross-checks the manifest, the README channel list and every subscription's LogFile target. It is standard library only, read-only, runs on any platform and exits non-zero on failure, so the documentation cannot silently drift from the manifest again. Fixes palantir#50 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Describes the repository layout, the channel naming and symbol rules, the validation command to run, and the constraints that are easy to get wrong: provider GUIDs are load-bearing, the DLL cannot be rebuilt off Windows, and a mistyped channel name drops telemetry silently rather than erroring. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Member
|
Thanks for your interest in palantir/windows-event-forwarding, @ZayanKhan-12! Before we can accept your pull request, you need to sign our contributor license agreement - just visit https://cla.palantir.com/ and follow the instructions. Once you sign, I'll automatically update this pull request. |
ZayanKhan-12
pushed a commit
to ZayanKhan-12/windows-event-forwarding
that referenced
this pull request
Sep 16, 2026
…hannel-providers Document actual provider/channel layout and how to customize it (fixes palantir#50) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Background
Fixes #50.
windows-event-channels/README.mdstates that the manifest "consists of 16 individual providers, each with 7 channels". As @Greyland99 reported, that isn't whatCustomEventChannels.manactually contains. A reader expects 112 channels and finds 46, with no explanation for the gap.Parsing the manifest gives the real layout:
WEC–WEC6WEC7WEC8–WEC15WEC16WEC16-Test)46 channels across 16 providers.
The issue asked for two things: a hint that the empty providers are deliberate headroom, and more detail on how to customize the manifest safely. This PR does both, and fixes two related defects found while verifying the numbers.
Changes
Corrected the inventory — replaced the inaccurate sentence with the real counts, plus a provider table listing each GUID, its channel count and its free slots. The table makes explicit that
WEC8–WEC15are pre-registered headroom, not an oversight: they already have unique GUIDs, so you can add channels without generating GUIDs or restructuring the manifest.Explained the 7-channel limit — every provider imports the
Systemchannel, which consumes one of its 8 slots. The README previously stated the rule without the reason.Added a "Customizing the manifest" section covering how to add a channel (with a worked XML example), the
name/chid/symbolrules, and the pitfalls that aren't obvious:.evtxbehind.manalone changes nothing; the DLL has to be rebuilt and redeployedFixed
WEC4-Windows-Update→WEC4-Windows-Updates. The manifest spells it plural. This one is worth calling out: a subscription copied from the README would have pointed at a channel that does not exist, and WEF fails silently here — the subscription shows as active while collecting nothing.Documented
WEC16-Test, which was defined in the manifest but missing from the README list.Validation script
Added
windows-event-channels/validate-event-channels.py, which cross-checks the manifest, the README channel list and every subscription's<LogFile>target, so these can't silently drift apart again.It catches malformed XML, providers over the 7-channel limit, duplicate names/chids/symbols, hyphens in symbols, README/manifest drift, and subscriptions targeting undefined channels. Standard library only, read-only, no network or subprocess calls, and it runs on macOS and Linux as well as Windows. Exits non-zero on failure.
I verified it against ten injected faults (missing channel, 8th channel on a full provider, hyphen in a symbol, disabled channel, duplicate name, README drift in both directions, wrong table count, malformed manifest and malformed subscription); each is caught with a specific message, and the unmodified tree passes.
The one warning is pre-existing:
WEC3-External-Devicesuses the symbolWEC3_External_devices. Symbols are compile-time C# identifiers and the channelnameis what gets registered, so this is cosmetic — I deliberately left the manifest untouched rather than desync it from the checked-in DLL, and made the check a non-fatal warning.Notes for reviewers
CustomEventChannels.man,CustomEventChannels.dllor any subscription. Documentation and a new script only.CLAUDE.mdwith repository guidance for AI coding assistants. Happy to drop it if it's not something you want in the repo; the first commit stands alone and is what closes Event Providers and Channels - DB Audit Events #50.