Repository navigation
Docs/thesis corrections - #10
Merged
Merged
Conversation
"No maintained open-source tool detects CPF, CNPJ, CNH, Pix keys, card PANs and E2EIDs. Not underserved — empty." is not true: at least one maintained project detects and validates Brazilian identifiers in free text. A README that makes a checkable claim and gets it wrong costs more credibility than the claim was ever worth. The paragraph now says what vedei does rather than what others do not: it validates Brazilian data by check digit instead of matching by shape, and it enforces at the boundary where data leaves — agent context, CI, logs — in one Go binary with no runtime and no network.
…07-06 The Receita Federal generated the first alphanumeric CNPJ on 2026-07-31; the 2026-07-06 date in seven places came from an early timeline, not from the authority. Corrected everywhere it appeared — README, the package doc in cnpj.go, test comments, the corpus header — with the gov.br announcement linked from both READMEs. The corpus gains that first CNPJ itself: 00.000.000/E08G-12, a Banco do Brasil branch, published by the Receita. Every other CNPJ vector in the suite is generated, which only proves the algorithm agrees with itself; this one proves it agrees with the issuer. It validates — the check digits computed from 00000000E08G are 1 and 2. Its fingerprint joins .vedeiignore, so the self-scan stays clean. Corpus: 41 cases, precision and recall 1.000.
The "The name" section still explained Надзор, Russian for oversight, with "(vedei)" pasted into it by the rename — an etymology for a word the project no longer uses. Vedei is Portuguese: the first person past tense of vedar, to seal or keep from passing. "Eu vedei" — I sealed it. It is what the person running the tool says once it has done its job: the CPF did not reach the model, the key did not reach the log. Written in both READMEs, and no reference to the old name remains anywhere in the repository.
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.
What this changes
Corrects three factual errors in the docs found while checking the project against its problem thesis: a false claim about other tools, the wrong date for the alphanumeric CNPJ, and a name section that still explained the old name. Adds the first alphanumeric CNPJ the Receita Federal ever issued to the corpus.
Why
Every one of these was a checkable claim, and each was wrong:
"No maintained open-source tool detects CPF, CNPJ, CNH, Pix keys, card PANs and E2EIDs. Not underserved — empty." At least one maintained project detects and validates Brazilian identifiers in free text. A README that states something a reader can disprove in a minute costs more credibility than the claim was ever worth.
"In force since 2026-07-06." The Receita Federal generated the first alphanumeric CNPJ on 2026-07-31 (gov.br). The earlier date came from a preliminary timeline, not from the authority, and it had spread to seven places: both READMEs, the package doc in
cnpj.go, three test comments and the corpus header."Надзор (vedei) is Russian for oversight." The rename pasted the new name into the old etymology. Vedei is Portuguese — the first person past tense of vedar, to seal or keep from passing.
Closes #
Checklist
make testpassesmake lintreports zero issuesIf this adds or changes a detector
No detector changes. One corpus case is added, and it is worth more than its size suggests:
detect/br/cnpj.gochanged only in its doc commentFuzzCNPJCheckDigitsstill covers the arithmeticcorpus/:00.000.000/E08G-12as a true positive. No new reject — none of the corrections introduced a value that must stay quietWhy this case matters: every other CNPJ vector in the suite is generated, which only proves the algorithm agrees with itself.
00.000.000/E08G-12is a Banco do Brasil branch, published by the Receita as the first alphanumeric CNPJ issued. It proves the algorithm agrees with the issuer. The check digits computed from00000000E08Gare 1 and 2, matching.It also settles a question raised elsewhere: some secondary sources claimed certain letters (I, O, U, Q, F) would be excluded from the alphanumeric format. The Receita's own announcement says positions take "letras maiúsculas de A a Z", so the validator accepting all 26 is correct and stays.
If this touches anything a detected value passes through
Nothing on that path changed.
Finding.Rawout of the processValidityInvalidstill never leave the engineTrade-offs and limitations
The positioning paragraph no longer names any other tool, by deliberate choice. It says what vedei does — validation by check digit, enforcement where data leaves, one binary — rather than comparing. A future comparison, if one is published, should come with an open methodology and a shared corpus, not a sentence in a README.
The new corpus case is a real, public CNPJ. It belongs to a bank branch and was published by the Receita as a news item, so it is a public record rather than personal data. Its fingerprint is in
.vedeiignorewith that reason written next to it, so the self-scan stays clean."July 2026" mentions were left alone. Several comments say the format arrived in July 2026, which remains true; only the exact wrong date was changed.
The repository name's casing is not changed here. The GitHub repo is
Vedeiwhile the module path, badge anduses:arevedei. It works through GitHub's case-insensitive routing, but aligning it is a repository setting, not a commit.How to verify
The official CNPJ, checked directly:
By opening this PR you agree it is licensed under the MIT License and that you follow the Code of Conduct.