Factory.ai

Strong Testing

Temporal reaches Level 4 with 100% Testing pass rate. Currently reaching production grade with 52/70 criteria passing (74%). Key areas for improvement include the opportunities listed below.

Strengths

01
Testing (100%)
Includes Flaky Test Detection, Integration Tests Exist, Test Coverage Thresholds.
02
Task Discovery (100%)
Includes Backlog Health, Issue Labeling System, Issue Templates.
03
Code Modularization
Go internal/ package pattern used for enforcing module boundaries. Proto has internal/ directories with compiler-enforced visibility

Opportunities

01
Pre Commit Hooks
Set up pre-commit hooks (Husky, pre-commit) to catch issues before they reach CI and speed up feedback loops.
02
Feature Flag Infrastructure
Add feature flags to enable safer deployments and gradual rollouts.
03
Skills
Create .factory/skills to give agents reusable, tested capabilities for common tasks.

All Criteria

Style & Validation9/12 (75%)
code_modularizationGo internal/ package pattern used for enforcing module boundaries. Proto has internal/ directories with compiler-enforced visibility
cyclomatic_complexitygolangci-lint includes gocyclo for cyclomatic complexity analysis. Also uses revive which has complexity rules
dead_code_detectionstaticcheck enabled in golangci-lint detects unused code, unreachable code, and dead stores
duplicate_code_detectionNo duplicate code detection tool (jscpd, PMD CPD, SonarQube) found in configuration or CI
formattergoimports and gci formatters configured. Makefile has fmt-imports target and CI workflow validates formatting
large_file_detectionNo git hooks, CI jobs checking file size, .gitattributes LFS, or linter rules for file size detected
lint_configgolangci-lint configured with comprehensive rules including errcheck, staticcheck, revive, forbidigo, exhaustive, godox, testifylint
n_plus_one_detectionSkipped - temporal is a database-backed service but uses raw SQL and NoSQL clients without ORM, making N+1 detection tools not applicable
naming_consistencygolangci-lint revive rules enforce naming conventions. Documented naming patterns in AGENTS.md
pre_commit_hooksNo .pre-commit-config.yaml, husky, or similar pre-commit hook framework found
strict_typingGo is strictly typed by default with compile-time type checking enforced
tech_debt_trackinggodox linter in golangci-lint tracks FIXME keywords. Enforces technical debt tracking via linting
type_checkGo has built-in strict type checking enforced by the compiler. go.mod requires go >= 1.25.0
Build System10/13 (77%)
agentic_developmentNo evidence of agent co-authorship in git log. No factory-droid, Claude, or AI agent signatures found in recent 100 commits
automated_pr_reviewSemgrep automated security reviews visible in PR statusCheckRollup. Code scanning generates review comments
build_cmd_docREADME.md and AGENTS.md document build commands: make, make bins, make install. Clear instructions for building temporal-server
build_performance_trackingNo explicit build caching config, build metrics export, or build duration tracking visible. GitHub Actions cache not explicitly configured
dead_feature_flag_detectionSkipped - prerequisite feature_flag_infrastructure failed. No feature flag system to detect stale flags
deployment_frequency20 releases in gh release list with v1.28.2, v1.27.4, v1.29.2 on 2025-12-30. Multiple releases per month showing frequent deployment
deps_pinnedgo.sum committed with exact dependency versions and checksums. Go modules provide deterministic builds
fast_ci_feedbackCI checks complete in ~4 minutes based on PR statusCheckRollup (e.g., 23:03:35 to 23:04:05, 18:44:08 to 18:47:49). Well under 10 minute threshold
feature_flag_infrastructureNo LaunchDarkly, Statsig, Unleash, GrowthBook, or custom feature flag system found. Dynamic config exists but not feature flags
heavy_dependency_detectionSkipped - backend Go service without bundle size concerns. Not applicable for server-side applications
monorepo_toolingSkipped - single Go module with go.mod at root. Not a monorepo requiring Turborepo/Nx/Lerna
progressive_rolloutSkipped - no evidence of canary deployments or percentage-based rollouts. Infrastructure repository focus
release_automationrelease.yml workflow triggers on release published. goreleaser automates binary builds for multiple platforms
release_notes_automationgoreleaser.yml configured for automated release builds and artifact generation. GitHub releases workflow automates releases
rollback_automationSkipped - no rollback automation documentation or scripts found. Infrastructure repository focus
single_command_setupREADME.md documents brew install temporal && temporal server start-dev. CONTRIBUTING.md shows make start for local development
unused_dependencies_detectiongo mod tidy in Makefile and CI (ci-build-misc target calls gomodtidy) ensures unused dependencies are detected
vcs_cli_toolsgh CLI v2.52.0 installed and authenticated to github.com with repo, workflow, read:org scopes
version_drift_detectionSkipped - single application repo with unified go.mod. No package version drift concerns
Testing8/8 (100%)
flaky_test_detectionDedicated flaky-tests-report.yml workflow using tringa tool to detect and report flaky tests, runs weekly on Wednesdays
integration_tests_existIntegration tests in common/persistence/tests/, tools/tests/, and temporaltest/ directories. Makefile has integration-test target
test_coverage_thresholdscodecov.yml configured with coverage tracking. Makefile has coverage targets with MAX_TEST_ATTEMPTS retry logic
test_isolationTests run with -race flag enabling parallel execution and race detection. TEST_SHUFFLE_FLAG=on for randomized test order
test_naming_conventionsGo built-in *_test.go convention enforced. All test files follow TestXxx pattern with testify framework
test_performance_trackingTests run with -timeout flag tracking. CI outputs test timing. Makefile defines TEST_TIMEOUT=35m for performance monitoring
unit_tests_existExtensive *_test.go files throughout codebase. Tests in client/, common/, service/, chasm/, tools/ directories
unit_tests_runnablemake unit-test command successfully executes test suite with CGO_ENABLED=0 go test with race detector and shuffle
Documentation6/8 (75%)
agents_mdAGENTS.md exists at root with 8185 bytes. Documents development workflow, commands, best practices, project structure
agents_md_validationNo CI validation of AGENTS.md commands found. No automated testing that AGENTS.md instructions remain accurate
api_schema_docsExtensive proto definitions in proto/internal/temporal/server/api/ covering all services. 60+ .proto files documenting gRPC APIs
automated_doc_generationProtobuf API documentation auto-generated from .proto files. make proto generates API docs. 60+ proto files with comprehensive documentation
documentation_freshnessAGENTS.md modified within last 180 days. git log shows recent documentation updates
readmeREADME.md exists with comprehensive introduction, getting started guide, setup instructions, and contribution guidelines
service_flow_documentedExtensive architecture docs in docs/architecture/ including README.md, history-service.md, matching-service.md, workflow-lifecycle.md, nexus.md
skillsNo .factory/skills/, .skills/, or .claude/skills/ directories found in repository
Dev Environment2/4 (50%)
database_schemaComprehensive database schemas in schema/ directory for Cassandra, MySQL, PostgreSQL, SQLite, and Elasticsearch
devcontainerNo .devcontainer/devcontainer.json or .devcontainer.json found in repository
devcontainer_runnableSkipped - prerequisite devcontainer check failed. No devcontainer configuration to validate
env_templateNo .env.example or .env.template file found. Environment variables not explicitly documented in template form
local_services_setupdocker-compose.yml in develop/docker-compose/ and develop/github/ with MySQL, Cassandra, PostgreSQL, Elasticsearch, Prometheus, Grafana
Debugging & Observability8/11 (73%)
alerting_configuredNo PagerDuty, OpsGenie, or alerting configuration found in repository. Prometheus/Grafana present but no alert rules visible
circuit_breakersgithub.com/sony/gobreaker circuit breaker library in go.mod. Used in service/history/circuitbreakerpool/
code_quality_metricsCodecov integration via .codecov.yml. Coverage reports in CI. Semgrep code scanning visible in PR checks
deployment_observabilityDocumentation references Grafana Tempo and dashboards in docs/development/testing.md and tracing.md. Docker compose includes Grafana
distributed_tracingOpenTelemetry instrumentation via go.opentelemetry.io packages. OTEL exporters for traces and metrics configured in go.mod
error_tracking_contextualizedNo Sentry, Bugsnag, or Rollbar integration found. No error tracking service configured
health_checksHealth check implementation in service/frontend/health_check.go with HealthChecker interface and membership monitoring
metrics_collectionPrometheus client in go.mod. Extensive metrics in common/metrics. Docker compose includes Prometheus and Grafana services
profiling_instrumentationOpenTelemetry SDK with profiling capabilities. Go pprof available via net/http/pprof. OTEL environment variables documented
runbooks_documentedNo references to runbooks, playbooks, or incident response documentation found in README, AGENTS.md, or docs/
structured_logginggo.uber.org/zap structured logging library used throughout. common/log package with tag-based logging
Security5/8 (63%)
automated_security_reviewSemgrep code scanning in PR checks (semgrep-cloud-platform/scan). Security analysis generates automated reports
branch_protectionThree active rulesets found via gh API: 'Check for CODEOWNERS' (org-level), 'main' branch, and 'release' branch protection
codeowners.github/CODEOWNERS exists assigning * to @temporalio/server and @temporalio/cgs teams
dast_scanningSkipped - no evidence of DAST tools (OWASP ZAP, Burp, Nuclei) in CI workflows
dependency_update_automationNo .github/dependabot.yml, renovate.json, or similar dependency automation configuration found
gitignore_comprehensive.gitignore properly excludes .idea/, .vscode/, .DS_Store, *.out, *.test artifacts, build outputs, .envrc, and generated files
log_scrubbingNo explicit log scrubbing/redaction configuration found. Zap logger lacks visible redaction middleware
pii_handlingSkipped - while temporal processes workflow data, no explicit PII detection/handling tooling found in repository
privacy_complianceSkipped - Temporal is infrastructure/platform without direct end-user data collection. No consent management or GDPR handling needed
secret_scanningRequires GitHub admin API access to verify secret scanning configuration (skipped).
secrets_managementGitHub Actions uses secrets.* pattern. .envrc gitignored. Config supports environment variables for sensitive values
Task Discovery4/4 (100%)
backlog_healthOpen issues have descriptive titles >10 chars and labels. Recent issues from 2026-01-14, 2026-01-13, 2026-01-12 show active maintenance
issue_labeling_systemConsistent labels in use: enhancement, potential-bug, bug, feature-request, schedules. Priority and type categorization visible
issue_templates.github/ISSUE_TEMPLATE/ directory exists with bug_report.md and feature_request.md templates
pr_templates.github/PULL_REQUEST_TEMPLATE.md exists with sections for 'What changed?', 'Why?', 'How did you test it?', 'Potential risks'
Product & Analytics0/2 (0%)
error_to_insight_pipelineNo Sentry-GitHub integration or error-to-issue automation found. No error tracking service configured
product_analytics_instrumentationNo Mixpanel, Amplitude, PostHog, Heap, or GA4 found. This is server infrastructure, not end-user application

start building

Ready to build the software of the future?

Start building

Arrow Right Icon