Skip to content

Commit e00907e

Browse files
authored
Merge pull request #56 from freshtechbro/codex/unify-workflow-output-roots
fix: unify workflow output roots
2 parents 996a0b1 + 043ea9b commit e00907e

29 files changed

Lines changed: 818 additions & 40 deletions

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.0.30] - 2026-05-16
11+
12+
### Changed
13+
- Workflow-generated artifacts now use one output-root contract across CLI, daemon RPC, OpenCode direct tools, and provider workflows.
14+
- Omitted workflow outputs resolve under the project `.opendevbrowser/<workflow>/<uuid>` tree while preserving explicit output directories.
15+
16+
### Fixed
17+
- Direct OpenCode-style workflow calls no longer drift into transient `/var/folders` or other process temp roots when `outputDir` is omitted.
18+
1019
## [0.0.21] - 2026-04-19
1120

1221
### Added

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ export CLAUDECODE_HOME="$ISOLATED_ROOT/claudecode-home"
108108
export AMP_CLI_HOME="$ISOLATED_ROOT/ampcli-home"
109109
cd "$WORKDIR"
110110
npm init -y
111-
npm install <public-repo-root>/opendevbrowser-0.0.29.tgz
111+
npm install <public-repo-root>/opendevbrowser-0.0.30.tgz
112112
npx --no-install opendevbrowser --help
113113
npx --no-install opendevbrowser help
114114
```

docs/AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# docs/ Agent Guidelines
1+
# docs/ - Agent Guidelines
22

33
Documentation source-of-truth scope. Extends root `AGENTS.md`.
44

@@ -64,7 +64,7 @@ When release-gate automation changes:
6464
- `docs/RELEASE_RUNBOOK.md`
6565
- `docs/EXTENSION_RELEASE_RUNBOOK.md`
6666
- `docs/DISTRIBUTION_PLAN.md`
67-
- the current version-scoped release evidence doc (for this release: `docs/RELEASE_0.0.27_EVIDENCE.md`)
67+
- the current version-scoped release evidence doc (for this release: `docs/RELEASE_0.0.30_EVIDENCE.md`)
6868
- older ledgers stay historical-only and should receive explicit status clarifications only
6969
- automation scripts:
7070
- `scripts/audit-zombie-files.mjs`

docs/ARCHITECTURE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ When hub mode is enabled, the hub daemon is the **sole relay owner** and enforce
459459
- **Parity gate** via `tests/parity-matrix.test.ts` (contract coverage for CLI/tool/runtime surface checks + mode coverage).
460460
- **Provider performance gate** via `tests/providers-performance-gate.test.ts` (deterministic fixture SLO checks).
461461
- **Strict live release gates** via `node scripts/provider-direct-runs.mjs --release-gate` and `node scripts/live-regression-direct.mjs --release-gate` (active live release proof layer).
462-
- **Release checklist** in `docs/RELEASE_RUNBOOK.md` with evidence tracking in the current version-scoped release ledger (for this cycle: `docs/RELEASE_0.0.27_EVIDENCE.md`).
462+
- **Release checklist** in `docs/RELEASE_RUNBOOK.md` with evidence tracking in the current version-scoped release ledger (for this cycle: `docs/RELEASE_0.0.30_EVIDENCE.md`).
463463
- **Benchmark fixture manifest** in `docs/benchmarks/provider-fixtures.md`.
464464
- **First-run onboarding checklist** in `docs/FIRST_RUN_ONBOARDING.md`.
465465

docs/CLI.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export CLAUDECODE_HOME="$ISOLATED_ROOT/claudecode-home"
6161
export AMP_CLI_HOME="$ISOLATED_ROOT/ampcli-home"
6262
cd "$WORKDIR"
6363
npm init -y
64-
npm install <public-repo-root>/opendevbrowser-0.0.29.tgz
64+
npm install <public-repo-root>/opendevbrowser-0.0.30.tgz
6565
npx --no-install opendevbrowser --help
6666
npx --no-install opendevbrowser help
6767
```
@@ -550,7 +550,7 @@ Wrapper behavior:
550550
- Render modes for `research`, `shopping`, and `inspiredesign` are shared: `compact|json|md|context|path`.
551551
- Successful research, shopping, inspiredesign, and product-video artifact-bearing outputs include `artifact_path`.
552552
- `inspiredesign run` returns a reusable design contract plus a Canvas-first handoff bundle; `--include-prototype-guidance` adds prototype structure guidance to the same workflow output.
553-
- Path-bearing workflow outputs persist artifacts under the explicit `--output-dir` when provided and include TTL metadata in manifest files. The CLI rejects blank `--output-dir` values and resolves relative paths from the invocation directory before daemon dispatch. When `--output-dir` is omitted, research, shopping, inspiredesign, and product-video asset packs write to `.opendevbrowser/<namespace>/<runId>` from the current workspace. Namespaces are `research`, `shopping`, `inspiredesign`, and `product-video`. Direct tool or daemon callers should pass an absolute output directory when they need caller-specific placement.
553+
- Path-bearing workflow outputs persist artifacts under the explicit `--output-dir` when provided and include TTL metadata in manifest files. The CLI rejects blank `--output-dir` values and resolves relative paths from the invocation directory before daemon dispatch. When `--output-dir` is omitted, research, shopping, inspiredesign, and product-video asset packs write to `<invocation-or-workspace-root>/.opendevbrowser/<namespace>/<runId>`. CLI runs use the process invocation directory, while direct OpenCode tools and daemon direct RPC use the workspace root equivalent from `core.cacheRoot`. Namespaces are `research`, `shopping`, `inspiredesign`, and `product-video`. Direct tool or daemon callers can still pass an explicit output directory for caller-specific placement.
554554
- Workflow cookie policy defaults to `providers.cookiePolicy=auto` and source defaults to `providers.cookieSource` (`file`, `env`, or `inline`).
555555
- Effective policy precedence is `--cookie-policy-override`/`--cookie-policy` > `--use-cookies` > config defaults.
556556
- `auto` attempts injection when cookies are available and continues when cookies are missing/unusable.
@@ -582,7 +582,7 @@ Script helper:
582582

583583
Notes:
584584
- `--expired-only` is required.
585-
- Default cleanup root is `${TMPDIR:-/tmp}/opendevbrowser`. To clean workspace-local workflow artifacts, pass `--output-dir ./.opendevbrowser`.
585+
- Default cleanup root is `${TMPDIR:-/tmp}/opendevbrowser`. This helper cleanup default is separate from omitted workflow output roots. To clean workspace-local workflow artifacts, pass `--output-dir ./.opendevbrowser`.
586586
- Output includes `removed` and `skipped` run paths.
587587

588588
### Run (single-shot script)
@@ -1756,7 +1756,7 @@ npm run test -- tests/providers-performance-gate.test.ts
17561756
17571757
These commands are release guards, not the live release-proof lane. Use the direct-run harness commands above for release evidence.
17581758
1759-
Release gate source of truth: `docs/RELEASE_RUNBOOK.md` and `docs/RELEASE_0.0.28_EVIDENCE.md`.
1759+
Release gate source of truth: `docs/RELEASE_RUNBOOK.md` and `docs/RELEASE_0.0.30_EVIDENCE.md`.
17601760
Benchmark fixture manifest: `docs/benchmarks/provider-fixtures.md`.
17611761
17621762
---

docs/FIRST_RUN_ONBOARDING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ This guide is the shipping checklist for validating OpenDevBrowser as a new user
2727
```bash
2828
cd <public-repo-root>
2929
npm pack
30-
# -> opendevbrowser-0.0.29.tgz
30+
# -> opendevbrowser-0.0.30.tgz
3131
```
3232

3333
## 2) Simulate a brand-new isolated user workspace
@@ -44,7 +44,7 @@ export AMP_CLI_HOME="$WORKROOT/amp-home"
4444
mkdir -p "$WORKDIR" "$HOME" "$OPENCODE_CONFIG_DIR" "$OPENCODE_CACHE_DIR" "$CODEX_HOME" "$CLAUDECODE_HOME" "$AMP_CLI_HOME"
4545
cd "$WORKDIR"
4646
npm init -y
47-
npm install <public-repo-root>/opendevbrowser-0.0.29.tgz
47+
npm install <public-repo-root>/opendevbrowser-0.0.30.tgz
4848
npx --no-install opendevbrowser version --output-format json
4949
```
5050

docs/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ Generated help is the canonical first-contact discovery surface and must keep th
3434

3535
## Version-scoped evidence
3636

37-
- `<public-repo-root>/docs/RELEASE_0.0.27_EVIDENCE.md` - current release evidence ledger for the active ship cycle
37+
- `<public-repo-root>/docs/RELEASE_0.0.30_EVIDENCE.md` - current release evidence ledger for the active ship cycle
38+
- `<public-repo-root>/docs/RELEASE_0.0.28_EVIDENCE.md` - historical v0.0.28 release evidence ledger
39+
- `<public-repo-root>/docs/RELEASE_0.0.27_EVIDENCE.md` - historical v0.0.27 release evidence ledger
3840
- `<public-repo-root>/docs/RELEASE_0.0.26_EVIDENCE.md` - historical v0.0.26 release evidence ledger
3941
- `<public-repo-root>/docs/RELEASE_0.0.21_EVIDENCE.md` - historical v0.0.21 release evidence ledger
4042
- `<public-repo-root>/docs/RELEASE_0.0.20_EVIDENCE.md` - historical v0.0.20 release evidence ledger

docs/RELEASE_0.0.30_EVIDENCE.md

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# v0.0.30 Release Evidence
2+
3+
Status: active release ledger
4+
Target release date: 2026-05-16
5+
Target tag: `v0.0.30`
6+
7+
## Scope
8+
9+
Tracks the `0.0.30` release cycle for uniform workflow output roots across CLI, daemon RPC, OpenCode direct tools, and provider workflow fallbacks.
10+
11+
## Reference State
12+
13+
- Previous npm `latest`: `0.0.29`
14+
- Previous GitHub release: `v0.0.29`
15+
- Release branch: `codex/unify-workflow-output-roots`
16+
- Target tag: `v0.0.30`
17+
- GitHub release workflow: `.github/workflows/release-public.yml`
18+
- Repository secret preflight: `NPM_TOKEN` is configured.
19+
20+
## Release Delta
21+
22+
- Omitted generated workflow output roots now resolve to `<cli cwd>/.opendevbrowser/<workflow>/<uuid>` for CLI invocations.
23+
- OpenCode direct tools and raw daemon RPCs now resolve omitted workflow output roots from the project workspace root instead of transient process temp directories.
24+
- Explicit `outputDir` values remain preserved across CLI, direct tools, daemon RPC, and provider workflow calls.
25+
- Low-level non-workflow artifact fallback and screencast replay defaults remain unchanged.
26+
27+
## Version Alignment
28+
29+
- `package.json`: `0.0.30`
30+
- `package-lock.json`: `0.0.30`
31+
- `extension/package.json`: `0.0.30`
32+
- `extension/manifest.json`: `0.0.30`
33+
34+
## Mandatory Local Release Gates
35+
36+
- [x] `npm run extension:sync`
37+
- [x] `npm run version:check`
38+
- [x] `npm run test:release-gate`
39+
- [x] `node scripts/audit-zombie-files.mjs`
40+
- [x] `node scripts/docs-drift-check.mjs`
41+
- [x] `node scripts/chrome-store-compliance-check.mjs`
42+
- [x] `./skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh`
43+
- [x] `npx opendevbrowser --help`
44+
- [x] `npx opendevbrowser help`
45+
- [x] `npm run lint`
46+
- [x] `npm run typecheck`
47+
- [x] `npm run test`
48+
- [x] `npm run build`
49+
- [x] `npm run extension:build`
50+
- [x] `npm run extension:pack`
51+
- [x] `npm pack --pack-destination /tmp`
52+
53+
## Optional Strict Live Gates
54+
55+
- [ ] Deferred unless explicitly required for this release:
56+
- `node scripts/provider-direct-runs.mjs --release-gate --out artifacts/release/v0.0.30/provider-direct-runs.json`
57+
- `node scripts/live-regression-direct.mjs --release-gate --out artifacts/release/v0.0.30/live-regression-direct.json`
58+
59+
## Implementation Proof
60+
61+
- [x] Progressive RepoPrompt review loop completed.
62+
- First review found P2 test coverage gaps for direct and daemon roots; fixed.
63+
- Second review found an unrelated screencast assertion hunk; removed.
64+
- Third review had no actionable P0/P1/P2 findings.
65+
- [x] Focused workflow test suite passed after review.
66+
- Command: `npm run test -- tests/tools-workflows.test.ts tests/daemon-commands.integration.test.ts tests/cli-workflows.test.ts tests/providers-artifacts-workflows.test.ts tests/providers-inspiredesign-workflow.test.ts`
67+
- Result: 5 files passed, 196 tests passed.
68+
- [x] Pre-release full test gate passed before version bump.
69+
- Command: `npm run test`
70+
- Result: 271 files passed, 1 skipped; 4414 tests passed, 1 skipped; all-files coverage 98.22% statements, 97% branches, 97.95% functions, 98.28% lines.
71+
- [x] Live workflow output validation passed before version bump.
72+
- CLI managed runs for research, shopping, inspiredesign, and product-video wrote under `.opendevbrowser/<workflow>/<uuid>`.
73+
- Direct OpenCode-style tool runs from `/var/folders/.../odb-direct-tool-cwd-*` wrote under the repo `.opendevbrowser`, not the temp cwd.
74+
- Raw daemon RPC runs wrote under the repo `.opendevbrowser/<workflow>/<uuid>`.
75+
- Explicit output roots were preserved across CLI, daemon RPC, and direct tool runs.
76+
77+
## Local Release Gate Results
78+
79+
- `npm run extension:sync`: synced `extension/manifest.json` and `extension/package.json` to `0.0.30`.
80+
- `npm run version:check`: passed, version `0.0.30`.
81+
- `node scripts/audit-zombie-files.mjs`: passed, scanned 1028 files, flagged none.
82+
- `node scripts/docs-drift-check.mjs`: initially failed because `README.md` still referenced `opendevbrowser-0.0.29.tgz`; after updating that stale reference, rerun passed.
83+
- `node scripts/chrome-store-compliance-check.mjs`: passed, manifest version `0.0.30`.
84+
- `./skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh`: passed, 22 referenced files present, 10 JSON templates parsed.
85+
- `npm run test:release-gate`: passed all five groups.
86+
- Group 1 `provider-direct-contracts`: 2 files passed, 99 tests passed.
87+
- Group 2 `live-direct-regression-contracts`: 3 files passed, 37 tests passed.
88+
- Group 3 `cli-help-parity`: 1 file passed, 15 tests passed.
89+
- Group 4 `docs-and-zombie-audits`: 2 files passed, 5 tests passed.
90+
- Group 5 `chrome-store-compliance`: 1 file passed, 1 test passed.
91+
- `npx opendevbrowser --help`: passed, wrote 798 lines to `/tmp/odb-help-0.0.30.txt`.
92+
- `npx opendevbrowser help`: passed, wrote 798 lines to `/tmp/odb-help-command-0.0.30.txt`.
93+
- `npm run lint`: passed.
94+
- `npm run typecheck`: passed.
95+
- `npm run build`: passed.
96+
- `npm run extension:build`: passed.
97+
- `npm run test`: passed, 271 files passed, 1 skipped; 4414 tests passed, 1 skipped; all-files coverage 98.22% statements, 97% branches, 97.95% functions, 98.29% lines.
98+
- `npm run extension:pack`: passed, produced `opendevbrowser-extension.zip`.
99+
- `shasum -a 256 opendevbrowser-extension.zip`: `d794bd052e3e01ab6bb84d99f983e36faa989afd7e1e42128634111043773a75`.
100+
- `npm pack --pack-destination /tmp`: passed, produced `/tmp/opendevbrowser-0.0.30.tgz`; package size 2.3 MB, unpacked size 11.6 MB, total files 1218, shasum `af40f0b5b41da820db34af604bfbf49bf150892e`.
101+
102+
## External Release Workflow Evidence
103+
104+
- [ ] Release workflow run URL
105+
- [ ] npm publish verification
106+
- [ ] Registry consumer smoke
107+
- [ ] GitHub release URL
108+
- [ ] GitHub release asset verification
109+
110+
## Notes
111+
112+
- Strict live gates are separate from release quality gates. They remain deferred for this release unless explicitly enabled.
113+
- If GitHub Actions npm publication fails despite `NPM_TOKEN` being configured, local authenticated npm publish is available as fallback and must be recorded here.

docs/SURFACE_REFERENCE.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Source-accurate inventory for CLI commands, plugin tools, relay channel commands, flags, and modes.
44
Status: active
5-
Last updated: 2026-04-12
5+
Last updated: 2026-05-16
66

77
This reference is intentionally exhaustive and should stay synchronized with:
88
- `src/public-surface/source.ts`
@@ -221,6 +221,8 @@ Operational note:
221221
- `opendevbrowser_skill_list` - List available bundled and discovered skill packs. Tool-only.
222222
- `opendevbrowser_skill_load` - Load a specific skill pack locally without browser work. Tool-only.
223223

224+
Workflow output note: omitted direct workflow tool output roots resolve through the workspace root to `.opendevbrowser/<workflow>/<runId>`. Explicit output roots are preserved as caller intent.
225+
224226
---
225227

226228
## Relay Channel Inventory

0 commit comments

Comments
 (0)