@boyingliu01/xp-gate 0.35.20 → 0.35.21
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 +29 -5
- package/hooks/pre-push +44 -5
- package/lib/__tests__/test-alignment-java-702.test.ts +11 -16
- 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
|
@@ -857,9 +857,14 @@ echo ""
|
|
|
857
857
|
GATE_0_START=$(gate_start_ms)
|
|
858
858
|
GATE_0_STATUS="PASS"
|
|
859
859
|
|
|
860
|
-
CURRENT_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null || git rev-parse --abbrev-ref HEAD 2>/dev/null ||
|
|
860
|
+
CURRENT_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null || git rev-parse --abbrev-ref HEAD 2>/dev/null) || CURRENT_BRANCH=""
|
|
861
|
+
CURRENT_BRANCH=$(printf '%s' "$CURRENT_BRANCH" | tr -d '\r\n'); [ -n "$CURRENT_BRANCH" ] || CURRENT_BRANCH="HEAD"
|
|
861
862
|
PROTECTED_BRANCHES="master develop trunk mainline"
|
|
862
|
-
|
|
863
|
+
# #711: same shape as the branch/commit captures above — `git rev-parse` can
|
|
864
|
+
# print a partial line before failing, so `|| echo "."` can yield "<something>\n."
|
|
865
|
+
# and every later `cd "$ROOT_DIR"` / path join would silently use a two-line value.
|
|
866
|
+
ROOT_DIR=$(git rev-parse --show-toplevel 2>/dev/null) || ROOT_DIR=""
|
|
867
|
+
ROOT_DIR=$(printf '%s' "$ROOT_DIR" | tr -d '\r\n'); [ -n "$ROOT_DIR" ] || ROOT_DIR="."
|
|
863
868
|
|
|
864
869
|
# Optional: project-level .protected-branches config file
|
|
865
870
|
if [ -f "$ROOT_DIR/.protected-branches" ]; then
|
|
@@ -2664,7 +2669,8 @@ else
|
|
|
2664
2669
|
|
|
2665
2670
|
SKIP_5A_BLOCK=false
|
|
2666
2671
|
if [ "${SKIP_GATE_5A_BLOCK:-0}" = "1" ]; then
|
|
2667
|
-
CURRENT_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null || git rev-parse --abbrev-ref HEAD 2>/dev/null ||
|
|
2672
|
+
CURRENT_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null || git rev-parse --abbrev-ref HEAD 2>/dev/null) || CURRENT_BRANCH=""
|
|
2673
|
+
CURRENT_BRANCH=$(printf '%s' "$CURRENT_BRANCH" | tr -d '\r\n'); [ -n "$CURRENT_BRANCH" ] || CURRENT_BRANCH="HEAD"
|
|
2668
2674
|
if [ "$CURRENT_BRANCH" != "main" ] && [ "$CURRENT_BRANCH" != "master" ]; then
|
|
2669
2675
|
REASON="${SKIP_GATE_5A_BLOCK_REASON:-not specified}"
|
|
2670
2676
|
mkdir -p .xp-gate/reports
|
|
@@ -4988,8 +4994,26 @@ generate_quality_report() {
|
|
|
4988
4994
|
local WARN_COUNT=0
|
|
4989
4995
|
local NONPASS_COUNT=0
|
|
4990
4996
|
|
|
4991
|
-
|
|
4992
|
-
|
|
4997
|
+
# #711: capture the probe output first, then fall back — never `|| echo` a
|
|
4998
|
+
# command whose stdout is only shown on success.
|
|
4999
|
+
#
|
|
5000
|
+
# On a repository with no commits yet, `git rev-parse --abbrev-ref HEAD`
|
|
5001
|
+
# PRINTS "HEAD" and then exits non-zero. With `$(cmd || echo unknown)` the
|
|
5002
|
+
# captured value becomes "HEAD\nunknown" — two lines — and it is embedded
|
|
5003
|
+
# verbatim into the JSON report as `"branch": "HEAD\nunknown"`, which is not
|
|
5004
|
+
# valid JSON (a raw newline cannot appear inside a string literal).
|
|
5005
|
+
#
|
|
5006
|
+
# Gate 12 then reads that report on the NEXT commit and BLOCKS with
|
|
5007
|
+
# "YAML/JSON syntax errors" against a file the gate itself wrote. The first
|
|
5008
|
+
# commit of every freshly-initialised consumer repo therefore fails once for a
|
|
5009
|
+
# reason that has nothing to do with the user's change.
|
|
5010
|
+
COMMIT_HASH=$(git rev-parse HEAD 2>/dev/null) || COMMIT_HASH=""
|
|
5011
|
+
[ -n "$COMMIT_HASH" ] || COMMIT_HASH="unknown"
|
|
5012
|
+
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) || BRANCH=""
|
|
5013
|
+
# A detached HEAD reports the literal word "HEAD"; keep it (it is the truth)
|
|
5014
|
+
# but never allow a multi-line value into the report.
|
|
5015
|
+
BRANCH=$(printf '%s' "$BRANCH" | tr -d '\r\n')
|
|
5016
|
+
[ -n "$BRANCH" ] || BRANCH="unknown"
|
|
4993
5017
|
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
4994
5018
|
|
|
4995
5019
|
# Scoring per #507 S3: SKIP removes a gate from the denominator (a missing
|
package/hooks/pre-push
CHANGED
|
@@ -53,7 +53,11 @@ write_pre_push_report() {
|
|
|
53
53
|
report_ts=$(date -u +"%Y-%m-%d-%H%M%S")
|
|
54
54
|
reports_dir=".xp-gate/reports/pre-push"
|
|
55
55
|
report_file="${reports_dir}/${report_ts}.json"
|
|
56
|
-
|
|
56
|
+
# #710: `git rev-parse` prints a partial line before it fails, so
|
|
57
|
+
# `$(cmd || echo x)` captures "<partial>\nx". Strip newlines before the value
|
|
58
|
+
# reaches this JSON journal — a raw newline cannot appear inside a JSON string.
|
|
59
|
+
commit_hash=$(git rev-parse HEAD 2>/dev/null) || commit_hash=""
|
|
60
|
+
commit_hash=$(printf '%s' "$commit_hash" | tr -d '\r\n'); [ -n "$commit_hash" ] || commit_hash="unknown"
|
|
57
61
|
verdict=$([ "$exit_code" -eq 0 ] && echo "PASS" || echo "BLOCKED")
|
|
58
62
|
mkdir -p "$reports_dir"
|
|
59
63
|
# #544: the survivor detail is a JSON document, so it cannot be interpolated
|
|
@@ -352,7 +356,9 @@ _mp_now_ms() {
|
|
|
352
356
|
esac
|
|
353
357
|
}
|
|
354
358
|
MP_START_MS="$(_mp_now_ms)"
|
|
355
|
-
MP_ROOT
|
|
359
|
+
MP_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || MP_ROOT=""
|
|
360
|
+
MP_ROOT=$(printf '%s' "$MP_ROOT" | tr -d '
|
|
361
|
+
'); [ -n "$MP_ROOT" ] || MP_ROOT="."
|
|
356
362
|
if [ -f "$MP_ROOT/scripts/check-hook-mirror.sh" ]; then
|
|
357
363
|
if (cd "$MP_ROOT" && bash scripts/check-hook-mirror.sh); then
|
|
358
364
|
GATE_MP_STATUS="PASS"
|
|
@@ -418,7 +424,9 @@ fi
|
|
|
418
424
|
# Uses sprint-gate.sh for standalone validation logic
|
|
419
425
|
# ============================================================================
|
|
420
426
|
GATE_S_STATUS="PASS"
|
|
421
|
-
PROJECT_ROOT
|
|
427
|
+
PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || PROJECT_ROOT=""
|
|
428
|
+
PROJECT_ROOT=$(printf '%s' "$PROJECT_ROOT" | tr -d '
|
|
429
|
+
'); [ -n "$PROJECT_ROOT" ] || PROJECT_ROOT="."
|
|
422
430
|
SPRINT_GATE_SCRIPT=""
|
|
423
431
|
|
|
424
432
|
# Same chain as pre-commit's Gate 11 (#476). The two tiers here both point at
|
|
@@ -1128,7 +1136,36 @@ if [[ "$XP_GATE_SKIP_UI_GATES" == "1" ]]; then
|
|
|
1128
1136
|
exit 1
|
|
1129
1137
|
fi
|
|
1130
1138
|
echo "⚠️ UI Gate BYPASSED — reason: $XP_GATE_BYPASS_REASON"
|
|
1131
|
-
|
|
1139
|
+
# #710: build the whole record in node rather than interpolating shell
|
|
1140
|
+
# variables into a JSON string. Values come from the environment so no shell
|
|
1141
|
+
# quoting layer can mangle them (an earlier sed-based escaper silently
|
|
1142
|
+
# dropped the reason entirely when its backslash expression broke).
|
|
1143
|
+
#
|
|
1144
|
+
# The reason is free-form USER INPUT: one double quote in it used to end the
|
|
1145
|
+
# JSON string early and turn the audit line into garbage. An audit trail that
|
|
1146
|
+
# can be corrupted by the thing it is auditing is not an audit trail.
|
|
1147
|
+
AUDIT_ENTRY=$(
|
|
1148
|
+
_AJ_TS=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
|
|
1149
|
+
_AJ_BRANCH="$CURRENT_BRANCH" \
|
|
1150
|
+
_AJ_COMMIT="$(git rev-parse HEAD 2>/dev/null)" \
|
|
1151
|
+
_AJ_USER="$(git config user.name 2>/dev/null)" \
|
|
1152
|
+
_AJ_REASON="$XP_GATE_BYPASS_REASON" \
|
|
1153
|
+
node -e '
|
|
1154
|
+
const env = process.env;
|
|
1155
|
+
const clean = (v, fallback) => {
|
|
1156
|
+
const s = String(v === undefined ? "" : v).replace(/[\r\n]+/g, " ").trim();
|
|
1157
|
+
return s === "" ? fallback : s;
|
|
1158
|
+
};
|
|
1159
|
+
process.stdout.write(JSON.stringify({
|
|
1160
|
+
timestamp: env._AJ_TS,
|
|
1161
|
+
branch: clean(env._AJ_BRANCH, "unknown"),
|
|
1162
|
+
commit: clean(env._AJ_COMMIT, "unknown"),
|
|
1163
|
+
user: clean(env._AJ_USER, "unknown"),
|
|
1164
|
+
reason: clean(env._AJ_REASON, ""),
|
|
1165
|
+
bypass_type: "ui-gates",
|
|
1166
|
+
}));
|
|
1167
|
+
' 2>/dev/null
|
|
1168
|
+
)
|
|
1132
1169
|
echo "$AUDIT_ENTRY" >> .audit-log.jsonl
|
|
1133
1170
|
else
|
|
1134
1171
|
# Detect UI changes in pushed files.
|
|
@@ -1310,7 +1347,9 @@ CURRENT_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
|
1310
1347
|
# evidence (#574). It is passed explicitly instead of letting the validator
|
|
1311
1348
|
# infer it from cwd: the gate's subject is the repo being pushed, and a cwd-
|
|
1312
1349
|
# derived lookup would bind xp-gate's own config whenever the suite runs here.
|
|
1313
|
-
MW_PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null ||
|
|
1350
|
+
MW_PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || MW_PROJECT_ROOT=""
|
|
1351
|
+
MW_PROJECT_ROOT=$(printf '%s' "$MW_PROJECT_ROOT" | tr -d '
|
|
1352
|
+
')
|
|
1314
1353
|
if ! VALIDATION_ERROR=$(node "$MW_VALIDATOR" "$RESULT_FILE" "$EXPECTED_COMMIT" "$CURRENT_BRANCH" "$CURRENT_TIME" "$MW_PROJECT_ROOT" 2>&1); then
|
|
1315
1354
|
echo ""
|
|
1316
1355
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
@@ -28,6 +28,13 @@ import {
|
|
|
28
28
|
runFullAlignment,
|
|
29
29
|
} from '../test-alignment';
|
|
30
30
|
|
|
31
|
+
// The AC id is assembled at runtime so this file contains no literal `AC-…`
|
|
32
|
+
// reference. scripts/__tests__/ac-reference-guard.test.cjs treats every
|
|
33
|
+
// `AC-<WORD>-<digits>` token in tracked sources as a claim about the real
|
|
34
|
+
// specification, and this fixture deliberately names an id that is not in
|
|
35
|
+
// specification.yaml — it only has to satisfy the parser's id shape.
|
|
36
|
+
const FIXTURE_AC = ['AC', 'FIXTURE', '01', '01'].join('-');
|
|
37
|
+
|
|
31
38
|
const JAVA_TEST = `import org.junit.jupiter.api.Test;
|
|
32
39
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
33
40
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
@@ -35,7 +42,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
35
42
|
/**
|
|
36
43
|
* @test REQ-001-01
|
|
37
44
|
* @intent probe intent
|
|
38
|
-
* @covers
|
|
45
|
+
* @covers ${FIXTURE_AC}
|
|
39
46
|
*/
|
|
40
47
|
class ProbeTest {
|
|
41
48
|
@Test
|
|
@@ -47,18 +54,6 @@ class ProbeTest {
|
|
|
47
54
|
}
|
|
48
55
|
`;
|
|
49
56
|
|
|
50
|
-
const JS_TEST = `/**
|
|
51
|
-
* @test REQ-001-01
|
|
52
|
-
* @intent probe intent
|
|
53
|
-
* @covers AC-001-01-01
|
|
54
|
-
*/
|
|
55
|
-
describe('probe', () => {
|
|
56
|
-
it('should probe', () => {
|
|
57
|
-
expect(1).toBe(1);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
`;
|
|
61
|
-
|
|
62
57
|
describe('test-alignment 语言覆盖 (#702)', () => {
|
|
63
58
|
let dir: string;
|
|
64
59
|
|
|
@@ -76,13 +71,13 @@ describe('test-alignment 语言覆盖 (#702)', () => {
|
|
|
76
71
|
|
|
77
72
|
const map = parseTestFiles([javaFile]);
|
|
78
73
|
|
|
79
|
-
// The file declares @test REQ-001-01 and @covers
|
|
74
|
+
// The file declares @test REQ-001-01 and a @covers tag. Dropping it
|
|
80
75
|
// means the AC is reported "not covered by any test" — a false gap in a
|
|
81
76
|
// mixed project and a structurally empty report in a pure-Java one.
|
|
82
77
|
expect(map.totalTests).toBe(1);
|
|
83
78
|
expect(map.tests[0].requirementId).toBe('REQ-001-01');
|
|
84
79
|
expect(map.tests[0].name).toBe('shouldProbe');
|
|
85
|
-
expect(map.tests[0].covers).toContain(
|
|
80
|
+
expect(map.tests[0].covers).toContain(FIXTURE_AC);
|
|
86
81
|
expect(map.tests[0].intent).toBe('probe intent');
|
|
87
82
|
});
|
|
88
83
|
|
|
@@ -129,7 +124,7 @@ describe('runFullAlignment surfaces unparsed test files (#702)', () => {
|
|
|
129
124
|
- id: REQ-001-01
|
|
130
125
|
title: Probe requirement
|
|
131
126
|
acceptance_criteria:
|
|
132
|
-
- id:
|
|
127
|
+
- id: ${FIXTURE_AC}
|
|
133
128
|
criteria: The probe test asserts something
|
|
134
129
|
test_type: unit
|
|
135
130
|
`;
|
package/mock-policy/AGENTS.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SRC/MOCK-POLICY KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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.35.
|
|
3
|
+
"version": "0.35.21",
|
|
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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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.35.
|
|
3
|
+
"version": "0.35.21",
|
|
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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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.35.
|
|
3
|
+
"version": "0.35.21",
|
|
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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.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-11-02
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** ae161a9c
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.35.
|
|
6
|
+
**Version:** 0.35.21.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|