AI Slop Code RIsk Monitor

facebook/prophet

Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth.

7.1 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for facebook/prophet, a Python project with 20,435 GitHub stars. SynthScan examined 31,336 lines of code across 163 source files, recording 194 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 7.1 (Moderate 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.

7.1
Adjusted Signal
7.1
Raw Pattern Score
100%
Time Factor
2026-10-05
Last Push
20.4K
Stars
Python
Language
31.3K
Lines of Code
163
Files
194
Pattern Hits
2026-10-12
Scan Date
0.05
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 19.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 8.7/100 · LOW

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

Agent Over-Engineering Ratio 15.3/100 · LOW

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

PR Review Velocity Impact 31.2/100 · MEDIUM

Which changes need focused human review? 194 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 8MEDIUM 0LOW 186

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 194 distinct pattern matches across 11 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.

Hyper-Verbose Identifiers77 hits · 74 pts
SeverityFileLineSnippetContext
LOWpython/setup.py63def maybe_install_cmdstan_toolchain() -> bool:CODE
LOWpython/prophet/serialize.py139def _handle_simple_attributes_backwards_compat(model_dict: dict[str, Any]) -> None:CODE
LOWpython/prophet/metrics.py26def register_performance_metric(func: Callable[..., Any]) -> Callable[..., Any]:CODE
LOWpython/prophet/plot.py556def plot_cross_validation_metric(CODE
LOWpython/prophet/plot.py883def plot_forecast_component_plotly(CODE
LOWpython/prophet/plot.py954def get_forecast_component_plotly_props(CODE
LOWpython/prophet/plot.py1069def get_seasonality_plotly_props(CODE
LOWpython/prophet/forecaster.py540 def make_seasonality_features(CODE
LOWpython/prophet/forecaster.py568 def construct_holiday_dataframe(self, dates: pd.Series[pd.Timestamp]) -> pd.DataFrame:CODE
LOWpython/prophet/forecaster.py782 def _prepare_regressors_for_predict(CODE
LOWpython/prophet/forecaster.py960 def make_all_seasonality_features(self, df: pd.DataFrame) -> tuple[CODE
LOWpython/prophet/forecaster.py1637 def predict_seasonal_components(self, df: pd.DataFrame) -> pd.DataFrame:CODE
LOWpython/prophet/forecaster.py1705 def sample_posterior_predictive(CODE
LOWpython/prophet/forecaster.py1923 def sample_predictive_trend_vectorized(CODE
LOWpython/prophet/forecaster.py2048 def _make_historical_mat_time(CODE
LOWpython/prophet/make_holidays.py14def get_country_holidays_class(country: str) -> type[holidays.HolidayBase]:CODE
LOWpython/prophet/tests/test_diagnostics.py29def make_cross_validation_model():CODE
LOWpython/prophet/tests/test_diagnostics.py107 def test_cross_validation_internal_executor_lifecycle(CODE
LOWpython/prophet/tests/test_diagnostics.py166 def test_cross_validation_does_not_shutdown_caller_executor(self, monkeypatch):CODE
LOWpython/prophet/tests/test_diagnostics.py188 def test_bad_parallel_methods(self, ts_short, backend):CODE
LOWpython/prophet/tests/test_diagnostics.py198 def test_check_single_cutoff_forecast_func_calls(self, ts_short, monkeypatch, backend):CODE
LOWpython/prophet/tests/test_diagnostics.py228 def test_check_extra_output_columns_cross_validation(self, ts_short, backend, extra_output_columns):CODE
LOWpython/prophet/tests/test_diagnostics.py241 def test_cross_validation_logistic_or_flat_growth(self, growth, ts_short, backend):CODE
LOWpython/prophet/tests/test_diagnostics.py254 def test_cross_validation_extra_regressors(self, ts_short, backend):CODE
LOWpython/prophet/tests/test_diagnostics.py281 def test_cross_validation_shared_seasonality_condition(self, ts_short, backend):CODE
LOWpython/prophet/tests/test_diagnostics.py307 def test_cross_validation_metrics_with_regressor_predictor(self, backend):CODE
LOWpython/prophet/tests/test_diagnostics.py335 def test_cross_validation_with_regressor_predictor(self, backend, monkeypatch):CODE
LOWpython/prophet/tests/test_diagnostics.py366 def test_cross_validation_default_value_check(self, ts_short, backend):CODE
LOWpython/prophet/tests/test_diagnostics.py377 def test_cross_validation_custom_cutoffs(self, ts_short, backend):CODE
LOWpython/prophet/tests/test_diagnostics.py390 def test_cross_validation_uncertainty_disabled(self, ts_short, backend):CODE
LOWpython/prophet/tests/test_diagnostics.py470 def test_performance_metrics_does_not_modify_metrics(self):CODE
LOWpython/prophet/tests/conftest.py39def pytest_collection_modifyitems(config, items):CODE
LOWpython/prophet/tests/test_metrics.py123 def test_no_coverage_without_uncertainty(self):CODE
LOW⚡python/prophet/tests/test_metrics.py137 def test_does_not_modify_metrics_when_coverage_dropped(self):CODE
LOW⚡python/prophet/tests/test_metrics.py146 def test_does_not_modify_metrics_when_mape_dropped(self):CODE
LOW⚡python/prophet/tests/test_metrics.py156 def test_does_not_modify_metrics_when_all_skipped(self):CODE
LOW⚡python/prophet/tests/test_metrics.py164 def test_accepts_immutable_metrics_sequence(self):CODE
LOWpython/prophet/tests/test_metrics.py199 def test_import_from_diagnostics(self):CODE
LOWpython/prophet/tests/test_utilities.py13 def test_regressor_coefficients(self, daily_univariate_ts, backend):CODE
LOW⚡python/prophet/tests/test_prophet.py109 def test_fit_predict_no_changepoints(self, daily_univariate_ts, backend):CODE
LOW⚡python/prophet/tests/test_prophet.py119 def test_fit_predict_no_changepoints_mcmc(self, daily_univariate_ts, backend):CODE
LOW⚡python/prophet/tests/test_prophet.py128 def test_fit_changepoint_not_in_history(self, daily_univariate_ts, backend):CODE
LOW⚡python/prophet/tests/test_prophet.py455 def test_fourier_series_weekly(self, daily_univariate_ts):CODE
LOW⚡python/prophet/tests/test_prophet.py461 def test_fourier_series_yearly(self, daily_univariate_ts):CODE
LOW⚡python/prophet/tests/test_prophet.py469 def test_auto_weekly_seasonality(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py73 def test_fit_predict_large_numbers(self, large_numbers_ts, backend, scaling, expected):CODE
LOWpython/prophet/tests/test_prophet.py85 def test_fit_predict_sampling(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py98 def test_fit_predict_no_seasons(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py140 def test_fit_predict_duplicates(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py154 def test_fit_predict_constant_history(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py166 def test_fit_constant_history_param_shapes(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py173 def test_fit_predict_uncertainty_disabled(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py205 def test_setup_dataframe_ds_column(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py230 def test_logistic_floor_minmax(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py250 def test_make_future_dataframe(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py264 def test_make_future_dataframe_include_history(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py276 def test_invalid_growth_input(self, backend):CODE
LOWpython/prophet/tests/test_prophet.py417 def test_set_changepoint_range(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py433 def test_get_zero_changepoints(self, daily_univariate_ts, backend):CODE
LOWpython/prophet/tests/test_prophet.py443 def test_override_n_changepoints(self, daily_univariate_ts, backend):CODE
17 more matches not shown…
Over-Commented Block48 hits · 48 pts
SeverityFileLineSnippetContext
LOWR/R/plot.R1# Copyright (c) Facebook, Inc. and its affiliates.COMMENT
LOWR/R/plot.R21}COMMENT
LOWR/R/plot.R81#'COMMENT
LOWR/R/plot.R161 1)))COMMENT
LOWR/R/plot.R241 }COMMENT
LOWR/R/plot.R281 }COMMENT
LOWR/R/plot.R401#' significant. (Default 0.01)COMMENT
LOWR/R/plot.R441#'COMMENT
LOWR/R/plot.R501 attachAtBottom = TRUE)COMMENT
LOWR/R/plot.R521#' As a concrete example, if metric='mse', then this plot will show theCOMMENT
LOWR/R/prophet.R21#' provided, then the model object will be instantiated but not fit; useCOMMENT
LOWR/R/prophet.R41#' @param holidays data frame with columns holiday (character) and ds (dateCOMMENT
LOWR/R/prophet.R61#' the trend using the MAP estimate of the extrapolated generative model. IfCOMMENT
LOWR/R/prophet.R281COMMENT
LOWR/R/prophet.R301#' Prepare dataframe for fitting or predicting.COMMENT
LOWR/R/prophet.R381 df[[name]] <- (df[[name]] - props$mu) / props$stdCOMMENT
LOWR/R/prophet.R561#' @param holidays Dataframe containing holidays, as returned byCOMMENT
LOWR/R/prophet.R641#' Decreasing the prior scale will add additional regularization. If noCOMMENT
LOWR/R/prophet.R701#'COMMENT
LOWR/R/prophet.R881COMMENT
LOWR/R/prophet.R981COMMENT
LOWR/R/prophet.R1081#'COMMENT
LOWR/R/prophet.R1101#' last points in the time series.COMMENT
LOWR/R/prophet.R1121#' Initialize logistic growth.COMMENT
LOWR/R/prophet.R1161#'COMMENT
LOWR/R/prophet.R1281 return(m)COMMENT
LOWR/R/prophet.R1341#' Evaluate the flat trend function.COMMENT
LOWR/R/prophet.R1381#'COMMENT
LOWR/R/prophet.R1521#' @param df Dataframe with dates for predictions (column ds), and capacityCOMMENT
LOWR/R/prophet.R1561#' Simulate observations from the extrapolated generative model.COMMENT
LOWR/R/prophet.R1641#' @param m Prophet model object.COMMENT
LOWR/R/utilities.R1# Copyright (c) Facebook, Inc. and its affiliates.COMMENT
LOWR/R/utilities.R21#' \item{center: The mean of the regressor if it was standardized. Otherwise 0.}COMMENT
LOWR/R/data.R1# Copyright (c) Facebook, Inc. and its affiliates.COMMENT
LOWR/R/stan_backends.R81#' @param model Model object.COMMENT
LOWR/R/stan_backends.R161#' @return A named list containing "stan_fit" (the fitted stan object),COMMENT
LOWR/R/diagnostics.R1# Copyright (c) Facebook, Inc. and its affiliates.COMMENT
LOWR/R/diagnostics.R61#' technique described in https://robjhyndman.com/hyndsight/tscv/ .COMMENT
LOWR/R/diagnostics.R141COMMENT
LOWR/R/diagnostics.R181 # Merge yhat, y, and cutoff.COMMENT
LOWR/R/diagnostics.R241#'COMMENT
LOWR/R/diagnostics.R261#' will compute it separately for each horizon. The default ofCOMMENT
LOWR/R/diagnostics.R501#' Mean absolute percent errorCOMMENT
LOWR/R/diagnostics.R521#' @param w Aggregation window size.COMMENT
LOWR/R/diagnostics.R541#' @return Array of symmetric mean absolute percent errors.COMMENT
LOWdocs/_config.yml21# https://github.com/blog/2277-what-s-new-in-github-pages-with-jekyll-3-3COMMENT
LOWdocs/_config.yml41 secondary: "#f9f9f9"COMMENT
LOWdocs/_data/nav_docs.yml21# - id: CCOMMENT
Unused Imports37 hits · 37 pts
SeverityFileLineSnippetContext
LOWpython/prophet/serialize.py6CODE
LOWpython/prophet/metrics.py6CODE
LOWpython/prophet/plot.py6CODE
LOWpython/prophet/models.py6CODE
LOWpython/prophet/diagnostics.py6CODE
LOWpython/prophet/diagnostics.py16CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py19CODE
LOWpython/prophet/diagnostics.py44CODE
LOWpython/prophet/__init__.py6CODE
LOWpython/prophet/__init__.py7CODE
LOWpython/prophet/forecaster.py6CODE
LOWpython/prophet/utilities.py6CODE
LOWpython/prophet/make_holidays.py6CODE
LOWpython/prophet/tests/test_metrics.py200CODE
LOWpython/prophet/tests/test_metrics.py200CODE
LOWpython/prophet/tests/test_metrics.py200CODE
LOWpython/prophet/tests/test_metrics.py200CODE
LOWpython/prophet/tests/test_metrics.py200CODE
LOWpython/prophet/tests/test_metrics.py200CODE
LOWpython_shim/fbprophet/serialize.py6CODE
LOWpython_shim/fbprophet/plot.py6CODE
LOWpython_shim/fbprophet/models.py6CODE
LOWpython_shim/fbprophet/diagnostics.py6CODE
LOWpython_shim/fbprophet/__init__.py8CODE
LOWpython_shim/fbprophet/forecaster.py6CODE
LOWpython_shim/fbprophet/make_holidays.py6CODE
Cross-Language Confusion4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHpython/prophet/forecaster.py1098 if not component_cols.equals(self.train_component_cols):CODE
HIGHpython/prophet/tests/test_diagnostics.py569 assert m1.changepoints.equals(m2.changepoints)CODE
HIGHpython/prophet/tests/test_serialize.py41 assert v.equals(m2.__dict__[k])CODE
HIGHpython/prophet/tests/test_serialize.py115 assert v.equals(m2.__dict__[k])CODE
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHpython/prophet/metrics.py0mean absolute scale error parameters ---------- df: cross-validation results dataframe. w: aggregation window size. retuSTRING
HIGHpython/prophet/tests/test_diagnostics.py0mean absolute scale error parameters ---------- df: cross-validation results dataframe. w: aggregation window size. retuSTRING
HIGHdocs/_docs/diagnostics.md0mean absolute scale error parameters ---------- df: cross-validation results dataframe. w: aggregation window size. retuSTRING
Deep Nesting9 hits · 9 pts
SeverityFileLineSnippetContext
LOWpython/prophet/serialize.py42CODE
LOWpython/prophet/serialize.py149CODE
LOWpython/prophet/plot.py126CODE
LOWpython/prophet/plot.py430CODE
LOWpython/prophet/diagnostics.py106CODE
LOWpython/prophet/forecaster.py1705CODE
LOWpython/prophet/forecaster.py1968CODE
LOWpython/prophet/tests/test_serialize.py18CODE
LOWpython/prophet/tests/test_serialize.py60CODE
Redundant / Tautological Comments5 hits · 6 pts
SeverityFileLineSnippetContext
LOWpython/prophet/diagnostics.py217 # Check if the initial windowCOMMENT
LOWpython/scripts/generate_holidays_file.py24 # Check if anything convertedCOMMENT
LOWR/R/diagnostics.R124 # Check if the initial window (that is, the amount of time between theCOMMENT
LOWdocs/api/prophet/diagnostics.html285</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="c1"># Check if the initialCODE
LOWdocs/api/prophet/diagnostics.html686</span><span id="cross_validation-218"><a href="#cross_validation-218"><span class="linenos">218</span></a> <span claCODE
Modern Structural Boilerplate5 hits · 5 pts
SeverityFileLineSnippetContext
LOWpython/prophet/metrics.py410__all__ = [CODE
LOWpython/prophet/models.py74 def set_options(self, **kwargs: Unpack[_IStanBackendOptions]) -> None:CODE
LOWpython/prophet/__init__.py9__all__ = ["Prophet", "__version__"]CODE
LOWpython/prophet/forecaster.py459 def set_changepoints(self) -> None:CODE
LOWpython/prophet/forecaster.py1171 def set_auto_seasonalities(self) -> None:CODE
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHpython/prophet/tests/test_diagnostics.py48except ImportError:CODE
Excessive Try-Catch Wrapping3 hits · 3 pts
SeverityFileLineSnippetContext
LOWpython/setup.py70 except Exception:CODE
LOWpython/prophet/models.py244 except Exception:CODE
LOWpython/prophet/forecaster.py210 except Exception as e:CODE
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWpython/prophet/plot.py646CODE
LOWpython/prophet/forecaster.py130CODE