skilldrop-cli 0.16.29 → 0.16.31
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/bin/skilldrop.js +160 -33
- package/catalogue.json +10 -4
- package/model-routing.json +24 -0
- package/package.json +1 -1
- package/packs/ai-engineering/skills/mcp-pairing/SKILL.md +93 -0
- package/packs/ai-engineering/skills/mcp-pairing/evals/eval_queries.json +13 -0
- package/packs/ai-engineering/skills/mcp-pairing/evals/evals.json +76 -0
- package/packs/ai-engineering/skills/mcp-pairing/evals/files/2/mcp.json +32 -0
- package/packs/ai-engineering/skills/mcp-pairing/evals/files/4/.mcp.json +47 -0
- package/packs/ai-engineering/skills/mcp-pairing/evals/files/4/docs/pr-loop.md +12 -0
- package/packs/ai-engineering/skills/mcp-pairing/evals/files/5/docs/oncall-triage.md +18 -0
- package/packs/ai-engineering/skills/mcp-pairing/examples/build-loop-github-jira-datadog.md +69 -0
- package/packs/ai-engineering/skills/mcp-pairing/manifest.json +17 -0
- package/packs/ai-engineering/skills/mcp-pairing/reference.md +136 -0
- package/packs/ai-engineering/skills/mcp-pairing/templates/mcp-pairing.md +43 -0
- package/packs/dev-team/loops/build/LOOP.md +4 -2
- package/packs/dev-team/loops/build/loop.json +2 -2
- package/packs/dev-team/loops/release/LOOP.md +7 -5
- package/packs/dev-team/loops/release/loop.json +2 -2
- package/packs/dev-team/skills/codebase-tour/SKILL.md +115 -0
- package/packs/dev-team/skills/codebase-tour/evals/eval_queries.json +13 -0
- package/packs/dev-team/skills/codebase-tour/evals/evals.json +77 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/.github/workflows/ci.yml +23 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/README.md +23 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/openapi.yaml +21 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/package-lock.json +7 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/package.json +29 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/src/config.ts +20 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/src/domain/shipments/filter.ts +24 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/src/domain/shipments/repository.ts +15 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/src/errors.ts +9 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/src/generated/api-types.ts +9 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/src/http/handlers/shipments.ts +38 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/src/http/routes.ts +7 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/src/jobs/export-shipments.ts +22 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/src/server.ts +18 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/tests/domain/filter.test.ts +16 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/tests/http/shipments.test.ts +18 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/tsconfig.json +10 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/1/vitest.config.ts +5 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/.github/workflows/ci.yml +16 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/README.md +16 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/noxfile.py +14 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/pyproject.toml +22 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/__init__.py +3 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/_version.py +4 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/cli.py +32 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/detect.py +15 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/errors.py +2 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/money.py +14 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/__init__.py +8 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/acme.py +18 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/base.py +24 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/harbor.py +13 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/tests/fixtures/acme_sample.csv +3 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/tests/test_acme.py +23 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/2/tests/test_detect.py +13 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/.github/workflows/ci.yml +28 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/Makefile +16 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/README.md +16 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/cmd/tidepool/main.go +24 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/go.mod +5 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/config/config.go +38 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/dispatch/dispatcher.go +52 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/dispatch/dispatcher_test.go +42 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/dispatch/sender.go +32 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/replay/replay.go +31 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/db.go +35 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/query.sql +11 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/query.sql.go +30 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/schema.sql +6 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/store_integration_test.go +21 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/3/sqlc.yaml +9 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/.env.example +4 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/.github/workflows/ci.yml +16 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/Makefile +16 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/README.md +23 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/data/rates.csv +4 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/pyproject.toml +19 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/scripts/gen_rates.py +29 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/__init__.py +0 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/api/__init__.py +0 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/api/preview.py +14 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/api/routes.py +36 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/config.py +15 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/discounts.py +8 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/generated/__init__.py +0 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/generated/rates_table.py +8 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/main.py +8 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/shipping.py +18 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/tax.py +7 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/tests/conftest.py +3 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/tests/unit/test_discounts.py +11 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/4/tests/unit/test_tax.py +13 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/.env.example +3 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/.github/workflows/ci.yml +13 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/README.md +18 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/package.json +13 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/openapi.json +30 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/package.json +15 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/db.js +19 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/flags.js +8 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/generated/schema.js +32 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/middleware/validate.js +20 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/routes/bookings.js +15 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/server.js +15 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/services/bookings.js +23 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/services/pricing.js +9 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/test/pricing.test.js +15 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/package.json +9 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/src/bookingForm.js +11 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/src/format.js +7 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/test/format.test.js +12 -0
- package/packs/dev-team/skills/codebase-tour/evals/files/5/scripts/gen-schema.mjs +27 -0
- package/packs/dev-team/skills/codebase-tour/examples/refund-window.md +158 -0
- package/packs/dev-team/skills/codebase-tour/manifest.json +47 -0
- package/packs/dev-team/skills/codebase-tour/scripts/repo_facts.py +403 -0
- package/packs/dev-team/skills/codebase-tour/templates/codebase-tour.md +85 -0
- package/packs/dev-team/skills/dependency-upgrade-review/SKILL.md +101 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/eval_queries.json +11 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/evals.json +77 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/.github/workflows/ci.yml +20 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/pr.diff +87 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/quillmark-CHANGELOG.md +24 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/src/render/comment.js +6 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/src/render/note.js +8 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/test/note.test.js +12 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/.github/workflows/ci.yml +23 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/.github/workflows/release.yml +23 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/pr.diff +32 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/release-notes.md +20 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/.github/workflows/ci.yml +18 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/Dockerfile +8 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/PR.md +36 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/pr.diff +47 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/src/ingest/client.py +24 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/src/ingest/reader.py +32 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/tests/test_reader.py +15 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/upstream/quillstream-CHANGELOG.md +37 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.github/workflows/ci.yml +22 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.github/workflows/release.yml +25 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.nvmrc +1 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/PR-412.md +16 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/PR-413.md +15 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/package.json +21 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/pr-412.diff +26 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/pr-413.diff +84 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/scripts/release.mjs +18 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/upstream/release-notary-CHANGELOG.md +16 -0
- package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/upstream/setup-toolchain-RELEASES.md +22 -0
- package/packs/dev-team/skills/dependency-upgrade-review/examples/inputs/ledgerline.diff +38 -0
- package/packs/dev-team/skills/dependency-upgrade-review/examples/ledgerline-tidyparse.md +91 -0
- package/packs/dev-team/skills/dependency-upgrade-review/manifest.json +50 -0
- package/packs/dev-team/skills/dependency-upgrade-review/reference.md +99 -0
- package/packs/dev-team/skills/dependency-upgrade-review/scripts/upgrade_diff.py +718 -0
- package/packs/dev-team/skills/refactor-plan/SKILL.md +168 -0
- package/packs/dev-team/skills/refactor-plan/evals/eval_queries.json +46 -0
- package/packs/dev-team/skills/refactor-plan/evals/evals.json +106 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/1/debt-register-row.md +5 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/1/in-flight-prs.md +7 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/1/order_service.py +74 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/1/test-coverage.txt +14 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/3/imports.txt +22 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/3/register.md +3 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/4/docs/open-prs.md +6 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/4/docs/tech-debt-register.md +7 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/4/reports/monthly_revenue.py +44 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/4/src/billing/invoice.py +233 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/4/src/partners/statement.py +29 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/4/tests/billing/test_payments.py +13 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/5/ci-notes.md +5 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/5/open-prs.txt +4 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/5/scripts/nightly-digest.js +36 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/5/src/auth/passwordReset.ts +16 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/5/src/notify/index.ts +2 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/5/src/notify/legacyMailer.ts +149 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/5/src/orders/onOrderShipped.ts +15 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/5/tests/notify/legacyMailer.test.ts +7 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/6/billing-service/src/main/kotlin/billing/DunningJob.kt +29 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/6/billing-service/src/main/kotlin/billing/InvoiceService.kt +157 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/6/billing-service/src/main/kotlin/billing/pdf/InvoicePdfRenderer.kt +36 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/6/billing-service/src/test/kotlin/billing/InvoiceServiceTest.kt +40 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/6/docs/adr-007-persistence.md +26 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/6/docs/open-prs.md +9 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/7/notes/open-work.md +19 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/7/web/src/components/CheckoutPanel.tsx +207 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/7/web/src/components/MiniCart.tsx +33 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/7/web/src/components/__tests__/CheckoutPanel.test.tsx +13 -0
- package/packs/dev-team/skills/refactor-plan/evals/files/7/web/src/pages/OrderReview.tsx +24 -0
- package/packs/dev-team/skills/refactor-plan/examples/search-ranker.md +104 -0
- package/packs/dev-team/skills/refactor-plan/manifest.json +36 -0
- package/packs/dev-team/skills/refactor-plan/reference.md +149 -0
- package/packs/dev-team/skills/refactor-plan/templates/refactor-plan.md +82 -0
- package/packs/dev-team/skills/rollout-plan/SKILL.md +157 -0
- package/packs/dev-team/skills/rollout-plan/evals/eval_queries.json +12 -0
- package/packs/dev-team/skills/rollout-plan/evals/evals.json +109 -0
- package/packs/dev-team/skills/rollout-plan/evals/files/2/metrics-snapshot.txt +11 -0
- package/packs/dev-team/skills/rollout-plan/evals/files/2/pr-description.md +28 -0
- package/packs/dev-team/skills/rollout-plan/evals/files/4/PR_DESCRIPTION.md +24 -0
- package/packs/dev-team/skills/rollout-plan/evals/files/4/metrics_snapshot.txt +7 -0
- package/packs/dev-team/skills/rollout-plan/evals/files/5/docs/tax-engine-v2.md +24 -0
- package/packs/dev-team/skills/rollout-plan/evals/files/6/flags/smart_reminders_v2.yaml +14 -0
- package/packs/dev-team/skills/rollout-plan/evals/files/6/notes/push-pipeline.md +10 -0
- package/packs/dev-team/skills/rollout-plan/evals/files/7/docs/ratelimiter-v2.md +21 -0
- package/packs/dev-team/skills/rollout-plan/evals/files/7/ops/traffic-summary.txt +9 -0
- package/packs/dev-team/skills/rollout-plan/examples/sync-engine-workspaces.md +102 -0
- package/packs/dev-team/skills/rollout-plan/manifest.json +35 -0
- package/packs/dev-team/skills/rollout-plan/reference.md +100 -0
- package/packs/dev-team/skills/rollout-plan/scripts/canary_math.py +261 -0
- package/packs/dev-team/skills/rollout-plan/templates/rollout-plan.md +50 -0
- package/packs/product-manager/loops/discover/LOOP.md +5 -4
- package/packs/product-manager/loops/discover/loop.json +2 -2
- package/packs/product-manager/skills/feedback-synthesis/SKILL.md +182 -0
- package/packs/product-manager/skills/feedback-synthesis/evals/eval_queries.json +46 -0
- package/packs/product-manager/skills/feedback-synthesis/evals/evals.json +76 -0
- package/packs/product-manager/skills/feedback-synthesis/evals/files/1/interview-notes.md +47 -0
- package/packs/product-manager/skills/feedback-synthesis/evals/files/1/nps-verbatims.csv +13 -0
- package/packs/product-manager/skills/feedback-synthesis/evals/files/1/support-tickets.csv +36 -0
- package/packs/product-manager/skills/feedback-synthesis/evals/files/3/churn-exit-survey.csv +11 -0
- package/packs/product-manager/skills/feedback-synthesis/evals/files/3/sales-call-notes.md +55 -0
- package/packs/product-manager/skills/feedback-synthesis/evals/files/4/csat_comments_q3.csv +17 -0
- package/packs/product-manager/skills/feedback-synthesis/evals/files/4/support_tickets_q3.csv +49 -0
- package/packs/product-manager/skills/feedback-synthesis/evals/files/5/app_reviews_last_60_days.csv +32 -0
- package/packs/product-manager/skills/feedback-synthesis/evals/files/5/interview_notes_round1.md +48 -0
- package/packs/product-manager/skills/feedback-synthesis/examples/booking-app-feedback.md +139 -0
- package/packs/product-manager/skills/feedback-synthesis/examples/inputs/booking-app-coded.csv +17 -0
- package/packs/product-manager/skills/feedback-synthesis/manifest.json +53 -0
- package/packs/product-manager/skills/feedback-synthesis/reference.md +89 -0
- package/packs/product-manager/skills/feedback-synthesis/scripts/theme_counts.py +355 -0
- package/packs/product-manager/skills/feedback-synthesis/templates/coding-sheet.csv +6 -0
- package/packs/product-manager/skills/feedback-synthesis/templates/synthesis.md +42 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "dependency-upgrade-review",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "Dependabot opened PR #212 on harbor-notes: \"Bump quillmark from 3.4.1 to 4.1.0\". CI is green. The PR diff is in pr.diff, quillmark's changelog is quillmark-CHANGELOG.md, and I've attached src/render/, test/ and .github/workflows/ci.yml from the repo. Can I merge it?",
|
|
7
|
+
"assertions": [
|
|
8
|
+
"Gives exactly one verdict at the top, and it is DO NOT MERGE",
|
|
9
|
+
"Reports that renderInline() was removed in 4.0.0 and that src/render/comment.js still imports and calls it, citing the file and line",
|
|
10
|
+
"Flags that 4.0.0 changed the sanitize default to false and that src/render/note.js renders note bodies with quillmark.render(markdown) and no sanitize option, so raw HTML from users passes through",
|
|
11
|
+
"Lists the lockfile changes the title does not mention: entity-codec 2.1.0 to 3.0.2 (a major, with its licence changing from MIT to MPL-2.0), html-escape-lite removed, and quill-native-highlight and prebuild-install added, with quill-native-highlight's new install script",
|
|
12
|
+
"Says the green CI does not cover the change: the only test renders Markdown with no raw HTML, and no test imports src/render/comment.js",
|
|
13
|
+
"Accounts for the skipped releases, not only 4.1.0: names the 3.5.0 link-title security fix and the setOptions() deprecation that src/render/note.js still uses",
|
|
14
|
+
"Gives a rollback that pins quillmark back and regenerates package-lock.json (or reverts the PR), and names taking 3.5.x as the way to get the security fix without the breaking changes",
|
|
15
|
+
"Does not invent versions, advisory IDs, APIs, files or tests that are not in the supplied input"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 2,
|
|
20
|
+
"prompt": "Dependabot PR #88 on tidewater-tools: \"Bump the github-actions group with 2 updates\". Checks passed. Diff in pr.diff, the two workflow files after the change are in .github/workflows/, and I pasted the release notes from both action repos into release-notes.md. OK to merge?",
|
|
21
|
+
"assertions": [
|
|
22
|
+
"Gives MERGE AFTER CHECKS, not MERGE",
|
|
23
|
+
"Treats the northwind-ci/checkout-lite SHA as unverified and gives the exact git ls-remote command for refs/tags/v3.2.0 and refs/tags/v3.2.0^{}, saying which line must equal 9b8e7a6d5c4b3a291807f6e5d4c3b2a1908f7e6d",
|
|
24
|
+
"Says octo-tools/pypi-publish moving from @v2 to @v3 is a tag-only pin that can be moved after review, recommends pinning it to a commit SHA, and notes the step receives secrets.PYPI_TOKEN",
|
|
25
|
+
"Says the passing checks never ran pypi-publish v3, because release.yml runs only on a v* tag push, and names a way to exercise it before the next real release",
|
|
26
|
+
"Reports that release.yml still passes the deprecated password input (release.yml line 22) and that verify-metadata now defaults to true, so the next release can fail on an invalid long description",
|
|
27
|
+
"Classes the jumps: checkout-lite v3.1.0 to v3.2.0 as minor, pypi-publish v2 to v3 as major",
|
|
28
|
+
"Gives a rollback (revert the PR or restore the old uses: lines) and notes a revert cannot undo a release already published to PyPI with v3",
|
|
29
|
+
"Does not invent action versions, SHAs, inputs or workflow steps that are not in the supplied files"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": 3,
|
|
34
|
+
"prompt": "Renovate PR on our Go rate-limiter service: \"fix(deps): update module github.com/lanternhq/ratelimit to v0.9.0\". CI passed. Quick verdict please.\n\ngo.mod:\n-\tgithub.com/lanternhq/ratelimit v0.8.3\n+\tgithub.com/lanternhq/ratelimit v0.9.0\n+\tgithub.com/lanternhq/clock v1.2.0 // indirect\n\ngo.sum:\n-github.com/lanternhq/ratelimit v0.8.3 h1:AbCd=\n-github.com/lanternhq/ratelimit v0.8.3/go.mod h1:EfGh=\n+github.com/lanternhq/clock v1.2.0 h1:IjKl=\n+github.com/lanternhq/clock v1.2.0/go.mod h1:MnOp=\n+github.com/lanternhq/ratelimit v0.9.0 h1:QrSt=\n+github.com/lanternhq/ratelimit v0.9.0/go.mod h1:UvWx=\n\nRelease notes for v0.9.0:\n- Limiter.Wait(ctx) now returns ErrLimitExceeded immediately when burst is 0, instead of blocking.\n- NewLimiter(rate, burst) is deprecated; use New(Config{Rate: r, Burst: b}).\n- Uses github.com/lanternhq/clock for time, so tests can inject a fake clock.",
|
|
35
|
+
"assertions": [
|
|
36
|
+
"Gives MERGE AFTER CHECKS, not MERGE",
|
|
37
|
+
"States that v0.8.3 to v0.9.0 is a 0.x minor bump, which semver treats as potentially breaking",
|
|
38
|
+
"Names the Wait behaviour change and the NewLimiter deprecation, and gives a concrete search command for Wait( and NewLimiter( since no code was supplied, without claiming there are or are not hits",
|
|
39
|
+
"Points out that only the v0.9.0 notes were supplied, so any releases between v0.8.3 and v0.9.0 are still unread",
|
|
40
|
+
"Flags github.com/lanternhq/clock v1.2.0 as a new indirect module the PR title does not mention",
|
|
41
|
+
"Says the passing CI only covers this if a test exercises the burst-0 Wait path, and lists that as a check rather than assuming it",
|
|
42
|
+
"Gives a rollback command such as go get github.com/lanternhq/ratelimit@v0.8.3 followed by go mod tidy, or reverting the PR",
|
|
43
|
+
"Does not invent file names, call sites, tests or release versions that are not in the prompt"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": 4,
|
|
48
|
+
"held_out": "2026-10-20",
|
|
49
|
+
"prompt": "Renovate opened PR #287 bumping quillstream from 2.4.1 to 3.1.0 and CI is green. The PR body is in PR.md, the diff is pr.diff, and I copied the upstream changelog into upstream/. Repo is checked out at main. Is this safe to merge? I'd like to get it in today.",
|
|
50
|
+
"assertions": [
|
|
51
|
+
"Gives the verdict DO NOT MERGE for #287 (not MERGE, and not MERGE AFTER CHECKS without code changes), and ties it to at least one breaking change that hits code in this repo.",
|
|
52
|
+
"Points out that read_legacy_archive in src/ingest/reader.py imports quillstream.legacy.parse_frame inside the function, and that the 3.0.0 entry in the changelog (a release this PR skips) removes that module. Names quillstream.frames.decode(buf, strict=False) as the replacement and says the `header, payload = parse_frame(...)` unpacking has to change too, because decode returns a Frame object.",
|
|
53
|
+
"Points out that fetch_with_retry in src/ingest/client.py retries only on `if result is None`. Under 3.0.0, Client.fetch raises quillstream.errors.QuillTimeout instead of returning None, so timeouts will escape as exceptions rather than being retried. Suggests catching QuillTimeout, or migrating first with 2.5.0's Client(raise_on_timeout=True).",
|
|
54
|
+
"Flags that the Dockerfile builds FROM python:3.9-slim while 3.0.0 requires Python >=3.10 (and grainwire wheels only cover CPython 3.10–3.13), so the production image build or install will break. Notes that CI and pip-compile both ran on Python 3.11, so a green CI could not catch this.",
|
|
55
|
+
"Lists the requirements.txt changes beyond the title, as shown in pr.diff: new transitive package grainwire 1.0.0, removed compat-six 1.16.2, and typing-shimx bumped 4.5.0 -> 4.9.1. Ties grainwire to the 3.1.0 changelog entry, including the sdist/Rust-toolchain caveat for platforms without wheels.",
|
|
56
|
+
"Explains why the green check is weak evidence: tests/test_reader.py only tests read_stream, with a mocked Client whose fetch returns a payload. Nothing exercises read_legacy_archive (the lazy import means the missing module never fails at import or collection time) or the timeout/None path.",
|
|
57
|
+
"Gives a concrete rollback: revert the PR, or restore quillstream==2.4.1 in requirements.in and re-run `pip-compile --generate-hashes`, then rebuild and redeploy the image. Optionally offers a staged path, e.g. moving to 2.5.0 first to surface the deprecation warnings.",
|
|
58
|
+
"Does not invent versions, APIs or changelog entries that are not in the files (e.g. no made-up 3.0.1 fix, no Python-3.9 compatibility shim). Does not claim to have installed the package, run the tests, or checked the sha256 hashes against PyPI. If it recommends checking the hashes, it says that needs network access and gives the command rather than asserting they match."
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": 5,
|
|
63
|
+
"held_out": "2026-10-20",
|
|
64
|
+
"prompt": "Dependabot opened two PRs this morning and both are green: #412 bumps the bramblewick/setup-toolchain action pin (a teammate pushed an extra commit to it) and #413 bumps release-notary. Descriptions are PR-412.md / PR-413.md, diffs are pr-412.diff / pr-413.diff, upstream release notes are in upstream/. Are the action SHA pins right, and can I merge both before we push the v5.13.0 tag on Friday?",
|
|
65
|
+
"assertions": [
|
|
66
|
+
"Gives a separate verdict for each PR. #413 is DO NOT MERGE. #412 is not a plain MERGE: it is MERGE AFTER CHECKS or DO NOT MERGE until the pins are reconciled.",
|
|
67
|
+
"Catches that pr-412.diff pins setup-toolchain to two different commits that are both labelled `# v3.3.0`: 8141d107d0837efc25f86e096a7eefd58e979515 in ci.yml (from Dependabot) and 7dd0aa52537f8f4f4002b505507186cdaec669c4 in release.yml (from mkowalczyk's hand-made commit). Says at most one of them can be the tag's commit, and that the release.yml one is the suspect because it was edited by hand and is the one that runs with production secrets.",
|
|
68
|
+
"Says plainly that it cannot confirm offline which SHA (if either) the v3.3.0 tag points to. Gives a concrete command, e.g. `git ls-remote https://github.com/bramblewick/setup-toolchain 'refs/tags/v3.3.0*'` (using the peeled `^{}` line if the tag is annotated) or `gh api repos/bramblewick/setup-toolchain/git/ref/tags/v3.3.0`. Never states that either SHA is verified.",
|
|
69
|
+
"For #412, notes that v3.3.0 switches the action to the node24 runtime, which needs self-hosted runners on v2.328.0 or newer. release.yml runs on [self-hosted, linux, release] and PR CI runs only on ubuntu-latest, so the first real test would be Friday's tag push. Also mentions the `cache` default flipping to true, which affects the release job.",
|
|
70
|
+
"For #413, finds that scripts/release.mjs calls createNotary({ legacyMode: true, ... }). 1.9.0 removed legacyMode and now throws TypeError: Unknown option \"legacyMode\", so `npm run release` in release.yml will fail. Also notes that the switch to the v2 manifest layout breaks the downstream ledger-portal parser mentioned in the code comment.",
|
|
71
|
+
"For #413, lists the package-lock changes beyond the title: a new transitive package notary-telemetry 0.2.1 with \"hasInstallScript\": true, resolved from https://npm.notary-cdn.io rather than registry.npmjs.org; ansi-tint 1.0.4 removed; semver-lite 2.1.0 -> 2.3.0; release-notary's engines raised to node >=20. Treats the install script plus the off-registry tarball as a supply-chain concern in its own right.",
|
|
72
|
+
"Explains that the green checks never ran the changed code. ci.yml runs on pull_request with `npm ci --ignore-scripts` and never runs scripts/release.mjs. release.yml runs plain `npm ci`, so notary-telemetry's install script would first execute in the production environment, with RELEASE_SIGNING_KEY and NPM_TOKEN in the job and contents: write / id-token: write permissions. Mentions NOTARY_TELEMETRY=0 and/or keeping 1.8.x as mitigations.",
|
|
73
|
+
"Gives a rollback for each PR: revert #412 to restore the c8aee2ae521bdb1ef1b97761673ebbe92c953b0f (v3.2.0) pins; revert #413, or pin release-notary back to 1.8.2 and regenerate package-lock.json. Does not invent versions, flags or APIs that are not in the files, and does not claim to have run npm install, the workflows, or the release script."
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/.github/workflows/ci.yml
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
- uses: actions/setup-node@v4
|
|
17
|
+
with:
|
|
18
|
+
node-version: 20
|
|
19
|
+
- run: npm ci
|
|
20
|
+
- run: npm test
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
diff --git a/package-lock.json b/package-lock.json
|
|
2
|
+
index b0d3cbb..906d58a 100644
|
|
3
|
+
--- a/package-lock.json
|
|
4
|
+
+++ b/package-lock.json
|
|
5
|
+
@@ -10,7 +10,7 @@
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"express": "^4.19.2",
|
|
8
|
+
"pino": "^9.3.2",
|
|
9
|
+
- "quillmark": "^3.4.1",
|
|
10
|
+
+ "quillmark": "^4.1.0",
|
|
11
|
+
"zod": "^3.23.8"
|
|
12
|
+
},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
@@ -21,28 +21,45 @@
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"node_modules/entity-codec": {
|
|
18
|
+
- "version": "2.1.0",
|
|
19
|
+
- "resolved": "https://registry.npmjs.org/entity-codec/-/entity-codec-2.1.0.tgz",
|
|
20
|
+
- "integrity": "sha512-EXAMPLEentitycodec210AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
|
21
|
+
- "license": "MIT"
|
|
22
|
+
+ "version": "3.0.2",
|
|
23
|
+
+ "resolved": "https://registry.npmjs.org/entity-codec/-/entity-codec-3.0.2.tgz",
|
|
24
|
+
+ "integrity": "sha512-EXAMPLEentitycodec302BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB==",
|
|
25
|
+
+ "license": "MPL-2.0"
|
|
26
|
+
},
|
|
27
|
+
- "node_modules/html-escape-lite": {
|
|
28
|
+
- "version": "1.0.3",
|
|
29
|
+
- "resolved": "https://registry.npmjs.org/html-escape-lite/-/html-escape-lite-1.0.3.tgz",
|
|
30
|
+
- "integrity": "sha512-EXAMPLEhtmlescapelite103AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
|
31
|
+
- "license": "MIT"
|
|
32
|
+
+ "node_modules/prebuild-install": {
|
|
33
|
+
+ "version": "7.1.2",
|
|
34
|
+
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz",
|
|
35
|
+
+ "integrity": "sha512-EXAMPLEprebuildinstall712BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB==",
|
|
36
|
+
+ "license": "MIT",
|
|
37
|
+
+ "optional": true,
|
|
38
|
+
+ "bin": {
|
|
39
|
+
+ "prebuild-install": "bin.js"
|
|
40
|
+
+ }
|
|
41
|
+
+ },
|
|
42
|
+
+ "node_modules/quill-native-highlight": {
|
|
43
|
+
+ "version": "1.0.0",
|
|
44
|
+
+ "resolved": "https://registry.npmjs.org/quill-native-highlight/-/quill-native-highlight-1.0.0.tgz",
|
|
45
|
+
+ "integrity": "sha512-EXAMPLEquillnativehighlight100BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB==",
|
|
46
|
+
+ "hasInstallScript": true,
|
|
47
|
+
+ "license": "MIT",
|
|
48
|
+
+ "optional": true,
|
|
49
|
+
+ "dependencies": {
|
|
50
|
+
+ "prebuild-install": "^7.1.2"
|
|
51
|
+
+ }
|
|
52
|
+
},
|
|
53
|
+
"node_modules/quillmark": {
|
|
54
|
+
- "version": "3.4.1",
|
|
55
|
+
- "resolved": "https://registry.npmjs.org/quillmark/-/quillmark-3.4.1.tgz",
|
|
56
|
+
- "integrity": "sha512-EXAMPLEquillmark341AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
|
57
|
+
+ "version": "4.1.0",
|
|
58
|
+
+ "resolved": "https://registry.npmjs.org/quillmark/-/quillmark-4.1.0.tgz",
|
|
59
|
+
+ "integrity": "sha512-EXAMPLEquillmark410BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB==",
|
|
60
|
+
"license": "MIT",
|
|
61
|
+
"dependencies": {
|
|
62
|
+
- "entity-codec": "^2.1.0",
|
|
63
|
+
- "html-escape-lite": "^1.0.3"
|
|
64
|
+
+ "entity-codec": "^3.0.2"
|
|
65
|
+
},
|
|
66
|
+
"engines": {
|
|
67
|
+
- "node": ">=16"
|
|
68
|
+
+ "node": ">=18"
|
|
69
|
+
+ },
|
|
70
|
+
+ "optionalDependencies": {
|
|
71
|
+
+ "quill-native-highlight": "^1.0.0"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"node_modules/zod": {
|
|
75
|
+
diff --git a/package.json b/package.json
|
|
76
|
+
index afd6691..03f7ec6 100644
|
|
77
|
+
--- a/package.json
|
|
78
|
+
+++ b/package.json
|
|
79
|
+
@@ -13,7 +13,7 @@
|
|
80
|
+
"dependencies": {
|
|
81
|
+
"express": "^4.19.2",
|
|
82
|
+
"pino": "^9.3.2",
|
|
83
|
+
- "quillmark": "^3.4.1",
|
|
84
|
+
+ "quillmark": "^4.1.0",
|
|
85
|
+
"zod": "^3.23.8"
|
|
86
|
+
},
|
|
87
|
+
"devDependencies": {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# quillmark changelog
|
|
2
|
+
|
|
3
|
+
## 4.1.0 (2026-09-02)
|
|
4
|
+
|
|
5
|
+
- Added: optional native syntax highlighter `quill-native-highlight`, installed as an optional dependency. Its install script downloads a prebuilt binary for the current platform and falls back to the JavaScript highlighter when the download fails.
|
|
6
|
+
- Fixed: tables with an empty header cell rendered an extra column.
|
|
7
|
+
|
|
8
|
+
## 4.0.1 (2026-08-11)
|
|
9
|
+
|
|
10
|
+
- Fixed: `render()` threw on input with CRLF line endings.
|
|
11
|
+
|
|
12
|
+
## 4.0.0 (2026-07-28)
|
|
13
|
+
|
|
14
|
+
### Breaking
|
|
15
|
+
|
|
16
|
+
- `renderInline()` is removed. Use `render(src, { inline: true })`.
|
|
17
|
+
- The `sanitize` option now defaults to `false`. Raw HTML in the input is passed through to the output unless `sanitize: true` is set on the call or through `setOptions()`.
|
|
18
|
+
- Node.js 18 is the minimum supported version.
|
|
19
|
+
- The `html-escape-lite` dependency is dropped; escaping now uses `entity-codec` 3.
|
|
20
|
+
|
|
21
|
+
## 3.5.0 (2026-05-19)
|
|
22
|
+
|
|
23
|
+
- Security: a link title containing `"` could close the `title` attribute and inject markup. Fixed in 3.5.0; affects 3.0.0 to 3.4.x.
|
|
24
|
+
- Deprecated: `setOptions()` (global options). Pass options to each `render()` call instead. `setOptions()` will be removed in 5.0.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { renderNoteBody } from "../src/render/note.js";
|
|
3
|
+
|
|
4
|
+
describe("renderNoteBody", () => {
|
|
5
|
+
it("renders bold text", () => {
|
|
6
|
+
expect(renderNoteBody("**ship it**")).toBe("<p><strong>ship it</strong></p>\n");
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it("keeps single line breaks", () => {
|
|
10
|
+
expect(renderNoteBody("a\nb")).toBe("<p>a<br>\nb</p>\n");
|
|
11
|
+
});
|
|
12
|
+
});
|
package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/.github/workflows/ci.yml
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
strategy:
|
|
15
|
+
matrix:
|
|
16
|
+
python: ["3.11", "3.12"]
|
|
17
|
+
steps:
|
|
18
|
+
- uses: northwind-ci/checkout-lite@9b8e7a6d5c4b3a291807f6e5d4c3b2a1908f7e6d # v3.2.0
|
|
19
|
+
- uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: ${{ matrix.python }}
|
|
22
|
+
- run: pip install -e ".[test]"
|
|
23
|
+
- run: pytest -q
|
package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/.github/workflows/release.yml
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ["v*"]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
publish:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
environment: pypi
|
|
14
|
+
steps:
|
|
15
|
+
- uses: northwind-ci/checkout-lite@9b8e7a6d5c4b3a291807f6e5d4c3b2a1908f7e6d # v3.2.0
|
|
16
|
+
- uses: actions/setup-python@v5
|
|
17
|
+
with:
|
|
18
|
+
python-version: "3.12"
|
|
19
|
+
- run: pip install build && python -m build
|
|
20
|
+
- uses: octo-tools/pypi-publish@v3
|
|
21
|
+
with:
|
|
22
|
+
password: ${{ secrets.PYPI_TOKEN }}
|
|
23
|
+
packages-dir: dist/
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
|
|
2
|
+
index 96ae786..e6bc8d0 100644
|
|
3
|
+
--- a/.github/workflows/ci.yml
|
|
4
|
+
+++ b/.github/workflows/ci.yml
|
|
5
|
+
@@ -15,7 +15,7 @@ jobs:
|
|
6
|
+
matrix:
|
|
7
|
+
python: ["3.11", "3.12"]
|
|
8
|
+
steps:
|
|
9
|
+
- - uses: northwind-ci/checkout-lite@3f1c2a9e8b7d6c5f4e3d2c1b0a9f8e7d6c5b4a39 # v3.1.0
|
|
10
|
+
+ - uses: northwind-ci/checkout-lite@9b8e7a6d5c4b3a291807f6e5d4c3b2a1908f7e6d # v3.2.0
|
|
11
|
+
- uses: actions/setup-python@v5
|
|
12
|
+
with:
|
|
13
|
+
python-version: ${{ matrix.python }}
|
|
14
|
+
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
|
|
15
|
+
index e5c6eb0..012a492 100644
|
|
16
|
+
--- a/.github/workflows/release.yml
|
|
17
|
+
+++ b/.github/workflows/release.yml
|
|
18
|
+
@@ -12,12 +12,12 @@ jobs:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
environment: pypi
|
|
21
|
+
steps:
|
|
22
|
+
- - uses: northwind-ci/checkout-lite@3f1c2a9e8b7d6c5f4e3d2c1b0a9f8e7d6c5b4a39 # v3.1.0
|
|
23
|
+
+ - uses: northwind-ci/checkout-lite@9b8e7a6d5c4b3a291807f6e5d4c3b2a1908f7e6d # v3.2.0
|
|
24
|
+
- uses: actions/setup-python@v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.12"
|
|
27
|
+
- run: pip install build && python -m build
|
|
28
|
+
- - uses: octo-tools/pypi-publish@v2
|
|
29
|
+
+ - uses: octo-tools/pypi-publish@v3
|
|
30
|
+
with:
|
|
31
|
+
password: ${{ secrets.PYPI_TOKEN }}
|
|
32
|
+
packages-dir: dist/
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Release notes copied from the two action repositories
|
|
2
|
+
|
|
3
|
+
## northwind-ci/checkout-lite
|
|
4
|
+
|
|
5
|
+
### v3.2.0
|
|
6
|
+
|
|
7
|
+
- Added: `sparse-paths` input for partial checkouts.
|
|
8
|
+
- Changed: the action now runs on the Node 24 runtime. Self-hosted runners need runner version 2.330.0 or later.
|
|
9
|
+
|
|
10
|
+
### v3.1.1
|
|
11
|
+
|
|
12
|
+
- Fixed: `fetch-depth: 0` timed out on repositories with more than 50,000 tags.
|
|
13
|
+
|
|
14
|
+
## octo-tools/pypi-publish
|
|
15
|
+
|
|
16
|
+
### v3.0.0
|
|
17
|
+
|
|
18
|
+
- Breaking: trusted publishing (OIDC) is now the default. A job that does not pass `password` needs `permissions: id-token: write`.
|
|
19
|
+
- Deprecated: the `password` input. It still works in v3 and is removed in v4.
|
|
20
|
+
- Changed: `verify-metadata` now defaults to `true`; an upload with an invalid long description fails instead of warning.
|
package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/.github/workflows/ci.yml
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
test:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@9951bcc823800e62153b06d6e56d8ed6c5c10e7a # v4.1.1
|
|
13
|
+
- uses: actions/setup-python@a0a57c5ce737a953c85cefc45772185c9fafddbc # v5.0.0
|
|
14
|
+
with:
|
|
15
|
+
python-version: "3.11"
|
|
16
|
+
- run: pip install --require-hashes -r requirements.txt
|
|
17
|
+
- run: pip install pytest==8.2.0
|
|
18
|
+
- run: pytest tests/
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# PR #287: Update dependency quillstream to v3 (major)
|
|
2
|
+
|
|
3
|
+
**Author:** renovate[bot]
|
|
4
|
+
**Base:** main **Head:** renovate/quillstream-3.x
|
|
5
|
+
**Checks:** ✅ ci / test (pull_request) — passed in 2m 14s
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
This PR contains the following updates:
|
|
10
|
+
|
|
11
|
+
| Package | Change | Age | Adoption | Passing | Confidence |
|
|
12
|
+
|---|---|---|---|---|---|
|
|
13
|
+
| quillstream | `==2.4.1` -> `==3.1.0` | 9 days | 41% | 96% | low |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
### Release Notes
|
|
18
|
+
|
|
19
|
+
<details>
|
|
20
|
+
<summary>quillstream/quillstream (quillstream)</summary>
|
|
21
|
+
|
|
22
|
+
See `upstream/quillstream-CHANGELOG.md` (copied from the project's CHANGELOG at tag v3.1.0).
|
|
23
|
+
|
|
24
|
+
</details>
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
### Configuration
|
|
29
|
+
|
|
30
|
+
📅 **Schedule**: Branch creation - At any time. Automerge - Disabled by config.
|
|
31
|
+
|
|
32
|
+
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
This PR was generated by Renovate Bot. `pip-compile --generate-hashes` was run on ubuntu-latest with Python 3.11 to refresh `requirements.txt`.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
diff --git a/requirements.in b/requirements.in
|
|
2
|
+
index 4b1c2e0..9a7d3f1 100644
|
|
3
|
+
--- a/requirements.in
|
|
4
|
+
+++ b/requirements.in
|
|
5
|
+
@@ -1,4 +1,4 @@
|
|
6
|
+
httpcore-lite==1.3.0
|
|
7
|
+
-quillstream==2.4.1
|
|
8
|
+
+quillstream==3.1.0
|
|
9
|
+
pydantic-mini==0.9.2
|
|
10
|
+
structlog-tiny==4.0.1
|
|
11
|
+
diff --git a/requirements.txt b/requirements.txt
|
|
12
|
+
index 77e0a1d..c2f9b48 100644
|
|
13
|
+
--- a/requirements.txt
|
|
14
|
+
+++ b/requirements.txt
|
|
15
|
+
@@ -4,10 +4,10 @@
|
|
16
|
+
#
|
|
17
|
+
# pip-compile --generate-hashes requirements.in
|
|
18
|
+
#
|
|
19
|
+
-compat-six==1.16.2 \
|
|
20
|
+
- --hash=sha256:5926410f0515cd47563d23317bb234f19b519e17a61f630b3a7a3be2fbd023f3
|
|
21
|
+
- # via quillstream
|
|
22
|
+
+grainwire==1.0.0 \
|
|
23
|
+
+ --hash=sha256:ac5a05fbf6a38d80bb205b0640bfe3c886336e7fa936be0c57d323fe24f258ba
|
|
24
|
+
+ # via quillstream
|
|
25
|
+
httpcore-lite==1.3.0 \
|
|
26
|
+
--hash=sha256:993ac8ea6cc9be8463df390c480a245a090a3bba42ed538f9c8742d09ad7222a
|
|
27
|
+
# via
|
|
28
|
+
# -r requirements.in
|
|
29
|
+
# quillstream
|
|
30
|
+
@@ -16,15 +16,15 @@ pydantic-mini==0.9.2 \
|
|
31
|
+
--hash=sha256:5411291f6c6c8ca714342bb4a421861331b89026a8318fa95c72043a8b6cfee7
|
|
32
|
+
# via -r requirements.in
|
|
33
|
+
-quillstream==2.4.1 \
|
|
34
|
+
- --hash=sha256:7eb6637605fcb69f63cecd3000870f473af8aaaf41e5347ee3e80708a07561ca
|
|
35
|
+
+quillstream==3.1.0 \
|
|
36
|
+
+ --hash=sha256:e56b4c0d40fd62f44e33a53cc83ab388ac8edb6275eaac283afb2744bcd27c6d
|
|
37
|
+
# via -r requirements.in
|
|
38
|
+
structlog-tiny==4.0.1 \
|
|
39
|
+
--hash=sha256:1058a4589566f633cf2e795c7e5cfacdeb635d0b35e927619b4a437a1f6bdc01
|
|
40
|
+
# via -r requirements.in
|
|
41
|
+
-typing-shimx==4.5.0 \
|
|
42
|
+
- --hash=sha256:0c8ab72efe0bd56117af955bfa741a49741395e2dfcd4ba688c941bda1cb963a
|
|
43
|
+
+typing-shimx==4.9.1 \
|
|
44
|
+
+ --hash=sha256:2e0970bbb5cd4ca819222abb76df78762fb1a7a0b3a98ee8fc38c3271cb7f450
|
|
45
|
+
# via
|
|
46
|
+
# pydantic-mini
|
|
47
|
+
# quillstream
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import time
|
|
4
|
+
|
|
5
|
+
import structlog_tiny
|
|
6
|
+
|
|
7
|
+
log = structlog_tiny.get_logger(__name__)
|
|
8
|
+
|
|
9
|
+
MAX_ATTEMPTS = 3
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def fetch_with_retry(client, url: str):
|
|
13
|
+
"""Fetch ``url``, retrying on timeout.
|
|
14
|
+
|
|
15
|
+
quillstream's ``Client.fetch`` returns ``None`` when the request times out.
|
|
16
|
+
"""
|
|
17
|
+
for attempt in range(1, MAX_ATTEMPTS + 1):
|
|
18
|
+
result = client.fetch(url)
|
|
19
|
+
if result is None:
|
|
20
|
+
log.warning("quillstream fetch timed out", url=url, attempt=attempt)
|
|
21
|
+
time.sleep(2 ** attempt)
|
|
22
|
+
continue
|
|
23
|
+
return result
|
|
24
|
+
raise RuntimeError(f"gave up fetching {url} after {MAX_ATTEMPTS} attempts")
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""Readers for the ingest pipeline.
|
|
2
|
+
|
|
3
|
+
Current-format files go through ``read_stream``. Archived ``.qsf1`` files
|
|
4
|
+
written before the 2024 migration are still replayed by the monthly backfill
|
|
5
|
+
job through ``read_legacy_archive``.
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from typing import Iterator
|
|
11
|
+
|
|
12
|
+
import quillstream
|
|
13
|
+
|
|
14
|
+
from .client import fetch_with_retry
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def read_stream(url: str) -> Iterator[bytes]:
|
|
18
|
+
client = quillstream.Client(timeout=10)
|
|
19
|
+
payload = fetch_with_retry(client, url)
|
|
20
|
+
yield from payload.chunks()
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def read_legacy_archive(path: Path) -> Iterator[bytes]:
|
|
24
|
+
# Imported lazily: only the backfill job needs the old frame format.
|
|
25
|
+
from quillstream.legacy import parse_frame
|
|
26
|
+
|
|
27
|
+
data = path.read_bytes()
|
|
28
|
+
offset = 0
|
|
29
|
+
while offset < len(data):
|
|
30
|
+
header, payload = parse_frame(data[offset:])
|
|
31
|
+
yield payload
|
|
32
|
+
offset += header.length
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from unittest import mock
|
|
2
|
+
|
|
3
|
+
from src.ingest import reader
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class FakePayload:
|
|
7
|
+
def chunks(self):
|
|
8
|
+
return [b"a", b"b"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def test_read_stream_yields_chunks():
|
|
12
|
+
fake_client = mock.Mock()
|
|
13
|
+
fake_client.fetch.return_value = FakePayload()
|
|
14
|
+
with mock.patch("quillstream.Client", return_value=fake_client):
|
|
15
|
+
assert list(reader.read_stream("qs://example/feed")) == [b"a", b"b"]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to quillstream are documented here. This project follows Semantic Versioning.
|
|
4
|
+
|
|
5
|
+
## 3.1.0 — 2026-10-11
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Frame decoding is now delegated to the new `grainwire` package (`grainwire>=1.0,<2`), which is a required dependency. `grainwire` ships compiled wheels for CPython 3.10–3.13 on manylinux and macOS; other platforms build from sdist and need a Rust toolchain.
|
|
9
|
+
- `Client(..., compression="auto")` negotiates zstd when the server supports it.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- `Client.close()` no longer leaks a socket when called twice.
|
|
13
|
+
|
|
14
|
+
## 3.0.0 — 2026-08-29
|
|
15
|
+
|
|
16
|
+
### Breaking
|
|
17
|
+
- **Python 3.10 or newer is required.** Support for Python 3.8 and 3.9 has been dropped (`python_requires=">=3.10"`).
|
|
18
|
+
- **Removed the `quillstream.legacy` module**, deprecated since 2.2. `quillstream.legacy.parse_frame(buf)` is gone; use `quillstream.frames.decode(buf, strict=False)` instead. Note that `decode` returns a `Frame` object rather than a `(header, payload)` tuple; use `frame.header` and `frame.payload`.
|
|
19
|
+
- `Client.fetch()` now raises `quillstream.errors.QuillTimeout` when the request times out. Previously it returned `None`.
|
|
20
|
+
- Dropped the dependency on `compat-six`.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- Minimum `typing-shimx` is now 4.8.
|
|
24
|
+
|
|
25
|
+
## 2.5.0 — 2026-06-02
|
|
26
|
+
|
|
27
|
+
### Deprecated
|
|
28
|
+
- Importing `quillstream.legacy` now emits a `DeprecationWarning` with the removal version (3.0).
|
|
29
|
+
- `Client.fetch()` returning `None` on timeout is deprecated; opt in to the 3.0 behaviour with `Client(raise_on_timeout=True)`.
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
- `quillstream.frames.decode()`.
|
|
33
|
+
|
|
34
|
+
## 2.4.1 — 2026-03-17
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
- Off-by-one in chunked frame reassembly for payloads larger than 64 KiB.
|
package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.github/workflows/ci.yml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@9ce6fd9fa4b164bf8911b62115bf9104ba1a2803 # v4.2.0
|
|
16
|
+
- uses: bramblewick/setup-toolchain@c8aee2ae521bdb1ef1b97761673ebbe92c953b0f # v3.2.0
|
|
17
|
+
with:
|
|
18
|
+
node-version-file: .nvmrc
|
|
19
|
+
- run: npm ci --ignore-scripts
|
|
20
|
+
- run: npm run lint
|
|
21
|
+
- run: npm test
|
|
22
|
+
- run: npm run build
|
package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.github/workflows/release.yml
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ["v*"]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: write
|
|
9
|
+
id-token: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
publish:
|
|
13
|
+
runs-on: [self-hosted, linux, release]
|
|
14
|
+
environment: production
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@9ce6fd9fa4b164bf8911b62115bf9104ba1a2803 # v4.2.0
|
|
17
|
+
- uses: bramblewick/setup-toolchain@c8aee2ae521bdb1ef1b97761673ebbe92c953b0f # v3.2.0
|
|
18
|
+
with:
|
|
19
|
+
node-version-file: .nvmrc
|
|
20
|
+
- run: npm ci
|
|
21
|
+
- run: npm run build
|
|
22
|
+
- run: npm run release
|
|
23
|
+
env:
|
|
24
|
+
RELEASE_SIGNING_KEY: ${{ secrets.RELEASE_SIGNING_KEY }}
|
|
25
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
22.11.0
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# PR #412: Bump bramblewick/setup-toolchain from 3.2.0 to 3.3.0
|
|
2
|
+
|
|
3
|
+
**Author:** dependabot[bot]
|
|
4
|
+
**Base:** main **Head:** dependabot/github_actions/bramblewick/setup-toolchain-3.3.0
|
|
5
|
+
**Checks:** ✅ ci / test (pull_request) — passed
|
|
6
|
+
|
|
7
|
+
Bumps [bramblewick/setup-toolchain](https://github.com/bramblewick/setup-toolchain) from 3.2.0 to 3.3.0.
|
|
8
|
+
|
|
9
|
+
Release notes: see `upstream/setup-toolchain-RELEASES.md`.
|
|
10
|
+
|
|
11
|
+
**Commits on this branch**
|
|
12
|
+
1. `dependabot[bot]` — Bump bramblewick/setup-toolchain from 3.2.0 to 3.3.0
|
|
13
|
+
2. `mkowalczyk` — "dependabot only touched ci.yml, bumped release.yml too so they match"
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself.
|