Validate and Harden the Carina Workflow - #63
Conversation
|
Warning Review limit reached
Next review available in: 37 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (9)
📝 WalkthroughWalkthroughThis release bumps Heartwood to Sequence Diagram(s)sequenceDiagram
participant OpenHands
participant Gateway
participant Session
participant ApprovalUI
participant Audit
OpenHands->>Gateway: propose tool call with arguments
Gateway->>Session: record proposal and confirmation request
Session->>ApprovalUI: project structured arguments
ApprovalUI->>Session: record approval decision
Session->>Audit: derive persisted audit event
Audit->>Audit: scrub sensitive arguments and error details
Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Prepares the 0.2.0-beta.3 release while incorporating findings from a full synthetic Stanford Carina validation: tightening native-install confinement/resumability, hardening the vLLM compatibility boundary (including child processes), and ensuring action-review surfaces show complete structured tool arguments across CLI, notebook, and web UI while keeping audit exports content-minimized.
Changes:
- Bump release/version markers to
0.2.0-beta.3(and0.2.0b3in the Python lock) across packages, Skills, fixtures, docs, and governance checks. - Plumb and render exact structured tool-call arguments through schemas → gateway → core-adapter → interfaces (CLI/web/notebook), including replay after resolution.
- Harden native installer + GPU runtime boundaries (confining installer state under
<root>/.installer/, release-stamping installers, resumability, audit/error scrubbing, and vLLM child-process bootstrap validation).
Reviewed changes
Copilot reviewed 86 out of 88 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| VERSION.toml | Bumps canonical release version to 0.2.0-beta.3. |
| uv.lock | Updates workspace package versions to 0.2.0b3. |
| skills/verified/omop-cohort-summary/SKILL.md | Updates Skill metadata version to beta.3. |
| skills/verified/omop-cohort-summary/metadata.json | Updates Skill metadata version to beta.3. |
| skills/verified/baseline-model/SKILL.md | Updates Skill metadata version to beta.3. |
| skills/verified/baseline-model/metadata.json | Updates Skill metadata version to beta.3. |
| skills/verified/aggregate-export/SKILL.md | Updates Skill metadata version to beta.3. |
| skills/verified/aggregate-export/metadata.json | Updates Skill metadata version to beta.3. |
| packages/webui/src/viewModel.ts | Renders proposed-tool details including structured arguments. |
| packages/webui/src/viewModel.test.ts | Adds/updates tests for preserving arguments in UI + replay. |
| packages/webui/src/types.ts | Extends approval-control type with arguments. |
| packages/webui/src/test/fixtures.ts | Updates synthetic events to include tool arguments. |
| packages/webui/src/styles.css | Adds wrapping + styling for multi-line argument details. |
| packages/webui/src/components/ConversationWorkspace.tsx | Displays JSON arguments for approval items in the web UI. |
| packages/webui/package.json | Bumps web UI package version to beta.3. |
| packages/webui/package-lock.json | Bumps lockfile version metadata to beta.3. |
| packages/skills/pyproject.toml | Bumps heartwood-skills to beta.3. |
| packages/session/src/heartwood/session/init.py | Bumps session package __version__. |
| packages/session/pyproject.toml | Bumps heartwood-session to beta.3. |
| packages/schemas/tests/test_schema_records.py | Updates schema/tests for version + confirmation arguments. |
| packages/schemas/src/heartwood/schemas/_records.py | Adds arguments to ConfirmationRequest. |
| packages/schemas/src/heartwood/schemas/init.py | Bumps schemas package __version__. |
| packages/schemas/pyproject.toml | Bumps heartwood-schemas to beta.3. |
| packages/notebook/tests/test_notebook.py | Updates notebook approval formatting expectations to include arguments. |
| packages/notebook/src/heartwood/notebook/_widgets.py | Renders action arguments in notebook approval items. |
| packages/notebook/src/heartwood/notebook/_view_model.py | Plumbs arguments into notebook view model. |
| packages/notebook/src/heartwood/notebook/init.py | Bumps notebook package __version__. |
| packages/notebook/pyproject.toml | Bumps heartwood-notebook to beta.3. |
| packages/model-policy/src/heartwood/model_policy/init.py | Bumps model-policy __version__. |
| packages/model-policy/pyproject.toml | Bumps heartwood-model-policy to beta.3. |
| packages/gateway/tests/test_openhands_sdk.py | Adds coverage for argument capture, validation exclusion, pause/resume behavior. |
| packages/gateway/tests/test_model_snapshots.py | Verifies Hugging Face download cache confinement + no implicit token. |
| packages/gateway/src/heartwood/gateway/_openhands_sdk.py | Captures exact tool args, filters invalid tool calls, refines pause/resume, improves error translation. |
| packages/gateway/src/heartwood/gateway/_model_snapshots.py | Constrains snapshot download cache location + disables HF token. |
| packages/gateway/pyproject.toml | Bumps heartwood-gateway to beta.3. |
| packages/fixtures/src/heartwood/fixtures/init.py | Bumps fixtures package __version__. |
| packages/fixtures/pyproject.toml | Bumps heartwood-fixtures to beta.3. |
| packages/detector/src/heartwood/detector/init.py | Bumps detector package __version__. |
| packages/detector/pyproject.toml | Bumps heartwood-detector to beta.3. |
| packages/core-adapter/tests/test_session_service.py | Ensures arguments persist, and audit scrubs detailed error reasons. |
| packages/core-adapter/src/heartwood/core_adapter/_service.py | Records arguments on tool/confirmation events; scrubs error reasons for audit log. |
| packages/core-adapter/src/heartwood/core_adapter/_facade.py | Extends ProposedToolCall with arguments. |
| packages/core-adapter/src/heartwood/core_adapter/init.py | Bumps core-adapter __version__. |
| packages/core-adapter/pyproject.toml | Bumps heartwood-core-adapter to beta.3. |
| packages/compliance/tests/test_release_governance.py | Updates release-governance checks for new installer behavior/version. |
| packages/compliance/tests/test_documentation_assets.py | Adds/updates assertions for Carina runbook + installer defaults and confinement. |
| packages/compliance/tests/test_container_assets.py | Verifies GPU runtime boundary hardening + child bootstrap inclusion. |
| packages/compliance/src/heartwood/compliance/init.py | Bumps compliance __version__. |
| packages/compliance/pyproject.toml | Bumps heartwood-compliance to beta.3. |
| packages/cli/tests/test_launch.py | Adds runtime-exit messaging test + copy-progress ETA stabilization test. |
| packages/cli/tests/test_interactive.py | Ensures CLI formatting shows arguments in pending/replay views. |
| packages/cli/src/heartwood/cli/_tui.py | Shows structured arguments in TUI approval list. |
| packages/cli/src/heartwood/cli/_launch.py | Improves runtime failure messaging + copy-progress status output. |
| packages/cli/src/heartwood/cli/_interactive.py | Adds arguments to pending actions + shared formatting helper. |
| packages/cli/src/heartwood/cli/init.py | Renders proposed-action arguments in event formatting and exports helper. |
| packages/cli/pyproject.toml | Bumps heartwood-cli to beta.3. |
| packages/audit/tests/test_audit_log.py | Ensures audit export scrubs arguments and other sensitive fields. |
| packages/audit/src/heartwood/audit/_log.py | Treats arguments as sensitive in scrubber. |
| packages/audit/src/heartwood/audit/init.py | Bumps audit __version__. |
| packages/audit/pyproject.toml | Bumps heartwood-audit to beta.3. |
| packages/adapters/tests/test_conformance.py | Updates conformance fixtures to beta.3. |
| packages/adapters/src/heartwood/adapters/conformance.py | Updates default expected Skill version to beta.3. |
| packages/adapters/src/heartwood/adapters/init.py | Bumps adapters __version__. |
| packages/adapters/pyproject.toml | Bumps heartwood-adapters to beta.3. |
| images/platform/Dockerfile | Installs GPU runtime child bootstrap into image runtime bin. |
| images/gpu/sitecustomize.py | New: applies reviewed vLLM boundary in child interpreters. |
| images/gpu/heartwood-vllm | Ensures runtime bin is on PYTHONPATH before launching Python. |
| images/gpu/heartwood_vllm.py | Idempotent boundary, child bootstrap config, and child import verification. |
| images/generic/Dockerfile | Installs GPU runtime child bootstrap into image runtime bin. |
| fixtures/synthetic/skills/omop-cohort-summary/SKILL.md | Bumps fixture Skill version to beta.3. |
| fixtures/synthetic/skills/omop-cohort-summary/metadata.json | Bumps fixture Skill version to beta.3. |
| docs/using-heartwood.md | Documents pause/resume semantics without re-running model calls. |
| docs/troubleshooting.md | Adds Carina installer quota + action-argument review guidance. |
| docs/terra-jupyter-demo.md | Updates Terra image tags to beta.3. |
| docs/terra-jupyter-demo.ipynb | Updates Terra tutorial image tags to beta.3. |
| docs/releases.md | Updates release commands/examples to beta.3 and PEP440 note. |
| docs/platform-support.md | Updates platform evidence to beta.3 and records Carina validation evidence. |
| docs/getting-started-offline.md | Updates offline image tags to beta.3. |
| docs/deployment.md | Clarifies native install root vs project root and installer confinement/cleanup. |
| docs/container-images.md | Updates image tags and examples to beta.3. |
| docs/carina-cli.md | Reworks Carina runbook: current-dir install root, release-bound installer, cleanup/resume. |
| design/06-observability-audit.md | Updates audit boundary semantics re: arguments + error-detail minimization. |
| design/03-architecture.md | Documents HF cache confinement and vLLM child-process boundary. |
| deploy/verify_release_candidate.py | Removes obsolete --version requirement from release verification. |
| deploy/tests/native_installer_smoke.sh | Expands installer smoke tests: confinement, version binding, cleanup, bootstrap python. |
| deploy/package-native.sh | Stamps installer with release version; validates safe version string. |
| deploy/install.sh | Makes current directory the default root; removes --version; adds --minimum-free-gib; confines installer state; release/bundle match enforcement; Carina platform binding. |
| deploy/carina/bootstrap.sh | Constrains bootstrap env + cache dirs; uses persistent bootstrap Python; installs child bootstrap. |
Files not reviewed (1)
- packages/webui/package-lock.json: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…ing/carina # Conflicts: # images/gpu/heartwood_vllm.py # images/gpu/sitecustomize.py # packages/cli/src/heartwood/cli/_launch.py # packages/cli/tests/test_launch.py # packages/compliance/tests/test_container_assets.py # packages/gateway/src/heartwood/gateway/_openhands_sdk.py # packages/gateway/tests/test_openhands_sdk.py
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (2)
packages/cli/src/heartwood/cli/_tui.py (1)
206-212: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueIndent action arguments for visual alignment.
The lines returned by
format_action_argumentsdo not include a baseline indentation to match the TUI's list structure. Consider prepending spaces to each line so the JSON payload aligns properly beneath theArguments:header.🎨 Proposed formatting fix
for index, action in enumerate(actions, 1): details = [ f"{index}. {action.summary}", f" {action.tool_name} · {action.risk.title()} risk", ] if action.arguments: - details.extend((" Arguments:", *format_action_arguments(action.arguments))) + details.extend( + ( + " Arguments:", + *(f" {line}" for line in format_action_arguments(action.arguments)), + ) + ) action_log.write("\n".join(details))🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/cli/src/heartwood/cli/_tui.py` around lines 206 - 212, Update the action argument rendering in the surrounding action-log flow to prepend the required baseline indentation to every line returned by format_action_arguments, so the JSON payload aligns beneath the “Arguments:” header while preserving the existing formatting and conditional behavior.packages/audit/tests/test_audit_log.py (1)
68-85: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueAssert that
argumentsis scrubbed in the exported payload.The test appropriately asserts that
"python run.py"is not in the persisted raw log, but for completeness, consider also verifying that theargumentskey itself is replaced with"[scrubbed]"in the parsedexporteddictionary, matching the other payload fields.💡 Proposed addition
assert exported["payload"]["apiKey"] == "[scrubbed]" assert exported["payload"]["nested"]["Authorization"] == "[scrubbed]" assert exported["payload"]["nested"]["client_secret"] == "[scrubbed]" + assert exported["payload"]["arguments"] == "[scrubbed]"🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/audit/tests/test_audit_log.py` around lines 68 - 85, Extend the audit log assertions after parsing the exported payload to verify that the arguments field is replaced with "[scrubbed]". Keep the existing persisted-content checks and align this assertion with the scrubbing expectations for the other payload fields.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/platform-support.md`:
- Line 26: Replace the relative beta reference on docs/platform-support.md lines
26-26 with the explicit 0.2.0-beta.2 platform identifier, preserving the
existing validation status; also replace “the preceding beta artifact” on
docs/platform-support.md lines 45-45 with the exact 0.2.0-beta.2 artifact
identifier.
In `@packages/compliance/tests/test_container_assets.py`:
- Line 493: Update the assertion in the relevant test to inspect the packager
script content, using the existing symbol or fixture that loads
deploy/package-native.sh, instead of checking installer. Preserve the regex
assertion unchanged.
---
Nitpick comments:
In `@packages/audit/tests/test_audit_log.py`:
- Around line 68-85: Extend the audit log assertions after parsing the exported
payload to verify that the arguments field is replaced with "[scrubbed]". Keep
the existing persisted-content checks and align this assertion with the
scrubbing expectations for the other payload fields.
In `@packages/cli/src/heartwood/cli/_tui.py`:
- Around line 206-212: Update the action argument rendering in the surrounding
action-log flow to prepend the required baseline indentation to every line
returned by format_action_arguments, so the JSON payload aligns beneath the
“Arguments:” header while preserving the existing formatting and conditional
behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 99869a7b-93a0-4b46-9461-47e0269ca756
⛔ Files ignored due to path filters (2)
packages/webui/package-lock.jsonis excluded by!**/package-lock.jsonuv.lockis excluded by!**/*.lock
📒 Files selected for processing (83)
VERSION.tomldeploy/carina/bootstrap.shdeploy/install.shdeploy/package-native.shdeploy/tests/native_installer_smoke.shdeploy/verify_release_candidate.pydesign/03-architecture.mddesign/06-observability-audit.mddocs/carina-cli.mddocs/container-images.mddocs/deployment.mddocs/getting-started-offline.mddocs/platform-support.mddocs/releases.mddocs/terra-jupyter-demo.ipynbdocs/terra-jupyter-demo.mddocs/troubleshooting.mddocs/using-heartwood.mdfixtures/synthetic/skills/omop-cohort-summary/SKILL.mdfixtures/synthetic/skills/omop-cohort-summary/metadata.jsonimages/gpu/heartwood_vllm.pyimages/gpu/sitecustomize.pypackages/adapters/pyproject.tomlpackages/adapters/src/heartwood/adapters/__init__.pypackages/adapters/src/heartwood/adapters/conformance.pypackages/adapters/tests/test_conformance.pypackages/audit/pyproject.tomlpackages/audit/src/heartwood/audit/__init__.pypackages/audit/src/heartwood/audit/_log.pypackages/audit/tests/test_audit_log.pypackages/cli/pyproject.tomlpackages/cli/src/heartwood/cli/__init__.pypackages/cli/src/heartwood/cli/_interactive.pypackages/cli/src/heartwood/cli/_launch.pypackages/cli/src/heartwood/cli/_tui.pypackages/cli/tests/test_interactive.pypackages/cli/tests/test_launch.pypackages/compliance/pyproject.tomlpackages/compliance/src/heartwood/compliance/__init__.pypackages/compliance/tests/test_container_assets.pypackages/compliance/tests/test_documentation_assets.pypackages/compliance/tests/test_release_governance.pypackages/core-adapter/pyproject.tomlpackages/core-adapter/src/heartwood/core_adapter/__init__.pypackages/core-adapter/src/heartwood/core_adapter/_facade.pypackages/core-adapter/src/heartwood/core_adapter/_service.pypackages/core-adapter/tests/test_session_service.pypackages/detector/pyproject.tomlpackages/detector/src/heartwood/detector/__init__.pypackages/fixtures/pyproject.tomlpackages/fixtures/src/heartwood/fixtures/__init__.pypackages/gateway/pyproject.tomlpackages/gateway/src/heartwood/gateway/_model_snapshots.pypackages/gateway/src/heartwood/gateway/_openhands_sdk.pypackages/gateway/tests/test_model_snapshots.pypackages/gateway/tests/test_openhands_sdk.pypackages/model-policy/pyproject.tomlpackages/model-policy/src/heartwood/model_policy/__init__.pypackages/notebook/pyproject.tomlpackages/notebook/src/heartwood/notebook/__init__.pypackages/notebook/src/heartwood/notebook/_view_model.pypackages/notebook/src/heartwood/notebook/_widgets.pypackages/notebook/tests/test_notebook.pypackages/schemas/pyproject.tomlpackages/schemas/src/heartwood/schemas/__init__.pypackages/schemas/src/heartwood/schemas/_records.pypackages/schemas/tests/test_schema_records.pypackages/session/pyproject.tomlpackages/session/src/heartwood/session/__init__.pypackages/skills/pyproject.tomlpackages/webui/package.jsonpackages/webui/src/components/ConversationWorkspace.tsxpackages/webui/src/styles.csspackages/webui/src/test/fixtures.tspackages/webui/src/types.tspackages/webui/src/viewModel.test.tspackages/webui/src/viewModel.tsskills/verified/aggregate-export/SKILL.mdskills/verified/aggregate-export/metadata.jsonskills/verified/baseline-model/SKILL.mdskills/verified/baseline-model/metadata.jsonskills/verified/omop-cohort-summary/SKILL.mdskills/verified/omop-cohort-summary/metadata.json
💤 Files with no reviewable changes (1)
- deploy/verify_release_candidate.py
### ♻️ Current situation & Problem Related to #25, #34, and #22. The Carina workflow required live end-to-end validation against the documented installation, model setup, Slurm allocation, inference, action-review, replay, audit, and cleanup paths. The previous installation workflow required callers to supply redundant installation and release inputs, while package-manager homes, caches, and temporary files were not comprehensively confined to the selected installation directory. Live validation also exposed GPU runtime compatibility issues, incomplete structured-action presentation, session lifecycle edge cases, and documentation that did not fully describe the validated workflow or its limitations. This pull request incorporates the findings from a complete synthetic Carina validation into the implementation, permanent documentation, and regression tests. It removes the temporary validation artifacts after preserving their durable findings. ### ⚙️ Release Notes - Prepare Heartwood `0.2.0-beta.3` across all Python packages, runtime constants, web manifests, lockfiles, Skills, fixtures, notebooks, image examples, and release documentation. - Install Heartwood into the current directory by default. - Bind each published native installer to its matching release bundle and remove the redundant installer `--version` option. - Replace the installer free-space environment override with the explicit `--minimum-free-gib` argument. - Confine installer homes, downloads, caches, configuration, and temporary files to `<installation-root>/.installer/`. - Remove transient installer state after successful installation while preserving it after an interrupted runtime installation so the operation can resume. - Keep the bootstrap Python runtime persistent and prohibit implicit package-manager Python downloads. - Bind Carina platform selection into the installed Heartwood launcher. - Harden the vLLM compatibility boundary in the primary and spawned Python processes. - Improve model staging cleanup, runtime diagnostics, Carina allocation handoff, session lifecycle handling, structured-action review, replay, and audit presentation. - Show complete terminal and file-action arguments before confirmation across the CLI, notebook, and web interfaces. - Preserve content-minimized, permission-restricted audit records while retaining private diagnostic information required for troubleshooting. - Document the validated Carina workflow, allocation behavior, cleanup contract, action-review expectations, and the limitations of free-form model output. - Remove the temporary `validation/` directory after moving its findings into maintained documentation and automated tests. Migration for the native installer: ```bash cd /projects/<project-owner>/<project-id>/heartwood-installation ./heartwood-installer --platform carina ``` The installer now infers the installation root from the current directory and its release from the published installer. Existing automation may continue to use `--root <path>`. Callers must remove the obsolete `--version` option and use `--minimum-free-gib <N>` instead of `HEARTWOOD_INSTALL_MINIMUM_FREE_GIB`. See `docs/carina-cli.md`, `docs/platform-support.md`, and `docs/troubleshooting.md`. ### 📚 Documentation - Reworked `docs/carina-cli.md` into a complete copy-and-follow installation and synthetic-validation workflow. - Updated installation, deployment, container-image, offline, Terra, release, usage, and troubleshooting documentation for `0.2.0-beta.3`. - Documented current-directory inference, release-bound installers, installation cleanup, resumability, project boundaries, model-transfer cleanup, and Carina GPU-allocation behavior. - Documented that deterministic Skill output and successful tool execution do not establish scientific or clinical validity. - Recorded the live synthetic Carina evidence and its explicit limitations in `docs/platform-support.md`. - Updated the architecture and audit design documents for structured action arguments, replay, and content-minimized audit behavior. - Removed temporary validation notes after incorporating their findings into canonical documentation and regression tests. Screenshots were not added because the supported Carina presentation is terminal-based and the relevant commands, review fields, and expected states are documented directly without exposing environment-specific information. ### ✅ Testing Local validation completed: - Native installer smoke test passed for generic and Carina installations. - Verifies current-directory installation. - Verifies release stamping and bundle-version matching. - Rejects the removed `--version` option. - Verifies installation-state and cache confinement. - Verifies successful cleanup and resumable repeated installation. - Verifies checksum and unsafe-path rejection. - Verifies persistent bootstrap Python and spawned-process GPU protections. - Ruff formatting and lint checks passed. - Mypy passed for 103 source files. - Shell syntax and ShellCheck passed for the modified deployment scripts. - Strict documentation staging and build passed. - Release-version verification passed for `0.2.0-beta.3`. - All current version declarations were audited; the only remaining beta.2 references are intentional historical-version documentation fixtures. - Web UI formatting, lint, type checking, production build, and license checks passed. - 63 web UI tests passed. - Python test execution reached 610 passing tests with 90.25% coverage. Two synthetic localhost-server tests could not bind loopback sockets under the local workspace sandbox and must be confirmed by GitHub Actions. - 88 directly relevant compliance tests passed; the one deselected test is the same loopback-bound registry fixture. Regression coverage was added or expanded for: - Installer defaults, release binding, cleanup, confinement, and resumability. - Carina bootstrap and vLLM child-process compatibility. - Model snapshot cleanup and runtime validation. - Slurm handoff and project-directory preservation. - Structured terminal and file-action arguments. - Action exclusion, rejection, replay, and audit behavior. - Session idle/resume and lifecycle handling. - CLI, notebook, and web action presentation. - Release governance and documentation consistency. ### [Code of Conduct](https://github.com/SchmiedmayerLab/.github/blob/main/CODE_OF_CONDUCT.md) & [Contributing Guidelines](https://github.com/SchmiedmayerLab/.github/blob/main/CONTRIBUTING.md) - [x] I agree to follow the [Code of Conduct](https://github.com/SchmiedmayerLab/.github/blob/main/CODE_OF_CONDUCT.md) and [Contributing Guidelines](https://github.com/SchmiedmayerLab/.github/blob/main/CONTRIBUTING.md).
♻️ Current situation & Problem
Related to #25, #34, and #22.
The Carina workflow required live end-to-end validation against the documented installation, model setup, Slurm allocation, inference, action-review, replay, audit, and cleanup paths.
The previous installation workflow required callers to supply redundant installation and release inputs, while package-manager homes, caches, and temporary files were not comprehensively confined to the selected installation directory. Live validation also exposed GPU runtime compatibility issues, incomplete structured-action presentation, session lifecycle edge cases, and documentation that did not fully describe the validated workflow or its limitations.
This pull request incorporates the findings from a complete synthetic Carina validation into the implementation, permanent documentation, and regression tests. It removes the temporary validation artifacts after preserving their durable findings.
⚙️ Release Notes
0.2.0-beta.3across all Python packages, runtime constants, web manifests, lockfiles, Skills, fixtures, notebooks, image examples, and release documentation.--versionoption.--minimum-free-gibargument.<installation-root>/.installer/.validation/directory after moving its findings into maintained documentation and automated tests.Migration for the native installer:
The installer now infers the installation root from the current directory and its release from the published installer. Existing automation may continue to use
--root <path>. Callers must remove the obsolete--versionoption and use--minimum-free-gib <N>instead ofHEARTWOOD_INSTALL_MINIMUM_FREE_GIB.See
docs/carina-cli.md,docs/platform-support.md, anddocs/troubleshooting.md.📚 Documentation
docs/carina-cli.mdinto a complete copy-and-follow installation and synthetic-validation workflow.0.2.0-beta.3.docs/platform-support.md.Screenshots were not added because the supported Carina presentation is terminal-based and the relevant commands, review fields, and expected states are documented directly without exposing environment-specific information.
✅ Testing
Local validation completed:
--versionoption.0.2.0-beta.3.Regression coverage was added or expanded for:
Code of Conduct & Contributing Guidelines