@boyingliu01/xp-gate 0.28.1 → 0.29.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/hooks/pre-commit +198 -0
- package/lib/mattpocock-license-verdict.json +1 -1
- package/mock-policy/AGENTS.md +2 -2
- package/mutation/AGENTS.md +2 -2
- package/package.json +1 -1
- package/plugins/claude-code/.claude-plugin/plugin.json +1 -1
- package/plugins/claude-code/skills/delphi-review/AGENTS.md +2 -2
- package/plugins/claude-code/skills/sprint-flow/AGENTS.md +2 -2
- package/plugins/claude-code/skills/test-specification-alignment/AGENTS.md +2 -2
- package/plugins/dsh/package.json +1 -1
- package/plugins/dsh/skills/delphi-review/AGENTS.md +2 -2
- package/plugins/dsh/skills/sprint-flow/AGENTS.md +2 -2
- package/plugins/dsh/skills/test-specification-alignment/AGENTS.md +2 -2
- package/plugins/opencode/package.json +1 -1
- package/plugins/opencode/skills/delphi-review/AGENTS.md +2 -2
- package/plugins/opencode/skills/sprint-flow/AGENTS.md +2 -2
- package/plugins/opencode/skills/test-specification-alignment/AGENTS.md +2 -2
- package/plugins/qoder/plugin.json +1 -1
- package/plugins/qoder/skills/delphi-review/AGENTS.md +2 -2
- package/plugins/qoder/skills/sprint-flow/AGENTS.md +2 -2
- package/plugins/qoder/skills/test-specification-alignment/AGENTS.md +2 -2
- package/principles/AGENTS.md +2 -2
- package/skills/delphi-review/AGENTS.md +2 -2
- package/skills/sprint-flow/AGENTS.md +2 -2
- package/skills/test-specification-alignment/AGENTS.md +2 -2
package/hooks/pre-commit
CHANGED
|
@@ -285,6 +285,104 @@ gate_start_ms() {
|
|
|
285
285
|
now_ms
|
|
286
286
|
}
|
|
287
287
|
|
|
288
|
+
# ---------------------------------------------------------------------------
|
|
289
|
+
# #537: per-language coverage classification.
|
|
290
|
+
#
|
|
291
|
+
# A gate that SKIPs tells the reader nothing on its own — "documentation
|
|
292
|
+
# project", "tool not installed" and "nothing changed" are wildly different
|
|
293
|
+
# facts that used to collapse into one word. A PowerShell-primary repo could
|
|
294
|
+
# therefore look fully covered while 3.3k lines were measured by nothing.
|
|
295
|
+
#
|
|
296
|
+
# classify_coverage_reason REASON GATE_STATUS
|
|
297
|
+
# -> covered | not_applicable | no_changes | tool_missing | unknown
|
|
298
|
+
#
|
|
299
|
+
# FAIL CLOSED: an unrecognised reason is `unknown`, never `covered`. `covered`
|
|
300
|
+
# is reachable ONLY by a gate that actually passed (PASS / WARN /
|
|
301
|
+
# PASS_WITH_WARNINGS) with no skip reason attached.
|
|
302
|
+
# ---------------------------------------------------------------------------
|
|
303
|
+
classify_coverage_reason() {
|
|
304
|
+
local reason="${1:-}"
|
|
305
|
+
local gate_status="${2:-}"
|
|
306
|
+
|
|
307
|
+
case "$reason" in
|
|
308
|
+
documentation_project) echo "not_applicable" ;;
|
|
309
|
+
architecture_skip_exemption) echo "not_applicable" ;;
|
|
310
|
+
no_source_files_changed) echo "no_changes" ;;
|
|
311
|
+
# Gate 4 names the same concept "no_matching_files_changed"; Gate 3/6 use
|
|
312
|
+
# the shorter form. Both mean "the tool exists, nothing to look at".
|
|
313
|
+
no_matching_files_changed) echo "no_changes" ;;
|
|
314
|
+
tool_missing|tool_not_installed|no_powershell_tool|no_archlint_detector|checker_not_found)
|
|
315
|
+
echo "tool_missing" ;;
|
|
316
|
+
# archlint / import-linter / arch-go / Java arch tests exist as concepts but
|
|
317
|
+
# this repo carries no config for the language, so nothing was measured.
|
|
318
|
+
architecture_not_configured) echo "tool_missing" ;;
|
|
319
|
+
# Gate 4's checker ran but crashed. Not covered, not "tool missing" — the
|
|
320
|
+
# measurement was attempted and failed, so the honest answer is unknown.
|
|
321
|
+
checker_execution_error) echo "unknown" ;;
|
|
322
|
+
"")
|
|
323
|
+
case "$gate_status" in
|
|
324
|
+
PASS|WARN|PASS_WITH_WARNINGS|PASSED) echo "covered" ;;
|
|
325
|
+
*) echo "unknown" ;;
|
|
326
|
+
esac
|
|
327
|
+
;;
|
|
328
|
+
*) echo "unknown" ;;
|
|
329
|
+
esac
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
# #537: record where the language key set came from. PROJECT_LANGS is derived
|
|
333
|
+
# from the CURRENTLY CHANGED files, not from a static inventory of the repo, so
|
|
334
|
+
# a docs-only commit legitimately yields an empty set. Reporting the matrix
|
|
335
|
+
# without this provenance would repeat the sin the matrix exists to fix.
|
|
336
|
+
resolve_languages_source() {
|
|
337
|
+
local override_langs="${1:-}"
|
|
338
|
+
local config_langs="${2:-}"
|
|
339
|
+
local resolved_langs="${3:-}"
|
|
340
|
+
if [ -n "$override_langs" ]; then
|
|
341
|
+
echo "override"
|
|
342
|
+
elif [ -n "$config_langs" ]; then
|
|
343
|
+
echo "config"
|
|
344
|
+
elif [ -n "$resolved_langs" ]; then
|
|
345
|
+
echo "changed_files"
|
|
346
|
+
else
|
|
347
|
+
echo "none"
|
|
348
|
+
fi
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
# #537: resolve Gate 6's reason for ONE language.
|
|
352
|
+
#
|
|
353
|
+
# Reads the flattened GATE_6_LANG_REASONS ("lang=reason,lang=reason") because
|
|
354
|
+
# the associate array that produced it is function-local to the gate and
|
|
355
|
+
# invisible to generate_quality_report().
|
|
356
|
+
#
|
|
357
|
+
# The scalar GATE_6_REASON is a SUMMARY across languages and must NOT be used
|
|
358
|
+
# as a per-language fallback when per-language detail exists: with langs
|
|
359
|
+
# "typescript iac" where only iac lacks a detector, the scalar reads
|
|
360
|
+
# no_archlint_detector and would relabel typescript — the exact language
|
|
361
|
+
# archlint had just measured. A real probe run exposed this:
|
|
362
|
+
# langs=[typescript iac] reasons=[iac=no_archlint_detector]
|
|
363
|
+
#
|
|
364
|
+
# So: an explicit pair wins; otherwise there is no skip reason for this
|
|
365
|
+
# language, and "no reason" + PASS status is precisely what `covered` means.
|
|
366
|
+
# The scalar only speaks for every language when there is no detail at all
|
|
367
|
+
# (config-missing / bash<4 paths).
|
|
368
|
+
coverage_g6_reason_for() {
|
|
369
|
+
local lang="${1:-}"
|
|
370
|
+
local detail="${GATE_6_LANG_REASONS:-}"
|
|
371
|
+
local scalar="${GATE_6_REASON:-}"
|
|
372
|
+
local pairs=",${detail},"
|
|
373
|
+
local reason=""
|
|
374
|
+
case "$pairs" in
|
|
375
|
+
*",${lang}="*)
|
|
376
|
+
reason="${pairs#*",${lang}="}"
|
|
377
|
+
reason="${reason%%,*}"
|
|
378
|
+
;;
|
|
379
|
+
esac
|
|
380
|
+
if [ -z "$reason" ] && [ -z "$detail" ] && [ -n "$scalar" ]; then
|
|
381
|
+
reason="$scalar"
|
|
382
|
+
fi
|
|
383
|
+
echo "$reason"
|
|
384
|
+
}
|
|
385
|
+
|
|
288
386
|
# Audit helper — records gate execution to .xp-gate/audit.jsonl
|
|
289
387
|
# NEVER blocks commit on failure (try/catch around npx tsx).
|
|
290
388
|
# Usage: record_gate_audit <gate_id> <gate_name> <passed> <issues_found> <start_ms>
|
|
@@ -2902,6 +3000,15 @@ else
|
|
|
2902
3000
|
|
|
2903
3001
|
# Check if architecture config exists (use $PROJECT_ROOT — hook may have cd'd to a subdir via ARCH-03)
|
|
2904
3002
|
if [ -f "$PROJECT_ROOT/architecture.yaml" ] || [ -f "$PROJECT_ROOT/.architecturerc" ] || [ -f "$PROJECT_ROOT/.archlint.yaml" ]; then
|
|
3003
|
+
# #537: per-language reason bookkeeping. Gate 3/4 are single-language gates
|
|
3004
|
+
# and get away with one scalar reason; Gate 6 loops, so a scalar would lose
|
|
3005
|
+
# information ("TS passed, PS has no detector" cannot be one string).
|
|
3006
|
+
# Bash 4 associative array, with a scalar aggregate for the legacy field.
|
|
3007
|
+
GATE_6_REASON=""
|
|
3008
|
+
GATE_6_LANG_REASONS=""
|
|
3009
|
+
if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then
|
|
3010
|
+
declare -A GATE_6_REASON_BY_LANG=()
|
|
3011
|
+
fi
|
|
2905
3012
|
# Different architecture tools per language
|
|
2906
3013
|
for CURRENT_LANG in $PROJECT_LANGS; do
|
|
2907
3014
|
case "$CURRENT_LANG" in
|
|
@@ -2947,6 +3054,8 @@ else
|
|
|
2947
3054
|
else
|
|
2948
3055
|
echo " ✅ TypeScript architecture validation completed (zero-tolerance mode). no baseline found."
|
|
2949
3056
|
fi
|
|
3057
|
+
# #537: archlint actually ran here, so there is no skip reason. The
|
|
3058
|
+
# matrix reads an absent reason + PASS status as `covered`.
|
|
2950
3059
|
;;
|
|
2951
3060
|
"python")
|
|
2952
3061
|
# detect any import-linter carrier (incl. pyproject.toml [tool.importlinter])
|
|
@@ -2972,6 +3081,12 @@ else
|
|
|
2972
3081
|
else
|
|
2973
3082
|
echo " ℹ️ No import-linter config found (.import-linter.yml/.importlinter/[tool.importlinter]) - skipping"
|
|
2974
3083
|
echo " ⏭️ SKIPPED - Python architecture validation (no config)"
|
|
3084
|
+
# #537: no config means Python architecture was NOT measured. Without
|
|
3085
|
+
# this the matrix would call it `covered` simply because the branch
|
|
3086
|
+
# recorded nothing — the exact false-confidence the matrix prevents.
|
|
3087
|
+
if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then
|
|
3088
|
+
GATE_6_REASON_BY_LANG["$CURRENT_LANG"]="architecture_not_configured"
|
|
3089
|
+
fi
|
|
2975
3090
|
fi
|
|
2976
3091
|
;;
|
|
2977
3092
|
"go")
|
|
@@ -2988,6 +3103,10 @@ else
|
|
|
2988
3103
|
else
|
|
2989
3104
|
echo " ℹ️ No arch-go.yaml found - skipping Go architecture"
|
|
2990
3105
|
echo " ⏭️ SKIPPED - Go architecture validation (no config)"
|
|
3106
|
+
# #537: same reasoning as the Python branch above.
|
|
3107
|
+
if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then
|
|
3108
|
+
GATE_6_REASON_BY_LANG["$CURRENT_LANG"]="architecture_not_configured"
|
|
3109
|
+
fi
|
|
2991
3110
|
fi
|
|
2992
3111
|
;;
|
|
2993
3112
|
"java")
|
|
@@ -3004,19 +3123,63 @@ else
|
|
|
3004
3123
|
else
|
|
3005
3124
|
echo " ℹ️ No architecture test files found - skipping"
|
|
3006
3125
|
echo " ⏭️ SKIPPED - Architecture validation (no tests)"
|
|
3126
|
+
# #537: no test files means Java architecture was NOT measured.
|
|
3127
|
+
if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then
|
|
3128
|
+
GATE_6_REASON_BY_LANG["$CURRENT_LANG"]="architecture_not_configured"
|
|
3129
|
+
fi
|
|
3007
3130
|
fi
|
|
3008
3131
|
;;
|
|
3009
3132
|
*)
|
|
3010
3133
|
echo " ℹ️ Architecture validation not configured for $CURRENT_LANG"
|
|
3011
3134
|
echo " ⏭️ SKIPPED - Architecture validation (not configured for $CURRENT_LANG)"
|
|
3135
|
+
# #537: archlint ships no detector for this language. Say so in a way
|
|
3136
|
+
# the quality report can read, instead of leaving the dimension silent.
|
|
3137
|
+
if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then
|
|
3138
|
+
GATE_6_REASON_BY_LANG["$CURRENT_LANG"]="no_archlint_detector"
|
|
3139
|
+
fi
|
|
3012
3140
|
;;
|
|
3013
3141
|
esac
|
|
3014
3142
|
done # end for CURRENT_LANG (architecture)
|
|
3143
|
+
|
|
3144
|
+
# #537: fold the per-language reasons into the legacy scalar. Homogeneous
|
|
3145
|
+
# reasons survive as-is; a genuine mix becomes the `mixed` sentinel, which
|
|
3146
|
+
# classify_coverage_reason() maps to `unknown` (fail closed) rather than
|
|
3147
|
+
# pretending one language's verdict covers all of them.
|
|
3148
|
+
#
|
|
3149
|
+
# `declare -A` inside a function is FUNCTION-LOCAL in bash, and the report
|
|
3150
|
+
# is written by generate_quality_report() — a different function. So the
|
|
3151
|
+
# assoc array is flattened into this global string, which the report parses.
|
|
3152
|
+
# (Found by running the hook: the matrix reported tool_missing for
|
|
3153
|
+
# typescript because the lookup saw an empty array.)
|
|
3154
|
+
GATE_6_LANG_REASONS=""
|
|
3155
|
+
_g6_seen=""
|
|
3156
|
+
_g6_mixed=0
|
|
3157
|
+
for _g6_lang in $PROJECT_LANGS; do
|
|
3158
|
+
_g6_r=""
|
|
3159
|
+
if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then
|
|
3160
|
+
_g6_r="${GATE_6_REASON_BY_LANG[$_g6_lang]:-}"
|
|
3161
|
+
fi
|
|
3162
|
+
if [ -n "$_g6_r" ]; then
|
|
3163
|
+
GATE_6_LANG_REASONS="${GATE_6_LANG_REASONS:+$GATE_6_LANG_REASONS,}${_g6_lang}=${_g6_r}"
|
|
3164
|
+
if [ -z "$_g6_seen" ]; then
|
|
3165
|
+
_g6_seen="$_g6_r"
|
|
3166
|
+
elif [ "$_g6_seen" != "$_g6_r" ]; then
|
|
3167
|
+
_g6_mixed=1
|
|
3168
|
+
fi
|
|
3169
|
+
fi
|
|
3170
|
+
done
|
|
3171
|
+
if [ "$_g6_mixed" = "1" ]; then
|
|
3172
|
+
GATE_6_REASON="mixed"
|
|
3173
|
+
else
|
|
3174
|
+
GATE_6_REASON="$_g6_seen"
|
|
3175
|
+
fi
|
|
3015
3176
|
else
|
|
3016
3177
|
# Architecture config is REQUIRED — BLOCK if missing
|
|
3017
3178
|
if [ -f "$PROJECT_ROOT/.architecture-skip" ]; then
|
|
3018
3179
|
echo " ⚠️ Architecture config missing but .architecture-skip present — allowed to skip"
|
|
3019
3180
|
echo " ⏭️ SKIPPED - Architecture validation (.architecture-skip exemption)"
|
|
3181
|
+
# #537: an explicit exemption is "not applicable", not "tool missing".
|
|
3182
|
+
GATE_6_REASON="architecture_skip_exemption"
|
|
3020
3183
|
else
|
|
3021
3184
|
echo ""
|
|
3022
3185
|
echo "❌ ARCHITECTURE CONFIG MISSING - COMMIT BLOCKED"
|
|
@@ -3563,6 +3726,37 @@ generate_quality_report() {
|
|
|
3563
3726
|
local REPORT_FILE="${STATUS_DIR}/${BRANCH}.json"
|
|
3564
3727
|
mkdir -p "$(dirname "$REPORT_FILE")"
|
|
3565
3728
|
|
|
3729
|
+
# ── #537: per-language coverage matrix ───────────────────────────────────────
|
|
3730
|
+
# Answers "was this dimension actually measured for this language?" instead of
|
|
3731
|
+
# letting every SKIP read as a pass. Built by whitelist splicing (the same
|
|
3732
|
+
# technique as DEGRADED_JSON above) rather than jq, because jq is an OPTIONAL
|
|
3733
|
+
# dependency here (see the `command -v jq` guard earlier in this file) and a
|
|
3734
|
+
# missing jq must not silently cost us the whole matrix.
|
|
3735
|
+
#
|
|
3736
|
+
# Safety: every spliced value is one of the five enum literals below — no
|
|
3737
|
+
# quotes, backslashes or newlines can reach the JSON. Language names are
|
|
3738
|
+
# whitelisted too, and a name that fails the whitelist is reported in
|
|
3739
|
+
# coverageWarnings instead of being silently dropped.
|
|
3740
|
+
local COVERAGE_MATRIX_JSON=""
|
|
3741
|
+
local COVERAGE_WARNINGS_JSON=""
|
|
3742
|
+
local _cm_lang _cm_g3 _cm_g4 _cm_g6 _cm_entry
|
|
3743
|
+
for _cm_lang in $PROJECT_LANGS; do
|
|
3744
|
+
if ! echo "$_cm_lang" | grep -qE '^[a-z][a-z0-9+]*$'; then
|
|
3745
|
+
COVERAGE_WARNINGS_JSON="${COVERAGE_WARNINGS_JSON:+$COVERAGE_WARNINGS_JSON, }\"unsupported_language_name\""
|
|
3746
|
+
continue
|
|
3747
|
+
fi
|
|
3748
|
+
_cm_g3=$(classify_coverage_reason "${GATE_3_REASON:-}" "${GATE_3_STATUS:-PASS}")
|
|
3749
|
+
_cm_g4=$(classify_coverage_reason "${GATE_4_REASON:-}" "${GATE_4_STATUS:-PASS}")
|
|
3750
|
+
# Gate 6 reason for this language — extracted so the rule is testable
|
|
3751
|
+
# rather than inlined (see coverage_g6_reason_for below).
|
|
3752
|
+
_cm_g6_reason=$(coverage_g6_reason_for "$_cm_lang")
|
|
3753
|
+
_cm_g6=$(classify_coverage_reason "$_cm_g6_reason" "${GATE_6_STATUS:-PASS}")
|
|
3754
|
+
_cm_entry="\"${_cm_lang}\": {\"gate3_complexity\": \"${_cm_g3}\", \"gate4_principles\": \"${_cm_g4}\", \"gate6_architecture\": \"${_cm_g6}\"}"
|
|
3755
|
+
COVERAGE_MATRIX_JSON="${COVERAGE_MATRIX_JSON:+$COVERAGE_MATRIX_JSON, }${_cm_entry}"
|
|
3756
|
+
done
|
|
3757
|
+
local LANGUAGES_SOURCE
|
|
3758
|
+
LANGUAGES_SOURCE=$(resolve_languages_source "${_RESOLVED_LANG_OVERRIDE:-}" "${_CONFIG_LANGS:-}" "${PROJECT_LANGS:-}")
|
|
3759
|
+
|
|
3566
3760
|
cat > "$REPORT_FILE" << ENDJSON
|
|
3567
3761
|
{
|
|
3568
3762
|
"reportVersion": "2.0",
|
|
@@ -3581,6 +3775,9 @@ generate_quality_report() {
|
|
|
3581
3775
|
"score": $SCORE_JSON,
|
|
3582
3776
|
"verdict": "$VERDICT"
|
|
3583
3777
|
},
|
|
3778
|
+
"languagesSource": "${LANGUAGES_SOURCE}",
|
|
3779
|
+
"coverageMatrix": {${COVERAGE_MATRIX_JSON}},
|
|
3780
|
+
"coverageWarnings": [${COVERAGE_WARNINGS_JSON}],
|
|
3584
3781
|
"gates": {
|
|
3585
3782
|
"gate1_static_analysis": {
|
|
3586
3783
|
"name": "Code Quality (Static + Lint + Shell)",
|
|
@@ -3616,6 +3813,7 @@ generate_quality_report() {
|
|
|
3616
3813
|
"gate6_arch_boyscout": {
|
|
3617
3814
|
"name": "Architecture + Boy Scout Rule",
|
|
3618
3815
|
"status": "${GATE_6_STATUS:-PASS}",
|
|
3816
|
+
"reason": "${GATE_6_REASON:-}",
|
|
3619
3817
|
"boyScoutPassed": $BS_PASSED,
|
|
3620
3818
|
"boyScoutBlocked": $BS_BLOCKED
|
|
3621
3819
|
},
|
package/mock-policy/AGENTS.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SRC/MOCK-POLICY KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Mock layering policy enforcement — Gate M3 of pre-push hook. Ensures integration tests use real implementations for internal dependencies, mock external dependencies, and annotate pending mocks with removal plans. Combines project scope scanning, mock decision engine, and per-file validation into a single pipeline.
|
package/mutation/AGENTS.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SRC/MUTATION KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**Gate M** (incremental mutation testing) + **Gate M2** helpers (test-layer detection used by `src/mock-policy/`). Pre-push quality gate. TypeScript-only; uses Stryker.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xp-gate",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"displayName": "XP-Gate",
|
|
5
5
|
"description": "Extreme Programming quality gates + AI workflow skills for Claude Code. Includes 12 pre-commit gates (Gate 0-11), 8 pre-push gates, Sprint Flow (6 phases), and Delphi multi-expert review (>=90% consensus).",
|
|
6
6
|
"author": {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, exactly 3 experts with distinct executable model IDs). Supports design, requirements, and code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**6-phase** development pipeline (v2.0 compact redesign, Issue #290): PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE. Phase 3/6 BUILD default build mode is **ralph-loop** (REQ-level iteration, 40-67% token savings vs parallel). HARD-GATE between DESIGN (2/6) and BUILD (3/6): design must pass Delphi review (≥90% consensus) before any coding.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|
package/plugins/dsh/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@boyingliu01/dsh-plugin-xp-gate",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"description": "XP-Gate deterministic quality gates + AI workflow skills as a DeepSeek Harness (DSH) native plugin: gate-check / gate-principles / gate-arch tools + 12 SKILL.md skills",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, exactly 3 experts with distinct executable model IDs). Supports design, requirements, and code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**6-phase** development pipeline (v2.0 compact redesign, Issue #290): PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE. Phase 3/6 BUILD default build mode is **ralph-loop** (REQ-level iteration, 40-67% token savings vs parallel). HARD-GATE between DESIGN (2/6) and BUILD (3/6): design must pass Delphi review (≥90% consensus) before any coding.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, exactly 3 experts with distinct executable model IDs). Supports design, requirements, and code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**6-phase** development pipeline (v2.0 compact redesign, Issue #290): PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE. Phase 3/6 BUILD default build mode is **ralph-loop** (REQ-level iteration, 40-67% token savings vs parallel). HARD-GATE between DESIGN (2/6) and BUILD (3/6): design must pass Delphi review (≥90% consensus) before any coding.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xp-gate",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"displayName": "XP-Gate",
|
|
5
5
|
"description": "Extreme Programming quality gates + AI workflow skills for Qoder. Includes 12 pre-commit gates (Gate 0-11), 8 pre-push gates, Sprint Flow (6 phases), and Delphi multi-expert review (>=90% consensus).",
|
|
6
6
|
"author": {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, exactly 3 experts with distinct executable model IDs). Supports design, requirements, and code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**6-phase** development pipeline (v2.0 compact redesign, Issue #290): PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE. Phase 3/6 BUILD default build mode is **ralph-loop** (REQ-level iteration, 40-67% token savings vs parallel). HARD-GATE between DESIGN (2/6) and BUILD (3/6): design must pass Delphi review (≥90% consensus) before any coding.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|
package/principles/AGENTS.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# PRINCIPLES CHECKER MODULE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Clean Code & SOLID principles checker — **Gate 4** of pre-commit. 14 rules × 9 language adapters, SARIF 2.1.0 output. Houses the **Boy Scout Rule** enforcement engine (Gate 6) and warning-baseline storage.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, exactly 3 experts with distinct executable model IDs). Supports design, requirements, and code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**6-phase** development pipeline (v2.0 compact redesign, Issue #290): PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE. Phase 3/6 BUILD default build mode is **ralph-loop** (REQ-level iteration, 40-67% token savings vs parallel). HARD-GATE between DESIGN (2/6) and BUILD (3/6): design must pass Delphi review (≥90% consensus) before any coding.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-10-19
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** 88bfe6a6
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.
|
|
6
|
+
**Version:** 0.29.0.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|