dojo.md 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/courses/GENERATION_LOG.md +72 -0
- package/courses/api-error-handling/course.yaml +16 -0
- package/courses/api-error-handling/scenarios/level-1/error-response-format.yaml +131 -0
- package/courses/api-error-handling/scenarios/level-1/http-status-codes-basics.yaml +90 -0
- package/courses/api-error-handling/scenarios/level-1/rate-limiting-basics.yaml +135 -0
- package/courses/api-error-handling/scenarios/level-1/request-validation-errors.yaml +208 -0
- package/courses/api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +189 -0
- package/courses/api-error-handling/scenarios/level-2/idempotency-retry-logic.yaml +159 -0
- package/courses/api-error-handling/scenarios/level-2/rfc-7807-problem-details.yaml +178 -0
- package/courses/api-error-handling/scenarios/level-2/webhook-error-handling.yaml +211 -0
- package/courses/api-error-handling/scenarios/level-3/distributed-tracing-errors.yaml +275 -0
- package/courses/aws-lambda-debugging/course.yaml +11 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/api-gateway-integration.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/cloudwatch-logs-basics.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/cold-start-basics.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/environment-variable-issues.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/first-debugging-shift.yaml +73 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/handler-import-errors.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/iam-permission-errors.yaml +68 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/invocation-errors.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/lambda-timeout-errors.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/memory-and-oom.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/async-invocation-failures.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/cold-start-optimization.yaml +76 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/dynamodb-streams-debugging.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/lambda-concurrency-management.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/lambda-layers-debugging.yaml +76 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/sam-local-debugging.yaml +74 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/sqs-event-source.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/vpc-networking-issues.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/xray-tracing.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/advanced-debugging-shift.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/container-image-lambda.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/cross-account-invocation.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/eventbridge-patterns.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/iac-deployment-debugging.yaml +68 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/kinesis-stream-processing.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/lambda-at-edge.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/lambda-extensions-debugging.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/powertools-observability.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/step-functions-debugging.yaml +80 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/cost-optimization-strategy.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/expert-debugging-shift.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/incident-management-serverless.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/multi-region-serverless.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/observability-platform-design.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-architecture-design.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-data-architecture.yaml +66 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-migration-strategy.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-security-design.yaml +60 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-testing-strategy.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/board-serverless-strategy.yaml +63 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/consulting-serverless-adoption.yaml +57 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/industry-serverless-patterns.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/ma-serverless-integration.yaml +75 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/master-debugging-shift.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/organizational-serverless-transformation.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/regulatory-serverless.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-economics.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-future-technology.yaml +66 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-platform-design.yaml +71 -0
- package/courses/docker-container-debugging/course.yaml +11 -0
- package/courses/docker-container-debugging/scenarios/level-1/container-exit-codes.yaml +59 -0
- package/courses/docker-container-debugging/scenarios/level-1/container-networking-basics.yaml +69 -0
- package/courses/docker-container-debugging/scenarios/level-1/docker-logs-debugging.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-1/dockerfile-build-failures.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-1/environment-variable-issues.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-1/first-debugging-shift.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-1/image-pull-failures.yaml +68 -0
- package/courses/docker-container-debugging/scenarios/level-1/port-mapping-issues.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-1/resource-limits-oom.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-1/volume-mount-problems.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-2/container-health-checks.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-2/docker-compose-debugging.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-2/docker-exec-debugging.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-2/image-layer-optimization.yaml +81 -0
- package/courses/docker-container-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-2/logging-and-log-rotation.yaml +76 -0
- package/courses/docker-container-debugging/scenarios/level-2/multi-stage-build-debugging.yaml +76 -0
- package/courses/docker-container-debugging/scenarios/level-2/network-debugging-tools.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-2/pid1-signal-handling.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-2/security-scanning-basics.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-3/advanced-debugging-shift.yaml +77 -0
- package/courses/docker-container-debugging/scenarios/level-3/buildkit-optimization.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-3/container-filesystem-debugging.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-3/container-security-hardening.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-3/disk-space-management.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-api-automation.yaml +72 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-daemon-issues.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-in-docker-ci.yaml +69 -0
- package/courses/docker-container-debugging/scenarios/level-3/overlay-network-debugging.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-3/production-container-ops.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-4/cicd-pipeline-design.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-monitoring-observability.yaml +63 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-orchestration-strategy.yaml +62 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-performance-engineering.yaml +64 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-security-architecture.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-4/enterprise-image-management.yaml +58 -0
- package/courses/docker-container-debugging/scenarios/level-4/expert-debugging-shift.yaml +63 -0
- package/courses/docker-container-debugging/scenarios/level-4/incident-response-containers.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-4/multi-environment-management.yaml +65 -0
- package/courses/docker-container-debugging/scenarios/level-4/stateful-service-containers.yaml +65 -0
- package/courses/docker-container-debugging/scenarios/level-5/board-infrastructure-strategy.yaml +58 -0
- package/courses/docker-container-debugging/scenarios/level-5/consulting-container-strategy.yaml +61 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-platform-architecture.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-platform-economics.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-technology-evolution.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/disaster-recovery-containers.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-5/industry-container-patterns.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-5/master-debugging-shift.yaml +62 -0
- package/courses/docker-container-debugging/scenarios/level-5/organizational-transformation.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/regulatory-compliance-containers.yaml +61 -0
- package/courses/github-actions-cicd/course.yaml +10 -0
- package/courses/github-actions-cicd/scenarios/level-1/actions-and-runners.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-1/basic-workflow-syntax.yaml +52 -0
- package/courses/github-actions-cicd/scenarios/level-1/branch-protection-checks.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-1/environment-variables-secrets.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-1/first-cicd-shift.yaml +62 -0
- package/courses/github-actions-cicd/scenarios/level-1/job-dependencies-outputs.yaml +62 -0
- package/courses/github-actions-cicd/scenarios/level-1/simple-ci-pipeline.yaml +57 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-debugging.yaml +90 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-status-notifications.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-triggers.yaml +56 -0
- package/courses/github-actions-cicd/scenarios/level-2/concurrency-control.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-2/conditional-execution.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-2/custom-actions-development.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-2/dependency-caching.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-2/deployment-workflows.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-2/github-packages-publishing.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-2/intermediate-cicd-shift.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-2/matrix-builds.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-2/reusable-workflows.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-2/workflow-cost-optimization.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-3/advanced-cicd-shift.yaml +64 -0
- package/courses/github-actions-cicd/scenarios/level-3/compliance-automation.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-3/docker-action-development.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-3/github-environments.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-3/monorepo-ci.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-3/oidc-cloud-deployments.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-3/release-automation.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-3/security-hardening.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-3/self-hosted-runners.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-3/workflow-optimization.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-data-architecture.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-economics-roi.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-executive-communication.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-incident-response.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-org-design.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-platform-architecture.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-training-program.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-vendor-evaluation.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/enterprise-cicd-governance.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-4/expert-cicd-shift.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-ai-future.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-behavioral-science.yaml +70 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-board-strategy.yaml +56 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-consulting-engagement.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-industry-benchmarks.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-ma-integration.yaml +73 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-product-development.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-regulatory-landscape.yaml +72 -0
- package/courses/github-actions-cicd/scenarios/level-5/comprehensive-cicd-system.yaml +66 -0
- package/courses/github-actions-cicd/scenarios/level-5/master-cicd-shift.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-2/api-change-review.yaml +82 -0
- package/courses/github-pr-review/scenarios/level-2/automated-review-tooling.yaml +53 -0
- package/courses/github-pr-review/scenarios/level-2/cross-team-review.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-2/intermediate-review-shift.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-2/performance-review-patterns.yaml +99 -0
- package/courses/github-pr-review/scenarios/level-2/review-disagreement-resolution.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-2/review-metrics-analysis.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-2/review-turnaround-sla.yaml +54 -0
- package/courses/github-pr-review/scenarios/level-2/stacked-pr-review.yaml +65 -0
- package/courses/github-pr-review/scenarios/level-3/advanced-review-shift.yaml +65 -0
- package/courses/github-pr-review/scenarios/level-3/ai-powered-review.yaml +58 -0
- package/courses/github-pr-review/scenarios/level-3/compliance-review-process.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-3/cross-functional-review.yaml +60 -0
- package/courses/github-pr-review/scenarios/level-3/incident-driven-review.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-3/large-scale-review-operations.yaml +55 -0
- package/courses/github-pr-review/scenarios/level-3/monorepo-review-process.yaml +68 -0
- package/courses/github-pr-review/scenarios/level-3/review-automation-platform.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-3/review-culture-design.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-3/review-data-pipeline.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/enterprise-review-operations.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-4/expert-review-shift.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/review-data-architecture.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-4/review-economics-roi.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-4/review-executive-communication.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-4/review-incident-postmortem.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-4/review-org-design.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/review-platform-architecture.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-4/review-training-program.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-4/review-vendor-evaluation.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-5/comprehensive-review-system.yaml +68 -0
- package/courses/github-pr-review/scenarios/level-5/master-review-shift.yaml +73 -0
- package/courses/github-pr-review/scenarios/level-5/review-ai-future.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-5/review-behavioral-science.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-5/review-board-strategy.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-5/review-consulting-engagement.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-5/review-devtools-product.yaml +71 -0
- package/courses/github-pr-review/scenarios/level-5/review-industry-benchmarks.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-5/review-ma-integration.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-5/review-regulatory-landscape.yaml +78 -0
- package/courses/kubernetes-deployment-troubleshooting/course.yaml +12 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/configmap-secret-issues.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/crashloopbackoff.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/deployment-rollout.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/first-troubleshooting-shift.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/health-probe-failures.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/imagepullbackoff.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/kubectl-debugging-basics.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/oomkilled.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/pending-pods.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/service-not-reachable.yaml +66 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/dns-resolution-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/helm-deployment-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/hpa-scaling-issues.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/ingress-routing-issues.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/init-container-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/intermediate-troubleshooting-shift.yaml +66 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/network-policy-blocking.yaml +67 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/persistent-volume-issues.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/rbac-permission-denied.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/resource-quota-limits.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/advanced-troubleshooting-shift.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/cluster-upgrade-failures.yaml +71 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/gitops-drift-detection.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/job-cronjob-failures.yaml +67 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/monitoring-alerting-gaps.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/multi-container-debugging.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/node-pressure-evictions.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/pod-disruption-budgets.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/service-mesh-debugging.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/statefulset-troubleshooting.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/capacity-planning.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/cost-optimization.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/disaster-recovery-design.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/executive-communication.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/expert-troubleshooting-shift.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/incident-management-process.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-cluster-operations.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-tenancy-design.yaml +55 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/platform-engineering.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/security-hardening.yaml +58 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/behavioral-science.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/board-strategy.yaml +61 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/cloud-native-future.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/comprehensive-platform.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/consulting-engagement.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/industry-benchmarks.yaml +58 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/ma-integration.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/master-troubleshooting-shift.yaml +73 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/product-development.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/regulatory-compliance.yaml +76 -0
- package/courses/mysql-query-optimization/course.yaml +11 -0
- package/courses/mysql-query-optimization/scenarios/level-1/buffer-pool-basics.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-1/explain-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +78 -0
- package/courses/mysql-query-optimization/scenarios/level-1/innodb-index-fundamentals.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-1/join-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/select-star-problems.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-2/buffer-pool-tuning.yaml +64 -0
- package/courses/mysql-query-optimization/scenarios/level-2/composite-index-design.yaml +71 -0
- package/courses/mysql-query-optimization/scenarios/level-2/covering-and-invisible-indexes.yaml +69 -0
- package/courses/mysql-query-optimization/scenarios/level-2/cte-and-window-functions.yaml +78 -0
- package/courses/mysql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-2/join-optimization.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-2/performance-schema-analysis.yaml +69 -0
- package/courses/mysql-query-optimization/scenarios/level-2/query-optimizer-hints.yaml +74 -0
- package/courses/mysql-query-optimization/scenarios/level-2/subquery-optimization.yaml +70 -0
- package/courses/mysql-query-optimization/scenarios/level-2/write-optimization.yaml +63 -0
- package/courses/mysql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
- package/courses/mysql-query-optimization/scenarios/level-3/connection-management.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-3/full-text-search.yaml +77 -0
- package/courses/mysql-query-optimization/scenarios/level-3/json-optimization.yaml +87 -0
- package/courses/mysql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-3/monitoring-alerting.yaml +63 -0
- package/courses/mysql-query-optimization/scenarios/level-3/online-schema-changes.yaml +79 -0
- package/courses/mysql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +83 -0
- package/courses/mysql-query-optimization/scenarios/level-3/query-profiling-deep-dive.yaml +84 -0
- package/courses/mysql-query-optimization/scenarios/level-3/replication-optimization.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-4/aurora-vs-rds-evaluation.yaml +61 -0
- package/courses/mysql-query-optimization/scenarios/level-4/data-architecture.yaml +62 -0
- package/courses/mysql-query-optimization/scenarios/level-4/database-migration-planning.yaml +59 -0
- package/courses/mysql-query-optimization/scenarios/level-4/enterprise-governance.yaml +50 -0
- package/courses/mysql-query-optimization/scenarios/level-4/executive-communication.yaml +54 -0
- package/courses/mysql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +60 -0
- package/courses/mysql-query-optimization/scenarios/level-4/optimizer-internals.yaml +62 -0
- package/courses/mysql-query-optimization/scenarios/level-4/performance-sla-design.yaml +52 -0
- package/courses/mysql-query-optimization/scenarios/level-4/read-replica-scaling.yaml +51 -0
- package/courses/mysql-query-optimization/scenarios/level-5/ai-database-future.yaml +45 -0
- package/courses/mysql-query-optimization/scenarios/level-5/behavioral-science.yaml +44 -0
- package/courses/mysql-query-optimization/scenarios/level-5/benchmark-design.yaml +47 -0
- package/courses/mysql-query-optimization/scenarios/level-5/board-strategy.yaml +48 -0
- package/courses/mysql-query-optimization/scenarios/level-5/comprehensive-platform.yaml +49 -0
- package/courses/mysql-query-optimization/scenarios/level-5/consulting-engagement.yaml +52 -0
- package/courses/mysql-query-optimization/scenarios/level-5/ma-database-integration.yaml +47 -0
- package/courses/mysql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +56 -0
- package/courses/mysql-query-optimization/scenarios/level-5/product-development.yaml +48 -0
- package/courses/mysql-query-optimization/scenarios/level-5/regulatory-compliance.yaml +48 -0
- package/courses/postgresql-query-optimization/course.yaml +11 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/explain-analyze-basics.yaml +80 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +77 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/index-fundamentals.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/join-basics.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/select-star-problems.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/vacuum-and-statistics.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/autovacuum-tuning.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/composite-index-design.yaml +81 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/covering-indexes.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/cte-optimization.yaml +83 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +66 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/join-optimization.yaml +72 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/partial-and-expression-indexes.yaml +75 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/query-planner-settings.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/subquery-optimization.yaml +67 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/window-function-optimization.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/connection-pooling.yaml +60 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/full-text-search-optimization.yaml +66 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/jsonb-optimization.yaml +88 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +80 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/materialized-view-optimization.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/parallel-query-execution.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/specialized-index-types.yaml +67 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/write-optimization.yaml +65 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/data-architecture-analytics.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/database-executive-communication.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/database-migration-planning.yaml +57 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/enterprise-database-governance.yaml +52 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/optimizer-internals.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/performance-sla-design.yaml +58 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/read-replica-optimization.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/vendor-evaluation.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/comprehensive-database-system.yaml +70 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-ai-future.yaml +81 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-behavioral-science.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-board-strategy.yaml +77 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-consulting-engagement.yaml +61 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-industry-benchmarks.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-ma-integration.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-product-development.yaml +72 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-regulatory-landscape.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +66 -0
- package/courses/rest-api-error-handling/course.yaml +11 -0
- package/courses/rest-api-error-handling/scenarios/level-1/authentication-errors.yaml +71 -0
- package/courses/rest-api-error-handling/scenarios/level-1/content-negotiation-errors.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-1/error-logging-basics.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-1/error-response-format.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-1/first-error-handling-shift.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-1/http-status-codes.yaml +46 -0
- package/courses/rest-api-error-handling/scenarios/level-1/not-found-errors.yaml +52 -0
- package/courses/rest-api-error-handling/scenarios/level-1/rate-limiting-errors.yaml +56 -0
- package/courses/rest-api-error-handling/scenarios/level-1/request-validation-errors.yaml +59 -0
- package/courses/rest-api-error-handling/scenarios/level-1/server-error-handling.yaml +55 -0
- package/courses/rest-api-error-handling/scenarios/level-2/api-versioning-errors.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-2/batch-request-errors.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +52 -0
- package/courses/rest-api-error-handling/scenarios/level-2/error-code-taxonomy.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-2/error-monitoring-alerting.yaml +53 -0
- package/courses/rest-api-error-handling/scenarios/level-2/intermediate-error-shift.yaml +69 -0
- package/courses/rest-api-error-handling/scenarios/level-2/pagination-errors.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-2/retry-and-idempotency.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-2/rfc7807-problem-details.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-2/webhook-error-handling.yaml +55 -0
- package/courses/rest-api-error-handling/scenarios/level-3/advanced-error-shift.yaml +72 -0
- package/courses/rest-api-error-handling/scenarios/level-3/api-gateway-errors.yaml +71 -0
- package/courses/rest-api-error-handling/scenarios/level-3/async-api-errors.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-3/caching-error-scenarios.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-3/chaos-engineering-apis.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-3/database-error-handling.yaml +79 -0
- package/courses/rest-api-error-handling/scenarios/level-3/distributed-error-propagation.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-3/error-budgets-sre.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-3/error-correlation.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-3/graphql-vs-rest-errors.yaml +73 -0
- package/courses/rest-api-error-handling/scenarios/level-4/compliance-error-handling.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/enterprise-error-governance.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-analytics-platform.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-cost-optimization.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-executive-communication.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-handling-architecture.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-org-design.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-sla-design.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-training-program.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-4/expert-error-shift.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-5/comprehensive-error-system.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-ai-future.yaml +75 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-behavioral-science.yaml +73 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-board-strategy.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-consulting-engagement.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-industry-benchmarks.yaml +72 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-ma-integration.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-product-development.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-regulatory-landscape.yaml +80 -0
- package/courses/rest-api-error-handling/scenarios/level-5/master-error-shift.yaml +73 -0
- package/courses/terraform-infrastructure-setup/course.yaml +11 -0
- package/courses/terraform-infrastructure-setup/scenarios/level-1/terraform-init-errors.yaml +72 -0
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +6 -5
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +4 -0
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +6 -18
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/train.d.ts.map +1 -1
- package/dist/cli/commands/train.js +18 -18
- package/dist/cli/commands/train.js.map +1 -1
- package/dist/cli/index.js +93 -55
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/run-demo.js +2 -1
- package/dist/cli/run-demo.js.map +1 -1
- package/dist/cli/setup.d.ts +18 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +154 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/engine/agent-bridge.d.ts +5 -2
- package/dist/engine/agent-bridge.d.ts.map +1 -1
- package/dist/engine/agent-bridge.js +36 -9
- package/dist/engine/agent-bridge.js.map +1 -1
- package/dist/engine/loader.d.ts +21 -0
- package/dist/engine/loader.d.ts.map +1 -1
- package/dist/engine/loader.js +54 -1
- package/dist/engine/loader.js.map +1 -1
- package/dist/engine/training-loop.d.ts.map +1 -1
- package/dist/engine/training-loop.js +1 -0
- package/dist/engine/training-loop.js.map +1 -1
- package/dist/engine/training.d.ts.map +1 -1
- package/dist/engine/training.js +1 -0
- package/dist/engine/training.js.map +1 -1
- package/dist/generator/skill-generator.d.ts +1 -1
- package/dist/generator/skill-generator.d.ts.map +1 -1
- package/dist/generator/skill-generator.js +21 -2
- package/dist/generator/skill-generator.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +11 -26
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session-manager.d.ts +9 -4
- package/dist/mcp/session-manager.d.ts.map +1 -1
- package/dist/mcp/session-manager.js +65 -28
- package/dist/mcp/session-manager.js.map +1 -1
- package/dist/types/schemas.d.ts +38 -13
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +9 -5
- package/dist/types/schemas.js.map +1 -1
- package/package.json +1 -1
package/courses/postgresql-query-optimization/scenarios/level-5/database-regulatory-landscape.yaml
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: database-regulatory-landscape
|
|
3
|
+
level: 5
|
|
4
|
+
course: postgresql-query-optimization
|
|
5
|
+
type: output
|
|
6
|
+
description: "Navigate database regulatory compliance — design PostgreSQL configurations for GDPR, PCI DSS, HIPAA, SOX, and emerging data sovereignty regulations"
|
|
7
|
+
tags: [PostgreSQL, compliance, GDPR, PCI-DSS, HIPAA, SOX, data-sovereignty, master]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your company is expanding into 3 new markets (EU, healthcare, and
|
|
13
|
+
government contracts). Each market has different database compliance
|
|
14
|
+
requirements, and your PostgreSQL infrastructure wasn't designed for
|
|
15
|
+
regulatory compliance. The legal team has given you 6 months to achieve
|
|
16
|
+
compliance or the expansion deals ($30M combined) will be lost.
|
|
17
|
+
|
|
18
|
+
Current PostgreSQL infrastructure:
|
|
19
|
+
- 20 clusters, all in US-East region
|
|
20
|
+
- No data classification (PII mixed with non-PII)
|
|
21
|
+
- Audit logging: only pg_log (not queryable, not tamper-evident)
|
|
22
|
+
- Encryption: TLS in transit, no encryption at rest, no column-level
|
|
23
|
+
- Access control: 5 shared database users for 200 engineers
|
|
24
|
+
- Data retention: No automated deletion, data kept forever
|
|
25
|
+
- Backups: Daily pg_dump, stored unencrypted in same region
|
|
26
|
+
|
|
27
|
+
Compliance requirements by market:
|
|
28
|
+
|
|
29
|
+
1. EU expansion (GDPR):
|
|
30
|
+
- Data residency: EU customer data must stay in EU
|
|
31
|
+
- Right to erasure: Must delete customer data on request within 30 days
|
|
32
|
+
- Data portability: Must export customer data in machine-readable format
|
|
33
|
+
- Breach notification: 72 hours to report data breaches
|
|
34
|
+
- Data minimization: Only collect what's necessary
|
|
35
|
+
- Audit trail: Prove who accessed what data and when
|
|
36
|
+
|
|
37
|
+
2. Healthcare (HIPAA):
|
|
38
|
+
- PHI must be encrypted at rest and in transit
|
|
39
|
+
- Access controls: Role-based, minimum necessary access
|
|
40
|
+
- Audit trail: All access to PHI must be logged and retained 6 years
|
|
41
|
+
- Business Associate Agreements with all vendors (including AWS)
|
|
42
|
+
- Breach notification: 60 days for breaches affecting 500+ individuals
|
|
43
|
+
|
|
44
|
+
3. Government (FedRAMP / NIST 800-53):
|
|
45
|
+
- Data must reside in US government-authorized regions
|
|
46
|
+
- FIPS 140-2 validated encryption modules
|
|
47
|
+
- Continuous monitoring and vulnerability scanning
|
|
48
|
+
- System categorization (Low, Moderate, High impact)
|
|
49
|
+
- Multi-factor authentication for all database access
|
|
50
|
+
|
|
51
|
+
Cross-cutting requirements:
|
|
52
|
+
- SOX compliance (public company): Database changes must be auditable,
|
|
53
|
+
separation of duties between development and production access
|
|
54
|
+
- PCI DSS (payment processing): Cardholder data encrypted, quarterly
|
|
55
|
+
vulnerability scans, access logging, tokenization
|
|
56
|
+
|
|
57
|
+
Task: Design the compliance architecture. Write: the data
|
|
58
|
+
classification and residency strategy, the encryption architecture
|
|
59
|
+
(at rest, in transit, column-level), the audit logging system (tamper-
|
|
60
|
+
evident, queryable, retained per regulation), the access control
|
|
61
|
+
redesign (from 5 shared users to RBAC), and the compliance automation
|
|
62
|
+
(how to continuously verify compliance, not just achieve it once).
|
|
63
|
+
|
|
64
|
+
assertions:
|
|
65
|
+
- type: llm_judge
|
|
66
|
+
criteria: "Data classification and residency are addressed — defines data classification tiers (public, internal, confidential, restricted), maps PII/PHI/cardholder data to appropriate tiers, designs multi-region deployment for EU data residency (PostgreSQL in EU region with logical replication or partitioned access), and addresses right-to-erasure with soft-delete + scheduled purge patterns"
|
|
67
|
+
weight: 0.35
|
|
68
|
+
description: "Data classification and residency"
|
|
69
|
+
- type: llm_judge
|
|
70
|
+
criteria: "Encryption and access control are comprehensive — implements TDE or filesystem encryption at rest, column-level encryption (pgcrypto or application-level) for PII/PHI/cardholder data, redesigns access from 5 shared users to role-based access with per-engineer credentials, implements row-level security for data isolation, and addresses FIPS 140-2 requirements for government"
|
|
71
|
+
weight: 0.35
|
|
72
|
+
description: "Encryption and access control"
|
|
73
|
+
- type: llm_judge
|
|
74
|
+
criteria: "Audit logging and compliance automation are production-ready — implements tamper-evident audit logging (pgAudit or custom triggers with hash chains), retains logs per regulation (6 years for HIPAA, 7 for SOX), provides queryable audit trail, and designs continuous compliance monitoring (automated checks, drift detection, compliance dashboard) rather than point-in-time audits"
|
|
75
|
+
weight: 0.30
|
|
76
|
+
description: "Audit and compliance automation"
|
package/courses/postgresql-query-optimization/scenarios/level-5/master-optimization-shift.yaml
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: master-optimization-shift
|
|
3
|
+
level: 5
|
|
4
|
+
course: postgresql-query-optimization
|
|
5
|
+
type: output
|
|
6
|
+
description: "Master optimization shift — advise a CEO on a complete database transformation combining M&A integration, regulatory compliance, AI adoption, and 10x scaling"
|
|
7
|
+
tags: [PostgreSQL, shift-simulation, transformation, CEO-advisory, comprehensive, master]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're an external database strategy advisor. A CEO calls you with
|
|
13
|
+
an urgent, complex situation that touches everything you know about
|
|
14
|
+
PostgreSQL.
|
|
15
|
+
|
|
16
|
+
The situation:
|
|
17
|
+
DataCorp ($500M ARR, 2,000 engineers) just acquired two companies
|
|
18
|
+
simultaneously:
|
|
19
|
+
- HealthSync ($50M ARR, healthcare SaaS, HIPAA-regulated)
|
|
20
|
+
- EuroTrade ($80M ARR, EU-based fintech, GDPR + PCI DSS)
|
|
21
|
+
|
|
22
|
+
DataCorp runs PostgreSQL 15 on Aurora (30 clusters, 100TB).
|
|
23
|
+
HealthSync runs PostgreSQL 13 on self-managed EC2 (5 clusters, 8TB).
|
|
24
|
+
EuroTrade runs PostgreSQL 16 on Citus (10 clusters, 40TB, sharded).
|
|
25
|
+
|
|
26
|
+
The board has set 4 concurrent mandates (18-month timeline):
|
|
27
|
+
1. Integrate all three databases into a unified platform
|
|
28
|
+
2. Achieve HIPAA, GDPR, and PCI DSS compliance across the platform
|
|
29
|
+
3. Prepare for IPO (99.99% availability, SOX compliance, cost optimization)
|
|
30
|
+
4. Support 10x growth (DataCorp expects to grow from $500M to $5B ARR
|
|
31
|
+
in 5 years)
|
|
32
|
+
|
|
33
|
+
Constraints:
|
|
34
|
+
- Total database team across all 3 companies: 15 DBAs
|
|
35
|
+
- Combined infrastructure cost: $2M/month
|
|
36
|
+
- Zero customer data loss is non-negotiable
|
|
37
|
+
- All 3 products must remain operational during integration
|
|
38
|
+
- EU data must stay in EU (HealthSync currently stores some EU patient
|
|
39
|
+
data in US)
|
|
40
|
+
- IPO due diligence begins in 12 months
|
|
41
|
+
|
|
42
|
+
The CEO asks: "Give me the plan. I need to know: What's the unified
|
|
43
|
+
architecture? What's the timeline? What's the budget? What's the risk?
|
|
44
|
+
And what should I tell the board?"
|
|
45
|
+
|
|
46
|
+
Task: Write the comprehensive advisory document. Include: the unified
|
|
47
|
+
database architecture (handling Aurora + self-managed + Citus), the
|
|
48
|
+
compliance strategy (achieving all 4 regulatory frameworks
|
|
49
|
+
simultaneously), the integration timeline (phased approach over 18
|
|
50
|
+
months), the budget projection (with cost optimization targets), and
|
|
51
|
+
the board communication strategy (how to frame this as opportunity,
|
|
52
|
+
not just cost).
|
|
53
|
+
|
|
54
|
+
assertions:
|
|
55
|
+
- type: llm_judge
|
|
56
|
+
criteria: "Unified architecture handles all 3 database platforms — addresses Aurora-to-Citus or Citus-to-Aurora consolidation (or hybrid approach), PG 13→16 upgrade path for HealthSync, handles Citus sharding patterns (distributed tables, reference tables) during migration, and designs for 10x scale (100TB→1PB trajectory). Architecture is realistic given 15 DBAs"
|
|
57
|
+
weight: 0.35
|
|
58
|
+
description: "Viable unified architecture"
|
|
59
|
+
- type: llm_judge
|
|
60
|
+
criteria: "Compliance strategy achieves all 4 frameworks — HIPAA (PHI encryption, access logging, BAAs), GDPR (EU data residency, right to erasure, DPA), PCI DSS (cardholder tokenization, network segmentation), and SOX (audit trails, separation of duties). Addresses the immediate risk of EU patient data in US. Identifies overlapping requirements to reduce effort"
|
|
61
|
+
weight: 0.35
|
|
62
|
+
description: "Multi-framework compliance"
|
|
63
|
+
- type: llm_judge
|
|
64
|
+
criteria: "Timeline, budget, and board communication are executive-ready — 18-month phased plan with clear milestones and go/no-go gates, budget includes infrastructure, personnel, and opportunity cost, risk register identifies top 5 risks with mitigation strategies, and the board narrative frames integration as competitive advantage (unified data platform enables cross-sell, AI/ML, faster innovation) not just technical debt remediation"
|
|
65
|
+
weight: 0.30
|
|
66
|
+
description: "Executive-ready delivery"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
id: rest-api-error-handling
|
|
2
|
+
name: "REST API Error Handling"
|
|
3
|
+
description: >
|
|
4
|
+
Master REST API error handling from basic HTTP status codes to enterprise
|
|
5
|
+
error governance. Learn error response design, RFC 7807 Problem Details,
|
|
6
|
+
retry and circuit breaker patterns, distributed system error propagation,
|
|
7
|
+
error budgets, compliance-aware error handling, and API reliability
|
|
8
|
+
architecture for large-scale systems.
|
|
9
|
+
levels: 5
|
|
10
|
+
scenarios_per_level: 10
|
|
11
|
+
tags: [development, REST, API, error-handling, HTTP, status-codes, reliability, DevOps]
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: authentication-errors
|
|
3
|
+
level: 1
|
|
4
|
+
course: rest-api-error-handling
|
|
5
|
+
type: output
|
|
6
|
+
description: "Handle authentication errors — design error responses for auth failures without leaking security information"
|
|
7
|
+
tags: [REST, API, authentication, 401, 403, security, beginner]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're working on the authentication error handling for a healthcare
|
|
13
|
+
appointment booking API. The security team reviewed your error
|
|
14
|
+
responses and flagged several issues.
|
|
15
|
+
|
|
16
|
+
Current error responses (flagged as problematic):
|
|
17
|
+
|
|
18
|
+
1. Missing token:
|
|
19
|
+
401 { "error": "No Authorization header provided" }
|
|
20
|
+
Security note: "This is fine, but be consistent"
|
|
21
|
+
|
|
22
|
+
2. Malformed token:
|
|
23
|
+
401 { "error": "JWT format invalid: expected 3 parts, got 1" }
|
|
24
|
+
Security note: "Reveals token implementation (JWT)"
|
|
25
|
+
|
|
26
|
+
3. Expired token:
|
|
27
|
+
401 { "error": "Token expired at 2026-02-26T14:30:00Z, current
|
|
28
|
+
time is 2026-02-27T08:15:00Z" }
|
|
29
|
+
Security note: "Reveals server clock — useful for timing attacks"
|
|
30
|
+
|
|
31
|
+
4. Invalid signature:
|
|
32
|
+
401 { "error": "JWT signature verification failed using RS256" }
|
|
33
|
+
Security note: "Reveals signing algorithm"
|
|
34
|
+
|
|
35
|
+
5. Valid token but user deactivated:
|
|
36
|
+
401 { "error": "User account deactivated since 2026-01-15" }
|
|
37
|
+
Security note: "Confirms account existence and status"
|
|
38
|
+
|
|
39
|
+
6. Valid token but wrong role (patient trying admin endpoint):
|
|
40
|
+
403 { "error": "User john.doe@email.com has role 'patient',
|
|
41
|
+
requires role 'admin'" }
|
|
42
|
+
Security note: "Reveals user email and role system"
|
|
43
|
+
|
|
44
|
+
7. Valid token but IP not in allowlist:
|
|
45
|
+
403 { "error": "IP 192.168.1.50 not in allowlist for admin API" }
|
|
46
|
+
Security note: "Reveals IP allowlist exists"
|
|
47
|
+
|
|
48
|
+
8. API key instead of bearer token:
|
|
49
|
+
401 { "error": "Expected Bearer token, received API key
|
|
50
|
+
sk-abc...xyz" }
|
|
51
|
+
Security note: "Echoes back the credential!"
|
|
52
|
+
|
|
53
|
+
Task: Rewrite all 8 error responses to be secure (no information
|
|
54
|
+
leakage) while still being useful enough for legitimate developers
|
|
55
|
+
to debug. Explain the security principle behind each change. Then
|
|
56
|
+
write guidelines for the team on what authentication errors should
|
|
57
|
+
and should not reveal.
|
|
58
|
+
|
|
59
|
+
assertions:
|
|
60
|
+
- type: llm_judge
|
|
61
|
+
criteria: "Rewritten errors eliminate information leakage — no JWT implementation details, no server timestamps, no user emails, no role system details, no IP allowlist information, and absolutely no credential echoing. Each response gives enough information to debug without revealing security internals"
|
|
62
|
+
weight: 0.35
|
|
63
|
+
description: "Secure error responses"
|
|
64
|
+
- type: llm_judge
|
|
65
|
+
criteria: "Security principles are correctly explained — covers information disclosure risks (token type, algorithm, clock), account enumeration prevention, principle of least information, and the difference between logging detailed errors server-side vs returning generic errors to clients"
|
|
66
|
+
weight: 0.35
|
|
67
|
+
description: "Correct security principles"
|
|
68
|
+
- type: llm_judge
|
|
69
|
+
criteria: "Team guidelines are practical — provides clear do/don't list for auth error messages, explains server-side logging of detailed errors for debugging, and addresses the balance between security and developer experience"
|
|
70
|
+
weight: 0.30
|
|
71
|
+
description: "Practical team guidelines"
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: content-negotiation-errors
|
|
3
|
+
level: 1
|
|
4
|
+
course: rest-api-error-handling
|
|
5
|
+
type: output
|
|
6
|
+
description: "Handle content negotiation errors — respond correctly when clients send or request unsupported content types"
|
|
7
|
+
tags: [REST, API, content-type, accept, 406, 415, beginner]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're building an API that primarily serves JSON but also supports
|
|
13
|
+
XML for legacy enterprise clients. Users keep hitting confusing
|
|
14
|
+
errors related to content types.
|
|
15
|
+
|
|
16
|
+
Support tickets this week:
|
|
17
|
+
|
|
18
|
+
Ticket 1: "I'm sending a POST with form data (Content-Type:
|
|
19
|
+
application/x-www-form-urlencoded) but getting a 500 error with
|
|
20
|
+
'Unexpected token' in the response."
|
|
21
|
+
|
|
22
|
+
Ticket 2: "I set Accept: text/html but got back JSON anyway. My XML
|
|
23
|
+
parser is choking on it."
|
|
24
|
+
|
|
25
|
+
Ticket 3: "I'm uploading a file with Content-Type: multipart/
|
|
26
|
+
form-data to the /reports endpoint but it says 'invalid JSON'."
|
|
27
|
+
|
|
28
|
+
Ticket 4: "My request works in Postman but fails in my code. I
|
|
29
|
+
think it's because Postman auto-sets Content-Type but my HTTP
|
|
30
|
+
library doesn't."
|
|
31
|
+
|
|
32
|
+
Ticket 5: "I'm sending JSON but with Content-Type: text/plain
|
|
33
|
+
and getting a 400 error that says 'Request body is empty' — but
|
|
34
|
+
the body is definitely there!"
|
|
35
|
+
|
|
36
|
+
Ticket 6: "I need CSV export of my data. GET /reports with Accept:
|
|
37
|
+
text/csv returns JSON. Is CSV supported?"
|
|
38
|
+
|
|
39
|
+
Current behavior: The API ignores the Accept header entirely and
|
|
40
|
+
always returns JSON. For request bodies, it tries to parse
|
|
41
|
+
everything as JSON regardless of Content-Type, causing cryptic
|
|
42
|
+
errors.
|
|
43
|
+
|
|
44
|
+
Task: Design the correct content negotiation error handling. For
|
|
45
|
+
each ticket, explain: what's going wrong, what the correct HTTP
|
|
46
|
+
status code and response should be, and what headers the response
|
|
47
|
+
should include. Then write the content negotiation middleware logic
|
|
48
|
+
that handles both request (Content-Type) and response (Accept)
|
|
49
|
+
negotiation properly.
|
|
50
|
+
|
|
51
|
+
assertions:
|
|
52
|
+
- type: llm_judge
|
|
53
|
+
criteria: "Correct status codes for each scenario — 415 Unsupported Media Type when the server can't parse the request body's content type, 406 Not Acceptable when the server can't produce the client's requested format, and appropriate error messages explaining what formats are supported"
|
|
54
|
+
weight: 0.35
|
|
55
|
+
description: "Correct content negotiation status codes"
|
|
56
|
+
- type: llm_judge
|
|
57
|
+
criteria: "All 6 tickets are addressed with clear explanations — explains why form-encoded data fails JSON parsing, why missing Content-Type causes issues, how Accept header should drive response format, and includes the supported content types in error responses"
|
|
58
|
+
weight: 0.35
|
|
59
|
+
description: "All tickets addressed"
|
|
60
|
+
- type: llm_judge
|
|
61
|
+
criteria: "Middleware logic is complete — validates Content-Type on requests with bodies, negotiates Accept header for responses, falls back to JSON when no Accept header is sent, and includes proper Content-Type header on all responses including error responses"
|
|
62
|
+
weight: 0.30
|
|
63
|
+
description: "Complete middleware logic"
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: error-logging-basics
|
|
3
|
+
level: 1
|
|
4
|
+
course: rest-api-error-handling
|
|
5
|
+
type: output
|
|
6
|
+
description: "Set up API error logging — design structured error logs that make debugging fast without logging sensitive data"
|
|
7
|
+
tags: [REST, API, logging, debugging, structured-logs, beginner]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're debugging a production issue on a food delivery API.
|
|
13
|
+
Customers are getting 500 errors when placing orders, but your
|
|
14
|
+
current logs look like this:
|
|
15
|
+
|
|
16
|
+
2026-02-27 10:15:33 ERROR: Something went wrong
|
|
17
|
+
2026-02-27 10:15:34 ERROR: Something went wrong
|
|
18
|
+
2026-02-27 10:15:35 ERROR: null
|
|
19
|
+
2026-02-27 10:15:36 ERROR: Something went wrong
|
|
20
|
+
2026-02-27 10:15:37 ERROR: [object Object]
|
|
21
|
+
|
|
22
|
+
You have no idea: which endpoint failed, what the request was,
|
|
23
|
+
which user was affected, what the actual error was, or how to
|
|
24
|
+
reproduce it.
|
|
25
|
+
|
|
26
|
+
After 2 hours of blind debugging, you find it's a null pointer
|
|
27
|
+
in the restaurant menu lookup. You realize you need proper error
|
|
28
|
+
logging.
|
|
29
|
+
|
|
30
|
+
Your API has these components:
|
|
31
|
+
- Order placement (POST /orders)
|
|
32
|
+
- Payment processing (POST /orders/:id/pay)
|
|
33
|
+
- Restaurant communication (POST /restaurants/:id/notify)
|
|
34
|
+
- Delivery assignment (POST /deliveries)
|
|
35
|
+
- User notifications (POST /notifications)
|
|
36
|
+
|
|
37
|
+
Sensitive data that must NOT appear in logs:
|
|
38
|
+
- Credit card numbers, CVVs
|
|
39
|
+
- User passwords
|
|
40
|
+
- Full addresses (only city/zip is OK)
|
|
41
|
+
- API keys and tokens
|
|
42
|
+
- Phone numbers (mask all but last 4)
|
|
43
|
+
|
|
44
|
+
Task: Design the structured error logging system. Show: the log
|
|
45
|
+
format (structured JSON), what fields every error log must include,
|
|
46
|
+
what sensitive fields must be masked or excluded, example log entries
|
|
47
|
+
for 3 different error types (validation error, third-party timeout,
|
|
48
|
+
unhandled exception), and how to search these logs to debug the
|
|
49
|
+
original "customers getting 500 errors" issue quickly.
|
|
50
|
+
|
|
51
|
+
assertions:
|
|
52
|
+
- type: llm_judge
|
|
53
|
+
criteria: "Log format is structured and searchable — uses JSON format with consistent fields (timestamp, level, request_id, method, path, status_code, error_type, message, duration_ms, user_id). Includes enough context to reproduce issues without needing to add more logging"
|
|
54
|
+
weight: 0.35
|
|
55
|
+
description: "Structured searchable log format"
|
|
56
|
+
- type: llm_judge
|
|
57
|
+
criteria: "Sensitive data handling is thorough — credit cards, passwords, tokens are never logged. Phone numbers and addresses are properly masked. Explains the masking strategy (middleware vs per-field) and how to prevent accidental logging of request/response bodies containing sensitive data"
|
|
58
|
+
weight: 0.35
|
|
59
|
+
description: "Thorough sensitive data handling"
|
|
60
|
+
- type: llm_judge
|
|
61
|
+
criteria: "Example log entries are realistic and the debugging workflow is practical — shows how to filter logs by request_id, status_code, error_type to quickly identify the root cause. The 3 example entries demonstrate different error severities and contexts"
|
|
62
|
+
weight: 0.30
|
|
63
|
+
description: "Realistic examples and debugging workflow"
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: error-response-format
|
|
3
|
+
level: 1
|
|
4
|
+
course: rest-api-error-handling
|
|
5
|
+
type: output
|
|
6
|
+
description: "Design error response format — create a consistent JSON error response structure for a REST API"
|
|
7
|
+
tags: [REST, API, error-response, JSON, format, beginner]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're building a recipe sharing API and different endpoints return
|
|
13
|
+
errors in completely different formats. Your team lead says this is
|
|
14
|
+
confusing for frontend developers and asks you to standardize.
|
|
15
|
+
|
|
16
|
+
Current inconsistent error responses across your API:
|
|
17
|
+
|
|
18
|
+
Endpoint 1 - POST /recipes (validation error):
|
|
19
|
+
{ "error": "Title is required" }
|
|
20
|
+
|
|
21
|
+
Endpoint 2 - GET /recipes/999 (not found):
|
|
22
|
+
{ "message": "Recipe not found", "code": 404 }
|
|
23
|
+
|
|
24
|
+
Endpoint 3 - POST /recipes (auth error):
|
|
25
|
+
{ "status": "error", "reason": "Invalid token" }
|
|
26
|
+
|
|
27
|
+
Endpoint 4 - POST /recipes/5/reviews (rate limit):
|
|
28
|
+
"Too many requests, please try again later"
|
|
29
|
+
|
|
30
|
+
Endpoint 5 - PATCH /recipes/5 (validation errors):
|
|
31
|
+
{ "errors": ["Title too long", "Invalid category"] }
|
|
32
|
+
|
|
33
|
+
Frontend developers are complaining:
|
|
34
|
+
- "I never know which field to check for the error message"
|
|
35
|
+
- "Sometimes I get a string, sometimes an object"
|
|
36
|
+
- "Validation errors come in different shapes"
|
|
37
|
+
- "I can't tell if an error is my fault or the server's fault"
|
|
38
|
+
- "There's no way to show specific field errors in the form"
|
|
39
|
+
|
|
40
|
+
Task: Design a unified error response format for the entire API.
|
|
41
|
+
Show: the standard error response schema (with required and optional
|
|
42
|
+
fields), examples for each of the 5 error types above rewritten in
|
|
43
|
+
the new format, guidelines for when to include each optional field,
|
|
44
|
+
and the implementation approach (middleware vs per-handler).
|
|
45
|
+
|
|
46
|
+
assertions:
|
|
47
|
+
- type: llm_judge
|
|
48
|
+
criteria: "Error format is well-designed — includes a machine-readable error code/type, a human-readable message, and the HTTP status code. Handles single errors and multiple validation errors in the same structure. Includes a way to associate errors with specific fields for form validation"
|
|
49
|
+
weight: 0.35
|
|
50
|
+
description: "Well-designed error format"
|
|
51
|
+
- type: llm_judge
|
|
52
|
+
criteria: "All 5 error types are rewritten consistently — validation errors show field-level detail, not-found errors include resource identification, auth errors distinguish authentication vs authorization, rate limit errors include retry-after information, and all follow the same top-level structure"
|
|
53
|
+
weight: 0.35
|
|
54
|
+
description: "Consistent error rewrites"
|
|
55
|
+
- type: llm_judge
|
|
56
|
+
criteria: "Implementation guidance is practical — recommends middleware/error handler pattern for consistency, explains how to throw standardized errors from route handlers, and addresses how to prevent internal error details from leaking to the client"
|
|
57
|
+
weight: 0.30
|
|
58
|
+
description: "Practical implementation guidance"
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: first-error-handling-shift
|
|
3
|
+
level: 1
|
|
4
|
+
course: rest-api-error-handling
|
|
5
|
+
type: output
|
|
6
|
+
description: "First error handling shift — handle a stream of real-time API errors during a product launch event"
|
|
7
|
+
tags: [REST, API, error-handling, shift-simulation, launch, beginner]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're on your first on-call shift for a ticket marketplace API.
|
|
13
|
+
The company is launching sales for a major concert tonight and
|
|
14
|
+
traffic will spike 10x. Your job is to review the API's error
|
|
15
|
+
handling before the launch.
|
|
16
|
+
|
|
17
|
+
During your pre-launch review, you find these issues:
|
|
18
|
+
|
|
19
|
+
Issue 1 — No global error handler:
|
|
20
|
+
If any route throws an unhandled exception, Express returns:
|
|
21
|
+
<!DOCTYPE html><html><body><pre>TypeError: Cannot read property
|
|
22
|
+
'email' of undefined<br> at /app/src/routes/tickets.js:45
|
|
23
|
+
</pre></body></html>
|
|
24
|
+
(HTML error page with stack trace)
|
|
25
|
+
|
|
26
|
+
Issue 2 — Inconsistent error shapes:
|
|
27
|
+
- /tickets returns { "error": "..." }
|
|
28
|
+
- /orders returns { "message": "...", "code": 123 }
|
|
29
|
+
- /payments returns { "errors": ["..."] }
|
|
30
|
+
- /users returns { "status": "fail", "data": { "message": "..." } }
|
|
31
|
+
|
|
32
|
+
Issue 3 — Database errors leak:
|
|
33
|
+
When the database constraint prevents duplicate ticket purchases:
|
|
34
|
+
"duplicate key value violates unique constraint
|
|
35
|
+
'orders_user_id_ticket_id_key'"
|
|
36
|
+
|
|
37
|
+
Issue 4 — No rate limiting on search:
|
|
38
|
+
GET /tickets/search has no rate limit. During the last sale, bots
|
|
39
|
+
made 50,000 requests/second and the API crashed.
|
|
40
|
+
|
|
41
|
+
Issue 5 — Payment errors are too vague:
|
|
42
|
+
POST /orders/:id/pay returns 400 { "error": "Payment failed" }
|
|
43
|
+
for every payment issue (declined card, insufficient funds,
|
|
44
|
+
expired card, processing timeout, fraud detection).
|
|
45
|
+
|
|
46
|
+
Issue 6 — Timeout errors unhandled:
|
|
47
|
+
The external payment processor sometimes takes 30+ seconds. The API
|
|
48
|
+
has no timeout, so requests hang until the client gives up.
|
|
49
|
+
|
|
50
|
+
Task: Fix all 6 issues before the launch. For each, write: what's
|
|
51
|
+
wrong (the risk for tonight's launch), the fix (code structure or
|
|
52
|
+
configuration), and the expected error response after the fix.
|
|
53
|
+
Prioritize the fixes by launch impact.
|
|
54
|
+
|
|
55
|
+
assertions:
|
|
56
|
+
- type: llm_judge
|
|
57
|
+
criteria: "All 6 issues are fixed with correct solutions — global error handler catches unhandled exceptions (no HTML/stack traces), error format is standardized, database errors are translated to user-friendly messages, rate limiting is implemented for search, payment errors are specific but secure, and timeout handling is added with appropriate status codes"
|
|
58
|
+
weight: 0.35
|
|
59
|
+
description: "All issues fixed correctly"
|
|
60
|
+
- type: llm_judge
|
|
61
|
+
criteria: "Prioritization is sound — identifies which issues pose the greatest risk for a high-traffic launch event (no global error handler and no rate limiting are critical, inconsistent formats are important but not urgent). Each fix includes the expected error response"
|
|
62
|
+
weight: 0.35
|
|
63
|
+
description: "Sound prioritization"
|
|
64
|
+
- type: llm_judge
|
|
65
|
+
criteria: "Solutions are launch-ready — fixes are quick to implement (no major refactors), handle the specific high-traffic scenario (10x spike), and include monitoring so the on-call engineer can see errors in real-time during the launch"
|
|
66
|
+
weight: 0.30
|
|
67
|
+
description: "Launch-ready solutions"
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: http-status-codes
|
|
3
|
+
level: 1
|
|
4
|
+
course: rest-api-error-handling
|
|
5
|
+
type: output
|
|
6
|
+
description: "Classify HTTP status codes — match API scenarios to correct status codes across 2xx, 4xx, and 5xx families"
|
|
7
|
+
tags: [REST, API, HTTP, status-codes, beginner]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're a junior backend developer who just joined a team building a
|
|
13
|
+
task management API. During your first code review, the senior
|
|
14
|
+
developer flagged that your endpoints return wrong status codes.
|
|
15
|
+
|
|
16
|
+
Your current mistakes:
|
|
17
|
+
1. POST /tasks returns 200 when a task is created (should be 201)
|
|
18
|
+
2. DELETE /tasks/:id returns 200 with empty body (should be 204)
|
|
19
|
+
3. GET /tasks/:id returns 200 with { error: "not found" } when the
|
|
20
|
+
task doesn't exist (should be 404)
|
|
21
|
+
4. POST /tasks with missing "title" field returns 500 (should be 400)
|
|
22
|
+
5. GET /tasks with expired auth token returns 403 (should be 401)
|
|
23
|
+
6. PUT /tasks/:id on someone else's task returns 404 (should be 403)
|
|
24
|
+
7. POST /tasks when the database is down returns 400 (should be 503)
|
|
25
|
+
8. PATCH /tasks/:id with Content-Type: text/plain returns 500
|
|
26
|
+
(should be 415)
|
|
27
|
+
|
|
28
|
+
Task: For each of the 8 mistakes, explain: (1) why your current
|
|
29
|
+
status code is wrong, (2) what the correct status code is and why,
|
|
30
|
+
and (3) the general rule for when to use that status code. Then
|
|
31
|
+
create a quick-reference cheat sheet mapping common API scenarios
|
|
32
|
+
to their correct HTTP status codes.
|
|
33
|
+
|
|
34
|
+
assertions:
|
|
35
|
+
- type: llm_judge
|
|
36
|
+
criteria: "Correctly identifies all 8 status code fixes — 201 Created for resource creation, 204 No Content for successful deletion, 404 Not Found for missing resources, 400 Bad Request for validation errors, 401 Unauthorized for expired/missing auth, 403 Forbidden for insufficient permissions, 503 Service Unavailable for downstream failures, 415 Unsupported Media Type for wrong content types"
|
|
37
|
+
weight: 0.35
|
|
38
|
+
description: "Correct status code identification"
|
|
39
|
+
- type: llm_judge
|
|
40
|
+
criteria: "Explanations demonstrate understanding of status code semantics — distinguishes between 401 (identity unknown) and 403 (identity known, permission denied), between 400 (client mistake) and 500 (server mistake), and between 200 (response body) and 204 (no body)"
|
|
41
|
+
weight: 0.35
|
|
42
|
+
description: "Status code semantic understanding"
|
|
43
|
+
- type: llm_judge
|
|
44
|
+
criteria: "Cheat sheet is practical and organized — groups status codes by family (2xx success, 4xx client error, 5xx server error), covers common API scenarios beyond just the 8 mistakes, and is formatted for quick reference"
|
|
45
|
+
weight: 0.30
|
|
46
|
+
description: "Practical cheat sheet"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: not-found-errors
|
|
3
|
+
level: 1
|
|
4
|
+
course: rest-api-error-handling
|
|
5
|
+
type: output
|
|
6
|
+
description: "Handle not-found errors — distinguish between missing resources, wrong URLs, and deleted content with appropriate responses"
|
|
7
|
+
tags: [REST, API, 404, not-found, routing, beginner]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're maintaining a blog API and users are reporting confusing
|
|
13
|
+
behavior. All of these return the same generic 404 response:
|
|
14
|
+
|
|
15
|
+
{ "error": "Not found" }
|
|
16
|
+
|
|
17
|
+
But they represent very different situations:
|
|
18
|
+
|
|
19
|
+
1. GET /posts/42 — Post exists but is in draft status (not published)
|
|
20
|
+
2. GET /posts/99999 — Post ID doesn't exist at all
|
|
21
|
+
3. GET /posts/abc — Post ID is not a valid integer
|
|
22
|
+
4. GET /postz/42 — Typo in the URL path (postz instead of posts)
|
|
23
|
+
5. GET /posts/42 — Post existed but was deleted 3 days ago
|
|
24
|
+
6. GET /posts/42 — Post exists but belongs to a different tenant
|
|
25
|
+
in your multi-tenant system
|
|
26
|
+
7. GET /users/5/posts/42 — User 5 exists but post 42 belongs to
|
|
27
|
+
user 8
|
|
28
|
+
8. GET /v1/posts/42 — API v1 is deprecated, only v2 exists
|
|
29
|
+
|
|
30
|
+
The frontend developer says: "I can't tell if the user mistyped
|
|
31
|
+
the URL, if the post was deleted, if it's a permission issue, or
|
|
32
|
+
if the endpoint doesn't exist. They all look the same!"
|
|
33
|
+
|
|
34
|
+
Task: Design the appropriate response for each of the 8 scenarios.
|
|
35
|
+
Not all of them should be 404 — decide which HTTP status code
|
|
36
|
+
fits each case and explain why. Write the response body for each
|
|
37
|
+
scenario. Then create a decision tree for "when the resource isn't
|
|
38
|
+
there" that the team can follow.
|
|
39
|
+
|
|
40
|
+
assertions:
|
|
41
|
+
- type: llm_judge
|
|
42
|
+
criteria: "Status code selection is correct for each case — distinguishes between 404 (truly not found), 400 (invalid ID format), 410 Gone (deleted content), 403 (wrong tenant/ownership), and appropriate handling for draft content and deprecated API versions. Not all 8 should be 404"
|
|
43
|
+
weight: 0.35
|
|
44
|
+
description: "Correct status code selection"
|
|
45
|
+
- type: llm_judge
|
|
46
|
+
criteria: "Response bodies are helpful without leaking information — draft posts don't reveal that the post exists (security consideration in multi-tenant), deleted posts may use 410 Gone with deletion context, invalid IDs explain the expected format, and deprecated versions redirect to the current version"
|
|
47
|
+
weight: 0.35
|
|
48
|
+
description: "Helpful secure responses"
|
|
49
|
+
- type: llm_judge
|
|
50
|
+
criteria: "Decision tree is clear and usable — provides a logical flow for developers to determine the right response when a resource isn't found, considers security implications (don't confirm existence to unauthorized users), and handles edge cases like soft deletes and multi-tenancy"
|
|
51
|
+
weight: 0.30
|
|
52
|
+
description: "Clear decision tree"
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: rate-limiting-errors
|
|
3
|
+
level: 1
|
|
4
|
+
course: rest-api-error-handling
|
|
5
|
+
type: output
|
|
6
|
+
description: "Implement rate limiting errors — design 429 responses with proper headers and retry guidance for API consumers"
|
|
7
|
+
tags: [REST, API, rate-limiting, 429, throttling, beginner]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're building a weather data API that offers free and paid tiers.
|
|
13
|
+
The current rate limiting returns 429 with this response:
|
|
14
|
+
|
|
15
|
+
HTTP/1.1 429
|
|
16
|
+
{ "error": "Too many requests" }
|
|
17
|
+
|
|
18
|
+
Customers are complaining:
|
|
19
|
+
- "When can I retry? 1 second? 1 hour?"
|
|
20
|
+
- "How many requests do I have left?"
|
|
21
|
+
- "I didn't even know there was a rate limit until my app broke"
|
|
22
|
+
- "My batch job got rate limited and I lost 2 hours of processing"
|
|
23
|
+
- "The paid plan says 1000 requests/minute but I got limited at 800"
|
|
24
|
+
|
|
25
|
+
Rate limit tiers:
|
|
26
|
+
- Free: 60 requests/minute, 1000 requests/day
|
|
27
|
+
- Basic ($29/mo): 600 requests/minute, 50,000 requests/day
|
|
28
|
+
- Pro ($99/mo): 3000 requests/minute, unlimited daily
|
|
29
|
+
- Enterprise: custom limits
|
|
30
|
+
|
|
31
|
+
Additional rules:
|
|
32
|
+
- Burst allowance: 2x the per-minute limit for up to 10 seconds
|
|
33
|
+
- Different limits for different endpoints (search: 10/min free,
|
|
34
|
+
forecast: 60/min free)
|
|
35
|
+
- Authenticated vs unauthenticated requests have different limits
|
|
36
|
+
|
|
37
|
+
Task: Design the complete rate limiting error response. Include:
|
|
38
|
+
the 429 response body with all necessary information, the rate
|
|
39
|
+
limit headers (standard and custom), the response headers that
|
|
40
|
+
should appear on ALL responses (not just 429) so clients can
|
|
41
|
+
proactively manage their usage, and a guide for API consumers
|
|
42
|
+
on how to handle rate limits gracefully (backoff strategies).
|
|
43
|
+
|
|
44
|
+
assertions:
|
|
45
|
+
- type: llm_judge
|
|
46
|
+
criteria: "429 response includes standard rate limit headers — X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (or Retry-After), with clear documentation of header semantics. Response body includes retry timing, current limit, and which limit was hit (per-minute vs daily)"
|
|
47
|
+
weight: 0.35
|
|
48
|
+
description: "Proper 429 response with headers"
|
|
49
|
+
- type: llm_judge
|
|
50
|
+
criteria: "Rate limit information appears on ALL responses — successful responses include remaining quota and reset time so clients can proactively avoid hitting limits. The design handles the complexity of multiple limit windows (per-minute and daily) and per-endpoint limits"
|
|
51
|
+
weight: 0.35
|
|
52
|
+
description: "Proactive rate limit headers"
|
|
53
|
+
- type: llm_judge
|
|
54
|
+
criteria: "Consumer guidance is practical — explains exponential backoff with jitter, how to read rate limit headers proactively, how to build a request queue that respects limits, and addresses the batch processing use case (how to process large workloads within rate limits)"
|
|
55
|
+
weight: 0.30
|
|
56
|
+
description: "Practical consumer guidance"
|