@skastr0/pulsar-core 0.1.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/dist/backpressure.d.ts +31 -0
- package/dist/backpressure.d.ts.map +1 -0
- package/dist/backpressure.js +206 -0
- package/dist/backpressure.js.map +1 -0
- package/dist/baseline.d.ts +91 -0
- package/dist/baseline.d.ts.map +1 -0
- package/dist/baseline.js +139 -0
- package/dist/baseline.js.map +1 -0
- package/dist/bypass.d.ts +14 -0
- package/dist/bypass.d.ts.map +1 -0
- package/dist/bypass.js +47 -0
- package/dist/bypass.js.map +1 -0
- package/dist/cache-disk.d.ts +4 -0
- package/dist/cache-disk.d.ts.map +1 -0
- package/dist/cache-disk.js +212 -0
- package/dist/cache-disk.js.map +1 -0
- package/dist/cache.d.ts +62 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +87 -0
- package/dist/cache.js.map +1 -0
- package/dist/calibration-context.d.ts +7 -0
- package/dist/calibration-context.d.ts.map +1 -0
- package/dist/calibration-context.js +40 -0
- package/dist/calibration-context.js.map +1 -0
- package/dist/calibration-fingerprint.d.ts +28 -0
- package/dist/calibration-fingerprint.d.ts.map +1 -0
- package/dist/calibration-fingerprint.js +67 -0
- package/dist/calibration-fingerprint.js.map +1 -0
- package/dist/calibration-model.d.ts +103 -0
- package/dist/calibration-model.d.ts.map +1 -0
- package/dist/calibration-model.js +44 -0
- package/dist/calibration-model.js.map +1 -0
- package/dist/calibration-slot-values.d.ts +232 -0
- package/dist/calibration-slot-values.d.ts.map +1 -0
- package/dist/calibration-slot-values.js +2 -0
- package/dist/calibration-slot-values.js.map +1 -0
- package/dist/calibration.d.ts +4 -0
- package/dist/calibration.d.ts.map +1 -0
- package/dist/calibration.js +4 -0
- package/dist/calibration.js.map +1 -0
- package/dist/category.d.ts +6 -0
- package/dist/category.d.ts.map +1 -0
- package/dist/category.js +12 -0
- package/dist/category.js.map +1 -0
- package/dist/concurrency.d.ts +2 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +15 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/context.d.ts +40 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +28 -0
- package/dist/context.js.map +1 -0
- package/dist/conventions.d.ts +110 -0
- package/dist/conventions.d.ts.map +1 -0
- package/dist/conventions.js +40 -0
- package/dist/conventions.js.map +1 -0
- package/dist/dedupe-by-key.d.ts +2 -0
- package/dist/dedupe-by-key.d.ts.map +1 -0
- package/dist/dedupe-by-key.js +13 -0
- package/dist/dedupe-by-key.js.map +1 -0
- package/dist/diagnostic.d.ts +26 -0
- package/dist/diagnostic.d.ts.map +1 -0
- package/dist/diagnostic.js +34 -0
- package/dist/diagnostic.js.map +1 -0
- package/dist/distribution.d.ts +18 -0
- package/dist/distribution.d.ts.map +1 -0
- package/dist/distribution.js +44 -0
- package/dist/distribution.js.map +1 -0
- package/dist/edit-distance.d.ts +2 -0
- package/dist/edit-distance.d.ts.map +1 -0
- package/dist/edit-distance.js +21 -0
- package/dist/edit-distance.js.map +1 -0
- package/dist/elicitation/proposal-ai-assisted-mode.d.ts +9 -0
- package/dist/elicitation/proposal-ai-assisted-mode.d.ts.map +1 -0
- package/dist/elicitation/proposal-ai-assisted-mode.js +37 -0
- package/dist/elicitation/proposal-ai-assisted-mode.js.map +1 -0
- package/dist/elicitation/proposal-passive.d.ts +12 -0
- package/dist/elicitation/proposal-passive.d.ts.map +1 -0
- package/dist/elicitation/proposal-passive.js +62 -0
- package/dist/elicitation/proposal-passive.js.map +1 -0
- package/dist/elicitation/proposal-resolution.d.ts +11 -0
- package/dist/elicitation/proposal-resolution.d.ts.map +1 -0
- package/dist/elicitation/proposal-resolution.js +43 -0
- package/dist/elicitation/proposal-resolution.js.map +1 -0
- package/dist/elicitation/proposal-revealed-preference.d.ts +21 -0
- package/dist/elicitation/proposal-revealed-preference.d.ts.map +1 -0
- package/dist/elicitation/proposal-revealed-preference.js +72 -0
- package/dist/elicitation/proposal-revealed-preference.js.map +1 -0
- package/dist/elicitation/proposal-schema.d.ts +62 -0
- package/dist/elicitation/proposal-schema.d.ts.map +1 -0
- package/dist/elicitation/proposal-schema.js +39 -0
- package/dist/elicitation/proposal-schema.js.map +1 -0
- package/dist/elicitation/proposal-utils.d.ts +6 -0
- package/dist/elicitation/proposal-utils.d.ts.map +1 -0
- package/dist/elicitation/proposal-utils.js +7 -0
- package/dist/elicitation/proposal-utils.js.map +1 -0
- package/dist/elicitation/proposals.d.ts +6 -0
- package/dist/elicitation/proposals.d.ts.map +1 -0
- package/dist/elicitation/proposals.js +6 -0
- package/dist/elicitation/proposals.js.map +1 -0
- package/dist/elicitation/quiz.d.ts +72 -0
- package/dist/elicitation/quiz.d.ts.map +1 -0
- package/dist/elicitation/quiz.js +189 -0
- package/dist/elicitation/quiz.js.map +1 -0
- package/dist/elicitation/revealed-preference.d.ts +24 -0
- package/dist/elicitation/revealed-preference.d.ts.map +1 -0
- package/dist/elicitation/revealed-preference.js +101 -0
- package/dist/elicitation/revealed-preference.js.map +1 -0
- package/dist/elicitation.d.ts +5 -0
- package/dist/elicitation.d.ts.map +1 -0
- package/dist/elicitation.js +5 -0
- package/dist/elicitation.js.map +1 -0
- package/dist/enforcement.d.ts +13 -0
- package/dist/enforcement.d.ts.map +1 -0
- package/dist/enforcement.js +31 -0
- package/dist/enforcement.js.map +1 -0
- package/dist/errors.d.ts +132 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +76 -0
- package/dist/errors.js.map +1 -0
- package/dist/factor-ledger.d.ts +38 -0
- package/dist/factor-ledger.d.ts.map +1 -0
- package/dist/factor-ledger.js +184 -0
- package/dist/factor-ledger.js.map +1 -0
- package/dist/factor-policy-ledger.d.ts +12 -0
- package/dist/factor-policy-ledger.d.ts.map +1 -0
- package/dist/factor-policy-ledger.js +48 -0
- package/dist/factor-policy-ledger.js.map +1 -0
- package/dist/factors.d.ts +4 -0
- package/dist/factors.d.ts.map +1 -0
- package/dist/factors.js +3 -0
- package/dist/factors.js.map +1 -0
- package/dist/file-taxonomy.d.ts +10 -0
- package/dist/file-taxonomy.d.ts.map +1 -0
- package/dist/file-taxonomy.js +171 -0
- package/dist/file-taxonomy.js.map +1 -0
- package/dist/globs.d.ts +3 -0
- package/dist/globs.d.ts.map +1 -0
- package/dist/globs.js +24 -0
- package/dist/globs.js.map +1 -0
- package/dist/glossary.d.ts +137 -0
- package/dist/glossary.d.ts.map +1 -0
- package/dist/glossary.js +51 -0
- package/dist/glossary.js.map +1 -0
- package/dist/goodhart.d.ts +31 -0
- package/dist/goodhart.d.ts.map +1 -0
- package/dist/goodhart.js +176 -0
- package/dist/goodhart.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/input-outputs.d.ts +3 -0
- package/dist/input-outputs.d.ts.map +1 -0
- package/dist/input-outputs.js +10 -0
- package/dist/input-outputs.js.map +1 -0
- package/dist/observer-categories.d.ts +7 -0
- package/dist/observer-categories.d.ts.map +1 -0
- package/dist/observer-categories.js +158 -0
- package/dist/observer-categories.js.map +1 -0
- package/dist/observer-execution.d.ts +23 -0
- package/dist/observer-execution.d.ts.map +1 -0
- package/dist/observer-execution.js +130 -0
- package/dist/observer-execution.js.map +1 -0
- package/dist/observer-json.d.ts +319 -0
- package/dist/observer-json.d.ts.map +1 -0
- package/dist/observer-json.js +153 -0
- package/dist/observer-json.js.map +1 -0
- package/dist/observer-local-pressure.d.ts +5 -0
- package/dist/observer-local-pressure.d.ts.map +1 -0
- package/dist/observer-local-pressure.js +9 -0
- package/dist/observer-local-pressure.js.map +1 -0
- package/dist/observer-minimum.d.ts +26 -0
- package/dist/observer-minimum.d.ts.map +1 -0
- package/dist/observer-minimum.js +94 -0
- package/dist/observer-minimum.js.map +1 -0
- package/dist/observer-model.d.ts +129 -0
- package/dist/observer-model.d.ts.map +1 -0
- package/dist/observer-model.js +2 -0
- package/dist/observer-model.js.map +1 -0
- package/dist/observer-readiness.d.ts +6 -0
- package/dist/observer-readiness.d.ts.map +1 -0
- package/dist/observer-readiness.js +131 -0
- package/dist/observer-readiness.js.map +1 -0
- package/dist/observer-score-utils.d.ts +8 -0
- package/dist/observer-score-utils.d.ts.map +1 -0
- package/dist/observer-score-utils.js +17 -0
- package/dist/observer-score-utils.js.map +1 -0
- package/dist/observer-serializer.d.ts +3 -0
- package/dist/observer-serializer.d.ts.map +1 -0
- package/dist/observer-serializer.js +66 -0
- package/dist/observer-serializer.js.map +1 -0
- package/dist/observer-time.d.ts +3 -0
- package/dist/observer-time.d.ts.map +1 -0
- package/dist/observer-time.js +7 -0
- package/dist/observer-time.js.map +1 -0
- package/dist/observer-weighted-mean.d.ts +4 -0
- package/dist/observer-weighted-mean.d.ts.map +1 -0
- package/dist/observer-weighted-mean.js +17 -0
- package/dist/observer-weighted-mean.js.map +1 -0
- package/dist/observer.d.ts +26 -0
- package/dist/observer.d.ts.map +1 -0
- package/dist/observer.js +63 -0
- package/dist/observer.js.map +1 -0
- package/dist/presets.d.ts +11 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +52 -0
- package/dist/presets.js.map +1 -0
- package/dist/reference-data-loader.d.ts +6 -0
- package/dist/reference-data-loader.d.ts.map +1 -0
- package/dist/reference-data-loader.js +53 -0
- package/dist/reference-data-loader.js.map +1 -0
- package/dist/reference-data.d.ts +6 -0
- package/dist/reference-data.d.ts.map +1 -0
- package/dist/reference-data.js +6 -0
- package/dist/reference-data.js.map +1 -0
- package/dist/registry.d.ts +16 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +174 -0
- package/dist/registry.js.map +1 -0
- package/dist/review-plan.d.ts +30 -0
- package/dist/review-plan.d.ts.map +1 -0
- package/dist/review-plan.js +235 -0
- package/dist/review-plan.js.map +1 -0
- package/dist/routing-context-payload.d.ts +20 -0
- package/dist/routing-context-payload.d.ts.map +1 -0
- package/dist/routing-context-payload.js +58 -0
- package/dist/routing-context-payload.js.map +1 -0
- package/dist/routing-matching.d.ts +10 -0
- package/dist/routing-matching.d.ts.map +1 -0
- package/dist/routing-matching.js +74 -0
- package/dist/routing-matching.js.map +1 -0
- package/dist/routing-pattern-catalog.d.ts +7 -0
- package/dist/routing-pattern-catalog.d.ts.map +1 -0
- package/dist/routing-pattern-catalog.js +120 -0
- package/dist/routing-pattern-catalog.js.map +1 -0
- package/dist/routing-schema.d.ts +162 -0
- package/dist/routing-schema.d.ts.map +1 -0
- package/dist/routing-schema.js +75 -0
- package/dist/routing-schema.js.map +1 -0
- package/dist/routing.d.ts +14 -0
- package/dist/routing.d.ts.map +1 -0
- package/dist/routing.js +35 -0
- package/dist/routing.js.map +1 -0
- package/dist/runner.d.ts +26 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +72 -0
- package/dist/runner.js.map +1 -0
- package/dist/scoring-engine-contract.d.ts +43 -0
- package/dist/scoring-engine-contract.d.ts.map +1 -0
- package/dist/scoring-engine-contract.js +42 -0
- package/dist/scoring-engine-contract.js.map +1 -0
- package/dist/scoring-engine-git-content-hash.d.ts +12 -0
- package/dist/scoring-engine-git-content-hash.d.ts.map +1 -0
- package/dist/scoring-engine-git-content-hash.js +154 -0
- package/dist/scoring-engine-git-content-hash.js.map +1 -0
- package/dist/scoring-engine-git-diff.d.ts +10 -0
- package/dist/scoring-engine-git-diff.d.ts.map +1 -0
- package/dist/scoring-engine-git-diff.js +103 -0
- package/dist/scoring-engine-git-diff.js.map +1 -0
- package/dist/scoring-engine-git-paths.d.ts +2 -0
- package/dist/scoring-engine-git-paths.d.ts.map +1 -0
- package/dist/scoring-engine-git-paths.js +17 -0
- package/dist/scoring-engine-git-paths.js.map +1 -0
- package/dist/scoring-engine-git-range.d.ts +9 -0
- package/dist/scoring-engine-git-range.d.ts.map +1 -0
- package/dist/scoring-engine-git-range.js +19 -0
- package/dist/scoring-engine-git-range.js.map +1 -0
- package/dist/scoring-engine-git-run.d.ts +7 -0
- package/dist/scoring-engine-git-run.d.ts.map +1 -0
- package/dist/scoring-engine-git-run.js +32 -0
- package/dist/scoring-engine-git-run.js.map +1 -0
- package/dist/scoring-engine-git-worktree.d.ts +9 -0
- package/dist/scoring-engine-git-worktree.d.ts.map +1 -0
- package/dist/scoring-engine-git-worktree.js +83 -0
- package/dist/scoring-engine-git-worktree.js.map +1 -0
- package/dist/scoring-engine-git.d.ts +5 -0
- package/dist/scoring-engine-git.d.ts.map +1 -0
- package/dist/scoring-engine-git.js +5 -0
- package/dist/scoring-engine-git.js.map +1 -0
- package/dist/scoring-engine-layer.d.ts +12 -0
- package/dist/scoring-engine-layer.d.ts.map +1 -0
- package/dist/scoring-engine-layer.js +48 -0
- package/dist/scoring-engine-layer.js.map +1 -0
- package/dist/scoring-engine-observe.d.ts +50 -0
- package/dist/scoring-engine-observe.d.ts.map +1 -0
- package/dist/scoring-engine-observe.js +77 -0
- package/dist/scoring-engine-observe.js.map +1 -0
- package/dist/scoring-engine-observer-cache.d.ts +36 -0
- package/dist/scoring-engine-observer-cache.d.ts.map +1 -0
- package/dist/scoring-engine-observer-cache.js +115 -0
- package/dist/scoring-engine-observer-cache.js.map +1 -0
- package/dist/scoring-engine-runtime.d.ts +25 -0
- package/dist/scoring-engine-runtime.d.ts.map +1 -0
- package/dist/scoring-engine-runtime.js +49 -0
- package/dist/scoring-engine-runtime.js.map +1 -0
- package/dist/scoring-engine-score-execution.d.ts +24 -0
- package/dist/scoring-engine-score-execution.d.ts.map +1 -0
- package/dist/scoring-engine-score-execution.js +71 -0
- package/dist/scoring-engine-score-execution.js.map +1 -0
- package/dist/scoring-engine-score.d.ts +13 -0
- package/dist/scoring-engine-score.d.ts.map +1 -0
- package/dist/scoring-engine-score.js +28 -0
- package/dist/scoring-engine-score.js.map +1 -0
- package/dist/scoring-engine.d.ts +5 -0
- package/dist/scoring-engine.d.ts.map +1 -0
- package/dist/scoring-engine.js +5 -0
- package/dist/scoring-engine.js.map +1 -0
- package/dist/scoring.d.ts +9 -0
- package/dist/scoring.d.ts.map +1 -0
- package/dist/scoring.js +9 -0
- package/dist/scoring.js.map +1 -0
- package/dist/shared-02-aggregation.d.ts +31 -0
- package/dist/shared-02-aggregation.d.ts.map +1 -0
- package/dist/shared-02-aggregation.js +63 -0
- package/dist/shared-02-aggregation.js.map +1 -0
- package/dist/shared-02-bus-factor.d.ts +37 -0
- package/dist/shared-02-bus-factor.d.ts.map +1 -0
- package/dist/shared-02-bus-factor.js +195 -0
- package/dist/shared-02-bus-factor.js.map +1 -0
- package/dist/shared-02-history.d.ts +7 -0
- package/dist/shared-02-history.d.ts.map +1 -0
- package/dist/shared-02-history.js +9 -0
- package/dist/shared-02-history.js.map +1 -0
- package/dist/shared-03-churn-rate.d.ts +47 -0
- package/dist/shared-03-churn-rate.d.ts.map +1 -0
- package/dist/shared-03-churn-rate.js +187 -0
- package/dist/shared-03-churn-rate.js.map +1 -0
- package/dist/shared-03-compute.d.ts +4 -0
- package/dist/shared-03-compute.d.ts.map +1 -0
- package/dist/shared-03-compute.js +84 -0
- package/dist/shared-03-compute.js.map +1 -0
- package/dist/shared-03-line-matching.d.ts +2 -0
- package/dist/shared-03-line-matching.d.ts.map +1 -0
- package/dist/shared-03-line-matching.js +119 -0
- package/dist/shared-03-line-matching.js.map +1 -0
- package/dist/shared-churn-01.d.ts +24 -0
- package/dist/shared-churn-01.d.ts.map +1 -0
- package/dist/shared-churn-01.js +107 -0
- package/dist/shared-churn-01.js.map +1 -0
- package/dist/shared-history-authors.d.ts +5 -0
- package/dist/shared-history-authors.d.ts.map +1 -0
- package/dist/shared-history-authors.js +77 -0
- package/dist/shared-history-authors.js.map +1 -0
- package/dist/shared-history-defaults.d.ts +2 -0
- package/dist/shared-history-defaults.d.ts.map +1 -0
- package/dist/shared-history-defaults.js +73 -0
- package/dist/shared-history-defaults.js.map +1 -0
- package/dist/shared-history-files.d.ts +3 -0
- package/dist/shared-history-files.d.ts.map +1 -0
- package/dist/shared-history-files.js +19 -0
- package/dist/shared-history-files.js.map +1 -0
- package/dist/shared-history-filter.d.ts +10 -0
- package/dist/shared-history-filter.d.ts.map +1 -0
- package/dist/shared-history-filter.js +10 -0
- package/dist/shared-history-filter.js.map +1 -0
- package/dist/shared-history-git.d.ts +7 -0
- package/dist/shared-history-git.d.ts.map +1 -0
- package/dist/shared-history-git.js +45 -0
- package/dist/shared-history-git.js.map +1 -0
- package/dist/shared-history-lines.d.ts +4 -0
- package/dist/shared-history-lines.d.ts.map +1 -0
- package/dist/shared-history-lines.js +139 -0
- package/dist/shared-history-lines.js.map +1 -0
- package/dist/shared-history.d.ts +6 -0
- package/dist/shared-history.d.ts.map +1 -0
- package/dist/shared-history.js +6 -0
- package/dist/shared-history.js.map +1 -0
- package/dist/shared-signals.d.ts +4 -0
- package/dist/shared-signals.d.ts.map +1 -0
- package/dist/shared-signals.js +4 -0
- package/dist/shared-signals.js.map +1 -0
- package/dist/signal-api.d.ts +16 -0
- package/dist/signal-api.d.ts.map +1 -0
- package/dist/signal-api.js +13 -0
- package/dist/signal-api.js.map +1 -0
- package/dist/signal-factor-model.d.ts +53 -0
- package/dist/signal-factor-model.d.ts.map +1 -0
- package/dist/signal-factor-model.js +2 -0
- package/dist/signal-factor-model.js.map +1 -0
- package/dist/signal-runtime.d.ts +13 -0
- package/dist/signal-runtime.d.ts.map +1 -0
- package/dist/signal-runtime.js +2 -0
- package/dist/signal-runtime.js.map +1 -0
- package/dist/signal-score-utils.d.ts +2 -0
- package/dist/signal-score-utils.d.ts.map +1 -0
- package/dist/signal-score-utils.js +6 -0
- package/dist/signal-score-utils.js.map +1 -0
- package/dist/signal.d.ts +113 -0
- package/dist/signal.d.ts.map +1 -0
- package/dist/signal.js +2 -0
- package/dist/signal.js.map +1 -0
- package/dist/state-paths.d.ts +7 -0
- package/dist/state-paths.d.ts.map +1 -0
- package/dist/state-paths.js +32 -0
- package/dist/state-paths.js.map +1 -0
- package/dist/tier.d.ts +14 -0
- package/dist/tier.d.ts.map +1 -0
- package/dist/tier.js +12 -0
- package/dist/tier.js.map +1 -0
- package/dist/time-series-compaction-types.d.ts +6 -0
- package/dist/time-series-compaction-types.d.ts.map +1 -0
- package/dist/time-series-compaction-types.js +2 -0
- package/dist/time-series-compaction-types.js.map +1 -0
- package/dist/time-series-compaction.d.ts +3 -0
- package/dist/time-series-compaction.d.ts.map +1 -0
- package/dist/time-series-compaction.js +138 -0
- package/dist/time-series-compaction.js.map +1 -0
- package/dist/time-series-dates.d.ts +8 -0
- package/dist/time-series-dates.d.ts.map +1 -0
- package/dist/time-series-dates.js +43 -0
- package/dist/time-series-dates.js.map +1 -0
- package/dist/time-series-metadata.d.ts +6 -0
- package/dist/time-series-metadata.d.ts.map +1 -0
- package/dist/time-series-metadata.js +72 -0
- package/dist/time-series-metadata.js.map +1 -0
- package/dist/time-series-model.d.ts +419 -0
- package/dist/time-series-model.d.ts.map +1 -0
- package/dist/time-series-model.js +51 -0
- package/dist/time-series-model.js.map +1 -0
- package/dist/time-series-readiness.d.ts +4 -0
- package/dist/time-series-readiness.d.ts.map +1 -0
- package/dist/time-series-readiness.js +82 -0
- package/dist/time-series-readiness.js.map +1 -0
- package/dist/time-series-storage.d.ts +15 -0
- package/dist/time-series-storage.d.ts.map +1 -0
- package/dist/time-series-storage.js +124 -0
- package/dist/time-series-storage.js.map +1 -0
- package/dist/time-series.d.ts +6 -0
- package/dist/time-series.d.ts.map +1 -0
- package/dist/time-series.js +98 -0
- package/dist/time-series.js.map +1 -0
- package/dist/vector-ai-mode.d.ts +10 -0
- package/dist/vector-ai-mode.d.ts.map +1 -0
- package/dist/vector-ai-mode.js +41 -0
- package/dist/vector-ai-mode.js.map +1 -0
- package/dist/vector-backpressure-config.d.ts +3 -0
- package/dist/vector-backpressure-config.d.ts.map +1 -0
- package/dist/vector-backpressure-config.js +18 -0
- package/dist/vector-backpressure-config.js.map +1 -0
- package/dist/vector-observer-config.d.ts +7 -0
- package/dist/vector-observer-config.d.ts.map +1 -0
- package/dist/vector-observer-config.js +24 -0
- package/dist/vector-observer-config.js.map +1 -0
- package/dist/vector-provenance.d.ts +3 -0
- package/dist/vector-provenance.d.ts.map +1 -0
- package/dist/vector-provenance.js +5 -0
- package/dist/vector-provenance.js.map +1 -0
- package/dist/vector-resolution.d.ts +25 -0
- package/dist/vector-resolution.d.ts.map +1 -0
- package/dist/vector-resolution.js +82 -0
- package/dist/vector-resolution.js.map +1 -0
- package/dist/vector-schema.d.ts +435 -0
- package/dist/vector-schema.d.ts.map +1 -0
- package/dist/vector-schema.js +158 -0
- package/dist/vector-schema.js.map +1 -0
- package/dist/vector.d.ts +3 -0
- package/dist/vector.d.ts.map +1 -0
- package/dist/vector.js +3 -0
- package/dist/vector.js.map +1 -0
- package/package.json +106 -0
- package/presets/ai-slop-defense.json +28 -0
- package/presets/domain-purist.json +15 -0
- package/presets/refactor-friendly.json +18 -0
- package/presets/security-paranoid.json +20 -0
- package/presets/strict-type-safety.json +15 -0
- package/presets/velocity-first.json +32 -0
- package/quiz-items/typescript.json +602 -0
- package/routing-patterns/api-surface-change.json +17 -0
- package/routing-patterns/auth-paths-touched.json +16 -0
- package/routing-patterns/crypto-import-added.json +21 -0
- package/routing-patterns/domain-term-drift.json +17 -0
- package/routing-patterns/migration-added.json +13 -0
- package/routing-patterns/unsafe-added.json +17 -0
|
@@ -0,0 +1,602 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "ts-quiz-01",
|
|
4
|
+
"domain": "typescript",
|
|
5
|
+
"prompt": "Which style do you prefer?",
|
|
6
|
+
"a_title": "compact mapping",
|
|
7
|
+
"b_title": "explicit annotation coverage",
|
|
8
|
+
"a_code": "function project(items) {\n return items.map((item) => item.value)\n}",
|
|
9
|
+
"b_code": "function project(items: ReadonlyArray<Item>): ReadonlyArray<ItemValue> {\n return items.map((item): ItemValue => item.value)\n}",
|
|
10
|
+
"a_signals": { "TS-LD-06": 0.45, "TS-LD-03": 1.1 },
|
|
11
|
+
"b_signals": { "TS-LD-06": 1.45, "TS-LD-03": 0.95 },
|
|
12
|
+
"tags": ["legibility", "annotations"]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "ts-quiz-02",
|
|
16
|
+
"domain": "typescript",
|
|
17
|
+
"prompt": "Which style do you prefer?",
|
|
18
|
+
"a_title": "inline boolean chain",
|
|
19
|
+
"b_title": "named branches",
|
|
20
|
+
"a_code": "function canShip(user) {\n return user.active && user.role === 'admin' && !user.locked\n}",
|
|
21
|
+
"b_code": "function canShip(user: User): boolean {\n const active = user.active\n const admin = user.role === 'admin'\n const unlocked = !user.locked\n return active && admin && unlocked\n}",
|
|
22
|
+
"a_signals": { "TS-LD-01": 0.9, "TS-LD-03": 0.7 },
|
|
23
|
+
"b_signals": { "TS-LD-01": 1.2, "TS-LD-03": 1.15 },
|
|
24
|
+
"tags": ["legibility", "complexity"]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "ts-quiz-03",
|
|
28
|
+
"domain": "typescript",
|
|
29
|
+
"prompt": "Which style do you prefer?",
|
|
30
|
+
"a_title": "short local helper",
|
|
31
|
+
"b_title": "domain-named helper",
|
|
32
|
+
"a_code": "function run(items: Order[]) {\n return items.filter((x) => x.status === 'paid')\n}",
|
|
33
|
+
"b_code": "function collectPaidOrders(orders: ReadonlyArray<Order>): ReadonlyArray<Order> {\n return orders.filter((order) => order.status === 'paid')\n}",
|
|
34
|
+
"a_signals": { "TS-LD-05": 0.55, "TS-LD-04": 0.8 },
|
|
35
|
+
"b_signals": { "TS-LD-05": 1.35, "TS-LD-04": 1.1 },
|
|
36
|
+
"tags": ["domain-language", "legibility"]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "ts-quiz-04",
|
|
40
|
+
"domain": "typescript",
|
|
41
|
+
"prompt": "Which style do you prefer?",
|
|
42
|
+
"a_title": "single wide object literal",
|
|
43
|
+
"b_title": "staged construction",
|
|
44
|
+
"a_code": "function buildUser(input: Input) {\n return { id: input.id, name: input.name, email: input.email, role: input.role }\n}",
|
|
45
|
+
"b_code": "function buildUser(input: Input): User {\n const identity = { id: input.id, name: input.name }\n const access = { email: input.email, role: input.role }\n return { ...identity, ...access }\n}",
|
|
46
|
+
"a_signals": { "TS-LD-02": 0.95, "TS-LD-03": 0.85 },
|
|
47
|
+
"b_signals": { "TS-LD-02": 1.05, "TS-LD-03": 1.15 },
|
|
48
|
+
"tags": ["legibility", "size-distribution"]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "ts-quiz-05",
|
|
52
|
+
"domain": "typescript",
|
|
53
|
+
"prompt": "Which style do you prefer?",
|
|
54
|
+
"a_title": "concise early return",
|
|
55
|
+
"b_title": "named decision points",
|
|
56
|
+
"a_code": "function status(order: Order) {\n if (!order.paid) return 'pending'\n if (order.refunded) return 'refunded'\n return 'settled'\n}",
|
|
57
|
+
"b_code": "function status(order: Order): 'pending' | 'refunded' | 'settled' {\n const unpaid = !order.paid\n if (unpaid) return 'pending'\n const refunded = order.refunded\n if (refunded) return 'refunded'\n return 'settled'\n}",
|
|
58
|
+
"a_signals": { "TS-LD-06": 0.7, "TS-LD-03": 0.95 },
|
|
59
|
+
"b_signals": { "TS-LD-06": 1.1, "TS-LD-03": 1.2 },
|
|
60
|
+
"tags": ["legibility", "branching"]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "ts-quiz-06",
|
|
64
|
+
"domain": "typescript",
|
|
65
|
+
"prompt": "Which style do you prefer?",
|
|
66
|
+
"a_title": "cross-module convenience import",
|
|
67
|
+
"b_title": "port boundary",
|
|
68
|
+
"a_code": "import { db } from '../infra/db'\n\nexport function createInvoice(input: InvoiceInput) {\n return db.invoice.create({ data: input })\n}",
|
|
69
|
+
"b_code": "export interface InvoiceStore {\n create(input: InvoiceInput): Promise<Invoice>\n}\n\nexport function createInvoice(store: InvoiceStore, input: InvoiceInput) {\n return store.create(input)\n}",
|
|
70
|
+
"a_signals": { "TS-AD-01": 0.35, "TS-AB-01": 0.95 },
|
|
71
|
+
"b_signals": { "TS-AD-01": 1.5, "TS-AB-01": 0.8 },
|
|
72
|
+
"tags": ["architecture", "boundaries"]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "ts-quiz-07",
|
|
76
|
+
"domain": "typescript",
|
|
77
|
+
"prompt": "Which style do you prefer?",
|
|
78
|
+
"a_title": "deep barrel export chain",
|
|
79
|
+
"b_title": "direct import path",
|
|
80
|
+
"a_code": "import { PaymentService } from '../../payments'\n\nexport const load = () => new PaymentService()",
|
|
81
|
+
"b_code": "import { PaymentService } from '../../payments/services/payment-service'\n\nexport const load = (): PaymentService => new PaymentService()",
|
|
82
|
+
"a_signals": { "TS-AD-03": 0.4, "TS-LD-06": 0.8 },
|
|
83
|
+
"b_signals": { "TS-AD-03": 1.35, "TS-LD-06": 1.0 },
|
|
84
|
+
"tags": ["architecture", "reexports"]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "ts-quiz-08",
|
|
88
|
+
"domain": "typescript",
|
|
89
|
+
"prompt": "Which style do you prefer?",
|
|
90
|
+
"a_title": "single package for everything",
|
|
91
|
+
"b_title": "explicit dependency seams",
|
|
92
|
+
"a_code": "export function charge(order: Order) {\n return stripe.pay(order.total)\n}",
|
|
93
|
+
"b_code": "export interface BillingGateway {\n pay(total: number): Promise<void>\n}\n\nexport function charge(gateway: BillingGateway, order: Order) {\n return gateway.pay(order.total)\n}",
|
|
94
|
+
"a_signals": { "TS-DE-03": 0.55, "TS-AD-01": 0.45 },
|
|
95
|
+
"b_signals": { "TS-DE-03": 1.25, "TS-AD-01": 1.4 },
|
|
96
|
+
"tags": ["architecture", "propagation-cost"]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "ts-quiz-09",
|
|
100
|
+
"domain": "typescript",
|
|
101
|
+
"prompt": "Which style do you prefer?",
|
|
102
|
+
"a_title": "bidirectional module references",
|
|
103
|
+
"b_title": "event handoff",
|
|
104
|
+
"a_code": "// orders.ts\nimport { syncLedger } from './ledger'\nexport const placeOrder = () => syncLedger()\n\n// ledger.ts\nimport { placeOrder } from './orders'\nexport const syncLedger = () => placeOrder()",
|
|
105
|
+
"b_code": "// orders.ts\nexport const placeOrder = (publish: (event: string) => void) => publish('order.placed')\n\n// ledger.ts\nexport const onOrderPlaced = () => 'synced'",
|
|
106
|
+
"a_signals": { "TS-AD-02": 0.2, "TS-RP-01": 0.7 },
|
|
107
|
+
"b_signals": { "TS-AD-02": 1.5, "TS-RP-01": 1.05 },
|
|
108
|
+
"tags": ["architecture", "cycles"]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "ts-quiz-10",
|
|
112
|
+
"domain": "typescript",
|
|
113
|
+
"prompt": "Which style do you prefer?",
|
|
114
|
+
"a_title": "wide fan-out file",
|
|
115
|
+
"b_title": "narrow orchestration module",
|
|
116
|
+
"a_code": "import { a } from './a'\nimport { b } from './b'\nimport { c } from './c'\nimport { d } from './d'\n\nexport const run = () => [a(), b(), c(), d()]",
|
|
117
|
+
"b_code": "import { services } from './services'\n\nexport const run = (): Result[] => services.map((service) => service.run())",
|
|
118
|
+
"a_signals": { "TS-DE-02": 0.55, "TS-AB-01": 0.75 },
|
|
119
|
+
"b_signals": { "TS-DE-02": 1.2, "TS-AB-01": 1.0 },
|
|
120
|
+
"tags": ["dependency-entropy", "fan-out"]
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "ts-quiz-11",
|
|
124
|
+
"domain": "typescript",
|
|
125
|
+
"prompt": "Which style do you prefer?",
|
|
126
|
+
"a_title": "inline structural type",
|
|
127
|
+
"b_title": "named domain type",
|
|
128
|
+
"a_code": "export function save(input: { id: string; total: number; currency: string }) {\n return input.id\n}",
|
|
129
|
+
"b_code": "export interface InvoiceDraft {\n id: string\n total: number\n currency: string\n}\n\nexport function save(input: InvoiceDraft) {\n return input.id\n}",
|
|
130
|
+
"a_signals": { "TS-AB-03": 0.8, "TS-LD-05": 0.7 },
|
|
131
|
+
"b_signals": { "TS-AB-03": 1.15, "TS-LD-05": 1.2 },
|
|
132
|
+
"tags": ["abstraction", "domain-language"]
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": "ts-quiz-12",
|
|
136
|
+
"domain": "typescript",
|
|
137
|
+
"prompt": "Which style do you prefer?",
|
|
138
|
+
"a_title": "generic helper stack",
|
|
139
|
+
"b_title": "specific function",
|
|
140
|
+
"a_code": "export const mapEntity = <TInput, TOutput>(input: TInput, project: (value: TInput) => TOutput): TOutput => project(input)",
|
|
141
|
+
"b_code": "export const mapInvoice = (invoice: Invoice): InvoiceView => ({ id: invoice.id, total: invoice.total })",
|
|
142
|
+
"a_signals": { "TS-AB-05": 0.35, "TS-AB-03": 0.45 },
|
|
143
|
+
"b_signals": { "TS-AB-05": 1.35, "TS-AB-03": 1.1 },
|
|
144
|
+
"tags": ["abstraction", "generics"]
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "ts-quiz-13",
|
|
148
|
+
"domain": "typescript",
|
|
149
|
+
"prompt": "Which style do you prefer?",
|
|
150
|
+
"a_title": "public export everything",
|
|
151
|
+
"b_title": "narrow public surface",
|
|
152
|
+
"a_code": "export * from './invoice-service'\nexport * from './invoice-types'\nexport * from './invoice-parser'\nexport * from './invoice-cache'",
|
|
153
|
+
"b_code": "export { InvoiceService } from './invoice-service'\nexport type { InvoiceView } from './invoice-types'",
|
|
154
|
+
"a_signals": { "TS-AB-01": 0.35, "TS-AD-03": 0.55 },
|
|
155
|
+
"b_signals": { "TS-AB-01": 1.4, "TS-AD-03": 1.1 },
|
|
156
|
+
"tags": ["abstraction", "surface-area"]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": "ts-quiz-14",
|
|
160
|
+
"domain": "typescript",
|
|
161
|
+
"prompt": "Which style do you prefer?",
|
|
162
|
+
"a_title": "many tiny wrappers",
|
|
163
|
+
"b_title": "one explicit transform",
|
|
164
|
+
"a_code": "const withId = (x) => x.id\nconst withName = (x) => x.name\nexport const summarize = (user) => `${withId(user)}:${withName(user)}`",
|
|
165
|
+
"b_code": "export const summarize = (user: User): string => `${user.id}:${user.name}`",
|
|
166
|
+
"a_signals": { "TS-AB-03": 0.45, "TS-LD-01": 0.7 },
|
|
167
|
+
"b_signals": { "TS-AB-03": 1.3, "TS-LD-01": 1.05 },
|
|
168
|
+
"tags": ["abstraction", "directness"]
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": "ts-quiz-15",
|
|
172
|
+
"domain": "typescript",
|
|
173
|
+
"prompt": "Which style do you prefer?",
|
|
174
|
+
"a_title": "unused exported helper",
|
|
175
|
+
"b_title": "private local helper",
|
|
176
|
+
"a_code": "export const normalizeUser = (user: User) => user.email.toLowerCase()\nexport const send = (user: User) => mailer.send(user.email)",
|
|
177
|
+
"b_code": "const normalizeUser = (user: User): string => user.email.toLowerCase()\nexport const send = (user: User) => mailer.send(normalizeUser(user))",
|
|
178
|
+
"a_signals": { "TS-AB-02": 0.4, "TS-AB-01": 0.6 },
|
|
179
|
+
"b_signals": { "TS-AB-02": 1.35, "TS-AB-01": 1.0 },
|
|
180
|
+
"tags": ["abstraction", "unused-exports"]
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"id": "ts-quiz-16",
|
|
184
|
+
"domain": "typescript",
|
|
185
|
+
"prompt": "Which style do you prefer?",
|
|
186
|
+
"a_title": "copy-pasted serialization",
|
|
187
|
+
"b_title": "shared serializer",
|
|
188
|
+
"a_code": "export const toApiUser = (user: User) => ({ id: user.id, name: user.name })\nexport const toApiAdmin = (admin: Admin) => ({ id: admin.id, name: admin.name })",
|
|
189
|
+
"b_code": "const toApiIdentity = (value: { id: string; name: string }) => ({ id: value.id, name: value.name })\nexport const toApiUser = (user: User) => toApiIdentity(user)\nexport const toApiAdmin = (admin: Admin) => toApiIdentity(admin)",
|
|
190
|
+
"a_signals": { "TS-SL-01": 0.35, "TS-AB-03": 1.0 },
|
|
191
|
+
"b_signals": { "TS-SL-01": 1.35, "TS-AB-03": 0.95 },
|
|
192
|
+
"tags": ["slop", "duplication"]
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"id": "ts-quiz-17",
|
|
196
|
+
"domain": "typescript",
|
|
197
|
+
"prompt": "Which style do you prefer?",
|
|
198
|
+
"a_title": "ts-ignore and move on",
|
|
199
|
+
"b_title": "typed narrowing",
|
|
200
|
+
"a_code": "// @ts-ignore\nreturn payload.total",
|
|
201
|
+
"b_code": "if (!('total' in payload)) throw new Error('missing total')\nreturn payload.total",
|
|
202
|
+
"a_signals": { "TS-SL-03": 0.1, "TS-LD-01": 0.8 },
|
|
203
|
+
"b_signals": { "TS-SL-03": 1.5, "TS-LD-01": 1.05 },
|
|
204
|
+
"tags": ["slop", "suppressions"]
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"id": "ts-quiz-18",
|
|
208
|
+
"domain": "typescript",
|
|
209
|
+
"prompt": "Which style do you prefer?",
|
|
210
|
+
"a_title": "empty production method",
|
|
211
|
+
"b_title": "fail loudly",
|
|
212
|
+
"a_code": "export const syncAccounts = async (): Promise<void> => {}",
|
|
213
|
+
"b_code": "export const syncAccounts = async (): Promise<void> => {\n throw new Error('syncAccounts not implemented')\n}",
|
|
214
|
+
"a_signals": { "TS-SL-04": 0.15, "TS-LD-06": 0.8 },
|
|
215
|
+
"b_signals": { "TS-SL-04": 1.35, "TS-LD-06": 0.95 },
|
|
216
|
+
"tags": ["slop", "stubs"]
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"id": "ts-quiz-19",
|
|
220
|
+
"domain": "typescript",
|
|
221
|
+
"prompt": "Which style do you prefer?",
|
|
222
|
+
"a_title": "slightly divergent clones",
|
|
223
|
+
"b_title": "single normalization path",
|
|
224
|
+
"a_code": "export const normalizeCard = (card: Card) => ({ id: card.id, last4: card.last4 })\nexport const normalizeBank = (bank: Bank) => ({ id: bank.id, last4: bank.masked.slice(-4) })",
|
|
225
|
+
"b_code": "const normalizeFundingSource = (id: string, last4: string) => ({ id, last4 })\nexport const normalizeCard = (card: Card) => normalizeFundingSource(card.id, card.last4)\nexport const normalizeBank = (bank: Bank) => normalizeFundingSource(bank.id, bank.masked.slice(-4))",
|
|
226
|
+
"a_signals": { "TS-SL-02": 0.35, "TS-AB-03": 1.05 },
|
|
227
|
+
"b_signals": { "TS-SL-02": 1.35, "TS-AB-03": 1.0 },
|
|
228
|
+
"tags": ["slop", "inconsistent-clones"]
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"id": "ts-quiz-20",
|
|
232
|
+
"domain": "typescript",
|
|
233
|
+
"prompt": "Which style do you prefer?",
|
|
234
|
+
"a_title": "local eslint disable",
|
|
235
|
+
"b_title": "extracted safe helper",
|
|
236
|
+
"a_code": "// eslint-disable-next-line @typescript-eslint/no-explicit-any\nreturn value as any",
|
|
237
|
+
"b_code": "const toUnknownRecord = (value: unknown): Record<string, unknown> => {\n if (value === null || typeof value !== 'object') throw new Error('invalid value')\n return value as Record<string, unknown>\n}\nreturn toUnknownRecord(value)",
|
|
238
|
+
"a_signals": { "TS-SL-03": 0.2, "TS-AB-03": 0.85 },
|
|
239
|
+
"b_signals": { "TS-SL-03": 1.45, "TS-AB-03": 1.1 },
|
|
240
|
+
"tags": ["slop", "suppressions"]
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"id": "ts-quiz-21",
|
|
244
|
+
"domain": "typescript",
|
|
245
|
+
"prompt": "Which style do you prefer?",
|
|
246
|
+
"a_title": "multiple lockfile copies tolerated",
|
|
247
|
+
"b_title": "deduplicated workspace",
|
|
248
|
+
"a_code": "// apps/web depends on zod@3.24\n// packages/api depends on zod@3.23\nexport const healthy = true",
|
|
249
|
+
"b_code": "// workspace aligns on zod@3.24\nexport const healthy = true",
|
|
250
|
+
"a_signals": { "TS-DE-05": 0.25, "TS-DE-04": 0.9 },
|
|
251
|
+
"b_signals": { "TS-DE-05": 1.4, "TS-DE-04": 1.0 },
|
|
252
|
+
"tags": ["dependency-entropy", "duplicate-versions"]
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"id": "ts-quiz-22",
|
|
256
|
+
"domain": "typescript",
|
|
257
|
+
"prompt": "Which style do you prefer?",
|
|
258
|
+
"a_title": "silent outdated package",
|
|
259
|
+
"b_title": "dependency health review",
|
|
260
|
+
"a_code": "// package.json has an unmaintained auth SDK but build still passes\nexport const auth = 'legacy'",
|
|
261
|
+
"b_code": "// package.json moved to maintained auth SDK with advisory monitoring\nexport const auth = 'current'",
|
|
262
|
+
"a_signals": { "TS-DE-04": 0.35, "TS-RP-02": 1.0 },
|
|
263
|
+
"b_signals": { "TS-DE-04": 1.45, "TS-RP-02": 0.9 },
|
|
264
|
+
"tags": ["dependency-entropy", "dependency-health"]
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"id": "ts-quiz-23",
|
|
268
|
+
"domain": "typescript",
|
|
269
|
+
"prompt": "Which style do you prefer?",
|
|
270
|
+
"a_title": "type-level hop chain",
|
|
271
|
+
"b_title": "direct type dependency",
|
|
272
|
+
"a_code": "type A = B\ntype B = C\ntype C = Invoice\nexport type InvoiceRef = A",
|
|
273
|
+
"b_code": "export type InvoiceRef = Invoice",
|
|
274
|
+
"a_signals": { "TS-DE-01": 0.35, "TS-AB-03": 0.45 },
|
|
275
|
+
"b_signals": { "TS-DE-01": 1.45, "TS-AB-03": 1.25 },
|
|
276
|
+
"tags": ["dependency-entropy", "type-coupling"]
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"id": "ts-quiz-24",
|
|
280
|
+
"domain": "typescript",
|
|
281
|
+
"prompt": "Which style do you prefer?",
|
|
282
|
+
"a_title": "single large integration helper",
|
|
283
|
+
"b_title": "separate package adapters",
|
|
284
|
+
"a_code": "export const connect = () => [stripe(), sendgrid(), s3(), redis()]",
|
|
285
|
+
"b_code": "export const adapters = { billing: stripe, mail: sendgrid, storage: s3, cache: redis }\nexport const connect = () => Object.values(adapters).map((adapter) => adapter())",
|
|
286
|
+
"a_signals": { "TS-DE-02": 0.55, "TS-DE-03": 0.7 },
|
|
287
|
+
"b_signals": { "TS-DE-02": 1.15, "TS-DE-03": 1.2 },
|
|
288
|
+
"tags": ["dependency-entropy", "propagation-cost"]
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"id": "ts-quiz-25",
|
|
292
|
+
"domain": "typescript",
|
|
293
|
+
"prompt": "Which style do you prefer?",
|
|
294
|
+
"a_title": "broad package import allowance",
|
|
295
|
+
"b_title": "explicit allowed imports",
|
|
296
|
+
"a_code": "// package has no documented boundary imports\nexport const rule = 'open'",
|
|
297
|
+
"b_code": "// package documents allowed imports and fails review on drift\nexport const rule = 'explicit'",
|
|
298
|
+
"a_signals": { "TS-AD-01": 0.55, "TS-DE-03": 0.85 },
|
|
299
|
+
"b_signals": { "TS-AD-01": 1.35, "TS-DE-03": 1.1 },
|
|
300
|
+
"tags": ["architecture", "boundaries"]
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"id": "ts-quiz-26",
|
|
304
|
+
"domain": "typescript",
|
|
305
|
+
"prompt": "Which style do you prefer?",
|
|
306
|
+
"a_title": "large all-in-one change",
|
|
307
|
+
"b_title": "smaller staged change",
|
|
308
|
+
"a_code": "// feature branch rewrites parser, router, and UI in one patch\nexport const size = 'large'",
|
|
309
|
+
"b_code": "// parser lands first, then router, then UI polish in separate reviewable steps\nexport const size = 'staged'",
|
|
310
|
+
"a_signals": { "TS-RP-02": 0.35, "TS-RP-01": 0.65 },
|
|
311
|
+
"b_signals": { "TS-RP-02": 1.4, "TS-RP-01": 1.0 },
|
|
312
|
+
"tags": ["review-pain", "pr-size"]
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"id": "ts-quiz-27",
|
|
316
|
+
"domain": "typescript",
|
|
317
|
+
"prompt": "Which style do you prefer?",
|
|
318
|
+
"a_title": "keep touching hotspot file",
|
|
319
|
+
"b_title": "extract stable seam first",
|
|
320
|
+
"a_code": "// src/router.ts grows another 200 lines this week\nexport const touched = 'again'",
|
|
321
|
+
"b_code": "// src/router.ts extracts routing-table.ts before new handlers land\nexport const touched = 'less'",
|
|
322
|
+
"a_signals": { "TS-RP-01": 0.3, "TS-LD-01": 0.75 },
|
|
323
|
+
"b_signals": { "TS-RP-01": 1.45, "TS-LD-01": 1.1 },
|
|
324
|
+
"tags": ["review-pain", "hotspots"]
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"id": "ts-quiz-28",
|
|
328
|
+
"domain": "typescript",
|
|
329
|
+
"prompt": "Which style do you prefer?",
|
|
330
|
+
"a_title": "reviewer reconstructs intent",
|
|
331
|
+
"b_title": "reviewer sees domain names",
|
|
332
|
+
"a_code": "export const doIt = (x: Order) => settle(x)",
|
|
333
|
+
"b_code": "export const settleOrderPayment = (order: Order) => settle(order)",
|
|
334
|
+
"a_signals": { "TS-LD-05": 0.45, "TS-RP-02": 0.8 },
|
|
335
|
+
"b_signals": { "TS-LD-05": 1.3, "TS-RP-02": 1.05 },
|
|
336
|
+
"tags": ["review-pain", "domain-language"]
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"id": "ts-quiz-29",
|
|
340
|
+
"domain": "typescript",
|
|
341
|
+
"prompt": "Which style do you prefer?",
|
|
342
|
+
"a_title": "broad export diff",
|
|
343
|
+
"b_title": "targeted public API change",
|
|
344
|
+
"a_code": "export * from './billing'\nexport * from './invoices'\nexport * from './payments'\nexport * from './refunds'",
|
|
345
|
+
"b_code": "export { BillingService } from './billing'\nexport type { InvoiceSummary } from './invoices'",
|
|
346
|
+
"a_signals": { "TS-AB-01": 0.35, "TS-RP-02": 0.7 },
|
|
347
|
+
"b_signals": { "TS-AB-01": 1.35, "TS-RP-02": 1.0 },
|
|
348
|
+
"tags": ["review-pain", "surface-area"]
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"id": "ts-quiz-30",
|
|
352
|
+
"domain": "typescript",
|
|
353
|
+
"prompt": "Which style do you prefer?",
|
|
354
|
+
"a_title": "generic review comments",
|
|
355
|
+
"b_title": "explicit high-signal shapes",
|
|
356
|
+
"a_code": "export const map = <T, U>(values: T[], fn: (value: T) => U) => values.map(fn)",
|
|
357
|
+
"b_code": "export const mapOrdersToIds = (orders: ReadonlyArray<Order>): ReadonlyArray<string> => orders.map((order) => order.id)",
|
|
358
|
+
"a_signals": { "TS-AB-05": 0.45, "TS-RP-02": 0.85 },
|
|
359
|
+
"b_signals": { "TS-AB-05": 1.2, "TS-RP-02": 1.05 },
|
|
360
|
+
"tags": ["review-pain", "generics"]
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"id": "ts-quiz-31",
|
|
364
|
+
"domain": "typescript",
|
|
365
|
+
"prompt": "Which style do you prefer?",
|
|
366
|
+
"a_title": "AI-generated duplicated branch",
|
|
367
|
+
"b_title": "shared decision helper",
|
|
368
|
+
"a_code": "if (user.role === 'admin') return allow(user)\nif (member.role === 'admin') return allow(member)",
|
|
369
|
+
"b_code": "const isAdmin = (actor: { role: string }) => actor.role === 'admin'\nif (isAdmin(user)) return allow(user)\nif (isAdmin(member)) return allow(member)",
|
|
370
|
+
"a_signals": { "TS-SL-01": 0.25, "TS-LD-01": 0.8 },
|
|
371
|
+
"b_signals": { "TS-SL-01": 1.45, "TS-LD-01": 1.05 },
|
|
372
|
+
"tags": ["ai-assisted", "duplication"]
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"id": "ts-quiz-32",
|
|
376
|
+
"domain": "typescript",
|
|
377
|
+
"prompt": "Which style do you prefer?",
|
|
378
|
+
"a_title": "AI left TODOs in production",
|
|
379
|
+
"b_title": "explicit failing placeholder",
|
|
380
|
+
"a_code": "export const ship = () => {\n // TODO: handle retries\n}",
|
|
381
|
+
"b_code": "export const ship = () => {\n throw new Error('ship retry path not implemented')\n}",
|
|
382
|
+
"a_signals": { "TS-SL-04": 0.15, "TS-LD-01": 0.9 },
|
|
383
|
+
"b_signals": { "TS-SL-04": 1.45, "TS-LD-01": 1.0 },
|
|
384
|
+
"tags": ["ai-assisted", "stubs"]
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"id": "ts-quiz-33",
|
|
388
|
+
"domain": "typescript",
|
|
389
|
+
"prompt": "Which style do you prefer?",
|
|
390
|
+
"a_title": "AI guessed new domain term",
|
|
391
|
+
"b_title": "existing domain vocabulary",
|
|
392
|
+
"a_code": "export const activateRevenueBucket = (invoice: Invoice) => invoice.id",
|
|
393
|
+
"b_code": "export const activateBillingCycle = (invoice: Invoice) => invoice.id",
|
|
394
|
+
"a_signals": { "TS-LD-05": 0.25, "TS-LD-04": 0.7 },
|
|
395
|
+
"b_signals": { "TS-LD-05": 1.4, "TS-LD-04": 1.0 },
|
|
396
|
+
"tags": ["ai-assisted", "domain-language"]
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"id": "ts-quiz-34",
|
|
400
|
+
"domain": "typescript",
|
|
401
|
+
"prompt": "Which style do you prefer?",
|
|
402
|
+
"a_title": "AI stacked helper generics",
|
|
403
|
+
"b_title": "single concrete adapter",
|
|
404
|
+
"a_code": "type Loader<TInput, TIntermediate, TOutput> = (input: TInput) => Promise<TOutput>\nexport const makeLoader = <TInput, TIntermediate, TOutput>(step: (input: TInput) => Promise<TIntermediate>, finish: (value: TIntermediate) => TOutput): Loader<TInput, TIntermediate, TOutput> => async (input) => finish(await step(input))",
|
|
405
|
+
"b_code": "export const loadInvoiceSummary = async (id: string): Promise<InvoiceSummary> => summarize(await fetchInvoice(id))",
|
|
406
|
+
"a_signals": { "TS-AB-05": 0.2, "TS-AB-03": 0.35 },
|
|
407
|
+
"b_signals": { "TS-AB-05": 1.45, "TS-AB-03": 1.2 },
|
|
408
|
+
"tags": ["ai-assisted", "generics"]
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"id": "ts-quiz-35",
|
|
412
|
+
"domain": "typescript",
|
|
413
|
+
"prompt": "Which style do you prefer?",
|
|
414
|
+
"a_title": "AI accepted high complexity branch ladder",
|
|
415
|
+
"b_title": "table-driven dispatch",
|
|
416
|
+
"a_code": "export function route(kind: string) {\n if (kind === 'invoice') return invoice()\n if (kind === 'refund') return refund()\n if (kind === 'credit') return credit()\n if (kind === 'payout') return payout()\n return unknown()\n}",
|
|
417
|
+
"b_code": "const handlers = { invoice, refund, credit, payout } as const\nexport function route(kind: keyof typeof handlers) {\n return handlers[kind]()\n}",
|
|
418
|
+
"a_signals": { "TS-LD-01": 0.3, "TS-SL-01": 0.9 },
|
|
419
|
+
"b_signals": { "TS-LD-01": 1.45, "TS-SL-01": 1.1 },
|
|
420
|
+
"tags": ["ai-assisted", "complexity"]
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
"id": "ts-quiz-36",
|
|
424
|
+
"domain": "typescript",
|
|
425
|
+
"prompt": "Which style do you prefer?",
|
|
426
|
+
"a_title": "brevity over annotations",
|
|
427
|
+
"b_title": "annotated command shape",
|
|
428
|
+
"a_code": "export const enqueue = (job) => queue.push(job)",
|
|
429
|
+
"b_code": "export const enqueue = (job: QueueJob): number => queue.push(job)",
|
|
430
|
+
"a_signals": { "TS-LD-06": 0.35, "TS-RP-02": 1.05 },
|
|
431
|
+
"b_signals": { "TS-LD-06": 1.35, "TS-RP-02": 0.95 },
|
|
432
|
+
"tags": ["legibility", "annotations"]
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"id": "ts-quiz-37",
|
|
436
|
+
"domain": "typescript",
|
|
437
|
+
"prompt": "Which style do you prefer?",
|
|
438
|
+
"a_title": "domain rule in controller",
|
|
439
|
+
"b_title": "domain rule in service",
|
|
440
|
+
"a_code": "export const postInvoice = (req, res) => {\n if (req.body.total <= 0) throw new Error('invalid')\n return res.json(createInvoice(req.body))\n}",
|
|
441
|
+
"b_code": "export const postInvoice = (req, res) => res.json(createInvoice(req.body))\n\nexport const createInvoice = (input: InvoiceDraft) => {\n if (input.total <= 0) throw new Error('invalid')\n return input\n}",
|
|
442
|
+
"a_signals": { "TS-AD-01": 0.35, "TS-LD-05": 0.85 },
|
|
443
|
+
"b_signals": { "TS-AD-01": 1.45, "TS-LD-05": 1.1 },
|
|
444
|
+
"tags": ["architecture", "policy-mechanism"]
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"id": "ts-quiz-38",
|
|
448
|
+
"domain": "typescript",
|
|
449
|
+
"prompt": "Which style do you prefer?",
|
|
450
|
+
"a_title": "big flexible helper",
|
|
451
|
+
"b_title": "smaller explicit branches",
|
|
452
|
+
"a_code": "export const fetchEntity = async <T>(type: string, id: string): Promise<T> => client.get(`/${type}/${id}`)",
|
|
453
|
+
"b_code": "export const fetchInvoice = (id: string) => client.get<Invoice>(`/invoices/${id}`)\nexport const fetchRefund = (id: string) => client.get<Refund>(`/refunds/${id}`)",
|
|
454
|
+
"a_signals": { "TS-AB-05": 0.4, "TS-RP-02": 0.75 },
|
|
455
|
+
"b_signals": { "TS-AB-05": 1.15, "TS-RP-02": 1.0 },
|
|
456
|
+
"tags": ["abstraction", "review-pain"]
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"id": "ts-quiz-39",
|
|
460
|
+
"domain": "typescript",
|
|
461
|
+
"prompt": "Which style do you prefer?",
|
|
462
|
+
"a_title": "two duplicated validators",
|
|
463
|
+
"b_title": "shared invariant helper",
|
|
464
|
+
"a_code": "export const validateInvoice = (input: InvoiceDraft) => input.total > 0\nexport const validateRefund = (input: RefundDraft) => input.total > 0",
|
|
465
|
+
"b_code": "const hasPositiveTotal = (input: { total: number }) => input.total > 0\nexport const validateInvoice = (input: InvoiceDraft) => hasPositiveTotal(input)\nexport const validateRefund = (input: RefundDraft) => hasPositiveTotal(input)",
|
|
466
|
+
"a_signals": { "TS-SL-01": 0.35, "TS-LD-05": 1.0 },
|
|
467
|
+
"b_signals": { "TS-SL-01": 1.3, "TS-LD-05": 0.95 },
|
|
468
|
+
"tags": ["slop", "domain-invariants"]
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"id": "ts-quiz-40",
|
|
472
|
+
"domain": "typescript",
|
|
473
|
+
"prompt": "Which style do you prefer?",
|
|
474
|
+
"a_title": "single central mutable cache",
|
|
475
|
+
"b_title": "per-feature adapter seam",
|
|
476
|
+
"a_code": "export const cache: Record<string, unknown> = {}\nexport const read = (key: string) => cache[key]",
|
|
477
|
+
"b_code": "export interface CachePort {\n read(key: string): unknown\n}\nexport const read = (cache: CachePort, key: string) => cache.read(key)",
|
|
478
|
+
"a_signals": { "TS-AD-01": 0.45, "TS-DE-03": 0.7 },
|
|
479
|
+
"b_signals": { "TS-AD-01": 1.35, "TS-DE-03": 1.1 },
|
|
480
|
+
"tags": ["architecture", "state-time"]
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
"id": "ts-quiz-41",
|
|
484
|
+
"domain": "typescript",
|
|
485
|
+
"prompt": "Which style do you prefer?",
|
|
486
|
+
"a_title": "accept duplicate dependency drift",
|
|
487
|
+
"b_title": "pin workspace dependency once",
|
|
488
|
+
"a_code": "// ui uses date-fns@3.2, api uses date-fns@3.1\nexport const formatDate = true",
|
|
489
|
+
"b_code": "// workspace aligns on date-fns@3.2 via one shared declaration\nexport const formatDate = true",
|
|
490
|
+
"a_signals": { "TS-DE-05": 0.3, "TS-RP-02": 0.9 },
|
|
491
|
+
"b_signals": { "TS-DE-05": 1.35, "TS-RP-02": 1.0 },
|
|
492
|
+
"tags": ["dependency-entropy", "duplication"]
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"id": "ts-quiz-42",
|
|
496
|
+
"domain": "typescript",
|
|
497
|
+
"prompt": "Which style do you prefer?",
|
|
498
|
+
"a_title": "manual stringly typed event",
|
|
499
|
+
"b_title": "typed domain event",
|
|
500
|
+
"a_code": "publish('invoice.created', payload)",
|
|
501
|
+
"b_code": "publish<InvoiceCreatedEvent>('invoice.created', payload)",
|
|
502
|
+
"a_signals": { "TS-LD-06": 0.55, "TS-LD-05": 0.75 },
|
|
503
|
+
"b_signals": { "TS-LD-06": 1.25, "TS-LD-05": 1.25 },
|
|
504
|
+
"tags": ["legibility", "domain-language"]
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
"id": "ts-quiz-43",
|
|
508
|
+
"domain": "typescript",
|
|
509
|
+
"prompt": "Which style do you prefer?",
|
|
510
|
+
"a_title": "review larger speculative helper",
|
|
511
|
+
"b_title": "review smaller real call path",
|
|
512
|
+
"a_code": "export const maybeCacheMaybeRetryMaybeLog = async (input: Input) => input",
|
|
513
|
+
"b_code": "export const persistInvoice = async (invoice: Invoice) => repository.save(invoice)",
|
|
514
|
+
"a_signals": { "TS-RP-02": 0.35, "TS-AB-03": 0.5 },
|
|
515
|
+
"b_signals": { "TS-RP-02": 1.35, "TS-AB-03": 1.1 },
|
|
516
|
+
"tags": ["review-pain", "abstraction"]
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
"id": "ts-quiz-44",
|
|
520
|
+
"domain": "typescript",
|
|
521
|
+
"prompt": "Which style do you prefer?",
|
|
522
|
+
"a_title": "skip naming consistency",
|
|
523
|
+
"b_title": "consistent casing and role suffixes",
|
|
524
|
+
"a_code": "export class invoice_service {}\nexport const LoadInvoice = () => {}",
|
|
525
|
+
"b_code": "export class InvoiceService {}\nexport const loadInvoice = (): void => {}",
|
|
526
|
+
"a_signals": { "TS-LD-04": 0.25, "TS-LD-06": 0.7 },
|
|
527
|
+
"b_signals": { "TS-LD-04": 1.45, "TS-LD-06": 1.0 },
|
|
528
|
+
"tags": ["legibility", "naming"]
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
"id": "ts-quiz-45",
|
|
532
|
+
"domain": "typescript",
|
|
533
|
+
"prompt": "Which style do you prefer?",
|
|
534
|
+
"a_title": "leave hotspot monolith alone",
|
|
535
|
+
"b_title": "introduce seam before feature",
|
|
536
|
+
"a_code": "// add another case to src/billing-orchestrator.ts\nexport const next = 'monolith'",
|
|
537
|
+
"b_code": "// extract billing-step.ts and add new case there\nexport const next = 'seam-first'",
|
|
538
|
+
"a_signals": { "TS-RP-01": 0.35, "TS-AD-01": 0.75 },
|
|
539
|
+
"b_signals": { "TS-RP-01": 1.4, "TS-AD-01": 1.15 },
|
|
540
|
+
"tags": ["review-pain", "architecture"]
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
"id": "ts-quiz-46",
|
|
544
|
+
"domain": "typescript",
|
|
545
|
+
"prompt": "Which style do you prefer?",
|
|
546
|
+
"a_title": "AI duplicated fallback blocks",
|
|
547
|
+
"b_title": "shared fallback policy",
|
|
548
|
+
"a_code": "if (!invoice) return { ok: false, reason: 'missing' }\nif (!refund) return { ok: false, reason: 'missing' }",
|
|
549
|
+
"b_code": "const missing = () => ({ ok: false, reason: 'missing' as const })\nif (!invoice) return missing()\nif (!refund) return missing()",
|
|
550
|
+
"a_signals": { "TS-SL-01": 0.3, "TS-SL-02": 0.35 },
|
|
551
|
+
"b_signals": { "TS-SL-01": 1.35, "TS-SL-02": 1.3 },
|
|
552
|
+
"tags": ["ai-assisted", "duplication"]
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
"id": "ts-quiz-47",
|
|
556
|
+
"domain": "typescript",
|
|
557
|
+
"prompt": "Which style do you prefer?",
|
|
558
|
+
"a_title": "short but cyclic imports",
|
|
559
|
+
"b_title": "extra file but acyclic flow",
|
|
560
|
+
"a_code": "// view.ts imports store.ts and store.ts imports view.ts\nexport const cycle = true",
|
|
561
|
+
"b_code": "// view.ts imports selectors.ts and selectors.ts imports store.ts\nexport const cycle = false",
|
|
562
|
+
"a_signals": { "TS-AD-02": 0.25, "TS-RP-02": 1.05 },
|
|
563
|
+
"b_signals": { "TS-AD-02": 1.45, "TS-RP-02": 0.95 },
|
|
564
|
+
"tags": ["architecture", "cycles"]
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"id": "ts-quiz-48",
|
|
568
|
+
"domain": "typescript",
|
|
569
|
+
"prompt": "Which style do you prefer?",
|
|
570
|
+
"a_title": "heavy public toolkit",
|
|
571
|
+
"b_title": "smaller internal helper set",
|
|
572
|
+
"a_code": "export const parse = () => {}\nexport const format = () => {}\nexport const validate = () => {}\nexport const normalize = () => {}",
|
|
573
|
+
"b_code": "const parse = () => {}\nconst format = () => {}\nexport const normalizeInvoice = () => format(parse())",
|
|
574
|
+
"a_signals": { "TS-AB-01": 0.35, "TS-AB-02": 0.75 },
|
|
575
|
+
"b_signals": { "TS-AB-01": 1.35, "TS-AB-02": 1.15 },
|
|
576
|
+
"tags": ["abstraction", "surface-area"]
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
"id": "ts-quiz-49",
|
|
580
|
+
"domain": "typescript",
|
|
581
|
+
"prompt": "Which style do you prefer?",
|
|
582
|
+
"a_title": "fast local workaround",
|
|
583
|
+
"b_title": "codified explicit rule",
|
|
584
|
+
"a_code": "// eslint-disable-next-line no-restricted-imports\nimport { db } from '../infra/db'",
|
|
585
|
+
"b_code": "import type { BillingStore } from '../domain/billing-store'",
|
|
586
|
+
"a_signals": { "TS-SL-03": 0.25, "TS-AD-01": 0.4 },
|
|
587
|
+
"b_signals": { "TS-SL-03": 1.35, "TS-AD-01": 1.4 },
|
|
588
|
+
"tags": ["slop", "boundaries"]
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
"id": "ts-quiz-50",
|
|
592
|
+
"domain": "typescript",
|
|
593
|
+
"prompt": "Which style do you prefer?",
|
|
594
|
+
"a_title": "AI mode off: allow more slack",
|
|
595
|
+
"b_title": "AI mode on: tighter thresholds",
|
|
596
|
+
"a_code": "// default mode\nexport const vector = { signal_overrides: { 'TS-LD-01': { config: { max_complexity: 20 } } } }",
|
|
597
|
+
"b_code": "// ai-assisted mode\nexport const vector = { modes: { ai_assisted: true }, signal_overrides: { 'TS-LD-01': { config: { max_complexity: 15 } }, 'TS-SL-01': { config: { min_tokens: 8 } } } }",
|
|
598
|
+
"a_signals": { "TS-LD-01": 0.8, "TS-SL-01": 0.8 },
|
|
599
|
+
"b_signals": { "TS-LD-01": 1.4, "TS-SL-01": 1.4 },
|
|
600
|
+
"tags": ["ai-assisted", "preset-mode"]
|
|
601
|
+
}
|
|
602
|
+
]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "api-surface-change",
|
|
3
|
+
"displayName": "API surface change",
|
|
4
|
+
"triggerKind": "signal-threshold",
|
|
5
|
+
"condition": {
|
|
6
|
+
"kind": "signal-threshold",
|
|
7
|
+
"signalId": "TS-AB-01",
|
|
8
|
+
"changeRatioAbove": 0.1
|
|
9
|
+
},
|
|
10
|
+
"reviewerRole": "api-design-reviewer",
|
|
11
|
+
"contextPayload": [
|
|
12
|
+
{
|
|
13
|
+
"signalId": "TS-AB-01",
|
|
14
|
+
"include": "all"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "auth-paths-touched",
|
|
3
|
+
"displayName": "Auth paths touched",
|
|
4
|
+
"triggerKind": "file-path",
|
|
5
|
+
"condition": {
|
|
6
|
+
"kind": "file-path",
|
|
7
|
+
"globs": [
|
|
8
|
+
"**/auth/**",
|
|
9
|
+
"**/*auth*.ts",
|
|
10
|
+
"**/*auth*.tsx",
|
|
11
|
+
"**/*auth*.rs"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"reviewerRole": "security-reviewer",
|
|
15
|
+
"contextPayload": []
|
|
16
|
+
}
|