Repository navigation
Record that the register derives fingerprints, not the scanner - #99
Merged
Merged
Conversation
The design record said the analysis pipeline's highest-value output is a diff. That is half right, and the wrong half matters: the diff is the right reviewer-facing output, but computing it in the scanner would mean giving a component that holds model API keys and source-code access read rights on the compliance database, and would make any change to the fingerprint definition a re-scan of every codebase rather than a re-derivation over data already held. So the scanner emits raw attributes - column name, type, question text, source location - and the register derives the fingerprint and computes the diff. The scanner stays dumber and more stable, which matters most for the component that will be iterated on constantly early on, and it never needs to read the register. Also records that a fingerprint definition change is a mass re-review event. Widening the definition moves every field's fingerprint at once, so every inherited assessment lands in the "changed" branch - thousands of records demanding review because someone added a field to a tuple. The definition is therefore versioned and the version that produced each stored fingerprint is recorded, so the register can distinguish a divergence caused by the definition from one caused by the data. Issues restructured to match: #81 narrowed to comparison and the gate, #69's payload settled as raw attributes, #68's contract gaining the required attributes and the definition version, #71 narrowed and my earlier framing corrected there. Co-Authored-By: Claude Opus 5 <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.
Follows the #81 restructure, so the design record stops contradicting the issues.
I had written that the analysis pipeline's highest-value output is a diff rather than an inventory. That is half right, and the wrong half matters.
The diff is the right reviewer-facing output. But computing it in the scanner would mean two things I do not want:
So the scanner emits raw attributes — column name, type, question text, source location — and the register derives the fingerprint and computes the diff. The scanner stays dumber and more stable, which matters most for the component that will be iterated on constantly early on.
Also recorded: a definition change is a mass re-review event
Widen the fingerprint definition and every field's fingerprint moves at once, so every inherited assessment lands in the "changed" branch — thousands of records demanding human review because someone added a field to a tuple.
The definition is therefore versioned, and the version that produced each stored fingerprint is recorded, so the register can distinguish "these diverged because the definition changed" from "these diverged because the data did". Without that, the first definition change reads as a compliance emergency.
Issues restructured to match
🤖 Generated with Claude Code