Factory.ai

Strong Testing

containerd reaches Level 4 with 86% Testing pass rate. Currently reaching production grade with 39/60 criteria passing (65%). Key areas for improvement include the opportunities listed below.

Strengths

01
Testing (86%)
Includes Integration Tests Exist, Test Coverage Thresholds, Test Isolation.
02
Code Modularization
✓ internal/ package directories enforce Go's compiler-enforced visibility boundaries
03
Dead Code Detection
✓ staticcheck and revive detect unused code; unused-parameter checks in golangci config

Opportunities

01
Cyclomatic Complexity
✗ No gocyclo or complexity rules found in golangci config; no complexity thresholds enforced
02
Large File Detection
✗ No git hooks, CI file size checks, or .gitattributes LFS configuration found
03
Pre Commit Hooks
✗ No .pre-commit-config.yaml or husky found; no git hooks configured

All Criteria

Style & Validation8/12 (67%)
code_modularization✓ internal/ package directories enforce Go's compiler-enforced visibility boundaries
cyclomatic_complexity✗ No gocyclo or complexity rules found in golangci config; no complexity thresholds enforced
dead_code_detection✓ staticcheck and revive detect unused code; unused-parameter checks in golangci config
duplicate_code_detection✓ dupword linter checks for duplicate words in source code
formatter✓ gofmt and goimports configured in .golangci.yml formatters section
large_file_detection✗ No git hooks, CI file size checks, or .gitattributes LFS configuration found
lint_config✓ .golangci.yml configured with gosec, revive, misspell, depguard, and other linters
n_plus_one_detectionSkipped - infrastructure library without visible ORM/database query patterns
naming_consistency✓ revive linter with package-comments and naming convention rules enabled
pre_commit_hooks✗ No .pre-commit-config.yaml or husky found; no git hooks configured
strict_typing✓ Go compiler enforces strict typing by default; no dynamic typing escape hatches used
tech_debt_tracking✗ No TODO/FIXME scanner in CI; no linter rules enforcing tech debt tracking
type_check✓ Go is strongly typed by default; go.mod requires go >= 1.24.3
Build System8/11 (73%)
agentic_development✗ No agent co-authorship found in recent 100 commits; no droid/factory/claude signatures
automated_pr_reviewSkipped - would require analyzing PR comments for bot/automation; insufficient clear evidence
build_cmd_doc✓ BUILDING.md and README.md document 'make' and 'go build' commands clearly
build_performance_tracking✗ No build caching (turbo/nx), metrics export, or deliberate build optimization tracking found
dead_feature_flag_detectionSkipped - prerequisite fails (no feature flag infrastructure)
deployment_frequency✓ High release cadence: 2.2.1 (Dec 18), 2.1.6 (Dec 18), 1.7.30 (Dec 18) - multiple per month
deps_pinned✓ go.sum committed; Go modules provide cryptographic dependency locking
fast_ci_feedbackSkipped - would require calculating CI duration from statusCheckRollup timestamps
feature_flag_infrastructure✗ No LaunchDarkly, Statsig, Unleash, or custom feature flag system configured
heavy_dependency_detectionSkipped - not a bundled/frontend application; no bundle size analysis needed
monorepo_toolingSkipped - single-application repository; no monorepo tooling needed
progressive_rolloutSkipped - infrastructure library; progressive rollout managed by downstream users/operators
release_automation✓ .github/workflows/release.yml automates binary builds and releases on tag push
release_notes_automation✓ release.yml extracts release notes from git tag annotations automatically
rollback_automationSkipped - infrastructure library; rollback handled by package managers and orchestrators
single_command_setup✓ BUILDING.md documents 'git clone && cd containerd && make' for dev setup
unused_dependencies_detection✓ CI runs 'make verify-vendor' which includes go mod tidy to detect unused dependencies
vcs_cli_tools✓ gh CLI available and authenticated to github.com (jonathan-factory account)
version_drift_detectionSkipped - single-application repository; version drift not applicable
Testing6/7 (86%)
flaky_test_detectionSkipped - would require analyzing PR statusCheckRollup for retry patterns; no clear evidence
integration_tests_exist✓ integration/ directory with comprehensive integration tests; cri-integration tests
test_coverage_thresholds✓ codecov.yml exists; Makefile has coverage, root-coverage, cri-integration-coverage targets
test_isolation✓ Tests run with -parallel flag in Makefile; TESTFLAGS_PARALLEL variable configured
test_naming_conventions✓ Go enforces *_test.go naming convention by default; test files follow this pattern
test_performance_tracking✓ Makefile has coverage targets; CI workflows output test results and timing information
unit_tests_exist✓ Extensive *_test.go files throughout codebase (cmd/, core/, pkg/, internal/)
unit_tests_runnableRequires local test execution environment to verify (skipped).
Documentation5/7 (71%)
agents_md✗ AGENTS.md not found in repository root
agents_md_validationSkipped - prerequisite fails (AGENTS.md not found)
api_schema_docs✓ Protobuf schemas in api/ directory define gRPC APIs (events.proto, version.proto, etc.)
automated_doc_generation✓ Makefile has 'man' target generating man pages from markdown using go-md2man
documentation_freshness✓ CONTRIBUTING.md updated in last 180 days (recent activity)
readme✓ Comprehensive README.md with project overview, installation, and usage instructions
service_flow_documented✓ Architecture diagrams exist: docs/historical/design/architecture.png, data-flow.png, cri/architecture.png
skills✗ No .factory/skills/, .skills/, or .claude/skills/ directories found
Dev Environment1/2 (50%)
database_schemaSkipped - infrastructure daemon without traditional database schema; uses bbolt for metadata
devcontainer✓ .devcontainer/devcontainer.json configured with Go 1.24.11 and docker-in-docker
devcontainer_runnableSkipped - devcontainer CLI availability not verified
env_template✗ No .env.example file; environment variables not documented in README/AGENTS.md
local_services_setupSkipped - infrastructure daemon; no external services (postgres/redis) required for local dev
Debugging & Observability5/8 (63%)
alerting_configuredSkipped - infrastructure library/daemon; alerting typically configured by users/operators
circuit_breakersSkipped - infrastructure daemon; circuit breakers not typical for this type of system
code_quality_metrics✓ codecov.yml configured for coverage tracking; CI generates coverage profiles
deployment_observability✗ No monitoring dashboard links (Datadog, Grafana) found in documentation
distributed_tracing✓ OpenTelemetry instrumentation: go.opentelemetry.io/otel packages with grpc/http instrumentation
error_tracking_contextualized✗ No Sentry, Bugsnag, or Rollbar integration found for production error tracking
health_checksSkipped - daemon/runtime provides health via gRPC API; not a traditionally deployed web service
metrics_collection✓ Prometheus client instrumented: github.com/prometheus/client_golang in dependencies
profiling_instrumentation✓ internal/pprof directory exists for Go profiling support
runbooks_documented✗ No runbooks or links to incident response procedures found in README/docs
structured_logging✓ github.com/sirupsen/logrus and github.com/containerd/log in go.mod for structured logging
Security3/8 (38%)
automated_security_review✓ CodeQL SAST configured in .github/workflows/codeql.yml; runs on PRs and pushes
branch_protection✓ Active rulesets: tag create/delete protections enforced via GitHub rulesets
codeowners✗ No CODEOWNERS file in repository root or .github/ directory
dast_scanningSkipped - not a web application; DAST not applicable to container runtime daemon
dependency_update_automation✓ Dependabot configured for go modules and github-actions; weekly updates with grouping
gitignore_comprehensive✗ .gitignore missing common patterns: no .env, .idea, .vscode, .DS_Store entries
log_scrubbing✗ No log sanitization/redaction mechanism configured in logging setup
pii_handlingSkipped - infrastructure daemon without user PII processing
privacy_complianceSkipped - infrastructure daemon without end-user data collection
secret_scanningRequires GitHub admin API access to verify secret scanning configuration (skipped).
secrets_management✗ No cloud secrets manager integration or secrets management pattern evident
Task Discovery3/4 (75%)
backlog_health✓ 49/50 open issues analyzed have descriptive titles (>10 chars) AND labels (98% health)
issue_labeling_system✓ Comprehensive labels: area/* (cri,distribution,runtime), kind/* (bug,feature), priority/P1, platform/windows
issue_templates✓ .github/ISSUE_TEMPLATE/ with bug_report.yaml, feature_request.yaml, cri_kep.yaml
pr_templates✗ No .github/pull_request_template.md or PULL_REQUEST_TEMPLATE.md found
Product & Analytics0/1 (0%)
error_to_insight_pipeline✗ No Sentry-GitHub integration or automated error-to-issue pipeline found
product_analytics_instrumentationSkipped - infrastructure project; no end-user product analytics needed

start building

Ready to build the software of the future?

Start building

Arrow Right Icon