kiro-spec-engine 1.47.26 → 1.47.28
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/docs/command-reference.md +10 -7
- package/lib/commands/auto.js +5 -4
- package/lib/commands/scene.js +12 -8
- package/package.json +1 -1
|
@@ -522,7 +522,7 @@ kse auto handoff plan --manifest ../331-poc/docs/handoffs/handoff-manifest.json
|
|
|
522
522
|
kse auto handoff queue --manifest ../331-poc/docs/handoffs/handoff-manifest.json --out .kiro/auto/handoff-goals.lines --json
|
|
523
523
|
kse auto handoff template-diff --manifest ../331-poc/docs/handoffs/handoff-manifest.json --json
|
|
524
524
|
kse auto handoff run --manifest ../331-poc/docs/handoffs/handoff-manifest.json --json
|
|
525
|
-
kse auto handoff run --manifest ../331-poc/docs/handoffs/handoff-manifest.json --
|
|
525
|
+
kse auto handoff run --manifest ../331-poc/docs/handoffs/handoff-manifest.json --min-spec-success-rate 95 --max-risk-level medium --json
|
|
526
526
|
kse auto handoff run --manifest ../331-poc/docs/handoffs/handoff-manifest.json --continue-from latest --continue-strategy auto --json
|
|
527
527
|
kse auto handoff regression --session-id latest --json
|
|
528
528
|
kse auto handoff regression --session-id latest --window 5 --json
|
|
@@ -765,15 +765,15 @@ Dual-track handoff integration:
|
|
|
765
765
|
- `kse auto handoff plan --manifest <path> [--out <path>] [--strict] [--strict-warnings] [--json]`: parse handoff manifest (source project, specs, templates, known gaps) and generate an executable KSE integration phase plan.
|
|
766
766
|
- `kse auto handoff queue --manifest <path> [--out <path>] [--append] [--no-include-known-gaps] [--dry-run] [--json]`: generate close-loop batch goal queue from handoff manifest and optionally persist line-based queue file (default `.kiro/auto/handoff-goals.lines`).
|
|
767
767
|
- `kse auto handoff template-diff --manifest <path> [--json]`: compare manifest templates against local template exports/registry and report `missing_in_local` and `extra_in_local`.
|
|
768
|
-
- `kse auto handoff run --manifest <path> [--out <path>] [--queue-out <path>] [--append] [--no-include-known-gaps] [--continue-from <session|latest|file>] [--continue-strategy <auto|pending|failed-only>] [--dry-run] [--strict] [--strict-warnings] [--no-dependency-batching] [--min-spec-success-rate <n>] [--max-risk-level <level>] [--require-ontology-validation] [--release-evidence-window <n>] [--json]`: execute handoff end-to-end (`plan -> queue -> close-loop-batch -> observability`) with automatic report archive to `.kiro/reports/handoff-runs/<session>.json`.
|
|
768
|
+
- `kse auto handoff run --manifest <path> [--out <path>] [--queue-out <path>] [--append] [--no-include-known-gaps] [--continue-from <session|latest|file>] [--continue-strategy <auto|pending|failed-only>] [--dry-run] [--strict] [--strict-warnings] [--no-dependency-batching] [--min-spec-success-rate <n>] [--max-risk-level <level>] [--no-require-ontology-validation] [--release-evidence-window <n>] [--json]`: execute handoff end-to-end (`plan -> queue -> close-loop-batch -> observability`) with automatic report archive to `.kiro/reports/handoff-runs/<session>.json`.
|
|
769
769
|
- Default mode is dependency-aware: spec integration goals are grouped into dependency batches and executed in topological order.
|
|
770
770
|
- `--continue-from` resumes pending goals from an existing handoff run report (`latest`, session id, or JSON file path). For safety, KSE enforces manifest-path consistency between the previous report and current run.
|
|
771
771
|
- `--continue-strategy auto|pending|failed-only` controls resumed scope. `auto` (default) derives the best strategy from prior run state (`pending` when unprocessed/planned goals exist, otherwise `failed-only` for pure failure replay).
|
|
772
772
|
- Non-dry runs auto-merge release evidence into `.kiro/reports/release-evidence/handoff-runs.json` with session-level gate/ontology/regression snapshots. Merge failures are recorded as warnings without aborting the run.
|
|
773
773
|
- `--release-evidence-window` controls trend snapshot window size (2-50, default `5`) used in merged release evidence (`latest_trend_window` and per-session `trend_window`).
|
|
774
774
|
- Run result includes `recommendations` with executable follow-up commands (for example, auto-generated `--continue-from <session>` on failed/incomplete batches).
|
|
775
|
-
- Gate defaults: `--min-spec-success-rate` defaults to `100`, `--max-risk-level` defaults to `high
|
|
776
|
-
-
|
|
775
|
+
- Gate defaults: `--min-spec-success-rate` defaults to `100`, `--max-risk-level` defaults to `high`, and ontology validation requirement is enabled by default.
|
|
776
|
+
- Use `--no-require-ontology-validation` only for emergency bypass; default behavior fails fast at precheck if manifest ontology evidence is missing or not passed.
|
|
777
777
|
- `kse auto handoff regression [--session-id <id|latest>] [--window <n>] [--format <json|markdown>] [--out <path>] [--json]`: compare one handoff run report with its previous run and output trend deltas (success-rate/risk/failed-goals/elapsed time).
|
|
778
778
|
- `--window` (2-50, default `2`) returns multi-run `series`, `window_trend`, and `aggregates` for broader regression visibility.
|
|
779
779
|
- Regression JSON now includes `risk_layers` (low/medium/high/unknown buckets with per-layer session list and quality aggregates).
|
|
@@ -836,10 +836,10 @@ kse scene template-render --package scene-erp --values '{"entity_name":"Order"}'
|
|
|
836
836
|
### Scene Package Batch Publish
|
|
837
837
|
|
|
838
838
|
```bash
|
|
839
|
-
# Publish scene package templates from a handoff manifest (default: completed specs only)
|
|
839
|
+
# Publish scene package templates from a handoff manifest (default: completed specs only + ontology validation required)
|
|
840
840
|
kse scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json --json
|
|
841
841
|
|
|
842
|
-
# Use 331-poc preset defaults (manifest/docs paths + completed filter)
|
|
842
|
+
# Use 331-poc preset defaults (manifest/docs paths + completed filter + ontology batch gate: avg>=70, valid-rate>=100%)
|
|
843
843
|
kse scene package-publish-batch --from-331 --json
|
|
844
844
|
|
|
845
845
|
# Preview batch publish plan without writing template files
|
|
@@ -854,7 +854,7 @@ kse scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json -
|
|
|
854
854
|
# Read specs from non-standard manifest path
|
|
855
855
|
kse scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json --manifest-spec-path handoff.spec_items --json
|
|
856
856
|
|
|
857
|
-
#
|
|
857
|
+
# Tighten per-spec ontology semantic quality threshold before publish
|
|
858
858
|
kse scene package-publish-batch --from-331 --require-ontology-validation --ontology-min-score 70 --json
|
|
859
859
|
|
|
860
860
|
# Persist ontology/publish batch report for governance tracking
|
|
@@ -863,6 +863,9 @@ kse scene package-publish-batch --from-331 --dry-run --ontology-report-out .kiro
|
|
|
863
863
|
# Enforce batch-level ontology portfolio gate (average score + valid-rate)
|
|
864
864
|
kse scene package-publish-batch --from-331 --dry-run --ontology-min-average-score 60 --ontology-min-valid-rate 90 --json
|
|
865
865
|
|
|
866
|
+
# Emergency bypass (not recommended): disable ontology validation requirement
|
|
867
|
+
kse scene package-publish-batch --manifest docs/handoffs/handoff-manifest.json --no-require-ontology-validation --json
|
|
868
|
+
|
|
866
869
|
# Export ontology remediation task draft markdown
|
|
867
870
|
kse scene package-publish-batch --from-331 --dry-run --ontology-task-out .kiro/reports/scene-package-ontology-task-draft.md --json
|
|
868
871
|
|
package/lib/commands/auto.js
CHANGED
|
@@ -1746,7 +1746,8 @@ function registerAutoCommands(program) {
|
|
|
1746
1746
|
.option('--min-ontology-score <n>', 'Gate: minimum ontology quality score (0-100, default: 0)', parseFloat)
|
|
1747
1747
|
.option('--max-unmapped-rules <n>', 'Gate: maximum allowed unmapped business rules (optional)', parseInt)
|
|
1748
1748
|
.option('--max-undecided-decisions <n>', 'Gate: maximum allowed undecided decisions (optional)', parseInt)
|
|
1749
|
-
.option('--require-ontology-validation', 'Gate: require manifest ontology_validation to be present and passed')
|
|
1749
|
+
.option('--require-ontology-validation', 'Gate: require manifest ontology_validation to be present and passed (default: enabled)')
|
|
1750
|
+
.option('--no-require-ontology-validation', 'Gate: disable manifest ontology_validation requirement (not recommended)')
|
|
1750
1751
|
.option('--release-evidence-window <n>', 'Release evidence trend window size (2-50, default: 5)', parseInt)
|
|
1751
1752
|
.option('--json', 'Output machine-readable JSON')
|
|
1752
1753
|
.action(async (options) => {
|
|
@@ -9403,7 +9404,7 @@ function buildAutoHandoffRunPolicy(options = {}) {
|
|
|
9403
9404
|
options.maxUndecidedDecisions,
|
|
9404
9405
|
'--max-undecided-decisions'
|
|
9405
9406
|
),
|
|
9406
|
-
require_ontology_validation:
|
|
9407
|
+
require_ontology_validation: options.requireOntologyValidation !== false,
|
|
9407
9408
|
dependency_batching: options.dependencyBatching !== false,
|
|
9408
9409
|
release_evidence_window: normalizeHandoffReleaseEvidenceWindow(options.releaseEvidenceWindow)
|
|
9409
9410
|
};
|
|
@@ -9781,7 +9782,7 @@ function evaluateAutoHandoffRunGates(context = {}) {
|
|
|
9781
9782
|
min_ontology_score: 0,
|
|
9782
9783
|
max_unmapped_rules: null,
|
|
9783
9784
|
max_undecided_decisions: null,
|
|
9784
|
-
require_ontology_validation:
|
|
9785
|
+
require_ontology_validation: true
|
|
9785
9786
|
};
|
|
9786
9787
|
const dryRun = Boolean(context.dryRun);
|
|
9787
9788
|
const specStatus = context.specStatus || {
|
|
@@ -9896,7 +9897,7 @@ function buildAutoHandoffRunRecommendations(projectPath, result) {
|
|
|
9896
9897
|
) {
|
|
9897
9898
|
push(
|
|
9898
9899
|
`Ensure manifest ontology_validation is present and passed, then rerun: ` +
|
|
9899
|
-
`kse auto handoff run --manifest ${manifestCli} --
|
|
9900
|
+
`kse auto handoff run --manifest ${manifestCli} --json`
|
|
9900
9901
|
);
|
|
9901
9902
|
if (result.error.toLowerCase().includes('ontology_quality_score')) {
|
|
9902
9903
|
push(`kse auto handoff run --manifest ${manifestCli} --min-ontology-score 80 --json`);
|
package/lib/commands/scene.js
CHANGED
|
@@ -60,6 +60,8 @@ const SCENE_PACKAGE_KINDS = new Set([
|
|
|
60
60
|
const SCENE_PACKAGE_RISK_LEVELS = new Set(['low', 'medium', 'high', 'critical']);
|
|
61
61
|
const SCENE_PACKAGE_TEMPLATE_API_VERSION = 'kse.scene.template/v0.1';
|
|
62
62
|
const SCENE_PACKAGE_TEMPLATE_DEFAULT_DIR = '.kiro/templates/scene-packages';
|
|
63
|
+
const SCENE_PACKAGE_BATCH_DEFAULT_ONTOLOGY_MIN_AVERAGE_SCORE = 70;
|
|
64
|
+
const SCENE_PACKAGE_BATCH_DEFAULT_ONTOLOGY_MIN_VALID_RATE = 100;
|
|
63
65
|
const SCENE_PACKAGE_GATE_API_VERSION = 'kse.scene.package-gate/v0.1';
|
|
64
66
|
const SCENE_PACKAGE_GATE_TEMPLATE_PROFILES = new Set(['baseline', 'three-layer']);
|
|
65
67
|
const SCENE_PACKAGE_KIND_LAYER_MAP = Object.freeze({
|
|
@@ -399,7 +401,8 @@ function registerSceneCommands(program) {
|
|
|
399
401
|
.option('--scene-manifest <relative-path>', 'Scene manifest path inside source spec', 'custom/scene.yaml')
|
|
400
402
|
.option('--out-dir <path>', 'Template library output root', SCENE_PACKAGE_TEMPLATE_DEFAULT_DIR)
|
|
401
403
|
.option('--template-id <template-id>', 'Explicit template id (folder name)')
|
|
402
|
-
.option('--require-ontology-validation', 'Require ontology graph validation before publish')
|
|
404
|
+
.option('--require-ontology-validation', 'Require ontology graph validation before publish (default: enabled)')
|
|
405
|
+
.option('--no-require-ontology-validation', 'Allow publish when ontology graph validation fails (not recommended)')
|
|
403
406
|
.option('--ontology-min-score <number>', 'Minimum ontology semantic quality score (0-100)')
|
|
404
407
|
.option('--dry-run', 'Preview publish without writing files')
|
|
405
408
|
.option('--force', 'Overwrite existing template directory if it already exists')
|
|
@@ -418,10 +421,11 @@ function registerSceneCommands(program) {
|
|
|
418
421
|
.option('--include <specs>', 'Comma-separated spec IDs to include')
|
|
419
422
|
.option('--fallback-spec-package <relative-path>', 'Fallback package path inside spec')
|
|
420
423
|
.option('--fallback-scene-manifest <relative-path>', 'Fallback scene manifest path inside spec')
|
|
421
|
-
.option('--require-ontology-validation', 'Require ontology graph validation before publish')
|
|
424
|
+
.option('--require-ontology-validation', 'Require ontology graph validation before publish (default: enabled)')
|
|
425
|
+
.option('--no-require-ontology-validation', 'Allow publish when ontology graph validation fails (not recommended)')
|
|
422
426
|
.option('--ontology-min-score <number>', 'Minimum ontology semantic quality score (0-100)')
|
|
423
|
-
.option('--ontology-min-average-score <number>',
|
|
424
|
-
.option('--ontology-min-valid-rate <number>',
|
|
427
|
+
.option('--ontology-min-average-score <number>', `Minimum ontology average score for selected batch (0-100, default with --from-331: ${SCENE_PACKAGE_BATCH_DEFAULT_ONTOLOGY_MIN_AVERAGE_SCORE})`)
|
|
428
|
+
.option('--ontology-min-valid-rate <number>', `Minimum ontology graph-valid rate for selected batch (0-100, default with --from-331: ${SCENE_PACKAGE_BATCH_DEFAULT_ONTOLOGY_MIN_VALID_RATE})`)
|
|
425
429
|
.option('--ontology-report-out <path>', 'Write ontology/publish batch report JSON to file')
|
|
426
430
|
.option('--ontology-task-out <path>', 'Write ontology remediation task draft markdown to file')
|
|
427
431
|
.option('--ontology-task-queue-out <path>', 'Write ontology remediation queue lines for close-loop-batch')
|
|
@@ -1190,7 +1194,7 @@ function normalizeScenePackagePublishOptions(options = {}) {
|
|
|
1190
1194
|
sceneManifest: normalizeRelativePath(options.sceneManifest || 'custom/scene.yaml') || 'custom/scene.yaml',
|
|
1191
1195
|
outDir: options.outDir ? String(options.outDir).trim() : SCENE_PACKAGE_TEMPLATE_DEFAULT_DIR,
|
|
1192
1196
|
templateId: options.templateId ? String(options.templateId).trim() : undefined,
|
|
1193
|
-
requireOntologyValidation: options.requireOntologyValidation
|
|
1197
|
+
requireOntologyValidation: options.requireOntologyValidation !== false,
|
|
1194
1198
|
ontologyMinScore: options.ontologyMinScore === undefined || options.ontologyMinScore === null || options.ontologyMinScore === ''
|
|
1195
1199
|
? null
|
|
1196
1200
|
: Number(options.ontologyMinScore),
|
|
@@ -1218,15 +1222,15 @@ function normalizeScenePackagePublishBatchOptions(options = {}) {
|
|
|
1218
1222
|
.filter((item) => item.length > 0),
|
|
1219
1223
|
fallbackSpecPackage: normalizeRelativePath(options.fallbackSpecPackage || fallbackSpecPackageDefault) || fallbackSpecPackageDefault,
|
|
1220
1224
|
fallbackSceneManifest: normalizeRelativePath(options.fallbackSceneManifest || fallbackSceneManifestDefault) || fallbackSceneManifestDefault,
|
|
1221
|
-
requireOntologyValidation: options.requireOntologyValidation
|
|
1225
|
+
requireOntologyValidation: options.requireOntologyValidation !== false,
|
|
1222
1226
|
ontologyMinScore: options.ontologyMinScore === undefined || options.ontologyMinScore === null || options.ontologyMinScore === ''
|
|
1223
1227
|
? null
|
|
1224
1228
|
: Number(options.ontologyMinScore),
|
|
1225
1229
|
ontologyMinAverageScore: options.ontologyMinAverageScore === undefined || options.ontologyMinAverageScore === null || options.ontologyMinAverageScore === ''
|
|
1226
|
-
? null
|
|
1230
|
+
? (from331 ? SCENE_PACKAGE_BATCH_DEFAULT_ONTOLOGY_MIN_AVERAGE_SCORE : null)
|
|
1227
1231
|
: Number(options.ontologyMinAverageScore),
|
|
1228
1232
|
ontologyMinValidRate: options.ontologyMinValidRate === undefined || options.ontologyMinValidRate === null || options.ontologyMinValidRate === ''
|
|
1229
|
-
? null
|
|
1233
|
+
? (from331 ? SCENE_PACKAGE_BATCH_DEFAULT_ONTOLOGY_MIN_VALID_RATE : null)
|
|
1230
1234
|
: Number(options.ontologyMinValidRate),
|
|
1231
1235
|
ontologyReportOut: options.ontologyReportOut ? String(options.ontologyReportOut).trim() : undefined,
|
|
1232
1236
|
ontologyTaskOut: options.ontologyTaskOut ? String(options.ontologyTaskOut).trim() : undefined,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kiro-spec-engine",
|
|
3
|
-
"version": "1.47.
|
|
3
|
+
"version": "1.47.28",
|
|
4
4
|
"description": "kiro-spec-engine (kse) - A CLI tool and npm package for spec-driven development with AI coding assistants. NOT the Kiro IDE desktop application.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|