@ccoalm/ccl-skills 0.6.2 → 0.8.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/README.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/hooks.json +11 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/remind-unverified-cli-flag.sh +309 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_remind_unverified_cli_flag.sh +483 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/ccl-skills.ts +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/SKILL.md +10 -8
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/mobile-quality-release.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +16 -17
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/client-routing.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +195 -7
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/timeout-auth-and-capabilities.md +3 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/claude_review.sh +13 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/codex_review.sh +9 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_review.sh +9 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/normalize_review_timeout.sh +22 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/opencode_review.sh +9 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +1540 -129
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_claude_review_probe.sh +8 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_compat.py +76 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +1858 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_update_review_plan_intent.sh +789 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/update_review_plan_intent.py +513 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/SKILL.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/architecture-playbook.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/data-platform-architecture.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/event-driven-architecture.md +14 -11
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/multi-tenant-isolation.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/SKILL.md +5 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/SKILL.md +2 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/SKILL.md +13 -11
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/SKILL.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/async-lifecycle-and-performance.md +72 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/runtime-and-project-contract.md +58 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/source-map.md +41 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/verification-diagnostics-and-security.md +63 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/SKILL.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/sli-slo-design.md +25 -9
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/source-register.md +1 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/SKILL.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/promotion-gate-and-review.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/secret-and-config-management.md +7 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/retry-timeout-circuit-breaker.md +11 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md +8 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-routing-and-readiness.md +10 -14
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/verify-developer-experience.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/SKILL.md +135 -86
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/behavioral-aesthetic-logic.md +66 -80
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/delivery-contract.md +275 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-execution-checklist.md +88 -214
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-impl-naming-and-versioning.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-intake-and-acceptance.md +10 -8
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-system-source-of-truth.md +4 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/external-ui-ux-quality-benchmarks.md +112 -95
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/frontend-code-evidence-map.md +30 -21
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/interaction-design-patterns.md +22 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/layout-recipes-and-screenshot-acceptance.md +20 -17
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-project-token-consistency.md +7 -9
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-stack-strategy.md +14 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/operational-processing-workflows.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/platform-mobile-patterns.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-lifecycle-acceptance-and-iteration.md +9 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-surface-patterns.md +3 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/source-map.md +37 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/tokens-and-components.md +7 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-audit.md +8 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-design-development.md +16 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/visual-craft.md +4 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/SKILL.md +5 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/architecture-playbook.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/audit-history-architecture.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/data-platform-architecture.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/event-driven-architecture.md +7 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/multi-tenant-isolation.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/notification-architecture.md +28 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/packaging-runtime-readiness.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/replay-comparison-architecture.md +28 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/workflow-state-architecture.md +39 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/SKILL.md +10 -7
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/ai-service-wiring-patterns.md +8 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/audit-history-patterns.md +29 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/background-job-patterns.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/batch-and-artifact-patterns.md +25 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/notification-patterns.md +40 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/public-api-security-patterns.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/replay-comparison-patterns.md +30 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/state-machine-task-patterns.md +48 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/testing-and-quality-patterns.md +10 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/SKILL.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md +4 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/coverage-exhaustion-traps.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md +142 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md +21 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-quickstart.md +11 -9
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/firing-point-placement.md +8 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/parallel-stack-references-pattern.md +5 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/r0-leakage-audit.md +102 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +69 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-to-skill-extraction.md +10 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/uiux-judgment-extraction.md +6 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/validation-and-landing.md +4 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-ccl-skills.sh +93 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-parallel-stack-parity.sh +119 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/extraction_review_gate.sh +22 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +49 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/obligation-ledger.py +2748 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/register-firing-path-resolution.rb +20 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/shared_git_surface_gate.py +1142 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_parallel_stack_parity.sh +183 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh +19 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_skill_catalog.sh +41 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_ci_checkout_ref_binding.sh +120 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_entrypoint_domain_scan_terms.sh +82 -8
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_extraction_review_gate.sh +336 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_self_adjudication.sh +82 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_obligation_ledger.sh +1416 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_obligation_ledger_repo_audit.sh +57 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_wiring.sh +141 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_pointer_integrity.sh +3 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_shared_git_surface_gate.sh +1696 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_uiux_delivery_contract.sh +2117 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_uiux_loading_budget.sh +316 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_extraction_review_state.sh +1176 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_cross_refs.sh +31 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate-skill.sh +9 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate_extraction_review_state.py +980 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/SKILL.md +9 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/SKILL.md +11 -11
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/client-runtime-test-matrices.md +10 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/fitness-functions.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/scenario-testing.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-code-authoring-patterns.md +16 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/SKILL.md +5 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/delivery-face-closeout.md +16 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/self-benchmark-baseline.md +37 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/SKILL.md +7 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/complex-workspace-patterns.md +1 -1
- package/dist/assets/release.json +275 -105
- package/package.json +1 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# check-parallel-stack-parity.sh — cross-file parity gate for parallel-stack mirrored references.
|
|
3
|
+
#
|
|
4
|
+
# The parallel-stack pattern (references/parallel-stack-references-pattern.md) requires the
|
|
5
|
+
# mirrored region of each sibling pair — everything from the exact heading line
|
|
6
|
+
# "## When this applies / does not apply" up to the stack-specific
|
|
7
|
+
# "## <Stack>-specific implementation patterns" H2 — to be BYTE-IDENTICAL across the Python
|
|
8
|
+
# and Go trees. There is deliberately NO normalization: earlier versions rewrote routing
|
|
9
|
+
# references and sibling skill names before diffing, and two adversarial rounds each found a
|
|
10
|
+
# fresh way that lossy rewriting could mask real drift (second element of an or-list swapped,
|
|
11
|
+
# canonical pointer replaced by a mapped name, self-reference via name mapping). The
|
|
12
|
+
# capability was removed rather than patched again: routing text that legitimately differs
|
|
13
|
+
# per tree is written INTO the mirrored region naming both trees inline —
|
|
14
|
+
# `x.md` (Python) / `y.md` (Go)
|
|
15
|
+
# — so both files carry the same bytes and a one-sided change is always drift.
|
|
16
|
+
#
|
|
17
|
+
# Marker integrity: each marker must match as an EXACT whole line, exactly once, in order.
|
|
18
|
+
# A missing, duplicated, or prefix-gamed heading is a malformed-markers verdict, never a
|
|
19
|
+
# silent ok. Residual accepted and documented: moving BOTH stop markers earlier in the same
|
|
20
|
+
# change shrinks the compared region symmetrically; that is a visible, reviewable contract
|
|
21
|
+
# edit in the diff, not something this gate can distinguish from a legitimate region change.
|
|
22
|
+
# The optional "## Topic-extension backlog" H2 after the stack-glue H2 is mirrored by
|
|
23
|
+
# convention but excluded from this strict gate (its section rule allows near-identical
|
|
24
|
+
# wording so it can name vendors/engines); keep it in sync by review.
|
|
25
|
+
#
|
|
26
|
+
# Exit codes: 0 = parity ok; 1 = drift / missing file / malformed markers (content verdict);
|
|
27
|
+
# 2 = infrastructure failure (this script could not run its own checks).
|
|
28
|
+
#
|
|
29
|
+
# Usage: check-parallel-stack-parity.sh [repo-root] (default: .)
|
|
30
|
+
set -euo pipefail
|
|
31
|
+
|
|
32
|
+
ROOT="${1:-.}"
|
|
33
|
+
PY_DIR="$ROOT/skills/python-service-architecture/references"
|
|
34
|
+
GO_DIR="$ROOT/skills/go-microservice-architecture/references"
|
|
35
|
+
|
|
36
|
+
START_MARKER="## When this applies / does not apply"
|
|
37
|
+
|
|
38
|
+
PAIRS=(
|
|
39
|
+
"event-driven-architecture.md"
|
|
40
|
+
"multi-tenant-isolation.md"
|
|
41
|
+
"data-platform-architecture.md"
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
# count_exact <file> <exact line> — prints the match count. Distinguishes grep's "no
|
|
45
|
+
# match" (rc 1, a legitimate count of 0) from a hard failure such as an unreadable file
|
|
46
|
+
# (rc >1), which must surface as infrastructure failure, never as a content verdict.
|
|
47
|
+
count_exact() {
|
|
48
|
+
local c rc
|
|
49
|
+
set +e; c=$(grep -cxF "$2" "$1"); rc=$?; set -e
|
|
50
|
+
case "$rc" in
|
|
51
|
+
0|1) printf '%s\n' "${c:-0}"; return 0 ;;
|
|
52
|
+
*) return 2 ;;
|
|
53
|
+
esac
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
# extract_mirrored <file> <stop-H2 exact line> <out-file>
|
|
57
|
+
# Writes the mirrored region to <out-file> BYTE-EXACTLY (a file, not a command
|
|
58
|
+
# substitution: $(...) strips trailing newlines, which let a trailing blank line before
|
|
59
|
+
# the stack-glue H2 diverge invisibly). Returns 1 on malformed markers (missing,
|
|
60
|
+
# duplicated, or out of order), 2 on infrastructure failure.
|
|
61
|
+
extract_mirrored() {
|
|
62
|
+
local file="$1" stop="$2" out="$3" starts stops start_line stop_line
|
|
63
|
+
starts=$(count_exact "$file" "$START_MARKER") || return 2
|
|
64
|
+
stops=$(count_exact "$file" "$stop") || return 2
|
|
65
|
+
if [ "$starts" -ne 1 ] || [ "$stops" -ne 1 ]; then
|
|
66
|
+
return 1
|
|
67
|
+
fi
|
|
68
|
+
start_line=$(grep -nxF "$START_MARKER" "$file" | head -1 | cut -d: -f1) || return 2
|
|
69
|
+
stop_line=$(grep -nxF "$stop" "$file" | head -1 | cut -d: -f1) || return 2
|
|
70
|
+
if [ "$start_line" -ge "$stop_line" ]; then
|
|
71
|
+
return 1
|
|
72
|
+
fi
|
|
73
|
+
sed -n "${start_line},$((stop_line - 1))p" "$file" > "$out" || return 2
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
WORK="$(mktemp -d "${TMPDIR:-/tmp}/stack-parity.XXXXXX")" || { echo "parity_infra: mktemp failed" >&2; exit 2; }
|
|
77
|
+
trap 'rm -rf "$WORK"' EXIT
|
|
78
|
+
|
|
79
|
+
fail=0
|
|
80
|
+
for f in "${PAIRS[@]}"; do
|
|
81
|
+
py="$PY_DIR/$f"
|
|
82
|
+
go="$GO_DIR/$f"
|
|
83
|
+
if [ ! -f "$py" ] || [ ! -f "$go" ]; then
|
|
84
|
+
echo "parity_missing_file: $f"
|
|
85
|
+
fail=1
|
|
86
|
+
continue
|
|
87
|
+
fi
|
|
88
|
+
py_out="$WORK/py-$f.txt"; go_out="$WORK/go-$f.txt"
|
|
89
|
+
rc=0; extract_mirrored "$py" "## Python-specific implementation patterns" "$py_out" || rc=$?
|
|
90
|
+
if [ "$rc" -eq 2 ]; then echo "parity_infra: $f (python side: grep/sed could not run)" >&2; exit 2; fi
|
|
91
|
+
if [ "$rc" -ne 0 ]; then
|
|
92
|
+
echo "parity_malformed_markers: $f (python side: start/stop heading missing, duplicated, not an exact heading line, or out of order)"
|
|
93
|
+
fail=1
|
|
94
|
+
continue
|
|
95
|
+
fi
|
|
96
|
+
rc=0; extract_mirrored "$go" "## Go-specific implementation patterns" "$go_out" || rc=$?
|
|
97
|
+
if [ "$rc" -eq 2 ]; then echo "parity_infra: $f (go side: grep/sed could not run)" >&2; exit 2; fi
|
|
98
|
+
if [ "$rc" -ne 0 ]; then
|
|
99
|
+
echo "parity_malformed_markers: $f (go side: start/stop heading missing, duplicated, not an exact heading line, or out of order)"
|
|
100
|
+
fail=1
|
|
101
|
+
continue
|
|
102
|
+
fi
|
|
103
|
+
if [ ! -s "$py_out" ] || [ ! -s "$go_out" ]; then
|
|
104
|
+
echo "parity_empty_mirrored_region: $f"
|
|
105
|
+
fail=1
|
|
106
|
+
continue
|
|
107
|
+
fi
|
|
108
|
+
if ! cmp -s "$py_out" "$go_out"; then
|
|
109
|
+
echo "parity_drift: $f"
|
|
110
|
+
diff "$py_out" "$go_out" | head -40 || true
|
|
111
|
+
fail=1
|
|
112
|
+
fi
|
|
113
|
+
done
|
|
114
|
+
|
|
115
|
+
if [ "$fail" -ne 0 ]; then
|
|
116
|
+
echo "parallel_stack_parity_FAIL"
|
|
117
|
+
exit 1
|
|
118
|
+
fi
|
|
119
|
+
echo "parallel_stack_parity_ok"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Extraction-owned autonomous review wrapper: one review plus two challenges.
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
|
|
6
|
+
CONTROLLER="$SCRIPT_DIR/../../code-review/scripts/review_gate.sh"
|
|
7
|
+
|
|
8
|
+
for arg in "$@"; do
|
|
9
|
+
case "$arg" in
|
|
10
|
+
--challenge-b*)
|
|
11
|
+
echo "extraction_review_gate_error: challenge budget is fixed at 2" >&2
|
|
12
|
+
exit 2
|
|
13
|
+
;;
|
|
14
|
+
esac
|
|
15
|
+
done
|
|
16
|
+
|
|
17
|
+
if [[ ! -x "$CONTROLLER" ]]; then
|
|
18
|
+
echo "extraction_review_gate_error: code-review controller is unavailable" >&2
|
|
19
|
+
exit 2
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
exec bash "$CONTROLLER" --challenge-budget 2 "$@"
|
|
@@ -132,6 +132,7 @@ upstream_owner_skills = %w[
|
|
|
132
132
|
llm-inference-integration
|
|
133
133
|
multi-agent-delegation
|
|
134
134
|
multi-perspective-research
|
|
135
|
+
nodejs-service-dev
|
|
135
136
|
platform-observability
|
|
136
137
|
platform-release-engineering
|
|
137
138
|
platform-service-connectivity
|
|
@@ -292,8 +293,10 @@ upstream = upstream.reject do |path|
|
|
|
292
293
|
rename_excused[path] = true if excused
|
|
293
294
|
excused
|
|
294
295
|
end
|
|
295
|
-
# The block runs when a selected owner changed (there is something to demand)
|
|
296
|
-
# when
|
|
296
|
+
# The block runs when a selected owner changed (there is something to demand),
|
|
297
|
+
# when any skill entrypoint changed (its description may owe routing-bank
|
|
298
|
+
# evidence), OR when the ledger itself changed (there is something to validate).
|
|
299
|
+
# It used to
|
|
297
300
|
# gate on `upstream.any?` alone, which is the demand side only — and that is the
|
|
298
301
|
# other half of the restored-owner hole: revert the owner and the range has no
|
|
299
302
|
# changed owner at all, so the entire row evaluation was skipped and the
|
|
@@ -303,7 +306,10 @@ end
|
|
|
303
306
|
# `eval/routing-tasks.jsonl` changes no owner package and need not touch the
|
|
304
307
|
# ledger, so without this the whole block — including the bank-evidence
|
|
305
308
|
# obligation written for exactly that change — was never entered.
|
|
306
|
-
|
|
309
|
+
routing_entrypoint_changed = changed_paths.any? do |path|
|
|
310
|
+
path.match?(%r{\Askills/[^/]+/SKILL\.md\z})
|
|
311
|
+
end
|
|
312
|
+
if upstream.any? || routing_entrypoint_changed || changed_paths.include?(LEDGER_PATH) || changed_paths.include?("eval/routing-tasks.jsonl")
|
|
307
313
|
# Rows are collected PER ROUND and carry the scope they were authored against,
|
|
308
314
|
# so the classifiers below judge a row against its own round's diff. Reading the
|
|
309
315
|
# cumulative register diff instead would re-judge every earlier round's rows
|
|
@@ -1564,6 +1570,13 @@ if upstream.any? || changed_paths.include?(LEDGER_PATH) || changed_paths.include
|
|
|
1564
1570
|
round_bounds.each do |span_base, span_head|
|
|
1565
1571
|
scope = scope_at.call(span_base, span_head)
|
|
1566
1572
|
scope_rows = rows.select { |row| row[:scope].head == span_head }
|
|
1573
|
+
# Routing-bank evidence applies to every skill description, not only to the
|
|
1574
|
+
# curated impact-chain owners. Keep a separate vocabulary for this one
|
|
1575
|
+
# obligation so broadening bank coverage cannot broaden the impact-chain
|
|
1576
|
+
# subject set or its row refusals.
|
|
1577
|
+
bank_owner_names = (
|
|
1578
|
+
owner_names_at.call(scope.base) + owner_names_at.call(scope.head)
|
|
1579
|
+
).uniq
|
|
1567
1580
|
# Same head-declared-grammar rule as `result-class` above, and for the same
|
|
1568
1581
|
# reason: the paragraph that defines `bank-evidence` also dates it.
|
|
1569
1582
|
next unless grammar_declared_at.call(scope.head)
|
|
@@ -1578,6 +1591,13 @@ if upstream.any? || changed_paths.include?(LEDGER_PATH) || changed_paths.include
|
|
|
1578
1591
|
# being silently outside the trigger because of how the owner set is built.
|
|
1579
1592
|
created_surfaces = scope.changed_paths.filter_map do |relative|
|
|
1580
1593
|
next unless relative.start_with?("skills/") && relative.end_with?("/SKILL.md")
|
|
1594
|
+
# This pickup covers both a brand-new entrypoint and an EXISTING
|
|
1595
|
+
# non-curated skill editing its description — both move the routing
|
|
1596
|
+
# surface. An earlier round bounded it to base-absent entrypoints
|
|
1597
|
+
# because non-curated obligations were undischargeable then; the
|
|
1598
|
+
# bank-only resolver below now binds rows over base+head skill names,
|
|
1599
|
+
# so the obligation is dischargeable and the bound would only reopen
|
|
1600
|
+
# the evidence-free description-edit hole.
|
|
1581
1601
|
path = relative.sub(%r{\Askills/}, "")
|
|
1582
1602
|
next if triggered_owners.include?(path)
|
|
1583
1603
|
next unless description_touched.call(scope, path)
|
|
@@ -1623,7 +1643,31 @@ if upstream.any? || changed_paths.include?(LEDGER_PATH) || changed_paths.include
|
|
|
1623
1643
|
end
|
|
1624
1644
|
triggered_owners.each do |path|
|
|
1625
1645
|
owner = path.sub(%r{/SKILL\.md\z}, "")
|
|
1626
|
-
owner_scope_rows =
|
|
1646
|
+
owner_scope_rows =
|
|
1647
|
+
if upstream_set[path] || lineage_extra[path]
|
|
1648
|
+
# Preserve the existing selected-owner resolver byte-for-byte: bank
|
|
1649
|
+
# coverage must not weaken or widen impact-chain attribution.
|
|
1650
|
+
rows_by_upstream_path[path].select { |row| row[:scope].head == scope.head }
|
|
1651
|
+
else
|
|
1652
|
+
# Mirror that resolver for bank-only owners. Declaring rows use the
|
|
1653
|
+
# owner-package prefix convention; non-declaring rows keep the prior
|
|
1654
|
+
# exact `<owner>/SKILL.md` convention. A row naming more than one owner
|
|
1655
|
+
# satisfies none of them, so one locator cannot discharge two routing
|
|
1656
|
+
# surfaces.
|
|
1657
|
+
scope_rows.select do |row|
|
|
1658
|
+
declares_impact_chain = row[:behavior].split(";").any? do |fragment|
|
|
1659
|
+
fragment.match?(/\A\s*behavioral-evidence:/i)
|
|
1660
|
+
end
|
|
1661
|
+
candidate_names =
|
|
1662
|
+
if declares_impact_chain
|
|
1663
|
+
bank_owner_names.select { |name| owner_mentioned.call(row[:evidence], name) }
|
|
1664
|
+
else
|
|
1665
|
+
row[:evidence].scan(owner_skill_md_path).flatten.uniq
|
|
1666
|
+
.select { |name| bank_owner_names.include?(name) }
|
|
1667
|
+
end
|
|
1668
|
+
candidate_names == [owner]
|
|
1669
|
+
end
|
|
1670
|
+
end
|
|
1627
1671
|
bank_evidence_failures << path unless owner_scope_rows.any? { |row| row_satisfies.call(row, owner) }
|
|
1628
1672
|
end
|
|
1629
1673
|
if bank_changed
|
|
@@ -1637,6 +1681,7 @@ if upstream.any? || changed_paths.include?(LEDGER_PATH) || changed_paths.include
|
|
|
1637
1681
|
warn "impact_chain_bank_evidence_missing: a round that changed the routing surface carries no bank evidence for that owner"
|
|
1638
1682
|
warn " note: the routing surface is the SKILL.md frontmatter `description` entry and `#{bank_relative}`. The measurement protocol says it is mandatory, but nothing produced or consumed it, so not running it left no absence to detect — the reviewer saw a candidate, not a gap"
|
|
1639
1683
|
warn " fix: add `bank-evidence: command:<changed executable>` or `bank-evidence: file:<changed markdown>#<unique anchor>` to that owner's row; to skip the run deliberately use `bank-evidence: downscoped:<token>` and record the same token in this round's spec, so the downscope is itself an artifact"
|
|
1684
|
+
warn " note: a row without a `behavioral-evidence:` fragment attributes to its owner only via a bare `<owner>/SKILL.md` citation in the evidence cell — the full `skills/<owner>/SKILL.md` spelling is reserved for locators and does NOT attribute, so a row that looks like valid evidence but cites only the full path never reaches the owner"
|
|
1640
1685
|
bank_evidence_failures.each { |path| warn " owes bank evidence: #{path}" }
|
|
1641
1686
|
exit 1
|
|
1642
1687
|
end
|