@ccoalm/ccl-skills 0.10.0 → 0.12.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/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +4 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +178 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +127 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/SKILL.md +2 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/SKILL.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/SKILL.md +1 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/SKILL.md +11 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/async-lifecycle-and-performance.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/source-map.md +1 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/delivery-lifecycle.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/dispatch-owner-skills.md +9 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/problem-resolution-and-learning.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/SKILL.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/tag-and-prod-pipeline-gate.md +9 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md +9 -9
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md +7 -23
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-quickstart.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/rule-consolidation.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +29 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-to-skill-extraction.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/validation-and-landing.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-ccl-skills.sh +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/contract-anchors.tsv +1 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +35 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/review_ledger_binding.py +817 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_impact_chain_refscripts.sh +81 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh +3 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_review_ledger_binding.sh +521 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_pointer_integrity.sh +41 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_extraction_review_state.sh +116 -9
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate_extraction_review_state.py +123 -32
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/SKILL.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/SKILL.md +9 -8
- package/dist/assets/release.json +47 -37
- package/package.json +1 -1
|
@@ -13,3 +13,4 @@ burn-rate-page-row-reference skills/platform-observability/references/sli-slo-de
|
|
|
13
13
|
coverage-tier-provenance skills/testing-strategy/references/test-code-authoring-patterns.md 60% acceptable / 75% commendable / 90% exemplary 分档 071-chainC-r1f4: externally verified coverage tiers (specs/071 source-verification)
|
|
14
14
|
pairwise-trigger-range skills/test-artifact-management/references/classical-test-design-techniques.md 2-way 累计触发 53–97% 071-chainC-r1f4: NIST SP 800-142 empirical range, externally verified (specs/071 source-verification)
|
|
15
15
|
bva-two-vs-three-value skills/test-artifact-management/references/classical-test-design-techniques.md 2-value(边界 + 下一格)和 3-value(边界 + 两侧) 071-chainC-r1f4: ISTQB v4 BVA variant definitions, externally verified (specs/071 source-verification)
|
|
16
|
+
merge-side-ledger-binding-failclosed skills/skill-extraction-workflow/scripts/review_ledger_binding.py return 0 if args.allow_unevaluated else 2 084-r4f1: the no-base fail-closed branch; flipping it to an unconditional 0 restores a gate that passes having checked nothing
|
|
@@ -1327,19 +1327,48 @@ if upstream.any? || routing_entrypoint_changed || changed_paths.include?(LEDGER_
|
|
|
1327
1327
|
# path is broken gets the firing-path message; every other failure shape
|
|
1328
1328
|
# gets the behavior-evidence message. (A declared wording-only row can
|
|
1329
1329
|
# never be a RED row, so no exclusion is needed here.)
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1330
|
+
# Name the OFFENDING ROWS, not just the owner. The owner-level `all?` above
|
|
1331
|
+
# means one bad row reddens the package, so an owner-only diagnostic sends the
|
|
1332
|
+
# author to inspect whichever row they were just writing — which is usually the
|
|
1333
|
+
# correct one. Observed: a round whose new row was fine failed because an
|
|
1334
|
+
# unrelated ALREADY-COMMITTED ledger row had been edited by an unbounded string
|
|
1335
|
+
# replace; the edit made that old row an added row of this round, so its own
|
|
1336
|
+
# original anchor no longer resolved here. Three iterations went into rewriting
|
|
1337
|
+
# the good anchor before the real offender was found by patching debug output
|
|
1338
|
+
# into this script. The row identity is what closes that gap.
|
|
1339
|
+
offending_rows = evaluated.each_index.select do |index|
|
|
1340
|
+
evaluated[index][:red_declared] && !evaluated[index][:firing_path_valid]
|
|
1341
|
+
end.map { |index| owner_rows[index] }
|
|
1342
|
+
if offending_rows.any?
|
|
1343
|
+
firing_path_failures << { path: path, rows: offending_rows }
|
|
1335
1344
|
else
|
|
1336
1345
|
behavior_failures << path
|
|
1337
1346
|
end
|
|
1338
1347
|
end
|
|
1348
|
+
# First cell of a ledger row, bounded: enough to recognise which row is meant
|
|
1349
|
+
# without dumping a multi-thousand-character evidence cell into the diagnostic.
|
|
1350
|
+
# This renders REPOSITORY TEXT a contributor controls onto a terminal/CI channel,
|
|
1351
|
+
# so it is scrubbed before it is printed, not merely bounded. C0/C1 controls,
|
|
1352
|
+
# bidi overrides, and zero-width characters can erase earlier output, restyle it,
|
|
1353
|
+
# or reorder the rendered row so the named offender is not the one a reader sees —
|
|
1354
|
+
# a length cap does nothing about any of that. Invalid bytes are replaced first so
|
|
1355
|
+
# the escape pass cannot raise on a malformed cell. Both reviewer lanes raised this
|
|
1356
|
+
# independently.
|
|
1357
|
+
CONTROL_OR_INVISIBLE = /[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202E\u2060-\u2064\u206A-\u206F\uFEFF]/.freeze
|
|
1358
|
+
row_label = lambda do |row|
|
|
1359
|
+
cell = row[:line].to_s.sub(/\A\+/, "").split("|")[1].to_s.strip
|
|
1360
|
+
cell = cell.empty? ? row[:line].to_s.strip : cell
|
|
1361
|
+
visible = cell.scrub("?").gsub(CONTROL_OR_INVISIBLE) { |ch| format("\\u%04X", ch.ord) }
|
|
1362
|
+
visible.length > 120 ? "#{visible[0, 117]}..." : visible
|
|
1363
|
+
end
|
|
1339
1364
|
unless firing_path_failures.empty?
|
|
1340
1365
|
warn "impact_chain_firing_path_missing: RED-baseline row has no owner-scoped firing path in this committed diff"
|
|
1341
1366
|
warn " fix: point to this owner with `firing-path: command:<changed repo executable>` or `firing-path: file:<changed markdown>#<unique token on a changed numbered/list rule with a normative action>`"
|
|
1342
|
-
|
|
1367
|
+
warn " note: the rows named below are the ones that failed — every RED row bound to an owner must resolve, so a row you did not intend to touch can redden the owner. If a named row is one you only EDITED, it became an added row of this round and its original anchor no longer resolves against this round's diff: restore that row rather than rewriting an anchor that was already correct."
|
|
1368
|
+
firing_path_failures.each do |entry|
|
|
1369
|
+
warn " incomplete: #{entry[:path]}"
|
|
1370
|
+
entry[:rows].each { |row| warn " offending row: #{row_label.call(row)}" }
|
|
1371
|
+
end
|
|
1343
1372
|
exit 1
|
|
1344
1373
|
end
|
|
1345
1374
|
unless behavior_failures.empty?
|