@1aboveio/skills 0.10.0
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/LICENSE +3 -0
- package/README.md +90 -0
- package/bin/1aboveio-skills.mjs +18 -0
- package/package.json +28 -0
- package/runtime/skills/distribution/generated/recipes.json +1189 -0
- package/runtime/skills/distribution/scripts/bundles.mjs +280 -0
- package/runtime/skills/engineering/engineering-runtime/scripts/main-module.mjs +80 -0
- package/skills/backend/airflow-dag-develop/LICENSE +3 -0
- package/skills/backend/airflow-dag-develop/SKILL.md +111 -0
- package/skills/backend/app-debug/LICENSE +3 -0
- package/skills/backend/app-debug/SKILL.md +109 -0
- package/skills/backend/app-debug/references/common-errors.md +128 -0
- package/skills/backend/python-backend/LICENSE +3 -0
- package/skills/backend/python-backend/SKILL.md +326 -0
- package/skills/cicd-pipeline/cloud-build/LICENSE +3 -0
- package/skills/cicd-pipeline/cloud-build/SKILL.md +707 -0
- package/skills/cicd-pipeline/cloud-debug/LICENSE +3 -0
- package/skills/cicd-pipeline/cloud-debug/SKILL.md +316 -0
- package/skills/cicd-pipeline/cloud-debug/references/build-failures.md +238 -0
- package/skills/cicd-pipeline/cloud-debug/references/deploy-failures.md +376 -0
- package/skills/cicd-pipeline/cloud-debug/references/pipeline-failures.md +378 -0
- package/skills/cicd-pipeline/cloud-deploy/LICENSE +3 -0
- package/skills/cicd-pipeline/cloud-deploy/SKILL.md +229 -0
- package/skills/cicd-pipeline/cloud-deploy/references/config-templates.md +257 -0
- package/skills/cicd-pipeline/docker/LICENSE +3 -0
- package/skills/cicd-pipeline/docker/SKILL.md +126 -0
- package/skills/cicd-pipeline/google-cloud/LICENSE +3 -0
- package/skills/cicd-pipeline/google-cloud/SKILL.md +118 -0
- package/skills/cicd-pipeline/google-cloud/references/gcs.md +469 -0
- package/skills/cicd-pipeline/google-cloud/references/iam.md +451 -0
- package/skills/cicd-pipeline/google-cloud/references/project.md +349 -0
- package/skills/cicd-pipeline/google-cloud/references/secrets.md +336 -0
- package/skills/cicd-pipeline/google-cloud/references/vpc.md +312 -0
- package/skills/cicd-pipeline/google-cloud/scripts/create-sa.sh +36 -0
- package/skills/cicd-pipeline/google-cloud/scripts/gcp-config.sh +31 -0
- package/skills/cicd-pipeline/google-cloud/scripts/grant-iap.sh +41 -0
- package/skills/cicd-pipeline/google-cloud/scripts/setup-secrets.sh +48 -0
- package/skills/cicd-pipeline/mergify/LICENSE +3 -0
- package/skills/cicd-pipeline/mergify/SKILL.md +138 -0
- package/skills/cicd-pipeline/mergify/assets/templates/mergify.yml +237 -0
- package/skills/cicd-pipeline/mergify/assets/templates/ruleset.json +46 -0
- package/skills/cicd-pipeline/mergify/references/branch-protection.md +277 -0
- package/skills/cicd-pipeline/mergify/references/configuration.md +183 -0
- package/skills/cicd-pipeline/mergify/references/diagnosis.md +73 -0
- package/skills/cicd-pipeline/mergify/references/traps.md +78 -0
- package/skills/cicd-pipeline/mergify/references/watch-contract.md +218 -0
- package/skills/cicd-pipeline/mergify/scripts/audit-core.mjs +131 -0
- package/skills/cicd-pipeline/mergify/scripts/audit.mjs +4 -0
- package/skills/cicd-pipeline/mergify/scripts/watch-pr-delivery-core.mjs +663 -0
- package/skills/cicd-pipeline/mergify/scripts/watch-pr-delivery.mjs +4 -0
- package/skills/cicd-pipeline/podman/LICENSE +3 -0
- package/skills/cicd-pipeline/podman/SKILL.md +70 -0
- package/skills/cicd-pipeline/podman/agents/openai.yaml +4 -0
- package/skills/cicd-pipeline/podman/assets/templates/podman-compose-socket-directory.yml +6 -0
- package/skills/cicd-pipeline/podman/assets/templates/podman-service-override.conf +3 -0
- package/skills/cicd-pipeline/podman/references/compose-compatibility.md +70 -0
- package/skills/cicd-pipeline/podman/references/networking-and-ports.md +74 -0
- package/skills/cicd-pipeline/podman/references/rootless-services-and-sockets.md +156 -0
- package/skills/cicd-pipeline/podman/references/troubleshooting.md +98 -0
- package/skills/engineering/e2e-test/LICENSE +3 -0
- package/skills/engineering/e2e-test/SKILL.md +156 -0
- package/skills/engineering/e2e-test/assets/ci-gates.cloudbuild.yaml +272 -0
- package/skills/engineering/e2e-test/assets/ci-gates.github.yml +451 -0
- package/skills/engineering/e2e-test/assets/e2e-workflow.yml +282 -0
- package/skills/engineering/e2e-test/references/authoring/auth-flows.md +159 -0
- package/skills/engineering/e2e-test/references/authoring/playwright-config.md +71 -0
- package/skills/engineering/e2e-test/references/authoring/playwright-patterns.md +219 -0
- package/skills/engineering/e2e-test/references/authoring/test-skipping.md +44 -0
- package/skills/engineering/e2e-test/references/ci-integration.md +121 -0
- package/skills/engineering/e2e-test/references/ci-playwright-container.md +280 -0
- package/skills/engineering/e2e-test/references/debugging.md +36 -0
- package/skills/engineering/e2e-test/references/presentation-sweep.md +131 -0
- package/skills/engineering/e2e-test/references/reviewing.md +39 -0
- package/skills/engineering/e2e-test/references/route-discovery.md +50 -0
- package/skills/engineering/e2e-test/references/route-manifest.md +44 -0
- package/skills/engineering/e2e-test/scripts/detect-routes-fastapi.py +290 -0
- package/skills/engineering/e2e-test/scripts/detect-routes-nextjs.mjs +200 -0
- package/skills/engineering/e2e-test/scripts/post-visual-evidence.mjs +158 -0
- package/skills/engineering/e2e-test/scripts/presentation-checks.mjs +171 -0
- package/skills/engineering/e2e-test/scripts/presentation-perceivability.mjs +179 -0
- package/skills/engineering/e2e-test/scripts/presentation-reachability.mjs +154 -0
- package/skills/engineering/e2e-test/scripts/presentation-render-health.mjs +141 -0
- package/skills/engineering/e2e-test/scripts/presentation-sweep.mjs +148 -0
- package/skills/engineering/e2e-test/scripts/presentation-temporal.mjs +127 -0
- package/skills/engineering/e2e-test/scripts/presentation-visual.mjs +84 -0
- package/skills/engineering/e2e-test/scripts/project-route-manifest.mjs +75 -0
- package/skills/engineering/e2e-test/scripts/validate-manifest.mjs +106 -0
- package/skills/engineering/engineering-runtime/LICENSE +3 -0
- package/skills/engineering/engineering-runtime/SKILL.md +10 -0
- package/skills/engineering/engineering-runtime/agents/openai.yaml +6 -0
- package/skills/engineering/engineering-runtime/coherence/workflow.json +553 -0
- package/skills/engineering/engineering-runtime/scripts/exact-head-artifact.mjs +131 -0
- package/skills/engineering/engineering-runtime/scripts/head-check-set.mjs +398 -0
- package/skills/engineering/engineering-runtime/scripts/main-module.mjs +80 -0
- package/skills/engineering/engineering-runtime/scripts/mergify-yaml.mjs +11 -0
- package/skills/engineering/engineering-runtime/scripts/package-lock.json +43 -0
- package/skills/engineering/engineering-runtime/scripts/package.json +10 -0
- package/skills/engineering/engineering-runtime/scripts/required-check-plan.mjs +223 -0
- package/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +576 -0
- package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +166 -0
- package/skills/engineering/ensure-coverage/LICENSE +3 -0
- package/skills/engineering/ensure-coverage/SKILL.md +136 -0
- package/skills/engineering/ensure-coverage/evals/evals.json +125 -0
- package/skills/engineering/ensure-coverage/references/breadth/coverage-ledger.md +91 -0
- package/skills/engineering/ensure-coverage/references/breadth/inventory-contract.md +83 -0
- package/skills/engineering/ensure-coverage/references/breadth/surface-baseline.md +44 -0
- package/skills/engineering/ensure-coverage/references/breadth/surface-discovery.md +16 -0
- package/skills/engineering/ensure-coverage/references/depth/characterization.md +68 -0
- package/skills/engineering/ensure-coverage/references/depth/coverage.config.example.json +25 -0
- package/skills/engineering/ensure-coverage/references/depth/grading.md +35 -0
- package/skills/engineering/ensure-coverage/references/depth/mock-policy.md +87 -0
- package/skills/engineering/ensure-coverage/references/depth/test-smells.md +23 -0
- package/skills/engineering/ensure-coverage/references/enforcement/ci-contract.md +164 -0
- package/skills/engineering/ensure-coverage/references/enforcement/hooks.md +85 -0
- package/skills/engineering/ensure-coverage/references/examples/coverage-ledger.md +109 -0
- package/skills/engineering/ensure-coverage/references/examples/refund-flow.md +33 -0
- package/skills/engineering/ensure-coverage/references/presentation/axis.md +78 -0
- package/skills/engineering/ensure-coverage/references/presentation/runner-contract.md +74 -0
- package/skills/engineering/ensure-coverage/references/process/audit-mode.md +33 -0
- package/skills/engineering/ensure-coverage/references/process/output-template.md +139 -0
- package/skills/engineering/ensure-coverage/references/process/review-contract-template.md +119 -0
- package/skills/engineering/ensure-coverage/references/process/scope-class.md +178 -0
- package/skills/engineering/ensure-coverage/references/process/test-strategy.md +55 -0
- package/skills/engineering/ensure-coverage/schemas/coverage-config.schema.json +45 -0
- package/skills/engineering/ensure-coverage/schemas/coverage-file.schema.json +93 -0
- package/skills/engineering/ensure-coverage/scripts/adapters/nextjs-inventory.mjs +178 -0
- package/skills/engineering/ensure-coverage/scripts/check-quarantine-expiry.mjs +101 -0
- package/skills/engineering/ensure-coverage/scripts/ci-audit.mjs +358 -0
- package/skills/engineering/ensure-coverage/scripts/coverage-checklist.mjs +494 -0
- package/skills/engineering/ensure-coverage/scripts/coverage-ledger.mjs +663 -0
- package/skills/engineering/ensure-coverage/scripts/design-parity.mjs +591 -0
- package/skills/engineering/ensure-coverage/scripts/evidence-block.mjs +367 -0
- package/skills/engineering/ensure-coverage/scripts/lint-tests.mjs +269 -0
- package/skills/engineering/ensure-coverage/scripts/mock-policy-config.mjs +176 -0
- package/skills/engineering/ensure-coverage/scripts/package-lock.json +76 -0
- package/skills/engineering/ensure-coverage/scripts/package.json +19 -0
- package/skills/engineering/ensure-coverage/scripts/scope-class.mjs +554 -0
- package/skills/engineering/harness-runtime/LICENSE +3 -0
- package/skills/engineering/harness-runtime/SKILL.md +18 -0
- package/skills/engineering/harness-runtime/agents/openai.yaml +6 -0
- package/skills/engineering/harness-runtime/bin/discover-models.mjs +4 -0
- package/skills/engineering/harness-runtime/bin/model-catalog.mjs +4 -0
- package/skills/engineering/harness-runtime/contracts.md +15 -0
- package/skills/engineering/harness-runtime/discover-models.mjs +392 -0
- package/skills/engineering/harness-runtime/fixtures/native-question-schemas.json +33 -0
- package/skills/engineering/harness-runtime/fixtures/question-responses.json +54 -0
- package/skills/engineering/harness-runtime/index.mjs +767 -0
- package/skills/engineering/harness-runtime/model-catalog.mjs +787 -0
- package/skills/engineering/harness-runtime/native-question-contracts.md +37 -0
- package/skills/engineering/harness-runtime/references/model-catalog-seed.json +159 -0
- package/skills/engineering/harness-runtime/references/model-catalog.md +57 -0
- package/skills/engineering/implement-and-pr/LICENSE +3 -0
- package/skills/engineering/implement-and-pr/SKILL.md +176 -0
- package/skills/engineering/implement-and-pr/references/ci-iteration.md +10 -0
- package/skills/engineering/implement-and-pr/references/closeout.md +27 -0
- package/skills/engineering/implement-and-pr/references/contract-complete-fix-rounds.md +34 -0
- package/skills/engineering/implement-and-pr/references/evidence-rules.md +39 -0
- package/skills/engineering/implement-and-pr/references/incremental-plan.md +16 -0
- package/skills/engineering/implement-and-pr/references/self-review.md +23 -0
- package/skills/engineering/implement-and-pr/references/tdd-mode.md +18 -0
- package/skills/engineering/resolve-issues/LICENSE +3 -0
- package/skills/engineering/resolve-issues/SKILL.md +167 -0
- package/skills/engineering/resolve-issues/generated/workflow-repair-policy.json +448 -0
- package/skills/engineering/resolve-issues/references/breaker.md +82 -0
- package/skills/engineering/resolve-issues/references/deliverables.md +27 -0
- package/skills/engineering/resolve-issues/references/delivery.md +108 -0
- package/skills/engineering/resolve-issues/references/evidence-lane.md +21 -0
- package/skills/engineering/resolve-issues/references/exact-head-ci.md +287 -0
- package/skills/engineering/resolve-issues/references/fan-out.md +33 -0
- package/skills/engineering/resolve-issues/references/finalization.md +68 -0
- package/skills/engineering/resolve-issues/references/guarantees.md +10 -0
- package/skills/engineering/resolve-issues/references/high-risk.md +29 -0
- package/skills/engineering/resolve-issues/references/incidents/848/README.md +156 -0
- package/skills/engineering/resolve-issues/references/intake.md +86 -0
- package/skills/engineering/resolve-issues/references/integration-gate.md +53 -0
- package/skills/engineering/resolve-issues/references/interference.md +87 -0
- package/skills/engineering/resolve-issues/references/loop.md +134 -0
- package/skills/engineering/resolve-issues/references/model-catalog.md +9 -0
- package/skills/engineering/resolve-issues/references/postmortem.md +27 -0
- package/skills/engineering/resolve-issues/references/pre-flight-model-slots.md +41 -0
- package/skills/engineering/resolve-issues/references/pre-flight-recording-and-checkout.md +48 -0
- package/skills/engineering/resolve-issues/references/pre-flight.md +41 -0
- package/skills/engineering/resolve-issues/references/regression-checklist.md +26 -0
- package/skills/engineering/resolve-issues/references/run-state.md +288 -0
- package/skills/engineering/resolve-issues/references/sandboxed-testing.md +48 -0
- package/skills/engineering/resolve-issues/references/spawn-contract.md +96 -0
- package/skills/engineering/resolve-issues/references/terminal-evidence-journal.md +40 -0
- package/skills/engineering/resolve-issues/references/why.md +653 -0
- package/skills/engineering/resolve-issues/schemas/fix-round.schema.json +49 -0
- package/skills/engineering/resolve-issues/scripts/combine-and-verify.mjs +721 -0
- package/skills/engineering/resolve-issues/scripts/component-candidate.mjs +962 -0
- package/skills/engineering/resolve-issues/scripts/contract-revision.mjs +220 -0
- package/skills/engineering/resolve-issues/scripts/detect-delivery-mode.mjs +420 -0
- package/skills/engineering/resolve-issues/scripts/detect-target-branch.mjs +256 -0
- package/skills/engineering/resolve-issues/scripts/detect-workspace-mode.mjs +168 -0
- package/skills/engineering/resolve-issues/scripts/discover-models.mjs +9 -0
- package/skills/engineering/resolve-issues/scripts/doctrine.mjs +62 -0
- package/skills/engineering/resolve-issues/scripts/evidence-lifecycle-contract.mjs +191 -0
- package/skills/engineering/resolve-issues/scripts/exact-head-ci.mjs +413 -0
- package/skills/engineering/resolve-issues/scripts/exact-head-github-provider.mjs +332 -0
- package/skills/engineering/resolve-issues/scripts/finalize.mjs +488 -0
- package/skills/engineering/resolve-issues/scripts/fix-rounds.mjs +3307 -0
- package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-circular-1001.json +16 -0
- package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-valid-sequencing.json +51 -0
- package/skills/engineering/resolve-issues/scripts/fixtures/fmm-express-830-component-candidate.json +17 -0
- package/skills/engineering/resolve-issues/scripts/fixtures/head-check-set-1081.json +166 -0
- package/skills/engineering/resolve-issues/scripts/gate-value-series.mjs +92 -0
- package/skills/engineering/resolve-issues/scripts/guide-index.mjs +73 -0
- package/skills/engineering/resolve-issues/scripts/head-check-set.mjs +159 -0
- package/skills/engineering/resolve-issues/scripts/interference.mjs +427 -0
- package/skills/engineering/resolve-issues/scripts/model-catalog.mjs +9 -0
- package/skills/engineering/resolve-issues/scripts/next-operations.mjs +419 -0
- package/skills/engineering/resolve-issues/scripts/postmortem.mjs +909 -0
- package/skills/engineering/resolve-issues/scripts/preflight-questions.mjs +322 -0
- package/skills/engineering/resolve-issues/scripts/reconcile-contained-unit-prs.mjs +415 -0
- package/skills/engineering/resolve-issues/scripts/release-state-contract.mjs +697 -0
- package/skills/engineering/resolve-issues/scripts/report.mjs +494 -0
- package/skills/engineering/resolve-issues/scripts/required-check-plan.mjs +172 -0
- package/skills/engineering/resolve-issues/scripts/round-metadata.mjs +79 -0
- package/skills/engineering/resolve-issues/scripts/run-state-review6-cases.mjs +334 -0
- package/skills/engineering/resolve-issues/scripts/run-state.mjs +4784 -0
- package/skills/engineering/resolve-issues/scripts/sandbox-selftest.mjs +395 -0
- package/skills/engineering/resolve-issues/scripts/spawn-contract.mjs +290 -0
- package/skills/engineering/resolve-issues/scripts/terminal-dispositions.mjs +170 -0
- package/skills/engineering/resolve-issues/scripts/terminal-evidence-journal.mjs +293 -0
- package/skills/engineering/resolve-issues/scripts/unit-kind.mjs +197 -0
- package/skills/engineering/resolve-issues/scripts/unit-lifecycle.mjs +127 -0
- package/skills/engineering/resolve-issues/scripts/watch-delivery.mjs +893 -0
- package/skills/engineering/resolve-issues/scripts/workspaces.mjs +829 -0
- package/skills/engineering/resolve-issues/workflows/independent-review.workflow.js +290 -0
- package/skills/engineering/resolve-issues/workflows/prior-art-scan.workflow.js +80 -0
- package/skills/engineering/resolve-issues/workflows/workflow-smoke.mjs +102 -0
- package/skills/engineering/resolve-release/LICENSE +3 -0
- package/skills/engineering/resolve-release/SKILL.md +112 -0
- package/skills/engineering/resolve-release/references/assembly.md +137 -0
- package/skills/engineering/resolve-release/references/auto-when-green.md +56 -0
- package/skills/engineering/resolve-release/references/candidate.md +167 -0
- package/skills/engineering/resolve-release/references/exposure.md +178 -0
- package/skills/engineering/resolve-release/references/handoff.md +24 -0
- package/skills/engineering/resolve-release/references/postmortem.md +230 -0
- package/skills/engineering/resolve-release/references/preflight.md +207 -0
- package/skills/engineering/resolve-release/references/principles.md +94 -0
- package/skills/engineering/resolve-release/references/regression-checklist.md +36 -0
- package/skills/engineering/resolve-release/references/related-skills.md +12 -0
- package/skills/engineering/resolve-release/references/routing.md +149 -0
- package/skills/engineering/resolve-release/references/verified-sha-github-flow.md +285 -0
- package/skills/engineering/resolve-release/references/versioning.md +202 -0
- package/skills/engineering/resolve-release/references/why.md +53 -0
- package/skills/engineering/resolve-release/scripts/adapter-completion-artifact.mjs +389 -0
- package/skills/engineering/resolve-release/scripts/build-changes.mjs +209 -0
- package/skills/engineering/resolve-release/scripts/candidate-hygiene.mjs +407 -0
- package/skills/engineering/resolve-release/scripts/candidate-identity.mjs +904 -0
- package/skills/engineering/resolve-release/scripts/candidate-traffic.mjs +81 -0
- package/skills/engineering/resolve-release/scripts/checked-adapter-loader.mjs +612 -0
- package/skills/engineering/resolve-release/scripts/close-attempt.mjs +135 -0
- package/skills/engineering/resolve-release/scripts/closeout-release.mjs +161 -0
- package/skills/engineering/resolve-release/scripts/doctrine.mjs +106 -0
- package/skills/engineering/resolve-release/scripts/durable-processing.mjs +522 -0
- package/skills/engineering/resolve-release/scripts/ensure-target-green.mjs +659 -0
- package/skills/engineering/resolve-release/scripts/evidence-bundle.mjs +1014 -0
- package/skills/engineering/resolve-release/scripts/finalize-release.mjs +526 -0
- package/skills/engineering/resolve-release/scripts/fixtures/durable-processing-adapter.mjs +169 -0
- package/skills/engineering/resolve-release/scripts/green-gate.mjs +599 -0
- package/skills/engineering/resolve-release/scripts/isolated-adapter-evaluator.mjs +752 -0
- package/skills/engineering/resolve-release/scripts/metadata-pr-status.mjs +56 -0
- package/skills/engineering/resolve-release/scripts/metadata-sync.mjs +1538 -0
- package/skills/engineering/resolve-release/scripts/postmortem.mjs +381 -0
- package/skills/engineering/resolve-release/scripts/preflight-probes.mjs +498 -0
- package/skills/engineering/resolve-release/scripts/production-endpoints.mjs +326 -0
- package/skills/engineering/resolve-release/scripts/rc-circuit-breaker.mjs +272 -0
- package/skills/engineering/resolve-release/scripts/report.mjs +417 -0
- package/skills/engineering/resolve-release/scripts/reprobe-credentials.mjs +114 -0
- package/skills/engineering/resolve-release/scripts/revalidate-candidate.mjs +238 -0
- package/skills/engineering/resolve-release/scripts/review-packet.mjs +503 -0
- package/skills/engineering/resolve-release/scripts/rollback-floor.mjs +263 -0
- package/skills/engineering/resolve-release/scripts/version-assert.mjs +339 -0
- package/skills/engineering/resolve-release/scripts/version-postmortem.mjs +485 -0
- package/skills/engineering/resolve-release/scripts/version.mjs +1199 -0
- package/skills/engineering/resolve-release/scripts/watch-candidate-delivery.mjs +449 -0
- package/skills/engineering/resolve-release/vendor/ACORN-LICENSE +21 -0
- package/skills/engineering/resolve-release/vendor/README.md +60 -0
- package/skills/engineering/resolve-release/vendor/acorn.mjs +6233 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/LICENSE +21 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/README.md +341 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/README.template.md +70 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs +7 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.mts +2033 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.ts +2033 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js +7 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/core/package.json +49 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/LICENSE +21 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/README.md +5 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.mts +549 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.ts +549 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/package.json +36 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/LICENSE +47 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/README.md +82 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.d.ts +11 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.mjs +22 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cjs +21 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.cjs +21 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.d.ts +11 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.d.ts +11 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.mjs +25 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.wasm +0 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.mts +85 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.ts +85 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.mts +20 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.ts +20 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs +2 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs.map +1 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/package.json +61 -0
- package/skills/engineering/review-pr/LICENSE +3 -0
- package/skills/engineering/review-pr/SKILL.md +123 -0
- package/skills/engineering/review-pr/references/adversarial-reviewer-prompt.md +42 -0
- package/skills/engineering/review-pr/references/code-correctness.md +5 -0
- package/skills/engineering/review-pr/references/contract-freshness.md +9 -0
- package/skills/engineering/review-pr/references/coordination.md +18 -0
- package/skills/engineering/review-pr/references/domain-hazards.md +123 -0
- package/skills/engineering/review-pr/references/finding-themes.md +7 -0
- package/skills/engineering/review-pr/references/github-posting.md +98 -0
- package/skills/engineering/review-pr/references/golden-path-smoke.md +5 -0
- package/skills/engineering/review-pr/references/incremental-output.md +16 -0
- package/skills/engineering/review-pr/references/inputs-and-discovery.md +31 -0
- package/skills/engineering/review-pr/references/output-format.md +99 -0
- package/skills/engineering/review-pr/references/over-mock-screen.md +7 -0
- package/skills/engineering/review-pr/references/promotion-prs.md +16 -0
- package/skills/engineering/review-pr/references/re-review.md +18 -0
- package/skills/engineering/review-pr/references/review-method.md +199 -0
- package/skills/engineering/review-pr/references/review-mode.md +30 -0
- package/skills/engineering/review-pr/references/review-posture.md +53 -0
- package/skills/engineering/review-pr/references/round1-depth.md +62 -0
- package/skills/engineering/review-pr/references/scripts.md +17 -0
- package/skills/engineering/review-pr/references/workflow.md +16 -0
- package/skills/engineering/review-pr/schemas/findings.schema.json +282 -0
- package/skills/engineering/review-pr/scripts/finding-contract.mjs +285 -0
- package/skills/engineering/review-pr/scripts/post-review.mjs +405 -0
- package/skills/engineering/review-pr/scripts/pr-context.mjs +207 -0
- package/skills/engineering/review-pr/scripts/scan-diff.mjs +365 -0
- package/skills/engineering/review-pr/scripts/theme-contract.mjs +57 -0
- package/skills/engineering/smoke/LICENSE +3 -0
- package/skills/engineering/smoke/SKILL.md +131 -0
- package/skills/engineering/smoke/assets/smoke.manifest.example.json +53 -0
- package/skills/engineering/smoke/references/manifest.md +192 -0
- package/skills/engineering/smoke/scripts/smoke.mjs +713 -0
- package/skills/fullstack/better-auth/LICENSE +3 -0
- package/skills/fullstack/better-auth/SKILL.md +601 -0
- package/skills/fullstack/better-auth/references/feishu-api.md +270 -0
- package/skills/fullstack/monorepo/LICENSE +3 -0
- package/skills/fullstack/monorepo/SKILL.md +465 -0
- package/skills/fullstack/nextjs-fullstack/LICENSE +3 -0
- package/skills/fullstack/nextjs-fullstack/SKILL.md +210 -0
- package/skills/fullstack/nextjs-fullstack/conventions.md +318 -0
- package/skills/fullstack/nextjs-fullstack/frontend-conventions.md +61 -0
- package/skills/fullstack/nextjs-fullstack/nextjs16.md +287 -0
- package/skills/fullstack/nextjs-fullstack/server-actions.md +409 -0
- package/skills/fullstack/prisma-setup/LICENSE +3 -0
- package/skills/fullstack/prisma-setup/SKILL.md +180 -0
- package/skills/fullstack/prisma-setup/nextjs.md +258 -0
- package/skills/fullstack/prisma-setup/turborepo.md +301 -0
- package/skills/fullstack/shadcn/LICENSE +3 -0
- package/skills/fullstack/shadcn/SKILL.md +119 -0
- package/skills/fullstack/shadcn/assets/shadcn-small.png +0 -0
- package/skills/fullstack/shadcn/assets/shadcn.png +0 -0
- package/skills/fullstack/shadcn/cli.md +411 -0
- package/skills/fullstack/shadcn/customization.md +224 -0
- package/skills/fullstack/shadcn/evals/evals.json +90 -0
- package/skills/fullstack/shadcn/mcp.md +101 -0
- package/skills/fullstack/shadcn/rules/base-vs-radix.md +323 -0
- package/skills/fullstack/shadcn/rules/component-selection.md +67 -0
- package/skills/fullstack/shadcn/rules/composition.md +195 -0
- package/skills/fullstack/shadcn/rules/data-table.md +201 -0
- package/skills/fullstack/shadcn/rules/forms.md +255 -0
- package/skills/fullstack/shadcn/rules/icons.md +103 -0
- package/skills/fullstack/shadcn/rules/styling.md +167 -0
- package/skills/fullstack/zod-v4/LICENSE +3 -0
- package/skills/fullstack/zod-v4/SKILL.md +287 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# Coverage gates — Cloud Build template (satisfies ensure-coverage references/enforcement/ci-contract.md).
|
|
2
|
+
#
|
|
3
|
+
# Each gate is BLOCKING (a failing Cloud Build step fails the build), none standing in
|
|
4
|
+
# for another. Two of the three lanes are in this file (release lives in resolve-release):
|
|
5
|
+
# the PR-lane floor (inventory, accounting, render sweep,
|
|
6
|
+
# no-over-mock, Review-Contract checklist validate, quarantine auto-resurface, and the
|
|
7
|
+
# curated E2E SMOKE golden-path liveness gate #8) runs every PR; the broad functional +
|
|
8
|
+
# journey E2E suite (gate 4) is DEMOTED to the integration/nightly lane (branch-guarded
|
|
9
|
+
# below) — verified before release, not on the per-PR critical path. Plus the meta-gate
|
|
10
|
+
# that runs ci-audit against this file so the gates can't be silently dropped. Copy into
|
|
11
|
+
# your cloudbuild.*.yaml or wire as a dedicated PR trigger. Replace <…> placeholders.
|
|
12
|
+
# Verify it stays wired: `node <ensure-coverage>/scripts/ci-audit.mjs --files cloudbuild.gates.yaml`.
|
|
13
|
+
#
|
|
14
|
+
# Conventions this template encodes:
|
|
15
|
+
# 1. DOCKER-PREFERRED: every browser step already runs in the official pinned
|
|
16
|
+
# Playwright image (`name:` below) — Cloud Build steps are containers by
|
|
17
|
+
# construction. Keep every pin IDENTICAL and matching the repo's
|
|
18
|
+
# @playwright/test version (mismatch → a network `playwright install` per run,
|
|
19
|
+
# or protocol failures). Canonical pin: mcr.microsoft.com/playwright:v1.61.0-noble.
|
|
20
|
+
# 2. TIME BUDGET: the PR lane targets ≤5 min wall clock — browser steps carry
|
|
21
|
+
# `timeout: 300s`, the build carries an overall `timeout`, and golden paths run
|
|
22
|
+
# in parallel inside the smoke step (E2E_WORKERS). Steps run serially by default;
|
|
23
|
+
# use `waitFor: ['-']` on independent static gates to overlap them if the total
|
|
24
|
+
# creeps past budget.
|
|
25
|
+
# 3. UMBRELLA: Cloud Build needs no umbrella job — the build's single pass/fail
|
|
26
|
+
# status IS the one check. Point GitHub branch protection (or your merge gate)
|
|
27
|
+
# at this trigger's status check and nothing else.
|
|
28
|
+
|
|
29
|
+
steps:
|
|
30
|
+
# Static test-lint gates — fails if this push ADDS a banned pattern to a test
|
|
31
|
+
# file: a skip/focus/xfail (no-skip), a fixed sleep (no-fixed-timeout), an empty
|
|
32
|
+
# test (no-empty-test), or a mock of a first-party internal seam (mock-internal-seam,
|
|
33
|
+
# default-on). Diff mode leaves inherited violations alone; a change may not add a new one.
|
|
34
|
+
- id: lint-tests
|
|
35
|
+
name: node:20
|
|
36
|
+
entrypoint: bash
|
|
37
|
+
args: ['-c', 'node <ensure-coverage>/scripts/lint-tests.mjs --diff "$_BASE_REF"']
|
|
38
|
+
|
|
39
|
+
# Gate 5 — no over-mock (depth axis), WHOLE-TREE lane: inherited first-party-seam
|
|
40
|
+
# mocks block until removed (the --diff run above already covers newly-added ones).
|
|
41
|
+
# Zero-tolerance, no waiver; ci-audit looks for `mock-internal-seam` by name.
|
|
42
|
+
- id: over-mock-whole-tree
|
|
43
|
+
name: node:20
|
|
44
|
+
entrypoint: bash
|
|
45
|
+
args: ['-c', 'node <ensure-coverage>/scripts/lint-tests.mjs --rules mock-internal-seam']
|
|
46
|
+
|
|
47
|
+
# Gate 1 — inventory freshness: regenerate the surface inventory + route manifest,
|
|
48
|
+
# fail on drift so a new route can't be silently uncovered in either manifest.
|
|
49
|
+
- id: inventory-freshness
|
|
50
|
+
name: node:20
|
|
51
|
+
entrypoint: bash
|
|
52
|
+
args:
|
|
53
|
+
- -c
|
|
54
|
+
- |
|
|
55
|
+
node scripts/gen-inventory.mjs # your INVENTORY-CONTRACT adapter → surface-inventory.json
|
|
56
|
+
node <e2e-test>/scripts/project-route-manifest.mjs \
|
|
57
|
+
--inventory docs/tests/_generated/surface-inventory.json \
|
|
58
|
+
--overlay e2e/route-manifest.overlay.json --out e2e/route-manifest.json
|
|
59
|
+
git diff --exit-code docs/tests/_generated/surface-inventory.json e2e/route-manifest.json
|
|
60
|
+
|
|
61
|
+
# Gate 2 — accounting: the ledger. Fails on Missing / Over-mocked / blocking
|
|
62
|
+
# Unverified. Static + fast; no browser. Proves a qualifying test was AUTHORED.
|
|
63
|
+
- id: coverage-accounting
|
|
64
|
+
name: node:20
|
|
65
|
+
entrypoint: bash
|
|
66
|
+
args: ['-c', 'node <ensure-coverage>/scripts/coverage-ledger.mjs validate']
|
|
67
|
+
|
|
68
|
+
# Gate 6 — Review-Contract checklist validate. Static anti-ritual guard: every
|
|
69
|
+
# PASS/FAIL checklist row carries an evidence locator (file:line / `command` / #issue)
|
|
70
|
+
# and no gate row is TODO. Doctrine: ensure-coverage hooks.md (CI tier). Point at the
|
|
71
|
+
# committed Review-Contract checklist doc (or the file the PR body's checklist extracts to).
|
|
72
|
+
- id: coverage-checklist
|
|
73
|
+
name: node:20
|
|
74
|
+
entrypoint: bash
|
|
75
|
+
args: ['-c', 'node <ensure-coverage>/scripts/coverage-checklist.mjs validate <docs/tests/CONTRACT-CHECKLIST.md>']
|
|
76
|
+
|
|
77
|
+
# Gate 6b — Review-Contract evidence-block freshness. The block is stamped with the
|
|
78
|
+
# HEAD it describes; validate fails when the stamp isn't that HEAD, so a fix-round
|
|
79
|
+
# commit landing after collection can't ship stale. Cloud Build checks out the
|
|
80
|
+
# triggering commit directly, so HEAD is already the right SHA — no ref override.
|
|
81
|
+
# Needs FULL history: triggers clone shallow by default, and the block's base..head
|
|
82
|
+
# derivations (including the production-diff claim) can't resolve in a shallow clone.
|
|
83
|
+
# Set the trigger's fetch depth to 0, or unshallow before this step.
|
|
84
|
+
- id: evidence-block
|
|
85
|
+
name: node:20
|
|
86
|
+
entrypoint: bash
|
|
87
|
+
args: ['-c', 'node <ensure-coverage>/scripts/evidence-block.mjs validate <docs/tests/evidence.json> --source <src,app,packages>']
|
|
88
|
+
|
|
89
|
+
# Gate 7 — quarantine auto-resurface. BLOCKING (distinct from the non-blocking
|
|
90
|
+
# quarantine *lane* below): fails once any `@quarantine(until=…)` / `until=` exit date
|
|
91
|
+
# is in the past, so a deferred suppression can't rot green into a permanent skip.
|
|
92
|
+
# ci-audit looks for `check-quarantine-expiry` by name.
|
|
93
|
+
- id: quarantine-expiry
|
|
94
|
+
name: node:20
|
|
95
|
+
entrypoint: bash
|
|
96
|
+
args: ['-c', 'node <ensure-coverage>/scripts/check-quarantine-expiry.mjs'] # exit 1 on any expired dated exit
|
|
97
|
+
|
|
98
|
+
# Gate 3 — render sweep: opens EVERY manifest route in a real browser and asserts
|
|
99
|
+
# the presentation floor (render-health spine first). SEPARATE job — needs a
|
|
100
|
+
# browser + seeded DB + auth bypass. This is the gate that catches a crashing
|
|
101
|
+
# route a green functional suite sails past. NOT the functional suite.
|
|
102
|
+
- id: presentation-sweep
|
|
103
|
+
name: mcr.microsoft.com/playwright:v1.61.0-noble
|
|
104
|
+
timeout: 300s # PR-lane budget: the sweep must stay inside 5 min
|
|
105
|
+
entrypoint: bash
|
|
106
|
+
env: ['E2E_AUTH_BYPASS=1', 'DATABASE_URL=${_DATABASE_URL}']
|
|
107
|
+
args:
|
|
108
|
+
- -c
|
|
109
|
+
- |
|
|
110
|
+
<seed + migrate the test DB>
|
|
111
|
+
<boot the app on $BASE_URL> # or point --base-url at a preview deploy
|
|
112
|
+
node <e2e-test>/scripts/presentation-sweep.mjs \
|
|
113
|
+
--manifest e2e/route-manifest.json --base-url "$$BASE_URL" \
|
|
114
|
+
--fixtures e2e/sweep-fixtures.mjs \
|
|
115
|
+
--out docs/tests/_generated/presentation-results.json
|
|
116
|
+
|
|
117
|
+
# Gate 8 — curated E2E smoke (golden-path liveness). PR-LANE FLOOR, blocking.
|
|
118
|
+
# Boots the REAL app and drives only the do-not-ship journeys (sign in → core
|
|
119
|
+
# action → pay), writes smoke-results.json, then reduces those observations through
|
|
120
|
+
# smoke.mjs verdict. Any fail/blocked/missing reds the build. This — NOT the broad
|
|
121
|
+
# functional suite below — is the per-PR liveness gate; it catches the integrated
|
|
122
|
+
# render-time bug a green unit/functional suite sails past (#237). ci-audit looks
|
|
123
|
+
# for `smoke … verdict` by name.
|
|
124
|
+
- id: smoke
|
|
125
|
+
name: mcr.microsoft.com/playwright:v1.61.0-noble
|
|
126
|
+
timeout: 300s # PR-lane budget: golden paths run in parallel (E2E_WORKERS), wall clock ≈ slowest path
|
|
127
|
+
entrypoint: bash
|
|
128
|
+
env: ['E2E_AUTH_BYPASS=1', 'E2E_WORKERS=4', 'DATABASE_URL=${_DATABASE_URL}']
|
|
129
|
+
args:
|
|
130
|
+
- -c
|
|
131
|
+
- |
|
|
132
|
+
<seed + migrate the test DB>
|
|
133
|
+
<boot the app on $BASE_URL>
|
|
134
|
+
# Validate + reconcile before gating: --journeys verifies every browser path
|
|
135
|
+
# references a real @smoke-tagged journey AND every @smoke journey is in the
|
|
136
|
+
# manifest — a drift either way (esp. an @smoke journey missing from the
|
|
137
|
+
# manifest, a silent false-ALIVE) reds the build instead of passing vacuously.
|
|
138
|
+
node <smoke>/scripts/smoke.mjs validate --manifest smoke.manifest.json --journeys <e2e-journeys-dir>
|
|
139
|
+
node <smoke>/scripts/smoke.mjs plan --manifest smoke.manifest.json --target local --json > smoke-plan.json
|
|
140
|
+
<drive smoke-plan.json through Playwright/API/CLI and write smoke-results.json>
|
|
141
|
+
node <smoke>/scripts/smoke.mjs verdict --manifest smoke.manifest.json --target local --results smoke-results.json --out smoke-verdict.json
|
|
142
|
+
|
|
143
|
+
# Gate 4 — broad functional + journey E2E (distinct from gate 3 and gate 8).
|
|
144
|
+
# HEAVY/INTEGRATION LANE, blocking — but DEMOTED off the per-PR critical path: it runs
|
|
145
|
+
# only on the integration branch (REQUIRED before release), never on a PR. An OPTIONAL
|
|
146
|
+
# nightly cadence is opt-in via `_LANE=nightly` — not required; the integration-branch
|
|
147
|
+
# run is the release gate. The per-PR floor is the smoke gate above; the full
|
|
148
|
+
# behavioral suite is verified before release. Excludes @quarantine-tagged tests.
|
|
149
|
+
- id: e2e
|
|
150
|
+
name: mcr.microsoft.com/playwright:v1.61.0-noble
|
|
151
|
+
timeout: 1800s # integration lane — the one lane allowed past the 5-min PR budget (no-op on PRs)
|
|
152
|
+
entrypoint: bash
|
|
153
|
+
env: ['E2E_AUTH_BYPASS=1', 'E2E_WORKERS=4', 'DATABASE_URL=${_DATABASE_URL}']
|
|
154
|
+
args:
|
|
155
|
+
- -c
|
|
156
|
+
- |
|
|
157
|
+
if [ "$BRANCH_NAME" = "integration" ] || [ "${_LANE}" = "nightly" ]; then
|
|
158
|
+
<seed + migrate the test DB>
|
|
159
|
+
pnpm playwright test --grep-invert "@quarantine"
|
|
160
|
+
else
|
|
161
|
+
echo "skip: broad functional+journey E2E runs on the integration/nightly lane, not per-PR (gate 8 smoke is the per-PR floor)"
|
|
162
|
+
fi
|
|
163
|
+
|
|
164
|
+
# Quarantine lane — the ONLY sanctioned non-blocking path (tests are never skipped).
|
|
165
|
+
# Un-sandboxable externals or a genuine flake under active fix go HERE: the test
|
|
166
|
+
# still RUNS and REPORTS, it just doesn't block (allowFailure). Keep the surface
|
|
167
|
+
# graded `Unverified` in the ledger (never `verified: true`), with a dated exit.
|
|
168
|
+
- id: quarantine
|
|
169
|
+
name: mcr.microsoft.com/playwright:v1.61.0-noble
|
|
170
|
+
entrypoint: bash
|
|
171
|
+
allowFailure: true # the whole point — must never hard-block the build
|
|
172
|
+
env: ['E2E_AUTH_BYPASS=1', 'DATABASE_URL=${_DATABASE_URL}']
|
|
173
|
+
args:
|
|
174
|
+
- -c
|
|
175
|
+
- |
|
|
176
|
+
<seed + migrate the test DB>
|
|
177
|
+
pnpm playwright test --grep "@quarantine" --pass-with-no-tests # provider test keys via secrets, never live keys; green when nothing is quarantined
|
|
178
|
+
|
|
179
|
+
# Visual regression GATE (presentation:visual) — OPT-IN, BLOCKING when present.
|
|
180
|
+
# Same PINNED Playwright image as the regen step so baselines and this comparison
|
|
181
|
+
# share one rendering environment (a baseline minted on another OS reds on every
|
|
182
|
+
# glyph's anti-aliasing). Compares against the COMMITTED baselines; never writes
|
|
183
|
+
# them. Only needed when a surface declares `requiredLevels: [presentation:visual]`.
|
|
184
|
+
- id: visual-gate
|
|
185
|
+
name: mcr.microsoft.com/playwright:v1.61.0-noble # PIN — must match visual-baseline-regen
|
|
186
|
+
entrypoint: bash
|
|
187
|
+
env: ['E2E_AUTH_BYPASS=1', 'DATABASE_URL=${_DATABASE_URL}']
|
|
188
|
+
args:
|
|
189
|
+
- -c
|
|
190
|
+
- |
|
|
191
|
+
<seed + migrate the test DB>
|
|
192
|
+
<boot the app on $BASE_URL>
|
|
193
|
+
# --pass-with-no-tests: a repo with no @visual specs must not red the whole build.
|
|
194
|
+
pnpm playwright test --grep "@visual" --pass-with-no-tests # toHaveScreenshot specs; fails on drift from committed baselines
|
|
195
|
+
|
|
196
|
+
# Visual BASELINE-REGEN — ON-DEMAND (gated on the _UPDATE_VISUAL_BASELINES
|
|
197
|
+
# substitution; wire it to a manual/labelled trigger), the ONLY sanctioned writer
|
|
198
|
+
# of baselines. Same pinned image. Regenerates the PNGs, commits them back, then
|
|
199
|
+
# posts the durable baseline link + ephemeral diff URL to the issue AND PR and
|
|
200
|
+
# RETURNS both as a value (`--evidence-out`, plus stdout) for the resolve-issues
|
|
201
|
+
# orchestrator to record on the unit. This lane never writes the run manifest itself —
|
|
202
|
+
# the orchestrator is its only writer (ADR 0001 decision 5). Never blocks; an explicit
|
|
203
|
+
# human/agent action.
|
|
204
|
+
#
|
|
205
|
+
# `--evidence-out` is not optional here: it is what gives this lane returned-value
|
|
206
|
+
# parity with `ci-gates.github.yml`. A lane that only comments on the issue leaves the
|
|
207
|
+
# orchestrator nothing to record, and the unit's visual proof-of-execution is silently
|
|
208
|
+
# absent — the gate looks green because the evidence was never asked for.
|
|
209
|
+
- id: visual-baseline-regen
|
|
210
|
+
name: mcr.microsoft.com/playwright:v1.61.0-noble # MUST match visual-gate
|
|
211
|
+
entrypoint: bash
|
|
212
|
+
env: ['E2E_AUTH_BYPASS=1', 'DATABASE_URL=${_DATABASE_URL}']
|
|
213
|
+
args:
|
|
214
|
+
- -c
|
|
215
|
+
- |
|
|
216
|
+
[ "$_UPDATE_VISUAL_BASELINES" = "true" ] || { echo "skip: regen not requested"; exit 0; }
|
|
217
|
+
<seed + migrate the test DB>
|
|
218
|
+
<boot the app on $BASE_URL>
|
|
219
|
+
pnpm playwright test --grep "@visual" --update-snapshots
|
|
220
|
+
git add '**/*-snapshots/**' && (git diff --staged --quiet || git commit -m "chore(visual): regenerate baselines") && git push
|
|
221
|
+
node <e2e-test>/scripts/post-visual-evidence.mjs \
|
|
222
|
+
--unit "$_PR_NUMBER" --repo "$_REPO" --sha "$(git rev-parse HEAD)" \
|
|
223
|
+
--issue "$_LINKED_ISSUE" --pr "$_PR_NUMBER" \
|
|
224
|
+
--diff-artifact "$_DIFF_ARTIFACT_URL" \
|
|
225
|
+
--results docs/tests/_generated/presentation-results.json \
|
|
226
|
+
--evidence-out /workspace/visual-evidence.json
|
|
227
|
+
|
|
228
|
+
# Publish the RETURNED evidence so the run can read it. `/workspace` persists across
|
|
229
|
+
# steps but not past the build, which is the Cloud Build counterpart of GitHub's
|
|
230
|
+
# `upload-artifact`. Guarded twice — on the regen substitution and on the file
|
|
231
|
+
# existing — because a top-level `artifacts:` block uploads unconditionally and reds
|
|
232
|
+
# every ordinary build, where this lane did not run and the file is absent.
|
|
233
|
+
- id: visual-evidence-publish
|
|
234
|
+
name: gcr.io/cloud-builders/gsutil
|
|
235
|
+
entrypoint: bash
|
|
236
|
+
args:
|
|
237
|
+
- -c
|
|
238
|
+
- |
|
|
239
|
+
[ "$_UPDATE_VISUAL_BASELINES" = "true" ] || { echo "skip: regen not requested"; exit 0; }
|
|
240
|
+
[ -n "$_EVIDENCE_BUCKET" ] || { echo "skip: _EVIDENCE_BUCKET unset — evidence stays on the regen step's stdout"; exit 0; }
|
|
241
|
+
[ -f /workspace/visual-evidence.json ] || { echo "skip: no evidence file"; exit 0; }
|
|
242
|
+
gsutil cp /workspace/visual-evidence.json "gs://$_EVIDENCE_BUCKET/$BUILD_ID/visual-evidence.json"
|
|
243
|
+
|
|
244
|
+
# Meta-gate (bootstrap) — run ci-audit against THIS gate file so the gates above
|
|
245
|
+
# can't be silently deleted or weakened later. ci-audit's own META_GATE is exactly
|
|
246
|
+
# "is ci-audit run by CI?". Keep --files in sync with the gate file(s) you ship.
|
|
247
|
+
- id: gate-audit
|
|
248
|
+
name: node:20
|
|
249
|
+
entrypoint: bash
|
|
250
|
+
args: ['-c', 'node <ensure-coverage>/scripts/ci-audit.mjs --files cloudbuild.gates.yaml']
|
|
251
|
+
|
|
252
|
+
# DO NOT add `allowFailure: true` to gates 2/3/4 — that turns a gate into theatre.
|
|
253
|
+
# (The quarantine lane above is the one sanctioned exception: it RUNS + REPORTS the
|
|
254
|
+
# test non-blocking, with the surface graded `Unverified`; it is not a skip.)
|
|
255
|
+
# Phase-in (warn-only) is acceptable only temporarily and must be reported by the
|
|
256
|
+
# CI audit as `warn-only` with a dated exit plan, never treated as `present`.
|
|
257
|
+
# Overall ceiling. Steps run serially, so this must exceed the sum of the step
|
|
258
|
+
# timeouts that can actually run together — the e2e step alone may use its full
|
|
259
|
+
# 1800s on the integration lane. The PR lane (where e2e no-ops) finishes well
|
|
260
|
+
# inside 5 min; this ceiling is for the integration lane.
|
|
261
|
+
timeout: 3600s
|
|
262
|
+
options:
|
|
263
|
+
env: ['BASE_URL=http://127.0.0.1:3000']
|
|
264
|
+
substitutions:
|
|
265
|
+
_DATABASE_URL: '' # injected from Secret Manager in your trigger
|
|
266
|
+
_BASE_REF: 'origin/main' # the promotion/PR base the no-skip diff lints against
|
|
267
|
+
_UPDATE_VISUAL_BASELINES: 'false' # set true on a manual/labelled trigger to regenerate visual baselines
|
|
268
|
+
_PR_NUMBER: '' # PR number for the visual evidence comment
|
|
269
|
+
_LINKED_ISSUE: '' # the source issue # the evidence comment is also posted to
|
|
270
|
+
_REPO: '' # owner/repo for the durable baseline link
|
|
271
|
+
_DIFF_ARTIFACT_URL: '' # ephemeral diff/preview artifact URL (with expiry), if uploaded
|
|
272
|
+
_EVIDENCE_BUCKET: '' # GCS bucket for the RETURNED visual-evidence value; empty = stdout only
|