Get the Reactor packages mergeable + publishable and the launch surfaces coherent.
CI / publish (ci-reactor-package.yml):
- Drop the deleted reactor-cradle from the workflow and remove the obsolete .mjs
release-gate suite (.github/scripts/*reactor*.mjs + tests) entirely.
- Add per-package pack + publish jobs for @openprose/reactor, @openprose/reactor-cli,
and @openprose/reactor-devtools (idempotent, version-from-package.json,
reactor-v* tag-gated, provenance). The two CLI packages now have a release path.
- Fix the dangling cradle reference in tools/cli build-release-tarball.mjs;
regenerate pnpm-lock.yaml.
Install / first-run:
- reactor-cli: @openprose/reactor moved peer -> dependency (a global install now
pulls the SDK); @openai/agents + zod become optional peers (keyless install stays light).
- SDK README: replace non-existent *V0 imports with the real exports
(verifyReceipt / LedgerReceipt / inspectReceiptProof / projectReceiptProof).
- CLI README + http-server comment: correct the trigger route to POST /trigger/<node>.
Front-door + taxonomy:
- Promote the Reactor-forward launch README; add the technical report at
docs/reactor/v0.1/report.md (replacing the stale v0.1).
- Migrate SKILL.md and all packages/std + packages/co contracts off the retired
taxonomy (kind: service -> function, kind: system deleted, ### Ensures -> ### Maintains,
### Criteria/### Services folded) onto the Reactor model.
Prune the dead cradle-importing examples: drop flat-tokens and
release-readiness/reactor-package-example (keeping release-readiness/src, which is tested).
Gates: build, test:reactor:offline, test:examples (10/0), test:skill (252/252) all green offline.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* feat(spec): declared ### Skills section with fail-closed compile resolution
Implements the spec from issue #60. Components declare required harness
skills via a `### Skills` section (colon form, e.g. `document-skills:pdf`).
`prose compile` resolves declared skills against ./skills/, ~/.claude/skills/,
~/.codex/skills/, and ~/.agents/skills/, and fails closed with
`skill_unresolved` before forwarding to the agent harness when any are
missing.
- Spec: skills/open-prose/contract-markdown.md gains a ### Skills row in
the Canonical Sections table and a ## Skills H2 covering colon naming,
search order, the BYO-harness invariant, and fail-closed semantics.
- Implementation: tools/cli/src/skills/declared.ts (parser + resolver +
directory walker + DeclaredSkillsUnresolvedError). Pure functions; no
I/O beyond readFile / readdir / stat.
- Wiring: tools/cli/src/commands/compile.ts pre-checks declared skills
before forwarding the compile prompt; fails closed with
CompileValidationError when any are unresolved. Gated behind the
existing skillPreflight option for test parity.
- Example: skills/open-prose/examples/declared-skills/ shows the
document-skills:pdf canonical pattern.
- Tests: 19 new (18 in declared.test.ts covering parser/resolver/walker/
error formatter; 1 in cli.test.ts asserting compile fails closed before
the harness is invoked when a declared skill is missing).
- BYO harness: OpenProse never installs harness skills; resolution failure
is the user's signal to install the named skill themselves.
Resolves#60.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* feat(spec): move skill resolution into compiler program; trim spec per review
Address review feedback on #62:
- contract-markdown.md: drop the "not duplicated in frontmatter" clause —
the rejected alternative shouldn't propagate into the spec.
- contract-markdown.md: fail-closed clause now mentions only `prose compile`;
`prose run` enforcement is deferred per the PR description.
- compiler/index.prose.md: add a `skills_resolver` agent that owns the
search-path order, scope aggregation, BYO invariant, and fail-closed
semantics. Skill resolution is now a compiler/program-level
responsibility, not a harness responsibility, so other harnesses running
the compiler get the same behavior.
- skills/declared.ts: add a header comment pointing at the program-level
spec; this module is the harness implementation of `skills_resolver`.
- examples/declared-skills/README.md: update wording to reference the
compiler agent.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* fix(ci): make smoke artifacts case-specific
* fix(ci): use deterministic audit policy
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
The CLI now ships first-party agent SDKs only. The `codex` harness —
a thin shim around `codex exec` — has been removed. Supported
harnesses: `codex-sdk`, `claude-sdk`, `mock`.
BREAKING CHANGE: `--harness codex` (and `PROSE_HARNESS=codex`) no
longer works. Switch to `--harness codex-sdk` for first-party,
in-process Codex SDK execution. `codex-sdk` remains the default,
so most users are unaffected.
- Delete `codex-cli.ts` and `process-harness.ts`; keep
`process-runner.ts` for the OpenProse skill installer
- Trim `codex-options.ts` to SDK-shaped helpers
- Drop `codex` from the smoke script and CI matrix
- Align README, post-release playtest, and package metadata
Moves `@openprose/prose-cli` from `cli/` to `tools/cli/` and seeds a
`tools/` convention at the repo root for shippable tooling published as
standalone artifacts. Package internals are unchanged — only paths
outside the package that hard-code the `cli/` segment were updated.
## What changed
- `git mv cli tools/cli` — package files render as 100%-similarity
renames, so `git log --follow` is preserved.
- `.github/workflows/cli-publish.yml`,
`.github/workflows/cli-release-check.yml`, and
`.github/workflows/cli-real-harness-smoke.yml`: every literal `cli/`
path (`paths:`, `working-directory:`, `cache-dependency-path:`,
artifact `path:`, and inline `node`/`bash` invocations) now points
at `tools/cli/`. `cli-skills-smoke.yml` had no `cli/` references and
is untouched.
- `tools/cli/package.json`: `repository.directory` and `homepage` flip
to `tools/cli` so the npm registry "Repository" link resolves.
- `README.md`: the badge nav, the prose-layout paragraph, and the repo
layout table now point at `tools/cli/`, plus a new `tools/` row
introducing the convention.
- `RELEASE.md`: cross-references to `cli/RELEASE.md` updated.
- `tools/cli/README.md`, `tools/cli/RELEASE.md`,
`tools/cli/POST_RELEASE_PLAYTEST.md`: public installer URL updated to
`https://raw.githubusercontent.com/openprose/prose/main/tools/cli/install.sh`.