Repository navigation
[Experimental support] Accept strict normalization manifests - #938
Draft
Wenjie Fan (gggdttt) wants to merge 1 commit into
Draft
Wenjie Fan (gggdttt) wants to merge 1 commit into
Wenjie Fan (gggdttt) wants to merge 1 commit into
Conversation
AB#652973. Experimental common-support integration stacked on #911 at 0cbb709, not a standalone main change. Preserve PR80 normalization audit records and narrowly allowlist raw reports and source bounds without changing dataset, scoring or engine pins. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Wenjie Fan (gggdttt)
added this pull request to stack #939
October 6, 2026 08:45
This branch has not been deployed
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.
Scope and stack
AB#652973
Experimental common-support integration, not a standalone PR against
main. Depends on #911. This branch was created from, and remains directly above, frozengggdttt-http-knowledge-ab-gatehead0cbb709caaf92fcb2017bcfa0b1c77185d37cbc6. The initial worktree was clean; local HEAD, the GitHub PR head, and themicrosoft/BC-Benchremote branch matched that SHA.No dataset/gold/scorer changes, engine/CLI pins, publication gates, dispatches, model calls, judge calls, or merges. Paid runs still require separate authorization.
Change
Accept optional
processes[].normalizationfrom microsoft/BC-ALAgents#80, verified against exact head4a0885e207cf96617b33d54d0146debbcf7d9841(schema, writer, and tests), without relaxingProcessRecord.extra='forbid'.ProcessNormalization:raw_report_path, lowercase 64-hexraw_report_sha256, nonemptychanges.FindingIdNormalization: discriminatorkind='finding-id', zero-basedfinding_index, nonemptyoriginal_idandcanonical_id.LocationRangeNormalization: discriminatorkind='location-range', zero-basedfinding_index, forward-slashfile, positiveline, andOriginalLocationRangewith positivestart-line/end-linealiases.nullfails. Duplicate kind/index pairs, unchanged IDs, and ranges violating the engine-emittedstart-line < line <= end-lineinvariant fail. One finding may have both change kinds. No article-ID regex, contiguous-index requirement, or extra ordering restriction is added.The adapter still validates accepted reports and scores
al-code-review-findings.json; it does not reapply normalization. Audit metadata remains intact in the manifest. Manifest loading validates raw path/hash shape, not raw bytes or source-bound contents.Diagnostics add exactly
${{ env.EVALUATION_RESULTS_DIR }}/**/_review-report.raw.jsonand${{ env.EVALUATION_RESULTS_DIR }}/**/_review-source-bounds.json. All existing selectors remain in their original relative order. Raw OTel and broad checkout uploads remain excluded; retention and no-publication behavior are unchanged.Source-faithful evidence
37310924454,synthetic__privacy-015,03-al-privacy-review.c313a4ad40d270f4f77821ac36e375baaf107b8944fb8673e1d27d42c1e8b054.26aead0958e6ffe60c947f740b95ecf016783116a88d1254e87cea5c54c10107.25/[23,25],24/[20,24],23/[19,23],23/[18,23]; indices0..3for each kind.extra_forbiddenatprocesses[0].normalization); the upstream JSON schema and new Pydantic models accept the same payload and preserve it on JSON roundtrip. This replay is not a new smoke or benchmark score.Validation
ty check . --ignore=unresolved-import --exclude notebooks/passed with one pre-existing unused-ignore warning in untouchedsrc/bcbench/redteam.py:150.pre-commit run --all-files: all hooks passed. Windows subprocess propagation required command-localcore.fsmonitor=falsein place of the equivalent empty value; no repository/global config change or skipped hook.git diff --checkpassed.Coverage includes legacy omission, ID-only, range-only, combined 4+4, malformed hashes/paths/indices/lines, missing/unknown fields, failed/root/noncompleted lifecycle semantics, JSON roundtrips, loader and accepted-report validation, real adapter/evaluator paths with mocked engine/judge boundaries, unchanged audit bytes, and exact diagnostic selection/exclusion. The adapter tests produce four ordinary matches without changing scoring semantics and stop malformed metadata before review conversion.
Next smoke layer
Create a new app session based on
gggdttt-support-normalization-manifestsat646e2802bc89993e048c410a6f146bad3fc8237e, notmainand not the older #911 head. Keep that PR based on this support branch. The smoke layer should add only its separately approved immutable engine pin and matching exact test constant; normalization and uploader support are inherited. Reverify the branch/head, clean engine checkout, transitive BCQuality pin, and paid-run authorization before any dispatch.