Auditor
Every personal-data field stored is read by a declared feature; unused fields are flagged.
1.1.0: deterministic: the rule runs over the static analysis kit (tokens, function units, calls, imports, routes) with no AI engine; exact decisionRule and languages published; not-applicable with the reason when the checkout gives nothing to evaluate. References are tokens of other files (identifiers in any case style through the canonical name, strings and templates naming the field, words of templates, GraphQL and OpenAPI documents); comments and excluded tests never count; zero references is MEDIUM for a strong field, HIGH for a special-category or financial field, LOW for a contextual one. Not judged: whether the referencing feature is exposed or documented, wildcard access (SELECT *, whole-record serializers), fillable/DTO-only references. (1.0.2: never analyses temporary files (*.tmp.*; spec.excludes follows AUDITOR_ANALYSIS_EXCLUDES). (1.0.1: never analyses test, spec, fixture and mock paths nor the auditor's own scripts (spec.excludes = AUDITOR_ANALYSIS_EXCLUDES); a fixture-looking secret (sk_test_, example, dummy) in real code is LOW, informative; every model call stays under the engine prompt cap (spec.promptMaxChars = AUDITOR_AI_PROMPT_MAX_CHARS): assess mode sends the candidate set in parts and aggregates the verdicts (a HIGH in any part is a FAIL, an unsatisfied part is a FAIL).))
| // inventory = personal-data fields of the store blocks of the schema files (Prisma, Mongoose, TypeORM, Django, SQLAlchemy, Laravel migrations, SQL) |
| const STRONG_NAME = /^(?:e_?mail|phone(?:_?number)?|first_?name|last_?name|birth_?date|dob|ssn|national_?id|passport|iban|card_?number|health|diagnosis|biometric|ip_?address|latitude|longitude)$/i; |
| const canonical = (name) => nameWords(name).join(''); // birthDate == birth_date == BirthDate |
| // reference = identifier token with the same canonical name, or a string/template literal naming the field, in any file that does not declare it (comments never count; tests are excluded) |
| // zero references: strong field -> MEDIUM; special-category / financial field -> HIGH; contextual field -> LOW; no personal-data field -> not-applicable |
The full script is disclosed on request in a read-only viewer (never published on GitHub); the attestation binds to this exact hash.