AI Slop Code Risk Monitor

tectonic-typesetting/tectonic

SlopCodeMonitor badge for tectonic-typesetting/tectonic Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

A modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive.

2.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for tectonic-typesetting/tectonic, a C project with 5,219 GitHub stars. SynthScan examined 184,795 lines of code across 533 source files, recording 347 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 2.0 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

2.0
Adjusted Signal
2.0
Raw Pattern Score
100%
Time Factor
2026-08-01
Last Push
5.2K
Stars
C
Language
184.8K
Lines of Code
533
Files
347
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 8.9/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 342 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

Are imports declared and package/API names verified? 1 finding(s).

Agent Over-Engineering Ratio 0.4/100 · LOW

Are wrappers, guards, and repeated structures necessary? 4 finding(s).

PR Review Velocity Impact 9.5/100 · LOW

Which changes need focused human review? 347 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 2MEDIUM 6LOW 339

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 347 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Over-Commented Block332 hits · 325 pts
SeverityFileLineSnippetContext
LOWcrates/xetex_layout/layout/tectonic_xetex_layout.h1#ifndef XETEX_LAYOUT_BINDINGS_HCOMMENT
LOWcrates/xetex_layout/layout/tectonic_xetex_layout.h21#endifCOMMENT
LOWcrates/xetex_layout/src/engine.rs181 } else {COMMENT
LOWcrates/xetex_layout/src/engine.rs201 // 0COMMENT
LOWcrates/engine_xdvipdfmx/xdvipdfmx/dvipdfmx.c21COMMENT
LOWcrates/engine_xdvipdfmx/xdvipdfmx/dvipdfmx.c41#include "dpx-dpxfile.h"COMMENT
LOWcrates/engine_xdvipdfmx/src/lib.rs1// Copyright 2021 the Tectonic ProjectCOMMENT
LOWcrates/engine_xdvipdfmx/src/lib.rs21use std::{ffi::CString, time::SystemTime};COMMENT
LOWcrates/bridge_icu/src/lib.rs1// Copyright 2020 the Tectonic ProjectCOMMENT
LOWcrates/engine_xetex/xetex/teckit-Common.h61#define kStatus_NeedMoreInput 2 /* ConvertBuffer: processed all input data, ready for next chunk */COMMENT
LOWcrates/engine_xetex/xetex/teckit-Common.h81#define kStatus_OutOfMemory -10 /* unable to allocate required memory */COMMENT
LOWcrates/engine_xetex/xetex/xetex-synctex.c41#define height_offset 3COMMENT
LOWcrates/engine_xetex/xetex/teckit-Format.h201typedef union RepElem RepElem;COMMENT
LOWcrates/engine_xetex/xetex/xetex-XeTeXOTMath.cpp61 break;COMMENT
LOWcrates/engine_xetex/xetex/xetex-ext.c41#include "teckit-c-Engine.h"COMMENT
LOWcrates/engine_xetex/xetex/teckit-Compiler.h21#ifndef __TECkit_Compiler_H__COMMENT
LOWcrates/engine_xetex/xetex/teckit-Compiler.h41#endifCOMMENT
LOWcrates/engine_xetex/xetex/xetex-xetexd.h201 * this conversion besides painstakingly annotating things.COMMENT
LOWcrates/engine_xetex/xetex/xetex-xetexd.h221#define ACTIVE_NODE_break_node(p) mem[(p) + 1].b32.s1 /* aka "rlink" in double-linked list */COMMENT
LOWcrates/engine_xetex/xetex/xetex-xetexd.h241#define EDGE_NODE_edge_dist(p) mem[(p) + 2].b32.s1 /* "new left_edge position relative to cur_h" */COMMENT
LOWcrates/engine_xetex/xetex/xetex-xetexd.h261/* To check: do these really only apply to MATH_NODEs? */COMMENT
LOWcrates/engine_xetex/xetex/xetex-xetexd.h281#define PASSIVE_NODE_serial(p) mem[p].b32.s0 /* aka "info" */COMMENT
LOWcrates/engine_xetex/xetex/xetex-xetexd.h301#define GLUE_SPEC_shrink(p) mem[(p) + 3].b32.s1 /* a scaled */COMMENT
LOWcrates/engine_xetex/xetex/xetex-xetexd.h1061// ttbc_diagnostic_t *warning = diagnostic_begin_capture_warning_here();COMMENT
LOWcrates/engine_xetex/xetex/xetex-xetexd.h1081// A replacement for xetex print_file_line+print_nl_ctr blocks. e.g. ReplaceCOMMENT
LOWcrates/engine_xetex/xetex/xetex-xetexd.h1181/* additional declarations we want to slip in for xetex */COMMENT
LOWcrates/engine_xetex/xetex/xetex-xetexd.h1201COMMENT
LOWcrates/engine_xetex/xetex/teckit-c-Engine.h41#define kFlags_VisualOrder 0x00008000U /* visual rather than logical order */COMMENT
LOWcrates/engine_xetex/xetex/teckit-c-Engine.h81/* MS compiler has predefined _WIN32, so assume Windows target */COMMENT
LOWcrates/engine_xetex/xetex/teckit-Engine.cpp21 2005-05-06 jk patched match() to forget matches within groups if we backtrack outCOMMENT
LOWcrates/engine_xetex/xetex/teckit-Engine.cpp41# undef WORDS_BIGENDIANCOMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h41#define HOLD_HEAD (MEM_TOP - 4)COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h61#define FROZEN_ENDV (FROZEN_CONTROL_SEQUENCE + 6)COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h81#define SF_CODE(n) (eqtb[SF_CODE_BASE + (n)].b32.s1)COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h101 */COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h121#define EXPR_NODE_SIZE 4COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h141/* MATH_NODE L/R typesetting extras */COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h161#define MATH_GROUP 9COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h181/* scanner_status values: */COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h201#define V_TEMPLATE 2COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h221#define MID_LINE 1COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h241#define RIGHT1 143COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h261#define TOKEN_LIST 0COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h281#define SHRINKING 2COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h301#define SUP_MARK 7COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h321#define RADICALVERTICALGAP 49COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h341#define NO_EXPAND_FLAG (BIGGEST_USV + 2)COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h361#define PROTECTED_TOKEN (END_MATCH_TOKEN + 1)COMMENT
LOWcrates/engine_xetex/xetex/xetex-constants.h381#define VSPLIT_INIT 0COMMENT
LOWcrates/engine_xetex/xetex/xetex_format.h21COMMENT
LOWcrates/engine_xetex/xetex/xetex_format.h41#define INT_PAR__widow_penalty 6 /* = 0x6 */COMMENT
LOWcrates/engine_xetex/xetex/xetex_format.h61#define INT_PAR__hbadness 26 /* = 0x1a */COMMENT
LOWcrates/engine_xetex/xetex/xetex_format.h81#define INT_PAR__default_hyphen_char 46 /* = 0x2e */COMMENT
LOWcrates/engine_xetex/xetex/xetex_format.h101#define INT_PAR__xetex_linebreak_locale 66 /* = 0x42 */COMMENT
LOWcrates/engine_xetex/xetex/xetex_format.h121COMMENT
LOWcrates/engine_xetex/xetex/xetex_format.h141#define DIMEN_PAR__v_offset 19 /* = 0x13 */COMMENT
LOWcrates/engine_xetex/xetex/xetex_format.h161#define GLUE_PAR__space_skip 12 /* = 0xc */COMMENT
LOWcrates/engine_xetex/xetex/xetex_format.h181#define LOCAL__err_help 9 /* = 0x9 */COMMENT
LOWcrates/engine_xetex/xetex/xetex_format.h201#define FROZEN_CONTROL_SEQUENCE 2243226 /* = 0x223a9a */COMMENT
LOWcrates/engine_xetex/xetex/xetex_format.h221#define DEL_CODE_BASE 7827068 /* = 0x776e7c */COMMENT
272 more matches not shown…
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMcrates/xdv/src/lib.rs95/// This internal error type lets us leverage Results to convenientlyCOMMENT
MEDIUMcrates/cfg_support/src/lib.rs139// macro expands out to a big boolean logical expression. Fundamentally, it'sCOMMENT
MEDIUMcrates/bridge_freetype2/build.rs5//! like to be able to vendor it. When that day comes, we should leverageCOMMENT
MEDIUMcrates/bundles/src/ttb.rs97 // TODO: more robust checksCOMMENT
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHbundles/tests/packages.py211except KeyError:CODE
HIGHbundles/tests/packages.py227except KeyError:CODE
Decorative Section Separators2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMtests/assets/glyphlist.txt1# -----------------------------------------------------------COMMENT
MEDIUMtests/assets/glyphlist.txt14# -----------------------------------------------------------COMMENT
Slop Phrases3 hits · 4 pts
SeverityFileLineSnippetContext
LOWcrates/pdf_io/pdf_io/dpx-pdflimits.h30 * NOTE: Don't forget to update CIDFont_stdcc_def[] in cid.cCOMMENT
LOWcrates/pdf_io/pdf_io/dpx-pdfobj.c368 /* Don't forget to update CIDFont_stdcc_def[] in cid.c too! */COMMENT
LOWbundles/tests/packages.py106 # `just_added` enables us to make sure to test new packages inCOMMENT
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWcrates/engine_spx2html/src/fontfile.rs465 // Step 1: create new CMAP, appending to buffer.COMMENT
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOWcrates/engine_spx2html/src/fontfile.rs465 // Step 1: create new CMAP, appending to buffer.COMMENT
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWbundles/tests/packages.py37CODE
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOWbundles/tests/packages.py49CODE