@1aboveio/skills 0.18.0 → 0.19.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 (41) hide show
  1. package/README.md +2 -2
  2. package/package.json +1 -1
  3. package/runtime/skills/distribution/generated/recipes.json +43 -23
  4. package/runtime/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +1 -1
  5. package/runtime/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +23 -1
  6. package/skills/engineering/engineering-runtime/coherence/workflow.json +65 -15
  7. package/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +1 -1
  8. package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +23 -1
  9. package/skills/engineering/resolve-issues/SKILL.md +1 -1
  10. package/skills/engineering/resolve-issues/generated/workflow-repair-policy.json +55 -11
  11. package/skills/engineering/resolve-issues/scripts/run-state.mjs +4 -4
  12. package/skills/engineering/resolve-release/references/related-skills.md +1 -0
  13. package/skills/engineering/rush-issues/LICENSE +3 -0
  14. package/skills/engineering/rush-issues/SKILL.md +179 -0
  15. package/skills/engineering/rush-issues/agents/openai.yaml +9 -0
  16. package/skills/engineering/rush-issues/evals/evals.json +65 -0
  17. package/skills/engineering/rush-issues/references/canary.md +45 -0
  18. package/skills/engineering/rush-issues/references/cicd.md +37 -0
  19. package/skills/engineering/rush-issues/references/combine.md +51 -0
  20. package/skills/engineering/rush-issues/references/expire.md +55 -0
  21. package/skills/engineering/rush-issues/references/exploration.md +53 -0
  22. package/skills/engineering/rush-issues/references/implementation.md +66 -0
  23. package/skills/engineering/rush-issues/references/preflight.md +31 -0
  24. package/skills/engineering/rush-issues/references/profiling.md +78 -0
  25. package/skills/engineering/rush-issues/references/review.md +48 -0
  26. package/skills/engineering/rush-issues/references/shared-modules.md +66 -0
  27. package/skills/engineering/rush-issues/references/task-plan.md +110 -0
  28. package/skills/engineering/rush-issues/scripts/discover-models.mjs +9 -0
  29. package/skills/engineering/rush-issues/scripts/model-catalog.mjs +9 -0
  30. package/skills/engineering/rush-issues/scripts/preflight-models.mjs +466 -0
  31. package/skills/engineering/rush-release/LICENSE +3 -0
  32. package/skills/engineering/rush-release/SKILL.md +99 -0
  33. package/skills/engineering/rush-release/agents/openai.yaml +8 -0
  34. package/skills/engineering/rush-release/evals/evals.json +44 -0
  35. package/skills/engineering/rush-release/references/candidate.md +30 -0
  36. package/skills/engineering/rush-release/references/cut.md +66 -0
  37. package/skills/engineering/rush-release/references/preflight.md +47 -0
  38. package/skills/engineering/rush-release/references/publish.md +100 -0
  39. package/skills/engineering/rush-release/scripts/apply.mjs +185 -0
  40. package/skills/engineering/rush-release/scripts/green-head.mjs +231 -0
  41. package/skills/engineering/rush-release/scripts/plan.mjs +264 -0
@@ -0,0 +1,53 @@
1
+ # Exploration
2
+
3
+ Run once after the task plan is shown and before implementation. The
4
+ goal is one shared context pack, so parallel implementers do not independently
5
+ rediscover requirements and repository structure.
6
+
7
+ ## Spawn
8
+
9
+ | Field | Value |
10
+ |---|---|
11
+ | Model | Explorer slot: balanced-coder; prefer `gpt-5.6-terra@high` when discovered, otherwise use the catalog recommendation |
12
+ | Workspace | Isolated run worktree, read-only except for the findings directory |
13
+ | Task deadline | 30 minutes |
14
+ | Product code | Must remain unchanged |
15
+
16
+ ## Brief
17
+
18
+ 1. Read every unit's original source, acceptance criteria, and linked documents.
19
+ 2. Read relevant repository guidance, ADRs, domain context, modules, tests, and
20
+ prior art.
21
+ 3. Retrieve external documents named by the spec from their authoritative
22
+ source.
23
+ 4. Identify blocking dependencies and shared surfaces that affect scheduling or
24
+ combination.
25
+ 5. Write the findings pack to the shared path. Do not implement product code.
26
+
27
+ ## Shared location
28
+
29
+ ```text
30
+ .resolve-issues/rush/<run-id>/exploration/
31
+ FINDINGS.md
32
+ findings.json
33
+ ```
34
+
35
+ `FINDINGS.md` is required and includes:
36
+
37
+ - whole-spec definition of done
38
+ - per-unit requirements and likely code/test locations
39
+ - relevant repository rules, ADRs, and external-source links
40
+ - blocking dependencies and shared surfaces
41
+ - risks, assumptions, and unresolved questions
42
+
43
+ `findings.json` is optional and may index `{units, paths, dependencies, risks,
44
+ openQuestions}`. Record the absolute findings path in the plan and pass it to
45
+ every implementer.
46
+
47
+ ## Completion
48
+
49
+ Confirm the findings file exists and is non-empty, the model read-back matches
50
+ the explorer slot, and the explorer made no product-source diff. A timeout or
51
+ missing result expires the attempt; follow [expire.md](expire.md), diagnose,
52
+ and resume exploration. Do not waive shared exploration merely to preserve
53
+ speed.
@@ -0,0 +1,66 @@
1
+ # Isolated implementation loop
2
+
3
+ Schedule runnable units continuously after exploration succeeds. At most 4
4
+ units may own active implementation workers at once.
5
+
6
+ ## Workspace contract
7
+
8
+ Each unit gets a dedicated branch and isolated Git workspace based on the
9
+ correct dependency/base state. That workspace belongs to the unit through
10
+ implement, validate, self-review, fixes, expiry, and diagnosis. Never wipe it
11
+ on spawn death or timeout.
12
+
13
+ On Pi, the default subagent sandbox can write only beneath its workspace root.
14
+ A linked worktree's `.git` file points to administrative metadata under the
15
+ parent repository, outside that root, so Git mutation will fail. For the first
16
+ Git-mutating spawn, pass `git_clone_workspace:true` with a dedicated
17
+ `sandbox_dir`; record the resulting self-contained clone as the unit workspace.
18
+ Retries use that clone directly without cloning it again. Use `sandbox:false`
19
+ only when the caller explicitly accepts unrestricted writes. Never launch a
20
+ Git-mutating sandboxed worker in a linked worktree.
21
+
22
+ ## Implementer brief
23
+
24
+ Include:
25
+
26
+ - original unit source and acceptance criteria
27
+ - whole-spec context and neighboring unit boundaries
28
+ - absolute exploration findings path
29
+ - absolute unit workspace and branch
30
+ - declared dependencies and shared surfaces
31
+ - selected implementer model/effort
32
+ - required outcome and validation obligations
33
+ - instruction not to open a per-unit PR
34
+ - result path/return schema and 30-minute deadline
35
+
36
+ Do not require an implementation leaf skill, development methodology, or
37
+ producer-specific evidence contract. The active harness chooses its own
38
+ implementation method. Rush constrains the unit boundary, workspace, outcome,
39
+ validation, and return contract only.
40
+
41
+ ## Per-unit loop
42
+
43
+ 1. **Implement:** change only the unit scope using the harness's chosen method.
44
+ Commit coherent progress on the unit branch.
45
+ 2. **Validate:** prove the acceptance criteria and affected behavior with the
46
+ relevant repository checks. Record concrete not-applicable reasons where a
47
+ named validation category does not apply.
48
+ 3. **Self-review:** inspect the net diff adversarially against the unit ACs,
49
+ repository rules, failure states, and affected shared surfaces.
50
+ 4. **Act:** fix every blocking self-review finding, then repeat validation and
51
+ self-review on the new HEAD.
52
+ 5. **Finish:** return the exact branch/SHA, changed paths, validation commands,
53
+ self-review result, and any integration notes. Do not open a per-unit PR.
54
+
55
+ After 2 failed fix cycles or a 30-minute task attempt, follow
56
+ [expire.md](expire.md): preserve the workspace, diagnose, revise the plan, and
57
+ continue. The next worker resumes the same workspace and reads the diagnosis.
58
+
59
+ ## Scheduling
60
+
61
+ - Start independent runnable units together up to the in-flight cap of 4.
62
+ - Refill a free slot as soon as another unit becomes runnable.
63
+ - Blocking dependencies constrain start order; shared-surface interference is
64
+ recorded for combination but does not by itself serialize workers.
65
+ - One diagnosis does not stall unrelated runnable units.
66
+ - The combine stage waits for every mapped unit to succeed.
@@ -0,0 +1,31 @@
1
+ # Preflight
2
+
3
+ Preflight has exactly two outputs: selected model operating points and the
4
+ confirmed target branch. It does not classify workflow eligibility, decompose
5
+ the spec, create workspaces, probe delivery, or decide autonomy. Those belong
6
+ to later Rush stages.
7
+
8
+ ## 1. Select models
9
+
10
+ Run the fast path and shared preflight planner in
11
+ [shared-modules.md](shared-modules.md). Ask only for the implementer model; fill
12
+ and state the explorer and reviewer. Prefer:
13
+
14
+ - explorer: balanced-coder, `gpt-5.6-terra@high` when discovered
15
+ - reviewer: distinct deep-reasoner, `gpt-5.5@high` when discovered
16
+
17
+ Record exact model ids and efforts. Sync/bank the shared catalog only after the
18
+ human answers. Repository risk may change the recommended model tier; it never
19
+ changes the workflow.
20
+
21
+ ## 2. Confirm delivery target
22
+
23
+ Fetch remote heads and confirm `targetBranch` from those fetched facts. Do not
24
+ infer a stale local default.
25
+
26
+ The shared planner also returns fields used by other workflows. Rush records
27
+ only its model selections and `targetBranch` from this stage; an autonomy fill
28
+ is not merge authorization for a Rush run.
29
+
30
+ Preflight succeeds when the model slots and target branch are recorded. Proceed
31
+ to [task-plan.md](task-plan.md) for all run setup and decomposition.
@@ -0,0 +1,78 @@
1
+ # Profiling
2
+
3
+ Profile the workflow for later performance analysis without blocking delivery.
4
+ Track each unit, fleet stage, bounded attempt, retry, and diagnosis.
5
+
6
+ ## Metrics
7
+
8
+ | Metric | Meaning |
9
+ |---|---|
10
+ | `wallMs` | Elapsed enter-to-exit time |
11
+ | `llmMs` | Time attributed to active model work |
12
+ | `programMs` | Time attributed to local commands/programs |
13
+ | `waitMs` | Pure external wait, such as CI or queue pending |
14
+ | `effectiveMs` | Union of intervals with LLM or program activity, excluding pure wait |
15
+ | `retries` | Current-cycle and cumulative retries |
16
+ | `diagnoses` | Number and duration of diagnosis checkpoints |
17
+ | `outcome` | `succeeded`, `expired`, `blocked`, or `cancelled` |
18
+ | `expireReason` | Stable reason code when an attempt expires |
19
+
20
+ Avoid double counting nested program calls inside an LLM task. If only coarse
21
+ telemetry exists, classify non-overlapping intervals by their primary state.
22
+ Use `null` plus a note for unavailable timing; do not turn unknown into zero.
23
+ Across parallel workers, report both run wall time and summed worker time.
24
+
25
+ ## Layout
26
+
27
+ ```text
28
+ .resolve-issues/rush/<run-id>/
29
+ task-plan.json
30
+ exploration/FINDINGS.md
31
+ profiling/
32
+ run.jsonl
33
+ summary.json
34
+ ```
35
+
36
+ Append one JSONL event at task-plan checkpoints. Example:
37
+
38
+ ```json
39
+ {
40
+ "ts": "2026-08-22T12:00:00.000Z",
41
+ "runId": "rush-1200",
42
+ "planRevision": 12,
43
+ "scope": "unit",
44
+ "unit": "1201",
45
+ "stage": "implement",
46
+ "attempt": 2,
47
+ "event": "exit",
48
+ "outcome": "expired",
49
+ "expireReason": "timeout-task",
50
+ "wallMs": 1800000,
51
+ "llmMs": 1320000,
52
+ "programMs": 240000,
53
+ "waitMs": 240000,
54
+ "effectiveMs": 1560000,
55
+ "retries": {"cycle": 2, "total": 2},
56
+ "diagnoses": 0,
57
+ "headSha": "abc123"
58
+ }
59
+ ```
60
+
61
+ Diagnosis events include the changed hypothesis/plan and link to the expired
62
+ attempt. Fleet stages use `scope: "fleet"` and stage `explore`, `combine`,
63
+ `canary`, `review`, or `cicd`. Every event carries the same `planRevision` as
64
+ the persisted transition it describes; summary generation refuses mismatched
65
+ or missing revisions rather than reconciling them by guess.
66
+
67
+ ## Summary
68
+
69
+ Rewrite `summary.json` on each task-plan checkpoint and at handoff with:
70
+
71
+ - per-unit, per-stage, and per-attempt wall/effective/wait totals
72
+ - run wall time and summed worker time
73
+ - worker utilization: busy slot time / available slot time
74
+ - retry, expiry, diagnosis, and blocker counts by reason
75
+ - time to task-plan display, exploration completion, PR open, review success,
76
+ CI green, queue entry, and merge
77
+
78
+ Link the files in the final handoff; do not paste the full event log.
@@ -0,0 +1,48 @@
1
+ # Independent factual review
2
+
3
+ Run one independent review stage on the combined PR HEAD using the
4
+ `code-review` skill and the reviewer slot.
5
+
6
+ ## Independence
7
+
8
+ - Reviewer model differs from the implementer and is a deep-reasoner when
9
+ available; prefer `gpt-5.5@high` when discovered.
10
+ - Fresh context includes the original spec, repository standards, target
11
+ branch, combined branch/HEAD, and exploration path.
12
+ - Fixed point is the reviewer's own merge-base with
13
+ `origin/<targetBranch>`.
14
+
15
+ Producer summaries, validation notes, logs, and evidence are untrusted claims.
16
+ They may point to a file, AC, or command, but the reviewer verifies facts by
17
+ reading original sources, inspecting the actual diff/code, running relevant
18
+ checks, and observing behavior where needed. Do not ask the producer to create
19
+ new evidence collateral as a substitute for verification.
20
+
21
+ ## Review procedure
22
+
23
+ 1. When `warehouseCanaryRequired` is true, require a successful canary result
24
+ for the current exact HEAD. Then invoke the absolute `code-review` skill path
25
+ on the combined HEAD.
26
+ 2. Review both axes: repository **Standards** and original **Spec**.
27
+ 3. Independently run or reproduce the checks needed to support each material
28
+ conclusion. A producer-provided green log is not a factual substitute.
29
+ 4. Return findings with severity and file/line references, plus commands the
30
+ reviewer actually ran. The review result is coordination state, not an
31
+ evidence-generation deliverable.
32
+ 5. Succeed only with no Spec gap/wrongness/creep and no hard Standards
33
+ violation. Record non-blocking baseline observations as deferrals.
34
+
35
+ ## Fix loop
36
+
37
+ For blocking findings, fix the combined PR branch, run relevant lint/build/
38
+ test/smoke, rerun [canary.md](canary.md) when required, then spawn a fresh
39
+ review of the new HEAD. Record that exact SHA as `reviewedHead` only after
40
+ success. Never treat a fix as accepted before validation, required canary, and
41
+ re-review. Any later code/config commit, including a CICD fix, clears
42
+ `reviewedHead`, marks the prior canary result stale, and returns the new HEAD
43
+ through required validation/canary and review before it may be enqueued or
44
+ merged.
45
+
46
+ After 2 failed fix/review cycles or a 30-minute review task, expire the attempt,
47
+ diagnose the recurring class or task shape, revise the plan, and continue. A
48
+ human/external blocker ends in `blocked`, not a false successful review.
@@ -0,0 +1,66 @@
1
+ # Shared modules
2
+
3
+ Rush owns orchestration, not copies of model, review, smoke, or queue doctrine.
4
+ Implementation method belongs to the active harness. Resolve installed leaf
5
+ skills from the active skills root only for stages that explicitly invoke one,
6
+ and pass absolute paths to those subagents.
7
+
8
+ ## Model catalog and recommendation
9
+
10
+ **Owner:** [`harness-runtime`](../../harness-runtime/)
11
+
12
+ | Piece | Path |
13
+ |---|---|
14
+ | Catalog doctrine | `harness-runtime/references/model-catalog.md` |
15
+ | Team seed | `harness-runtime/references/model-catalog-seed.json` |
16
+ | Catalog CLI | `harness-runtime/model-catalog.mjs` |
17
+ | Discovery CLI | `harness-runtime/discover-models.mjs` |
18
+ | Rush fast path | `rush-issues/scripts/preflight-models.mjs` |
19
+ | Shared preflight planner | `resolve-issues/scripts/preflight-questions.mjs` |
20
+
21
+ Before reading the longer catalog doctrine, run:
22
+
23
+ ```bash
24
+ node <skillsRoot>/rush-issues/scripts/preflight-models.mjs \
25
+ --harness <pi|codex|claude-code> \
26
+ --risk <routine|high> \
27
+ --available <comma-separated-current-turn-model-ids> \
28
+ --ask-only
29
+ ```
30
+
31
+ The fast path discovers current-turn availability, recommends the implementer,
32
+ fills explorer and reviewer, and emits the implementer picker payload. Feed the
33
+ model choices and fetched target-branch choices through the shared preflight
34
+ planner so the native interaction asks exactly those two questions.
35
+
36
+ | Slot | Selection |
37
+ |---|---|
38
+ | Implementer | Human picks from discovered eligible models; routine recommends balanced-coder |
39
+ | Explorer | Filled balanced-coder; prefer `gpt-5.6-terra@high` when discovered |
40
+ | Reviewer | Filled distinct deep-reasoner; prefer `gpt-5.5@high` when discovered |
41
+
42
+ Only discovered or explicitly human-named models are eligible. Defer catalog
43
+ sync/bank until after the human answers. Spawn read-back must match each
44
+ recorded slot. The shared planner is also used by workflows that record an
45
+ autonomy fill; Rush must discard that field and must not treat it as merge
46
+ authorization.
47
+
48
+ ## Leaf skills
49
+
50
+ | Stage | Skill | Rush-specific constraint |
51
+ |---|---|---|
52
+ | Independent review | `code-review` | One fresh review of the combined branch, Standards and Spec axes |
53
+ | Runtime smoke | `smoke` | Run when applicable; record a concrete not-applicable reason otherwise |
54
+ | Merge queue | Queue owner, such as `mergify` | Inspect live configuration and use its watcher/enqueue procedure |
55
+
56
+ `code-review` may be externally installed; never assume a repository-relative
57
+ path. Producer summaries or validation notes may help locate claimed behavior,
58
+ but the independent reviewer establishes facts from source, diff, commands,
59
+ and runtime behavior itself. Do not add evidence-generation work merely to
60
+ make the review look substantiated.
61
+
62
+ ## Rush-owned behavior
63
+
64
+ Rush owns the task plan, shared findings location, isolated workspaces,
65
+ continuous scheduling with in-flight cap 4, one-branch combination, whole-spec
66
+ PR boundary, expiry/diagnosis loop, and profiling logs.
@@ -0,0 +1,110 @@
1
+ # Task plan
2
+
3
+ After model/target preflight, build the task plan as the run's live source of
4
+ truth. Show it before exploration or implementation and keep it synchronized
5
+ with every worker and fleet transition.
6
+
7
+ ## Initialize the run
8
+
9
+ 1. Prefer a dedicated run branch and workspace based on the confirmed target.
10
+ The run workspace owns combination, the single PR, review fixes, and CI
11
+ fixes. Do not reuse a dirty unrelated checkout.
12
+ 2. Turn a plain issue into one unit; turn an epic or fat issue into
13
+ implementable units that collectively cover the entire original spec.
14
+ 3. Record each unit's source and acceptance criteria, blocking dependencies
15
+ including premise dependencies, likely shared surfaces, and the whole-spec
16
+ definition of done.
17
+ 4. Read repository hazard guidance and attach its implementation, test, and
18
+ review obligations to affected units. Risk never removes a unit, changes the
19
+ one-PR boundary, or routes the run to another workflow.
20
+ 5. Set `warehouseCanaryRequired` when the run changes executable warehouse
21
+ behavior or its data contract, and record the concrete classification reason.
22
+ 6. Create the run directory, shared findings path, profiling log, and initial
23
+ machine-readable plan, then render the first board.
24
+
25
+ ## Shape
26
+
27
+ Fleet rows: `explore`, `combine`, `canary`, `review`, `cicd`. Render `canary` as
28
+ not applicable when `warehouseCanaryRequired` is false.
29
+
30
+ Per-unit fields:
31
+
32
+ | Field | Meaning |
33
+ |---|---|
34
+ | `id`, `title` | Stable unit identity and short title |
35
+ | `source` | Original issue/spec/AC locator |
36
+ | `workspace`, `branch` | Absolute owned Git workspace and branch |
37
+ | `dependsOn` | Blocking unit ids |
38
+ | `stage` | `pending`, `implement`, `validate`, `self-review`, `diagnose`, or `done` |
39
+ | `status` | `pending`, `in-flight`, `diagnosing`, `succeeded`, `blocked`, or `cancelled` |
40
+ | `attempt` | Current bounded attempt number |
41
+ | `retries`, `diagnoses` | Current-cycle and cumulative counters |
42
+ | `worker` | Slot 1-4 while in flight |
43
+ | `clock` | Current attempt and cumulative wall time |
44
+ | `note` | SHA, failure, diagnosis, or blocker |
45
+
46
+ Run-level fields include `planRevision`, models/efforts, `targetBranch`, run
47
+ workspace/branch, original spec locator, explicit merge authorization when one
48
+ was supplied, exploration path, combined PR/HEAD, `reviewedHead`, and
49
+ `warehouseCanaryRequired`, its classification reason, durable canary result
50
+ path, and start/update timestamps.
51
+
52
+ Persist the machine-readable plan at:
53
+
54
+ ```text
55
+ .resolve-issues/rush/<run-id>/task-plan.json
56
+ ```
57
+
58
+ ## Checkpoint consistency
59
+
60
+ Use one ordered checkpoint protocol for every transition:
61
+
62
+ 1. Increment `planRevision` and apply the complete state transition in memory.
63
+ 2. Append the profiling event with that same revision.
64
+ 3. Persist the plan and profiling checkpoint.
65
+ 4. Render the board by reading the persisted plan revision, not from a separate
66
+ hand-built snapshot.
67
+
68
+ A checkpoint is invalid if the board, `task-plan.json`, and profiling event
69
+ disagree on status, stage, retry/diagnosis counters, clocks, HEAD, or revision.
70
+ Do not display a future transition before persistence or reuse an old board
71
+ after persistence.
72
+
73
+ ## First display
74
+
75
+ The first board is the visible task-planning result and appears before any
76
+ explorer or implementer spawn.
77
+
78
+ ```text
79
+ rush-issues rev 12 workers 2/4 elapsed 18m PR pending
80
+ fleet: explore OK combine . canary n/a review . cicd .
81
+ +------+---------------------------+-------------+------------+---------+-------+
82
+ | id | title | stage | status | retry | clock |
83
+ +------+---------------------------+-------------+------------+---------+-------+
84
+ | #1201| fix queue stall watcher | self-review | in-flight | 1/2 | 16m |
85
+ | #1202| parse rename edges | validate | in-flight | 0/2 | 09m |
86
+ | #1203| split oversized importer | diagnose | diagnosing | 2/2 D1 | 30m |
87
+ +------+---------------------------+-------------+------------+---------+-------+
88
+ ```
89
+
90
+ Use compact Markdown or text that remains readable in the active harness. Do
91
+ not hide blocked or diagnosing units from the board.
92
+
93
+ ## Refresh checkpoints
94
+
95
+ Redisplay when:
96
+
97
+ - task-plan initialization completes
98
+ - a fleet stage enters/exits
99
+ - a worker is acquired/freed
100
+ - a unit enters/succeeds/expires/blocks
101
+ - validation fails or becomes green
102
+ - a required warehouse canary starts, fails, succeeds, blocks, or is invalidated
103
+ - a retry or diagnosis is recorded
104
+ - a dependency becomes runnable
105
+ - the combined PR opens or HEAD changes
106
+ - about every 5 minutes during long activity
107
+
108
+ Skip a redraw only when no material state changed. The final board includes all
109
+ unit outcomes, PR URL/SHA when one exists, exploration/profiling paths, retry
110
+ and diagnosis totals, and any exact blocker that prevented a whole-spec PR.
@@ -0,0 +1,9 @@
1
+ // Thin wrapper: canonical ownership lives in harness-runtime.
2
+ export * from '../../harness-runtime/discover-models.mjs'
3
+
4
+ import { runCli } from '../../harness-runtime/discover-models.mjs'
5
+ import { isMainModule } from '../../engineering-runtime/scripts/main-module.mjs'
6
+
7
+ if (isMainModule(import.meta.url)) {
8
+ process.exit(runCli(process.argv.slice(2)))
9
+ }
@@ -0,0 +1,9 @@
1
+ // Thin wrapper: canonical ownership lives in harness-runtime.
2
+ export * from '../../harness-runtime/model-catalog.mjs'
3
+
4
+ import { runCli } from '../../harness-runtime/model-catalog.mjs'
5
+ import { isMainModule } from '../../engineering-runtime/scripts/main-module.mjs'
6
+
7
+ if (isMainModule(import.meta.url)) {
8
+ process.exit(runCli(process.argv.slice(2)))
9
+ }