@ngockhoale/ukit 3.3.3 → 3.4.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.
Files changed (89) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/manifests/engineConformance.yaml +17 -1
  3. package/manifests/hostCapabilities.yaml +68 -1
  4. package/manifests/platform.full.yaml +138 -0
  5. package/manifests/platform.user.yaml +255 -3
  6. package/package.json +1 -1
  7. package/scripts/bench/subagent-orchestrator-corpus.mjs +275 -0
  8. package/scripts/bench/subagent-orchestrator-eval.mjs +565 -0
  9. package/scripts/probe/codex-capability-probe.mjs +169 -0
  10. package/src/cli/commands/doctor.js +168 -0
  11. package/src/cli/commands/indexTools.js +7 -0
  12. package/src/cli/commands/metrics.js +66 -2
  13. package/src/cli/commands/playbook.js +4 -4
  14. package/src/cli/commands/vm.js +49 -8
  15. package/src/core/agentRuntime/adapters.js +328 -27
  16. package/src/core/agentRuntime/artifacts.js +89 -0
  17. package/src/core/agentRuntime/context.js +345 -1
  18. package/src/core/agentRuntime/contract.js +296 -0
  19. package/src/core/agentRuntime/eventStore.js +176 -0
  20. package/src/core/agentRuntime/shadowRun.js +481 -5
  21. package/src/core/agentRuntime/telemetry.js +121 -0
  22. package/src/core/observability/emit/lifecycle.js +68 -1
  23. package/src/core/observability/emit/sessionBoot.js +393 -0
  24. package/src/core/observability/privacy/allowlist.js +10 -1
  25. package/src/core/observability/schema/registry.js +10 -0
  26. package/src/core/runtimeConfig.js +133 -0
  27. package/src/core/userPlaybooks.js +18 -3
  28. package/src/decision/registry.js +19 -0
  29. package/src/diagnostics/feedbackEvents.js +7 -4
  30. package/src/diagnostics/routeOutcomes.js +51 -6
  31. package/src/diagnostics/skillAccuracy.js +43 -3
  32. package/src/index/crossCheckMatrix.js +412 -0
  33. package/src/index/fixLoopEscalation.js +453 -0
  34. package/src/index/playbookRegistry.js +691 -0
  35. package/src/index/reviewPolicy.js +368 -0
  36. package/src/index/routeResolver.js +915 -0
  37. package/src/index/sessionHistoryExtractor.js +359 -0
  38. package/src/index/taskRouting.js +764 -581
  39. package/src/index/tierSelection.js +308 -0
  40. package/src/index/verificationMap.js +404 -0
  41. package/template_project/.claude/hooks/observability-emit.mjs +14 -0
  42. package/template_project/.claude/hooks/record-execution.mjs +19 -1
  43. package/template_project/.claude/hooks/skill-router.sh +691 -25
  44. package/template_project/.claude/hooks/verification-guard.sh +230 -1
  45. package/template_project/.claude/settings.json +2 -2
  46. package/template_project/.claude/ukit/index/cross-check-matrix.mjs +415 -0
  47. package/template_project/.claude/ukit/index/fix-loop-escalation.mjs +456 -0
  48. package/template_project/.claude/ukit/index/playbook-registry.mjs +690 -0
  49. package/template_project/.claude/ukit/index/review-panel-aggregate.mjs +20 -2
  50. package/template_project/.claude/ukit/index/review-policy.mjs +376 -0
  51. package/template_project/.claude/ukit/index/route-resolver.mjs +1059 -0
  52. package/template_project/.claude/ukit/index/route-task.mjs +1253 -846
  53. package/template_project/.claude/ukit/index/session-history-extractor.mjs +362 -0
  54. package/template_project/.claude/ukit/index/tier-selection.mjs +309 -0
  55. package/template_project/.claude/ukit/index/verification-map.mjs +403 -0
  56. package/template_project/.claude/ukit/index/worktree-sweep.mjs +195 -0
  57. package/template_project/.claude/ukit/runtime/execution-ledger.mjs +789 -11
  58. package/template_project/.claude/ukit/runtime/observability-emit.mjs +1102 -0
  59. package/template_project/.claude/ukit/runtime/reinject-context.mjs +9 -1
  60. package/template_project/.claude/ukit/runtime/resumable-run.mjs +149 -5
  61. package/template_project/.claude/ukit/runtime/stop-coordinator.mjs +323 -6
  62. package/template_project/.codex/README.md +8 -0
  63. package/template_project/.omp/hooks/pre/ukit-bridge.js +8 -1
  64. package/template_project/ukit/README.md +1 -1
  65. package/template_project/ukit/storage/config.json +20 -0
  66. package/template_user/playbooks/architecture-decision.md +28 -0
  67. package/template_user/playbooks/autonomous-run.md +43 -0
  68. package/template_user/playbooks/autopilot-full.md +59 -0
  69. package/template_user/playbooks/autopilot-stack.md +54 -0
  70. package/template_user/playbooks/babysit.md +39 -0
  71. package/template_user/playbooks/bug-fix.md +3 -1
  72. package/template_user/playbooks/{issue-implementation.md → feature-implementation.md} +4 -2
  73. package/template_user/playbooks/hillclimb.md +44 -0
  74. package/template_user/playbooks/investigation.md +21 -0
  75. package/template_user/playbooks/migration.md +21 -0
  76. package/template_user/playbooks/open-pr.md +48 -0
  77. package/template_user/playbooks/orchestrate.md +45 -0
  78. package/template_user/playbooks/performance.md +33 -0
  79. package/template_user/playbooks/prototype.md +28 -0
  80. package/template_user/playbooks/refactor.md +19 -0
  81. package/template_user/playbooks/release.md +28 -0
  82. package/template_user/playbooks/runtime-forensics.md +23 -0
  83. package/template_user/playbooks/session-pickup.md +31 -0
  84. package/template_user/playbooks/shipping.md +53 -0
  85. package/template_user/playbooks/skill-evaluation.md +48 -0
  86. package/template_user/playbooks/small-feature.md +20 -0
  87. package/template_user/playbooks/verification-map.json +153 -0
  88. package/template_user/playbooks/verification.md +22 -0
  89. package/template_user/playbooks/worktree-cleanup.md +37 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,44 @@
2
2
 
3
3
  All notable changes to UKit are documented here.
4
4
 
5
+ ## 3.4.0 - 2026-09-28
6
+
7
+ **Playbook system + subagent orchestrator.** Handoff cycles C84–C89 shipped the
8
+ full playbook backlog and the queued orchestrator blueprint:
9
+
10
+ - **24 playbooks shipped to `template_user/playbooks/`** — bug-fix, investigation,
11
+ small-feature, feature-implementation (renamed from issue-implementation),
12
+ refactor, performance, runtime-forensics, session-pickup, verification,
13
+ skill-evaluation, autonomous-run, architecture-decision, migration, release,
14
+ prototype + sub-playbooks (hillclimb, babysit, shipping, orchestrate,
15
+ autopilot-full, autopilot-stack, worktree-cleanup, open-pr) mapped onto
16
+ existing work-groups via `SUB_PLAYBOOK_WORKGROUP`. `ukit playbook show|list`
17
+ and `ukit playbook doctor` report all of them; manifest seeds keep installs
18
+ current.
19
+ - **Routing + measurement**: shared `routeResolver`/`playbookRegistry` twins
20
+ (byte-parity enforced), session-history extractor, verification-map table +
21
+ consumers, review-policy decision plane, cross-check depth, fix-loop
22
+ escalation (`debugLoopThreshold`), measured-reliability tier selection,
23
+ advisory-turn stop escape (waiting/no-change turns never mint write debt).
24
+ - **`ukit vm run`**: evidence-gated live lane for the Agent VM — real
25
+ VmEngine+supervisor execution gated behind `decisionRuntime.vm` stages
26
+ (off→shadow refuse; canary/default required), `lane:'live'` evidence records.
27
+ - **Subagent orchestrator (SO-001..007)**: frozen baseline corpus, `subagent.usage`
28
+ provenance telemetry (off-default, typed resource provenance, never invented
29
+ usage), TaskContract/ResultEnvelope validators + bounded artifact refs with
30
+ claim-level resolution, `probeSubagentCapabilities` host matrix (enforced /
31
+ advisory / unsupported), typed delegation advice in shadow, context manifest
32
+ builders (isolated/curated, `fork_unavailable` honest label), golden eval +
33
+ rollout verdict harness (INCOMPARABLE when evidence < 9-run floor).
34
+ - **Release-cluster contract (RCC-01)**: `docs/pstack/c82/RELEASE_CLUSTER_CONTRACT.md`
35
+ — `gh`/git-over-Bash fallbacks for every release step + the land-authorization
36
+ boundary (irreversible writes always ask; Codex gate is advisory).
37
+ - **`worktree-sweep.mjs`**: safety-gated stale-worktree reclamation
38
+ (enumerate → classify → no-uncommitted/no-active-run gates → remove safe only).
39
+
40
+ Note: `npm pack` budgets raised once for the wave (packed 3.03MB, unpacked
41
+ 9.88MB — attributed in `tests/integration/packageArtifact.test.js`).
42
+
5
43
  ## 3.3.3 - 2026-09-27
6
44
 
7
45
  Republish of 3.3.2 — npm staged-version E409 limbo (same content, version bump only).
@@ -17,6 +55,8 @@ Republish of 3.3.2 — npm staged-version E409 limbo (same content, version bump
17
55
 
18
56
  - **Self-improve `vmShadow` step (agent-VM driver D-04).** After diagnostics, each rate-limited `runSelfImprove` pass now runs one shadow-run per `planLibrary` reference plan via `agentRuntime/shadowRun.js` when `decisionRuntime.vm.stage` is `'shadow'` or higher — the first live-path caller that accumulates evidence for `PROMOTION_CRITERIA`. `off` → step `skipped` (`stage_off`), zero writes under `.ukit/storage/agent-runtime/`; driver missing, refusing, or throwing → step status `error`, the pass never throws and later steps still run.
19
57
 
58
+ - **`ukit vm run` — evidence-gated live lane (BL-031).** `src/cli/commands/vm.js` gains `run <planId>`: a real `VmEngine`+`createSupervisor` path (`runLivePlan` in `src/core/agentRuntime/shadowRun.js`) that launches RUN-node specs declaring the supervisor contract (`spec.command`/`spec.argv` — descriptive `spec.cmd` prose is never shelled out, it fails typed), relays supervised terminal outcomes into the engine, and appends one `lane:'live'` evidence record. Stage gate: `off` → `stage_off` refuse (zero writes); `shadow` → `live_stage_required` refuse — execution requires `canary`/`default`. BL-031 promotion bar is recorded verbatim (`REPLAY_PROMOTION_BAR`: promote only if the VM catches ≥1 defect the doc pipeline missed OR cuts cycle time ≥25% at equal verdicts); `buildReplayComparison`/`recordReplayComparison` write a `replay-comparison` record to the evidence store and `ukit vm evidence` prints its verdict verbatim — `promote()` stays the only stage-advance mechanism.
59
+
20
60
  ## 3.3.1 - 2026-09-27
21
61
 
22
62
  - **Republish of 3.3.0, content-identical.** npm staged 3.3.0 then returned E409 "previously staged version" on retry — same staged-limbo pattern as 3.0.11→3.0.12. Version bump only; parity verified below.
@@ -9,8 +9,24 @@
9
9
  # Consistency enforced by: tests/consistency/engineConformance.test.js
10
10
  version: 1
11
11
  routeParity:
12
- mechanism: shared-mirror # all engines route through the same route-task.mjs
12
+ mechanism: shared-resolver # one route-task.mjs/resolver serves all engines
13
13
  evidence: tests/consistency/engineConformance.test.js
14
+ # TASK-006 (BL-008): invocation is per-host — the file being shared never
15
+ # meant Codex auto-routes. Only hook hosts invoke it automatically; Codex's
16
+ # route is instruction-mediated (advisory), so no 'shared-mirror' auto-route
17
+ # claim survives here.
18
+ invocation:
19
+ claude-code: { mode: hook, note: 'hooks invoke route-task.mjs automatically on the routed events' }
20
+ codex: { mode: instruction, note: 'no hook surface; .codex/README.md instructs running route-task.mjs manually via the .codex/ukit symlink — advisory path' }
21
+ omp: { mode: hook, note: 'omp pre-hook bridge drives the same routing path' }
22
+ # TASK-006 (BL-008): the Codex advisory-fallback contract. On Codex every
23
+ # playbook-covered ask resolves to a measured live path or this advisory
24
+ # fallback — UKit never claims enforcement it lacks.
25
+ codexAdvisoryContract:
26
+ playbookFile: 'a routed playbookId resolves to the playbook file ~/.ukit/playbooks/<id>.md'
27
+ outcomeEnforcement: 'outcome records carry enforcement: advisory (emitted by TASK-005 emitters)'
28
+ ceiling: 'SHADOW/advisory — Codex caps at advisory; never a live-enforcement claim'
29
+ prohibition: 'no CX cell or surface may claim PROVEN LIVE'
14
30
  classes:
15
31
  host-enforced:
16
32
  description: hook can hard-block (PreToolUse deny, Stop gate, hook deadlines)
@@ -19,7 +19,7 @@ hosts:
19
19
  context-files: { state: tested, evidence: tests/integration/installPipeline.test.js }
20
20
  codex:
21
21
  skills: { state: observed, note: '.codex/skills mirror ships via install; no dedicated codex-skill test' }
22
- subagents: { state: unknown }
22
+ subagents: { state: observed, note: 'c84 probe: .codex/agents symlink ships and resolves to the 6 .claude/agents defs; host consumption unverifiable — no codex CLI on host (docs/pstack/c84/codex-capability-probe.md)' }
23
23
  hooks: { state: unknown }
24
24
  session-start-injection: { state: unknown }
25
25
  stop-gate: { state: unknown }
@@ -37,3 +37,70 @@ hosts:
37
37
  owner-file-injection: { state: unknown }
38
38
  settings-env: { state: observed, note: 'template_project/.omp/config.yml modelRoles reviewed by ompAgentParity' }
39
39
  context-files: { state: observed, note: 'omp consumes AGENTS.md/CLAUDE.md context layer; no dedicated test' }
40
+
41
+ # TASK-006 (BL-008): advisory-fallback contract for hosts without a hook
42
+ # surface. Task routing reaches Codex only instruction-mediately — the
43
+ # `.codex/ukit` symlink ships the shared route-task.mjs, but nothing invokes
44
+ # it automatically, so no codex capability cell may rise above what
45
+ # docs/pstack/c84/codex-capability-probe.md measured.
46
+ advisoryContract:
47
+ ceiling: 'SHADOW/advisory — codex cells stay ≤ observed unless a probe on a host with the codex CLI promotes them; never a live-enforcement claim'
48
+ outcomeEnforcement: 'codex-engine outcome records carry enforcement: advisory (emitted by TASK-005 emitters)'
49
+ note: 'codex hook/stop/session-start cells stay unknown; instruction-mediated routing via route-task.mjs is the only path and every outcome record on it carries enforcement: advisory — see manifests/engineConformance.yaml codexAdvisoryContract'
50
+
51
+ # TASK-C89-004 (SPEC §8 FR-06, §12): subagent-orchestration truth table —
52
+ # what each lane can actually do for a delegated child before lazy
53
+ # disclosure/tool scoping/fork is promised. Same manifest, second family;
54
+ # statuses are the probe vocabulary of probeSubagentCapabilities in
55
+ # src/core/agentRuntime/adapters.js:
56
+ # supported — UKit owns the mechanism or cited live evidence proves it
57
+ # advisory — a surface exists but UKit cannot bound host consumption
58
+ # unsupported — the capability does not exist on this lane (no host API)
59
+ # unverified — reachable in principle, unproven here (fixture-only or no
60
+ # declared live evidence); the only promotable class
61
+ # 'supported' cells require evidenceRef; all others require a note.
62
+ # The manifest records accumulated evidence; a bare runtime probe emits the
63
+ # same cells at default ('unverified' until live evidence is declared).
64
+ subagentOrchestration:
65
+ probe: 'src/core/agentRuntime/adapters.js probeSubagentCapabilities'
66
+ lanes:
67
+ claude-code:
68
+ spawn: { status: unverified, note: 'owned runner spawns via createSupervisor primitives on every lane; live host E2E not declared in-repo — never promoted from primitive presence' }
69
+ toolFiltering: { status: advisory, note: 'agent frontmatter tool lists are host-interpreted hints; UKit cannot bound the child tool surface' }
70
+ skillCatalog: { status: advisory, note: 'skill surface is host-scoped; per-child catalog subsetting is not a host API' }
71
+ agentCatalog: { status: advisory, note: 'host picks a named subagent from the shipped catalog; catalog contents are not subsettable' }
72
+ writeScope: { status: advisory, note: 'artifactDir bounds runner-owned artifact writes; arbitrary child fs writes are not scoped by UKit' }
73
+ modelBind: { status: advisory, note: 'agent frontmatter/modelRoles nominate a model; per-spawn binding is host-discretionary' }
74
+ fork: { status: unsupported, note: 'no host state-inheritance API; SPEC §12 fork_unavailable stands' }
75
+ usageCache: { status: advisory, note: 'subagent.usage provenance is observation-only; host provider usage/cache is not readable by UKit' }
76
+ completionSignal: { status: supported, evidenceRef: tests/core/agentRuntime/hostAdapters.test.js }
77
+ codex:
78
+ spawn: { status: unverified, note: 'same owned-runner primitives; live host E2E not declared in-repo' }
79
+ toolFiltering: { status: unsupported, note: 'no host tool-filtering API; deny rules are advisory text only (engineConformance codex host-enforced: degraded)' }
80
+ skillCatalog: { status: advisory, note: '.codex/skills mirror ships via install; host consumption unverifiable without codex CLI (docs/pstack/c84/codex-capability-probe.md)' }
81
+ agentCatalog: { status: advisory, note: '.codex/agents symlink resolves to the 6 .claude/agents defs; host consumption INCONCLUSIVE per C84 probe' }
82
+ writeScope: { status: unsupported, note: 'no host write-scope API exposed to UKit' }
83
+ modelBind: { status: unsupported, note: 'no host model-binding API exposed to UKit' }
84
+ fork: { status: unsupported, note: 'no host state-inheritance API; SPEC §12 fork_unavailable stands' }
85
+ usageCache: { status: unsupported, note: 'no provider usage/cache surface readable by UKit' }
86
+ completionSignal: { status: supported, evidenceRef: tests/core/agentRuntime/hostAdapters.test.js }
87
+ omp:
88
+ spawn: { status: unverified, note: 'same owned-runner primitives; live host E2E not declared in-repo' }
89
+ toolFiltering: { status: advisory, note: 'omp agent frontmatter is host-interpreted; UKit cannot bound the child tool surface' }
90
+ skillCatalog: { status: advisory, note: 'omp reads .claude/skills via the claude discovery provider; per-child subsetting is not a host API' }
91
+ agentCatalog: { status: advisory, note: 'omp subagent dispatch uses the shipped agent defs; catalog contents are not subsettable' }
92
+ writeScope: { status: advisory, note: 'artifactDir bounds runner-owned artifact writes; arbitrary child fs writes are not scoped by UKit' }
93
+ modelBind: { status: advisory, note: '.omp/config.yml modelRoles nominate tiers; per-spawn binding is host-discretionary' }
94
+ fork: { status: unsupported, note: 'no host state-inheritance API; SPEC §12 fork_unavailable stands' }
95
+ usageCache: { status: advisory, note: 'subagent.usage provenance is observation-only; host provider usage/cache is not readable by UKit' }
96
+ completionSignal: { status: supported, evidenceRef: tests/core/agentRuntime/hostAdapters.test.js }
97
+ owned-vm:
98
+ spawn: { status: supported, evidenceRef: tests/core/agentRuntime/shadowRun.test.js, note: 'runLivePlan launches spec.command RUN nodes through the real supervisor; lane gated at decisionRuntime.vm canary/default (src/cli/commands/vm.js)' }
99
+ toolFiltering: { status: unsupported, note: 'owned child is a bare subprocess — no tool schema to filter' }
100
+ skillCatalog: { status: unsupported, note: 'bare subprocess has no skill catalog to subset' }
101
+ agentCatalog: { status: unsupported, note: 'bare subprocess has no agent catalog to subset' }
102
+ writeScope: { status: advisory, note: 'artifactDir bounds runner-owned artifact writes; subprocess fs writes are not sandboxed' }
103
+ modelBind: { status: unsupported, note: 'subprocess child has no model surface to bind' }
104
+ fork: { status: unsupported, note: 'no state-inheritance surface; supervisor starts a fresh process, never a parent-context fork' }
105
+ usageCache: { status: unsupported, note: 'no provider usage/cache surface for a subprocess child' }
106
+ completionSignal: { status: supported, evidenceRef: tests/core/agentRuntime/shadowRun.test.js }
@@ -1381,6 +1381,22 @@ items:
1381
1381
  packs:
1382
1382
  - core
1383
1383
 
1384
+ # TASK-003 (FR-003): in-proc SessionStart/session_start chain step that
1385
+ # writes the session's execution.started record. The module itself is a
1386
+ # one-line delegate — the emit implementation ships inside
1387
+ # ukit-runtime-scripts (.claude/ukit/runtime/observability-emit.mjs).
1388
+ - id: hook-observability-emit-module
1389
+ type: hook
1390
+ sourceTemplate: .claude/hooks/observability-emit.mjs
1391
+ targetPath: .claude/hooks/observability-emit.mjs
1392
+ requires:
1393
+ - ukit-runtime-scripts
1394
+ mergeStrategy: overwrite_with_backup
1395
+ variables: []
1396
+ enabledByDefault: true
1397
+ packs:
1398
+ - core
1399
+
1384
1400
  - id: hook-handoff-model-guard
1385
1401
  type: hook
1386
1402
  sourceTemplate: .claude/hooks/handoff-model-guard.sh
@@ -1399,6 +1415,8 @@ items:
1399
1415
  requires:
1400
1416
  - ukit-index-route-catalog-script
1401
1417
  - ukit-runtime-scripts
1418
+ - ukit-index-route-resolver-script
1419
+ - ukit-index-tier-selection-script
1402
1420
  mergeStrategy: overwrite_with_backup
1403
1421
  variables: []
1404
1422
  enabledByDefault: true
@@ -1597,6 +1615,18 @@ items:
1597
1615
  packs:
1598
1616
  - core
1599
1617
 
1618
+ - id: ukit-index-worktree-sweep-script
1619
+ type: config
1620
+ sourceTemplate: .claude/ukit/index/worktree-sweep.mjs
1621
+ targetPath: .claude/ukit/index/worktree-sweep.mjs
1622
+ requires:
1623
+ - ukit-runtime-scripts
1624
+ mergeStrategy: overwrite_with_backup
1625
+ variables: []
1626
+ enabledByDefault: true
1627
+ packs:
1628
+ - core
1629
+
1600
1630
  - id: ukit-index-stale-spec-check-script
1601
1631
  type: config
1602
1632
  sourceTemplate: .claude/ukit/index/stale-spec-check.mjs
@@ -1728,6 +1758,109 @@ items:
1728
1758
  packs:
1729
1759
  - core
1730
1760
 
1761
+ - id: ukit-index-route-resolver-script
1762
+ type: config
1763
+ sourceTemplate: .claude/ukit/index/route-resolver.mjs
1764
+ targetPath: .claude/ukit/index/route-resolver.mjs
1765
+ requires:
1766
+ - ukit-index-core-lib
1767
+ - ukit-index-cache-utils-script
1768
+ - ukit-index-route-catalog-script
1769
+ - ukit-index-unic-gateway-script
1770
+ - ukit-index-unic-decision-script
1771
+ - ukit-index-session-history-extractor-script
1772
+ - ukit-index-extract-image-script
1773
+ mergeStrategy: overwrite_with_backup
1774
+ variables: []
1775
+ enabledByDefault: true
1776
+ packs:
1777
+ - core
1778
+
1779
+ - id: ukit-index-tier-selection-script
1780
+ type: config
1781
+ sourceTemplate: .claude/ukit/index/tier-selection.mjs
1782
+ targetPath: .claude/ukit/index/tier-selection.mjs
1783
+ mergeStrategy: overwrite_with_backup
1784
+ variables: []
1785
+ enabledByDefault: true
1786
+ packs:
1787
+ - core
1788
+
1789
+ - id: ukit-index-session-history-extractor-script
1790
+ type: config
1791
+ sourceTemplate: .claude/ukit/index/session-history-extractor.mjs
1792
+ targetPath: .claude/ukit/index/session-history-extractor.mjs
1793
+ mergeStrategy: overwrite_with_backup
1794
+ variables: []
1795
+ enabledByDefault: true
1796
+ packs:
1797
+ - core
1798
+
1799
+ - id: ukit-index-playbook-registry-script
1800
+ type: config
1801
+ sourceTemplate: .claude/ukit/index/playbook-registry.mjs
1802
+ targetPath: .claude/ukit/index/playbook-registry.mjs
1803
+ requires:
1804
+ - ukit-index-route-resolver-script
1805
+ mergeStrategy: overwrite_with_backup
1806
+ variables: []
1807
+ enabledByDefault: true
1808
+ packs:
1809
+ - core
1810
+
1811
+ - id: ukit-index-verification-map-script
1812
+ type: config
1813
+ sourceTemplate: .claude/ukit/index/verification-map.mjs
1814
+ targetPath: .claude/ukit/index/verification-map.mjs
1815
+ mergeStrategy: overwrite_with_backup
1816
+ variables: []
1817
+ enabledByDefault: true
1818
+ packs:
1819
+ - core
1820
+
1821
+ # C85 TASK-015 (BL-015): deterministic review decision policy evaluator —
1822
+ # consumed by stop-coordinator.mjs at the pre-Stop gate (advisory verdicts).
1823
+ - id: ukit-index-review-policy-script
1824
+ type: config
1825
+ sourceTemplate: .claude/ukit/index/review-policy.mjs
1826
+ targetPath: .claude/ukit/index/review-policy.mjs
1827
+ requires:
1828
+ - ukit-index-cross-check-matrix-script
1829
+ mergeStrategy: overwrite_with_backup
1830
+ variables: []
1831
+ enabledByDefault: true
1832
+ packs:
1833
+ - core
1834
+
1835
+ # C85 TASK-016 (BL-016): adaptive cross-check depth matrix — resolves
1836
+ # change-risk × implementer-reliability × evidence-quality →
1837
+ # none|runnable|review-round|escalate for the policy's escalationDepth slot.
1838
+ - id: ukit-index-cross-check-matrix-script
1839
+ type: config
1840
+ sourceTemplate: .claude/ukit/index/cross-check-matrix.mjs
1841
+ targetPath: .claude/ukit/index/cross-check-matrix.mjs
1842
+ mergeStrategy: overwrite_with_backup
1843
+ variables: []
1844
+ enabledByDefault: true
1845
+ packs:
1846
+ - core
1847
+
1848
+ # C85 TASK-018 (BL-018): fix-loop escalation to a deeper lane — consumed by
1849
+ # route-task.mjs when the fingerprint-joined fixLoopCount trips
1850
+ # debugLoopThreshold (laneDeepening/verificationDepth hand-off).
1851
+ - id: ukit-index-fix-loop-escalation-script
1852
+ type: config
1853
+ sourceTemplate: .claude/ukit/index/fix-loop-escalation.mjs
1854
+ targetPath: .claude/ukit/index/fix-loop-escalation.mjs
1855
+ requires:
1856
+ - ukit-index-route-resolver-script
1857
+ - ukit-index-cross-check-matrix-script
1858
+ mergeStrategy: overwrite_with_backup
1859
+ variables: []
1860
+ enabledByDefault: true
1861
+ packs:
1862
+ - core
1863
+
1731
1864
  - id: ukit-index-unic-gateway-script
1732
1865
  type: config
1733
1866
  sourceTemplate: .claude/ukit/index/unic-gateway.mjs
@@ -1795,6 +1928,11 @@ items:
1795
1928
  - ukit-index-unic-gateway-script
1796
1929
  - ukit-index-unic-decision-script
1797
1930
  - ukit-index-extract-image-script
1931
+ - ukit-index-route-resolver-script
1932
+ - ukit-index-playbook-registry-script
1933
+ - ukit-index-session-history-extractor-script
1934
+ - ukit-index-fix-loop-escalation-script
1935
+ - ukit-index-tier-selection-script
1798
1936
  mergeStrategy: overwrite_with_backup
1799
1937
  variables: []
1800
1938
  enabledByDefault: true
@@ -52,10 +52,262 @@ items:
52
52
  packs:
53
53
  - core
54
54
 
55
- - id: user-playbook-issue
55
+ - id: user-playbook-feature-implementation
56
56
  type: config
57
- sourceTemplate: playbooks/issue-implementation.md
58
- targetPath: playbooks/issue-implementation.md
57
+ sourceTemplate: playbooks/feature-implementation.md
58
+ targetPath: playbooks/feature-implementation.md
59
+ requires: []
60
+ mergeStrategy: skip
61
+ variables: []
62
+ enabledByDefault: true
63
+ packs:
64
+ - core
65
+
66
+ - id: user-playbook-investigation
67
+ type: config
68
+ sourceTemplate: playbooks/investigation.md
69
+ targetPath: playbooks/investigation.md
70
+ requires: []
71
+ mergeStrategy: skip
72
+ variables: []
73
+ enabledByDefault: true
74
+ packs:
75
+ - core
76
+
77
+ - id: user-playbook-small-feature
78
+ type: config
79
+ sourceTemplate: playbooks/small-feature.md
80
+ targetPath: playbooks/small-feature.md
81
+ requires: []
82
+ mergeStrategy: skip
83
+ variables: []
84
+ enabledByDefault: true
85
+ packs:
86
+ - core
87
+
88
+ # C85 TASK-014 (BL-014): the verification-map table ships beside the
89
+ # playbooks — JSON, not markdown, so hook consumers query it via the
90
+ # verification-map.mjs reader instead of parsing prose.
91
+ - id: user-playbook-verification-map
92
+ type: config
93
+ sourceTemplate: playbooks/verification-map.json
94
+ targetPath: playbooks/verification-map.json
95
+ requires: []
96
+ mergeStrategy: skip
97
+ variables: []
98
+ enabledByDefault: true
99
+ packs:
100
+ - core
101
+
102
+ # C86 TASK-020/022 (FR-009): wave-1+3 playbook seeds.
103
+ - id: user-playbook-performance
104
+ type: config
105
+ sourceTemplate: playbooks/performance.md
106
+ targetPath: playbooks/performance.md
107
+ requires: []
108
+ mergeStrategy: skip
109
+ variables: []
110
+ enabledByDefault: true
111
+ packs:
112
+ - core
113
+
114
+ - id: user-playbook-refactor
115
+ type: config
116
+ sourceTemplate: playbooks/refactor.md
117
+ targetPath: playbooks/refactor.md
118
+ requires: []
119
+ mergeStrategy: skip
120
+ variables: []
121
+ enabledByDefault: true
122
+ packs:
123
+ - core
124
+
125
+ - id: user-playbook-runtime-forensics
126
+ type: config
127
+ sourceTemplate: playbooks/runtime-forensics.md
128
+ targetPath: playbooks/runtime-forensics.md
129
+ requires: []
130
+ mergeStrategy: skip
131
+ variables: []
132
+ enabledByDefault: true
133
+ packs:
134
+ - core
135
+
136
+ - id: user-playbook-session-pickup
137
+ type: config
138
+ sourceTemplate: playbooks/session-pickup.md
139
+ targetPath: playbooks/session-pickup.md
140
+ requires: []
141
+ mergeStrategy: skip
142
+ variables: []
143
+ enabledByDefault: true
144
+ packs:
145
+ - core
146
+
147
+ - id: user-playbook-verification
148
+ type: config
149
+ sourceTemplate: playbooks/verification.md
150
+ targetPath: playbooks/verification.md
151
+ requires: []
152
+ mergeStrategy: skip
153
+ variables: []
154
+ enabledByDefault: true
155
+ packs:
156
+ - core
157
+
158
+ - id: user-playbook-skill-evaluation
159
+ type: config
160
+ sourceTemplate: playbooks/skill-evaluation.md
161
+ targetPath: playbooks/skill-evaluation.md
162
+ requires: []
163
+ mergeStrategy: skip
164
+ variables: []
165
+ enabledByDefault: true
166
+ packs:
167
+ - core
168
+
169
+ # C87 FR-008: five new playbook seeds (autonomous-run, architecture-decision,
170
+ # migration, release, prototype) — same config/skip/core shape as the
171
+ # wave-1 items above.
172
+ - id: user-playbook-autonomous-run
173
+ type: config
174
+ sourceTemplate: playbooks/autonomous-run.md
175
+ targetPath: playbooks/autonomous-run.md
176
+ requires: []
177
+ mergeStrategy: skip
178
+ variables: []
179
+ enabledByDefault: true
180
+ packs:
181
+ - core
182
+
183
+ - id: user-playbook-architecture-decision
184
+ type: config
185
+ sourceTemplate: playbooks/architecture-decision.md
186
+ targetPath: playbooks/architecture-decision.md
187
+ requires: []
188
+ mergeStrategy: skip
189
+ variables: []
190
+ enabledByDefault: true
191
+ packs:
192
+ - core
193
+
194
+ - id: user-playbook-migration
195
+ type: config
196
+ sourceTemplate: playbooks/migration.md
197
+ targetPath: playbooks/migration.md
198
+ requires: []
199
+ mergeStrategy: skip
200
+ variables: []
201
+ enabledByDefault: true
202
+ packs:
203
+ - core
204
+
205
+ - id: user-playbook-release
206
+ type: config
207
+ sourceTemplate: playbooks/release.md
208
+ targetPath: playbooks/release.md
209
+ requires: []
210
+ mergeStrategy: skip
211
+ variables: []
212
+ enabledByDefault: true
213
+ packs:
214
+ - core
215
+
216
+ - id: user-playbook-prototype
217
+ type: config
218
+ sourceTemplate: playbooks/prototype.md
219
+ targetPath: playbooks/prototype.md
220
+ requires: []
221
+ mergeStrategy: skip
222
+ variables: []
223
+ enabledByDefault: true
224
+ packs:
225
+ - core
226
+
227
+ # C88 FR-010: eight sub-playbook seeds (hillclimb, babysit, shipping,
228
+ # orchestrate, autopilot-full, autopilot-stack, worktree-cleanup, open-pr) —
229
+ # same config/skip/core shape as every user-playbook-* item above.
230
+ - id: user-playbook-hillclimb
231
+ type: config
232
+ sourceTemplate: playbooks/hillclimb.md
233
+ targetPath: playbooks/hillclimb.md
234
+ requires: []
235
+ mergeStrategy: skip
236
+ variables: []
237
+ enabledByDefault: true
238
+ packs:
239
+ - core
240
+
241
+ - id: user-playbook-babysit
242
+ type: config
243
+ sourceTemplate: playbooks/babysit.md
244
+ targetPath: playbooks/babysit.md
245
+ requires: []
246
+ mergeStrategy: skip
247
+ variables: []
248
+ enabledByDefault: true
249
+ packs:
250
+ - core
251
+
252
+ - id: user-playbook-shipping
253
+ type: config
254
+ sourceTemplate: playbooks/shipping.md
255
+ targetPath: playbooks/shipping.md
256
+ requires: []
257
+ mergeStrategy: skip
258
+ variables: []
259
+ enabledByDefault: true
260
+ packs:
261
+ - core
262
+
263
+ - id: user-playbook-orchestrate
264
+ type: config
265
+ sourceTemplate: playbooks/orchestrate.md
266
+ targetPath: playbooks/orchestrate.md
267
+ requires: []
268
+ mergeStrategy: skip
269
+ variables: []
270
+ enabledByDefault: true
271
+ packs:
272
+ - core
273
+
274
+ - id: user-playbook-autopilot-full
275
+ type: config
276
+ sourceTemplate: playbooks/autopilot-full.md
277
+ targetPath: playbooks/autopilot-full.md
278
+ requires: []
279
+ mergeStrategy: skip
280
+ variables: []
281
+ enabledByDefault: true
282
+ packs:
283
+ - core
284
+
285
+ - id: user-playbook-autopilot-stack
286
+ type: config
287
+ sourceTemplate: playbooks/autopilot-stack.md
288
+ targetPath: playbooks/autopilot-stack.md
289
+ requires: []
290
+ mergeStrategy: skip
291
+ variables: []
292
+ enabledByDefault: true
293
+ packs:
294
+ - core
295
+
296
+ - id: user-playbook-worktree-cleanup
297
+ type: config
298
+ sourceTemplate: playbooks/worktree-cleanup.md
299
+ targetPath: playbooks/worktree-cleanup.md
300
+ requires: []
301
+ mergeStrategy: skip
302
+ variables: []
303
+ enabledByDefault: true
304
+ packs:
305
+ - core
306
+
307
+ - id: user-playbook-open-pr
308
+ type: config
309
+ sourceTemplate: playbooks/open-pr.md
310
+ targetPath: playbooks/open-pr.md
59
311
  requires: []
60
312
  mergeStrategy: skip
61
313
  variables: []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngockhoale/ukit",
3
- "version": "3.3.3",
3
+ "version": "3.4.0",
4
4
  "description": "Install/update an index-first AI workspace for Claude Code, OpenAI Codex and omp (Oh My Pi).",
5
5
  "license": "MIT",
6
6
  "type": "module",