Skip to content

feat(yield): convert-skill — the converter is itself a Yield skill - #266

Merged
bigboateng merged 1 commit into
mainfrom
yield-converter
Aug 1, 2026
Merged

feat(yield): convert-skill — the converter is itself a Yield skill#266
bigboateng merged 1 commit into
mainfrom
yield-converter

Conversation

@bigboateng

Copy link
Copy Markdown
Contributor

Closes the loop the whole lab exists for: existing prose skills get a paved road into Yield, in the language the operator picks (Go / TypeScript / Python / Rust) — and the converter is itself a Yield skill, running under the same supervisor it generates programs for.

Locus-decided design (yield/docs/locus-converter.md)

  • supervisory-rw: controllable — shipping an unverified conversion is preventable; nonblocking — every conversion ends SHIPPED_VERIFIED or honestly REPORTED_BLOCKED.
  • Decided rival-design comparison (safety-reachability): the executed-verification design satisfies forbidden-unreachable; completing on the model's transcription is rejected with the verbatim trace extract_flow → pick_language → generate_program → complete_untested → SHIPPED_UNVERIFIED.

The spine: a conversion that was never executed is never "done." The program owns pipeline order, the closed language menu, the ≤2 repair bound, and the evidence gate — a nested yskill test of the generated skill, executed by the supervisor as observed fact. The model owns flow extraction and code writing.

Contents

  • examples/convert-skill (Go): ask for the source prose skill → read it (run_command, observed) → agent_task extract the implicit flow (schema-bound) → ask_user pick the target language → agent_task write the files → nested yskill test of the result, with a bounded repair loop → evidence-bound completion or honest Blocked.
  • Scripted fixture exercises the full machinery including the nested test run (${YSKILL:-yskill}; CI pins YSKILL=/tmp/yskill).
  • Locus models + rival-design derivation under docs/locus/; design doc docs/locus-converter.md; README pointer.

Verification

go vet clean; YSKILL=/tmp/yskill yskill test examples/convert-skill reaches completed locally (nested test of the destination skill included); CI runs it in the yield-lab validate job.

Also in this cycle (context, already merged/repaired)

The public-repo sync had wedged silently: the manual seed recorded a branch commit that never landed on main, so the stale-guard ignored every sync while reporting success. Repaired by re-projecting from main @ 7e6447d0 — this PR's merge is the first true end-to-end test of the sync loop.

…ocus-decided design)

Turns an existing prose SKILL.md into a Yield program in the operator's
chosen language (go/typescript/python/rust). Locus verdicts
(docs/locus-converter.md):
- supervisory-rw controllable: shipping an unverified conversion is
  preventable; nonblocking: every conversion ends verified or honestly
  blocked
- DECIDED rival-design comparison: executed-verification satisfies
  forbidden-unreachable; completing on the model's transcription is
  rejected with the verbatim trace generate_program -> complete_untested
  -> SHIPPED_UNVERIFIED

The program owns pipeline order, the language menu, the <=2 repair
bound, and the evidence gate (nested 'yskill test' of the generated
skill, executed by the supervisor). The model owns flow extraction and
code writing. The scripted fixture exercises the full machinery
including the nested test run (CI: YSKILL=/tmp/yskill).

Disclosure-Reviewed: reviewed — public-safe only; private tree untouched by this commit
@bigboateng
bigboateng merged commit 2671bd9 into main Aug 1, 2026
6 checks passed
@bigboateng
bigboateng deleted the yield-converter branch August 1, 2026 03:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant