Factory.ai
All Reports

FastAPI

Python

Strong Task Discovery

FastAPI reaches Level 3 with 75% Task Discovery pass rate. Currently becoming autonomous-capable with 31/59 criteria passing (53%). Key areas for improvement include the opportunities listed below.

Strengths

01
Formatter
Ruff format configured in pre-commit-config.yaml (local-ruff-format hook)
02
Large File Detection
Pre-commit hook check-added-large-files configured with --maxkb=750 threshold
03
Lint Config
Ruff linter configured in pyproject.toml and pre-commit with select rules (E, W, F, I, B, C4, UP)

Opportunities

01
Cyclomatic Complexity
Add complexity analysis to identify and refactor overly complex functions.
02
Feature Flag Infrastructure
Add feature flags to enable safer deployments and gradual rollouts.
03
Integration Tests Exist
Add integration tests to verify component interactions and catch issues unit tests miss.

All Criteria

Style & Validation7/11 (64%)
—code_modularizationPython library without module boundary enforcement tools (import-linter, Nx); skip for small project
✗cyclomatic_complexityNo complexity analysis tools (lizard, radon, gocyclo, SonarQube) found
✗dead_code_detectionNo dead code detection tools (vulture, dead, knip, SonarQube) found
✗duplicate_code_detectionNo duplication detection tools (jscpd, PMD CPD, SonarQube) found
✓formatterRuff format configured in pre-commit-config.yaml (local-ruff-format hook)
✓large_file_detectionPre-commit hook check-added-large-files configured with --maxkb=750 threshold
✓lint_configRuff linter configured in pyproject.toml and pre-commit with select rules (E, W, F, I, B, C4, UP)
—n_plus_one_detectionLibrary without database/ORM usage; skip
✓naming_consistencyRuff includes naming rules implicitly; Python conventions enforced through linter
✓pre_commit_hooks.pre-commit-config.yaml exists with ruff check/format, file checks, and custom hooks
✓strict_typingMypy strict mode enabled ([tool.mypy] strict = true in pyproject.toml)
✗tech_debt_trackingNo TODO/FIXME scanner, tech debt tracking tools, or SonarQube found
✓type_checkMypy configured with strict = true in [tool.mypy] section of pyproject.toml
Build System7/11 (64%)
✗agentic_developmentGit history shows only github-actions[bot], no droid or agent co-authorship in recent commits
—automated_pr_reviewNo automated PR review generation found (danger.js, droid exec reviews, or AI review bots not detected)
✓build_cmd_docREADME contains installation instructions, pyproject.toml defines build system with pdm-backend
—build_performance_trackingNo build caching (turbo, nx, webpack), metrics export, or performance tracking found
—dead_feature_flag_detectionPrerequisite feature_flag_infrastructure failed; skipped
✓deployment_frequencyVery frequent releases: 30 releases in ~45 days, multiple deployments per week confirmed
✓deps_pinnedDependencies pinned in uv.lock file (Python lockfile)
✓fast_ci_feedbackCI workflow completes in reasonable time based on PR checks (test.yml runs efficiently across matrix)
✗feature_flag_infrastructureNo feature flag systems (LaunchDarkly, Statsig, Unleash, GrowthBook) found
—heavy_dependency_detectionNot a bundled application (library); skip
—monorepo_toolingSingle-application repository, not a monorepo; skipped
—progressive_rolloutNot applicable for a Python library; skip as not an infra/service deployment repo
✓release_automationpublish.yml workflow automates PyPI releases on GitHub release creation
✓release_notes_automationlatest-changes workflow automates release notes generation to docs/en/docs/release-notes.md
—rollback_automationNot applicable for a Python library; skip as not an infra-based repo
✗single_command_setupREADME lacks single command setup; no 'uv sync && uv run ...' or equivalent documented for quick start
✗unused_dependencies_detectionNo unused dependency detection tools (depcheck, deptry, pip-extra-reqs) found
✓vcs_cli_toolsGitHub CLI (gh) is authenticated and available (verified with gh auth status)
—version_drift_detectionSingle-application repository, not a monorepo; skipped
Testing5/7 (71%)
—flaky_test_detectionNo flaky test detection (test retry config, BuildPulse, quarantine mechanisms) found
✗integration_tests_existNo integration/e2e tests found (no cypress/, playwright.config.ts for application testing)
✓test_coverage_thresholdsCoverage threshold enforced: test.yml has 'coverage report --fail-under=100' (100% required)
✓test_isolationPytest supports parallel execution (matrix strategy in CI, no --runInBand forcing serial)
✓test_naming_conventionsPytest naming conventions configured in [tool.pytest.ini_options] in pyproject.toml
✗test_performance_trackingNo test timing output (--durations), test analytics platforms, or performance tracking found
✓unit_tests_existExtensive tests/ directory with hundreds of test_*.py files
✓unit_tests_runnablePytest configured and tests are collectable (pytest --collect-only works despite minor import warnings)
Documentation4/7 (57%)
✗agents_mdNo AGENTS.md file found in repository root
—agents_md_validationPrerequisite agents_md failed; skipped
✓api_schema_docsFastAPI core functionality generates OpenAPI/Swagger schemas (fastapi/openapi/ module exists)
✓automated_doc_generationbuild-docs.yml and deploy-docs.yml workflows automate documentation generation
✓documentation_freshnessCONTRIBUTING.md modified within last 180 days (found in git log)
✓readmeREADME.md exists with comprehensive setup, usage, and project information
✗service_flow_documentedNo architecture diagrams (*.mermaid, *.puml, docs/architecture*) or service flow documentation found
✗skillsNo skills directories found (.factory/skills/, .skills/, .claude/skills/)
Dev Environment0/2 (0%)
—database_schemaLibrary without database; skip
✗devcontainerNo .devcontainer/devcontainer.json found
—devcontainer_runnableNo devcontainer to test; skipped
✗env_templateNo .env.example file or environment variables documented in README/AGENTS.md
—local_services_setupLibrary without external service dependencies; skip
Debugging & Observability2/8 (25%)
✗alerting_configuredNo alerting systems (PagerDuty, OpsGenie) or custom alerting rules found
—circuit_breakersLibrary without external service dependencies; skip
✓code_quality_metricsCoverage metrics tracked: test.yml uploads coverage artifacts and enforces 100% threshold
✗deployment_observabilityNo monitoring dashboard links (Datadog, Grafana, New Relic) or deploy notifications found
✗distributed_tracingNo trace ID or request ID propagation (OpenTelemetry, X-Request-ID) found
✗error_tracking_contextualizedNo error tracking services (Sentry, Bugsnag, Rollbar) configured
—health_checksLibrary, not a deployed service; skip
✗metrics_collectionNo metrics instrumentation (Datadog, Prometheus, New Relic, CloudWatch) found
—profiling_instrumentationLibrary where profiling is not meaningful; skip
✗runbooks_documentedNo runbooks directory or links to external runbooks in README/AGENTS.md/docs
✓structured_loggingLogging library configured in fastapi/logger.py with standard Python logging module
Security3/7 (43%)
—automated_security_reviewCode scanning API returned 403 forbidden; cannot verify SAST tools or security reports
—branch_protectionRequires GitHub admin API access to verify branch protection rules (skipped).
✗codeownersNo CODEOWNERS file found in root or .github/ directory
—dast_scanningLibrary, not a web service; skip
✓dependency_update_automationDependabot configured for github-actions and uv (Python) in .github/dependabot.yml
✓gitignore_comprehensiveGitignore excludes .env files (not .env.example), venv, __pycache__, .DS_Store, IDE configs
✗log_scrubbingNo log sanitization mechanisms (pino redact, winston filtering, structlog processors) found
—pii_handlingLibrary that doesn't process PII; skip
—privacy_complianceLibrary without end-user data collection; skip
—secret_scanningRequires GitHub admin API access to verify secret scanning configuration (skipped).
✓secrets_managementGitHub Actions secrets usage (secrets.GITHUB_TOKEN, secrets.FASTAPI_LATEST_CHANGES), no hardcoded secrets
Task Discovery3/4 (75%)
✓backlog_healthOpen issues have descriptive titles (>10 chars) and labels; most issues are labeled
✓issue_labeling_systemConsistent labels exist: bug, feature, question, docs (verified in open issues)
✓issue_templates.github/ISSUE_TEMPLATE/ directory exists with config.yml and privileged.yml
✗pr_templatesNo .github/pull_request_template.md or similar PR template found
Product & Analytics0/2 (0%)
✗error_to_insight_pipelineNo error-to-issue automation (Sentry-GitHub integration, error-based issue creation) found
✗product_analytics_instrumentationNo product analytics (Mixpanel, Amplitude, PostHog, Heap, GA4) found

Ready to build the software of the future?

Start building

Arrow Right Icon