mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-23 20:26:10 +00:00
59c944618b
Two corrections to 3c25172d, both found by asking why the repo suddenly had two
fixture locations.
Location: committed test data lives under tests/fixtures/. I had put this one
inside the agent test project without checking, creating a second parallel home.
It does NOT belong in tests/fixtures/enrollment-sessions/ either — that is a
governed corpus of anonymized DecisionSignal JSONL for the Replay Harness, with a
schema, category prefixes and a paired-scenario-test rule that raw log text cannot
satisfy. So: a sibling corpus, tests/fixtures/cmtrace-logs/, with its own README
stating why it is separate.
Anonymization: the fixture carried three real Intune policy/script GUIDs from a
customer tenant. Point 1 of the existing fixture policy requires tenant-scoped
identifiers to be replaced, and I committed without applying it — the check
belonged BEFORE the commit, not after. Replaced with
policy-anon-NNNN-0000-0000-0000-000000000000, consistent with the tenant-anon /
device-anon / user-anon convention already in use. The all-zero GUID is a literal
in IME's own output and stays; the session ID stays as our diagnostic anchor and
is already referenced from the commit history and tasks/todo.md.
The new README carries the commit policy for this corpus, including the rules that
were implicit before: verbatim content (the parser is tested against real
formatting), a header stating what the fixture pins, versioned filenames so a
pinned test cannot silently change meaning, and .cmtrace rather than .log because
*.log is globally gitignored.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.4 KiB
2.4 KiB
CMTrace Log Fixtures — committed, anonymized
Raw CMTrace log lines, kept verbatim, used by parser and offset-calibration unit tests in
src/Agent/AutopilotMonitor.Agent.V2.Core.Tests/.
Why this is a separate corpus from ../enrollment-sessions/
enrollment-sessions/ holds anonymized DecisionSignal JSONL replayed through the Replay
Harness and the reducer scenario tests — signals that have already been parsed, adapted and
evidence-tagged. These files are the layer below that: unparsed device log text, the raw input
to CmTraceLogParser. They cannot satisfy that corpus's schema (no signal shape, no
Evidence.Identifier, no terminal state to assert) and its category prefixes do not apply.
Both live under tests/fixtures/ so committed test data has one home. Test projects must not
carry their own fixture directories.
Commit policy
- Anonymized. No tenant IDs, device IDs, serial numbers, user names, UPN prefixes, raw IP
addresses, or tenant-scoped object GUIDs (Intune policy/script IDs are tenant-scoped — replace
them with
policy-anon-NNNN-0000-0000-0000-000000000000). The all-zero GUID is a literal in IME's own output and stays. A session ID may stay when it is OUR diagnostic anchor and is already referenced from commit messages andtasks/todo.md. - Verbatim otherwise. Timestamps, spacing and the
<![LOG[...]]LOG]!>envelope are the point of the fixture — the parser is being tested against real formatting, so nothing else is normalised or reflowed. - Header comment. State the source session, the agent version, and precisely which property the fixture exists to pin. A fixture whose purpose is not written down decays into noise.
- Versioned filename.
-vNsuffix; never edit a committed fixture in place — a test pinned to it would silently change meaning. - Extension
.cmtrace, not.log:*.logis globally gitignored.
Fixtures
| File | Source | Pins |
|---|---|---|
agentexecutor-two-writer-eras-v1.cmtrace |
session e9753578, agent 2.0.1410, ImeLogs/AgentExecutor.log |
One file containing TWO writer eras — 371 lines rendered at local hour 05 by a writer on PDT (UTC-7) and 195 at hour 14 by one already on CEST (UTC+2), nine hours apart, interleaved, no bias suffix on any line. The case that broke per-file offset calibration and forced revert 04b1a7c6. Any era-aware calibrator must resolve BOTH halves correctly. |