Skip to content

SMOODEV-1788: cut smooth over to published smooai-smooth-operator-core v0.14.0; re-home th-code harness#93

Merged
brentrager merged 4 commits into
mainfrom
SMOODEV-1790-engine-cutover
Jun 9, 2026
Merged

SMOODEV-1788: cut smooth over to published smooai-smooth-operator-core v0.14.0; re-home th-code harness#93
brentrager merged 4 commits into
mainfrom
SMOODEV-1790-engine-cutover

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

Problem

Final PR of the engine-decouple program. The engine smooai-smooth-operator-core is now published on crates.io at 0.14.0 — a clean, generic agent engine with the th code coding harness removed. smooth still depended on the engine via a git rev (bb9a256) that still carried the harness, which is why it kept building. This PR cuts smooth over to the published 0.14.0 and re-homes the harness code smooth actually uses into smooth-owned crates.

Solution

Engine dep → crates.io 0.14.0. Root Cargo.toml:
smooth-operator = { git = …, rev = "bb9a256…" }smooth-operator = { version = "0.14.0", package = "smooai-smooth-operator-core" }. The dep KEY stays smooth-operator so every use smooth_operator::… for the GENERIC engine API is unchanged. Cargo.lock now resolves the engine from registry+https://github.com/rust-lang/crates.io-index (checksum-pinned), not git — the git-rev bridge is gone.

New smooth-cast crate (smooai-smooth-cast) re-homes the bits the engine dropped, built on the engine's generic public Cast/OperatorRole/Clearance API:

  • coding_workflow — the th code single-agent outer loop (run_coding_workflow, task_text_has_cleanup_intent, …). Its internal Cast::builtin() lookup is repointed to smooth_cast::cast::builtin() so the fixer role is present.
  • skills — discovery (discover, SkillScope, SkillSource, Skill) + the built-in create-skill skill.
  • cast — the four harness roles (fixer, oracle, chief, intent_classifier) the generic engine dropped, plus cast::builtin() that registers them on top of the engine's generic built-in roles. All moved tests came with the code.

Consumers repointed to smooth-cast: smooth-operative (coding_workflow + fixer resolution), smooth-code (skills + chief/intent_classifier routing), smooth-cli (skills + --agent resolution), smooth-bigsmooth (skills + session auto-naming). Every Cast::builtin().get("fixer"|"oracle"|"chief"|"intent_classifier") now uses the smooth cast.

The Big-Smooth reporter hooks the engine also dropped stay deleted — verified zero smooth consumers (with_reporter/BigSmoothReporter/ReporterEvent/report_to_bigsmooth/the bigsmooth engine feature). smooth's own smooth-bigsmooth gRPC crate is unrelated and untouched.

Verification

  • cargo build --workspace clean against crates.io 0.14.0.
  • cargo tree -i smooai-smooth-operator-core / Cargo.lock show source = "registry+https://github.com/rust-lang/crates.io-index" (the published crate, not a git source).
  • grep -rnE 'git = .*smooth-operator-core|rev = "bb9a256' Cargo.toml crates/*/Cargo.toml returns nothing.
  • Full test suite green except two pre-existing parallel-execution flakes (smooth-bench current_commit_sha, smooth-cli active_org set_persists) — both pass in isolation and touch none of the cutover code.

🤖 Generated with Claude Code

…-core v0.14.0 (crates.io); re-home the th-code harness (coding_workflow, skills, fixer/oracle/chief/intent_classifier cast roles) into smooth's own crates

Final PR of the engine-decouple program. The engine
smooai-smooth-operator-core is now published on crates.io at 0.14.0 — a clean
generic agent engine with the th-code coding harness REMOVED. smooth previously
depended on the engine via the git rev bb9a256, which STILL carried the harness,
which is why it kept building. After this cutover smooth consumes the published
0.14.0 (no harness), so smooth now owns the harness bits it uses.

- Engine dep: root Cargo.toml switched from the rev-pinned git dep
  (rev bb9a256) to `smooth-operator = { version = "0.14.0", package =
  "smooai-smooth-operator-core" }`. Dep KEY unchanged so `use smooth_operator::…`
  for the GENERIC engine API stays put. Cargo.lock resolves the engine from
  crates.io (registry source + checksum), not git — the git-rev bridge is gone.

- New smooth-cast crate (smooai-smooth-cast) re-homes the dropped harness,
  built on the engine's generic public Cast/OperatorRole/Clearance API:
  * coding_workflow — the th-code single-agent outer loop (run_coding_workflow,
    task_text_has_cleanup_intent, …). Internal Cast::builtin() lookup repointed
    to smooth_cast::cast::builtin() so the fixer role is present.
  * skills — discovery (discover, SkillScope, SkillSource, Skill) + the built-in
    create-skill skill.
  * cast — the four harness roles (fixer, oracle, chief, intent_classifier) the
    generic engine dropped, plus cast::builtin() that adds them on top of the
    engine's generic built-in roles. All moved tests came with the code.

- Consumers repointed: smooth-operative (coding_workflow + fixer resolution),
  smooth-code (skills + chief/intent_classifier routing), smooth-cli (skills +
  --agent resolution), smooth-bigsmooth (skills + session auto-naming). Every
  Cast::builtin().get("fixer"|"oracle"|"chief"|"intent_classifier") now uses the
  smooth cast.

- bigsmooth reporter hooks the engine dropped stay deleted (verified zero smooth
  consumers of with_reporter/BigSmoothReporter/ReporterEvent/report_to_bigsmooth/
  the bigsmooth feature). smooth's own smooth-bigsmooth gRPC crate is unrelated.

Verified: cargo build --workspace clean against crates.io 0.14.0; cargo tree -i
shows the engine resolved from the crates.io registry. Full test suite green
except two pre-existing parallel-execution flakes (smooth-bench
current_commit_sha, smooth-cli active_org set_persists) that both pass in
isolation and touch none of the cutover code.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Jun 9, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 2411765

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@smooai/smooth Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

brentrager and others added 3 commits June 9, 2026 14:46
…th-code harness lives now

Update docs/Engineering/Using-smooth-operator-and-smooth-operator-agent.md
section 1 (was "stop vendoring", described as future) to reflect that the
extraction is done: smooth now consumes the published crates.io
smooai-smooth-operator-core 0.14.0, and the th-code harness (coding_workflow,
skills, fixer/oracle/chief/intent_classifier cast roles) was re-homed into the
new smooth-cast crate. Also de-stale the engine repo/crate name in the header
table (smooth-operator -> smooth-operator-core).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…files

After re-homing coding_workflow + the fixer/oracle roles into smooth-cast,
update the comments/strings that still pointed at the old engine paths:

- smooth-cast/src/coding_workflow.rs: fixer.txt is now at
  crates/smooth-cast/src/prompts/fixer.txt, loaded by crate::cast::builtin().
- smooth-code/src/app.rs: coding_workflow reference -> crates/smooth-cast.
- smooth-bigsmooth/src/policy.rs: read_only_tools() now split between the
  engine (mapper/heckler) and smooth-cast (oracle).
- smooth-bigsmooth/src/chat_tools.rs: the `role` tool-arg description points at
  smooth_cast::cast::builtin() instead of smooth-operator/src/cast.

Comment/string-only — no behavior change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@brentrager brentrager enabled auto-merge June 9, 2026 18:51
@brentrager brentrager merged commit ee0f677 into main Jun 9, 2026
2 checks passed
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