unitbob 0.4.3 → 0.4.4
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.
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ claude plugin install unitbob@unitbob
|
|
|
30
30
|
```
|
|
31
31
|
codex plugin marketplace add sergeygershun/unitbob-connector
|
|
32
32
|
codex plugin add unitbob@unitbob
|
|
33
|
-
npx -y unitbob@0.4.
|
|
33
|
+
npx -y unitbob@0.4.4 codex-install
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
Start a new Claude Code or Codex thread so the installed skill and named agents
|
|
@@ -28,13 +28,14 @@ export async function probeBehavioralWorld(projectRoot, deps = {
|
|
|
28
28
|
env: {
|
|
29
29
|
...process.env,
|
|
30
30
|
RAILS_ENV: 'test',
|
|
31
|
+
CUCUMBER_PUBLISH_QUIET: 'true',
|
|
31
32
|
UNITBOB_REPO_ROOT: projectRoot,
|
|
32
33
|
BUNDLE_GEMFILE: join(projectRoot, '.unitbob', 'behavioral', 'Gemfile'),
|
|
33
34
|
},
|
|
34
35
|
});
|
|
35
36
|
if (result.code === 0)
|
|
36
37
|
return { status: 'ok' };
|
|
37
|
-
const detail = [result.
|
|
38
|
+
const detail = [result.stdout, result.stderr].map((text) => text.trim()).filter(Boolean).join('\n') || `exit ${result.code}`;
|
|
38
39
|
return { status: 'fixable', message: `The connector-owned Ruby/Cucumber World probe failed: ${detail}` };
|
|
39
40
|
}
|
|
40
41
|
catch (error) {
|
|
@@ -58,6 +59,14 @@ PROBE_OTHER_TIME_ZONE = PROBE_TIME_ZONE&.name == 'UTC' ? 'Hawaii' : 'UTC'
|
|
|
58
59
|
PROBE_LOCALE = I18n.locale
|
|
59
60
|
PROBE_RECEIVER = Object.new
|
|
60
61
|
|
|
62
|
+
# The probe runs in a dedicated process, so replacing its in-memory route set
|
|
63
|
+
# cannot affect the host application after the process exits. Keeping these
|
|
64
|
+
# endpoints here makes the profile check independent of routes the host owns.
|
|
65
|
+
Rails.application.routes.draw do
|
|
66
|
+
match '/__unitbob_world_probe__', to: proc { [200, { 'Content-Type' => 'text/plain' }, ['ok']] }, via: :all
|
|
67
|
+
match '/__unitbob_world_probe_redirect__', to: redirect('/__unitbob_world_probe_target__'), via: :all
|
|
68
|
+
end
|
|
69
|
+
|
|
61
70
|
Given('the first World probe scenario mutates supported state') do
|
|
62
71
|
@unitbob_connection.execute("INSERT INTO schema_migrations (version) VALUES ('#{PROBE_VERSION}')")
|
|
63
72
|
Time.zone = PROBE_OTHER_TIME_ZONE
|
|
@@ -173,7 +173,7 @@ export async function suitePrepare(config, args = [], deps) {
|
|
|
173
173
|
// A fixable runner blocker is not a failure: the structural suite still builds this run. Tell the
|
|
174
174
|
// vibecoder the one command that unblocks the behavioral peer, then re-run suite-prepare.
|
|
175
175
|
if (fixableNotices.length > 0) {
|
|
176
|
-
actual.stdout.write('\nBehavioral suite skipped this run — its
|
|
176
|
+
actual.stdout.write('\nBehavioral suite skipped this run — its runner or connector-owned World profile is not ready. ' +
|
|
177
177
|
'This is a fixable setup step, not a build failure, and it does not affect the structural suite:\n' +
|
|
178
178
|
fixableNotices.join('\n') +
|
|
179
179
|
'\nFix the above, then re-run `unitbob suite-prepare` to build the behavioral peer.\n');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unitbob",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "Unitbob connector — thin local hands for the Unitbob Rails brain. Owns no domain logic: it runs tools, relays bytes over the wire, and prints what the server returns.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -16,7 +16,7 @@ markers, or paths. Do not edit production code, host-owned shared files, the
|
|
|
16
16
|
connector-owned harness, or another slice.
|
|
17
17
|
|
|
18
18
|
After every owned edit, run
|
|
19
|
-
`npx -y --loglevel=error unitbob@0.4.
|
|
19
|
+
`npx -y --loglevel=error unitbob@0.4.4 run-local <branch>` and inspect the machine
|
|
20
20
|
report. Look only at examples or scenarios matching your owned paths or case
|
|
21
21
|
markers. Do not require a green exit code from the whole branch: foreign failures
|
|
22
22
|
and an already-confirmed product red do not widen your scope. Repeat the bounded
|