Repository navigation
fix: default OOP tool workspaces to the BOSS root - #28
shivanshu-risa wants to merge 6 commits into
Conversation
Review: keep OOP tool workspaces under the BOSS rootMoving the default away from the hard-coded 🔴 The constructor can now throw, so the holder never publishes
The old code could never throw: it fell back to Suggestion: never throw from this path. Fall back to the previous behaviour, then let the existing internal fun defaultParentDir(userHome: String): String {
if (userHome.isBlank()) return ""
return runCatching {
val bossRoot = File(userHome, ".boss").canonicalFile
val tools = File(bossRoot, "workspaces/tools").canonicalFile
if (!tools.toPath().startsWith(bossRoot.toPath())) return@runCatching null
tools.takeIf { it.isDirectory || it.mkdirs() }?.absolutePath
}.getOrNull() ?: userHome
}(Whether a symlinked workspace should be rejected at all is a separate question. Rejecting it is defensible, but it should degrade, not crash.) 🟠 The containment guarantee only covers the defaultThe title says workspaces are kept under the BOSS root, but that's only true for the default path:
If containment is a real security or invariant requirement (does the in-process plugin enforce it?), it belongs in 🟠 Behaviour regression in
|
Review: fix: keep OOP tool workspaces under the BOSS rootThanks for this. Pinning the upstream release instead of following 🔴 Blocking:
|
Review: default OOP tool workspaces to the BOSS rootThis is a well-scoped PR, and the reasoning is written down where the next person will look for it. The non-fatal Potential issues
Code quality / nits
Tests
Security
BOSS conventions
Overall I'd approve once item 1 is handled, at least in the input description, since the others are nits. Thanks for the thorough verification notes. |
|
Review: default OOP tool workspaces to the BOSS root Overall this looks good to merge. The main fix is right. Possible issues
Code quality
Tests
BOSS conventions
None of these block the merge. Item 1 is the one I'd fix before the next release run. |
Review: fix: default OOP tool workspaces to the BOSS rootOverall this is a solid, well-scoped PR. Pinning 🔴 Release workflow: the new
|
Review: default OOP tool workspaces to the BOSS rootThis is a careful PR. The main fix holds up: the holder now always publishes its first state, even when the home directory is unusable. Without that, a broken What works
Suggestions (none blocking)
Performance and security
BOSS plugin conventions
Test coverageThe five new tests cover the normal path, a blank home, a blocked Overall, LGTM once you've considered the notes above. |
Summary
~/.boss/workspaces/tools.SetParentDirlocations as user-selected output paths. This PR changes the default, not the user's ability to choose a project directory.latest.ipc_versionrelease override unless its matching BossConsole release tag is supplied.~/.boss/plugins; explicit custom parent directories retain the sibling-build lookup.Verification
CI=true ./gradlew clean build --no-build-cache --no-daemon(pass, 261 tests)unavailable boss path does not prevent initial state publicationfail; restoring the fix makes the clean suite pass.CI=true ./gradlew downloadDeps -Pbossconsole.release.tag= --rerun-tasks --no-daemonfails with the intended actionable property error.v9.5.19is the pinned compatible release for IPC1.0.0; newer BossConsole releases publish newer IPC asset names.