Commit Graph
1715 Commits
Author SHA1 Message Date
DottaandPaperclip a681637461 Materialize independent files in new provider packs
Bind the new layout policy into provider-pack identity and verify it on controller and guest while preserving legacy immutable packs and approved image root aliases.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-11 08:54:22 -05:00
DottaandPaperclip 0c30f1f3e5 Report bounded metadata for module link-count rejections
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-11 08:54:02 -05:00
Dotta 68cb3d17ae Carry explicit existing-branch intent in workspace realization
Keep requested branch attachment separate from ownership established by realization, and round-trip the optional intent through the shared request contract.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
(cherry picked from commit ab1e8acc68)
2026-10-11 08:26:35 -05:00
Dotta 46380dd60b Fix runtime prerequisite home, workspace, and integrity boundaries
Co-Authored-By: Paperclip <noreply@paperclip.ing>
(cherry picked from commit 96db062487)
2026-10-11 08:26:35 -05:00
DottaandPaperclip 05f3725af8 Preserve module fence diagnostics through ACPX stderr summaries
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-11 06:57:53 -05:00
Dotta 70fb0988c0 diagnostics: identify closed provider module rejection fences 2026-10-11 06:00:33 -05:00
Dotta 683696352d fix: verify dependency read continuity after ctime hydration 2026-10-11 04:32:31 -05:00
Dotta d5bce13cca fix: terminate guarded providers on fatal module import 2026-10-11 04:10:07 -05:00
Dotta e96538ffcc fix: share Boat upload capacity before command admission 2026-10-11 03:01:37 -05:00
Dotta 86994966da Diagnose deferred ACPX turn admission with closed phases 2026-10-11 02:26:55 -05:00
Dotta a93abeb160 Share bounded artifact verification for ACP command and runtime 2026-10-11 01:41:17 -05:00
Dotta 991baf77cf Reverify qualified runtime after ctime-only hydration 2026-10-11 00:59:53 -05:00
Dotta a48dafe553 Format ACPX rejection diagnostic regressions 2026-10-11 00:38:49 -05:00
Dotta 388a16905b Preserve safe ACPX admission diagnostics on rejection 2026-10-11 00:31:33 -05:00
Dotta d50dd0f49b Port upstream runtime while preserving Boat staging migration history 2026-10-11 00:01:05 -05:00
Dotta 780ecec585 Bind Copilot profile v18 to admission diagnostics 2026-10-10 23:54:52 -05:00
Dotta 654f558e6a Synchronize admission diagnostic tests with runtime entry 2026-10-10 23:50:26 -05:00
Dotta 81108b27be Preserve safe ACPX admission stages on startup timeout 2026-10-10 23:38:57 -05:00
Dotta 05a1d1f217 fix: classify pinned sidecar admission failures safely 2026-10-10 23:07:36 -05:00
Dotta 2e8859ab76 Preserve controller-owned provider pack authority across cold resume 2026-10-10 21:19:45 -05:00
DottaandPaperclip 2df40da458 Merge final Boat legacy runtime and environment guards
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* commit '3673939bed4cb85f20d142f950547e3a60502bca':
  fix(computers): expose persistent instructions and managed CLI skills
  fix(adapters): expose Boat instructions and managed Claude skills
  fix(ui): honor forced Kubernetes before Boat engine checks
2026-10-10 15:33:06 -05:00
DottaandPaperclip 8b2a71c1e4 fix(adapters): expose Boat instructions and managed Claude skills
Keep controller instruction reads while advertising the registered persistent execution path. Mount approved remote Claude skills into the isolated user configuration so user-only settings can discover them without enabling project settings.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 15:31:55 -05:00
DottaandPaperclip c85eb28298 fix(db): preserve deployed Boat staging migration lineage
Keep the deployed Boat migration and append the unchanged upstream fast-response migration with regenerated Drizzle snapshots. This branch is staging-only; canonical feature history remains unchanged.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 14:33:02 -05:00
Dotta 3081b7480f Merge current upstream schema into Boat feature branch
* commit '2c09c8c16da3d605fc043c745535a7e65f961bb9':
  perf(chat): wake action queues from commits and deadlines (#15808)
  chore(lockfile): refresh pnpm-lock.yaml (#15820)
  feat: add company fast-response acknowledgements (#15748)
  ci: move the Grok public-install verification off Canary Dry Run (#15213)
2026-10-10 13:43:20 -05:00
DottaandPaperclip 2c09c8c16d Merge master into Boat core and regenerate migration after fast responses
Preserve the exact deployed Boat SQL hash under generated migration 0332 so existing staging databases recognize its history. Keep additive schema and shared exports from both branches.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 13:43:07 -05:00
DottaandPaperclip a7dd5284b5 feat: add company fast-response acknowledgements (#15748)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work.
> - Human messages start agent work through task, chat, and
external-channel intake.
> - Agent startup can delay the first visible response.
> - A small direct model call can acknowledge the request while normal
work starts.
> - This response must remain separate from evidence that the agent
answered or completed work.
> - This pull request adds optional company-wide fast responses with
durable receipts, access checks, and cost accounting.
> - Users receive prompt acknowledgement without changing the agent
execution path.

## Linked Issues or Issue Description

**Subsystem affected**

Cross-cutting: database, shared contracts, server orchestration,
connections, and UI.

**Problem or motivation**

Users can wait for an agent to start before they receive a contextual
response. Generic progress messages do not confirm what the user asked.
An acknowledgement must not falsely complete work or satisfy an
unanswered turn.

**Proposed solution**

Add a disabled-by-default experimental fast-response model using an
existing shared API connection. Generate one short acknowledgement for
each accepted human turn. Use the existing agent identity and external
publication outboxes. Retain platform provenance and account for the
inference independently.

**Alternatives considered**

Running the acknowledgement through the agent runtime adds startup
latency. Restricting implementation to OpenRouter leaves other existing
API connections unsupported. This change supports all existing API
connections and uses OpenRouter for live verification.

**Roadmap alignment**

This extends existing agent communication and connection settings.
ROADMAP.md and open pull requests were checked. No duplicate
fast-response implementation was found. The maintainer supplied the
feature plan directly.

## What Changed

- Add Experimental fast responses to instance settings. Keep the feature
off by default. Enforce the flag at intake, dispatch, and publication.
- Move Decision model and Fast response setup to company Settings →
Connections when the experiment is enabled. Place Connections below
Environments. Separate the model sections with clear headings and a
divider. Keep Decision model in General when the experiment is off.
Route Costs setup links to the available settings page.
- Make the acknowledgement prompt a multiline template string. Ask for a
brief, positive response in the user’s language.

- Add settings, connection/model selection, sponsorship, fixed-sample
testing, and Costs history.
- Add a Vercel AI SDK text service for existing native, routed, Bedrock,
and local API connections.
- Add durable per-turn requests, a bounded worker, a three-second
admission deadline, and one inference attempt.
- Integrate task creation, task and agent chat, steering, queued
follow-ups, experimental board chat, shared chat intake, and email.
- Preserve receipt provenance and exclude receipts from completion,
recovery, interaction resolution, and agent wakeups.
- Recheck authorization, source validity, real replies, budgets, and
destination binding before publication. Preserve accounting for
suppressed or uncertain outcomes.
- Add provider contracts, database race tests, channel outbox tests, UI
tests, Stories, and documentation. Keep decision-model execution
unchanged.

## Verification

- Local `pnpm -r typecheck`, `pnpm build`, and UI token gates pass after
rebase. The UI typecheck and build also pass after the final navigation
fixes. All 37 focused navigation tests pass. The first full local `pnpm
test:run` invocation reported seven chat failures. All seven passed in
isolated reruns after fixture updates and host cleanup. This invocation
was stopped after the full final-head CI suite passed.
- Initial local database tests hit macOS shared-memory exhaustion. A
diagnostic confirmed `shmget: No space left on device` with the system
limit of 32 IDs. Three abandoned, unattached PostgreSQL IPC headers were
reclaimed. The isolated rerun passed all 31 fast-response and channel
tests. The two additional Slack regression cases also passed in a
separate rerun. No active database was stopped.
- UI token gates pass. Provider contract tests cover all supported API
connection types. Fast-response tests cover uniqueness, authorization,
budgets, expiry, cancellation, restart, real-reply races, and the
experimental flag.
- The test drive verified that disabling the experiment hides
Connections and redirects its direct URL. Enabling it restores the saved
OpenRouter setup. After restart on the final commit, the OpenRouter
settings sample returned “Sure, I’ll take care of fixing the border
around the settings panel.” in 428 ms. It used 260 input and 31 output
tokens and recorded $0.0000576 in reported cost.
- Earlier live OpenRouter verification produced a receipt in 1.013
seconds for a new task. The real agent then supplied its substantive
answer. A separate settings test took 1.34 seconds, used 246 input and
23 output tokens, and recorded $0.0000361.
- Live Slack verification on final commit
`24016fa525961ebc7a4acffdc5019ce123970549` passed for a fresh initial
task and a follow-up in a disposable bot DM. The initial acknowledgement
appeared 2.405 seconds after the Slack message and 1.413 seconds after
durable acceptance; the follow-up appeared in 2.322 seconds and 1.160
seconds respectively. The recorded generation/settlement durations were
898 ms and 697 ms. The initial call used 291 input / 39 output tokens
and cost $0.00006705; the follow-up used 281 / 47 and cost $0.00007035.
- The Slack acknowledgements retained the assigned agent identity and
`origin: fast_response`, source-turn references, and no fabricated run
ID. A status snapshot after the initial receipt showed the task still
`in_progress` with its real execution run. The agent then read the CSV
fixture and correctly reported two ready items, two blockers, and their
owners. Both replies stayed in the originating DM, and no duplicate
generic working message followed the delivered contextual
acknowledgements. The `new` command started a fresh conversation session
without generating a fast response.
- An earlier eligible Slack turn generated a response but suppressed
publication. Its reported cost was retained, generic progress remained,
and the real agent completed the requested result. This is recorded
separately from the two delivered acknowledgements; the history did not
expose a precise suppression reason.
- Slack verification used real signed provider events, the existing
intake/publication paths, and a user-approved temporary webhook-only
HTTPS tunnel. Subscriptions were limited to direct-message events. The
test bot was paused and the tunnel stopped afterward. Live
channel/group-thread and GitHub journeys remain unverified; their mocked
tests cover intake, destination binding, publication, and continued
underlying work.
- Greptile reviewed final commit
`24016fa525961ebc7a4acffdc5019ce123970549` at 5/5. Both new review
findings are fixed and all threads are resolved. [Final-head CI
run](https://github.com/paperclipai/paperclip/actions/runs/38060015730)
passed. This includes grouped server/chat/workspace tests, serialized
suites, runner checks, browser journeys, typecheck, build, release
registry, policy, and the canary dry run.
- Manual check: enable Experimental fast responses. Open company
Settings → Connections. Select a shared API connection and model. Save
and use Test response. Submit a task message and confirm that its
receipt does not complete the task.

## Risks

- The migration adds receipt and configuration tables plus accounting
references. It uses idempotent statements and follows the current
migration sequence.
- A slow provider, authorization change, or real-agent reply can
suppress an acknowledgement. Existing progress feedback remains
available.
- Unknown provider billing retains a reservation until reconciliation.
External deliveries with uncertain outcomes must not be blindly
repeated.
- Live Slack initial-task and follow-up DM journeys pass. Live Slack
channel/group-thread and GitHub journeys remain unverified. The PR
remains a draft and records these gaps. Final-head repository CI and
automated review pass.

## Model Used

OpenAI Codex, based on GPT-6, with reasoning, repository tools, code
execution, and browser interaction. The runtime does not expose an exact
model snapshot ID or context-window size; these are not asserted.

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-10-10 13:09:17 -05:00
DottaandPaperclip 8f11a70b33 Retain cold and recovered instruction framing coverage
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 12:46:14 -05:00
Dotta cf175229e9 Merge branch 'codex/boat-environment-core' into codex/boat-environment
* codex/boat-environment-core:
  test: retain instruction framing acceptance in stacked PR
  fix: retarget only managed asset framing during cold startup
  fix: preserve ACPX instruction framing across remote recovery
2026-10-10 12:46:08 -05:00
DottaandPaperclip 471ff0e550 test: retain instruction framing acceptance in stacked PR
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 12:45:49 -05:00
DottaandPaperclip daa711a097 fix: retarget only managed asset framing during cold startup
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 12:45:14 -05:00
DottaandPaperclip 44ee24fa19 fix: preserve ACPX instruction framing across remote recovery
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 12:45:14 -05:00
DottaandPaperclip d238bb8b46 Retain persistent-computer process guidance coverage
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 12:28:34 -05:00
Dotta e398e3543d Merge branch 'codex/boat-environment-core' into codex/boat-environment
* codex/boat-environment-core:
  test: keep dev-server guidance acceptance in stacked PR
  fix: validate persisted warm origin run identity
  fix(computers): allocate listeners outside guest ephemeral ports
  fix: explain detached dev servers on persistent computers
2026-10-10 12:28:24 -05:00
DottaandPaperclip 571fde776c test: keep dev-server guidance acceptance in stacked PR
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 12:27:56 -05:00
DottaandPaperclip 66028796f3 fix: explain detached dev servers on persistent computers
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 12:24:57 -05:00
DottaandPaperclip 1e5cf7cb42 Integrate graceful Boat idle retirement and recovery
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:46:53 -05:00
DottaandPaperclip 8096727117 test(boat): keep remote acceptance extensions in stacked PR
Preserve the two existing additive runtime acceptance suites in the stacked feature PR while keeping browser synchronization fixes in the independently checked core branch.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:44:36 -05:00
DottaandPaperclip 0a440b9333 Merge remote-tracking branch 'origin/master' into codex/boat-environment-core
* origin/master:
  fix(pi-local): avoid embedding model catalogue in errors (#13628)
  fix(opencode-local): run in the realized workspace (#11438)
  fix(ui): align chat connection and recovery cards (#15771)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:44:36 -05:00
DottaandPaperclip 00f92a6d05 fix(computers): reserve bounded graceful runner retirement
Fence admission and ordinary commands at warm expiry, reserve exact-generation process control for at most thirty seconds of shutdown, and always retire the owned slice after graceful close or timeout.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:44:06 -05:00
DottaandPaperclip 025a0b8ae5 Integrate bounded cold provider bootstrap
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:09:21 -05:00
DottaandPaperclip 26d404cbfe Move bootstrap and instruction acceptance coverage to stacked PR
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:08:49 -05:00
DottaandPaperclip ab5bb8552a fix(boat): bound provider-pack cold bootstrap separately
Allow thirty minutes for computer ACPX pack staging without extending turn, recovery, finalization or warm-idle deadlines.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 11:06:31 -05:00
DottaandPaperclip 18a1e89a08 Integrate scoped legacy runtime files and retirement recovery
Keep the adapter ownership acceptance tests in the stacked PR.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:56:32 -05:00
DottaandPaperclip 82880b10ac Keep legacy runtime acceptance coverage in stacked PR
The combined feature branch retains the complete execution-target tests; this runtime branch preserves the production fix with its existing baseline suite.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:54:42 -05:00
DottaandPaperclip e90fbf20a1 fix(adapters): isolate computer legacy runtime assets by owner
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:54:14 -05:00
lorenzozane 0e37a385e6 fix(pi-local): avoid embedding model catalogue in errors (#13628)
<!-- Write all pull request text in Simplified Technical English
(ASD-STE100): short sentences, one instruction per sentence, simple
approved vocabulary, and the active voice. -->

## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work
> - The pi-local adapter discovers and validates models before it starts
a local Pi process
> - An unavailable-model error included model IDs from the discovered
catalogue
> - Repeating those IDs made persisted and rendered failures noisy and
exposed substitute choices
> - This pull request keeps the requested model, reports the available
count, and points to the existing lookup command
> - The benefit is a concise error without changing model discovery or
matching

## Linked Issues or Issue Description

Fixes #13612

## What Changed

- Replace model catalogue interpolation in unavailable-model errors with
the requested model, normalized model count, and `pi --list-models`.
- Add a regression test with 13 discovered models and exact
error-message matching.

## Verification

- `pnpm exec vitest run
packages/adapters/pi-local/src/server/models.test.ts`
- `pnpm exec vitest run packages/adapters/pi-local/src/server/*.test.ts`
- `pnpm --filter @paperclipai/adapter-pi-local typecheck`
- `git diff --check`

All listed checks pass locally. The test suite uses a temporary Pi
executable and verifies that model IDs are not appended to the error.

## Risks

Low risk. Only unavailable-model error wording changes. Model discovery,
matching, valid model execution, and failure handling remain unchanged.
Full repository CI was not run locally because the host uses Node
22.22.1 and the repository declares Node >=24.11.0.

> For core feature work, check [`ROADMAP.md`](ROADMAP.md) first and
discuss it in `#dev` before opening the PR. Feature PRs that overlap
with planned core work may need to be redirected — check the roadmap
first. See `CONTRIBUTING.md`.

## Model Used

OpenAI GPT-5.6 Luna (`gpt-5.6-luna`); tool-assisted code execution. The
context window size is not exposed in this session.

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [ ] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub #13612)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [ ] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [ ] All Paperclip CI gates are green
- [ ] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge
2026-10-10 10:48:00 -05:00
Kilianandcommitperclip-bot 28e134873e fix(opencode-local): run in the realized workspace (#11438)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work
> - Paperclip adapters start each agent in its selected workspace
> - Paperclip can realize a different workspace path for local and
remote runs
> - The OpenCode CLI prefers its inherited `PWD` when no `--dir` option
is present
> - The process `cwd` option does not update the inherited `PWD` value
> - This pull request passes the realized workspace to OpenCode with
`--dir`
> - The benefit is that OpenCode sessions and tools use the workspace
that Paperclip selected

## Linked Issues or Issue Description

No matching issue exists.

Refs #8287. That earlier pull request describes the realized remote
workspace path. It does not make the OpenCode CLI use that path.

I searched open and closed issues and pull requests for `opencode
--dir`, `opencode cwd PWD`, and `opencode workspace directory`. I found
no duplicate.

**What happened?**

Paperclip gives the OpenCode process the correct operating system `cwd`.
However, the adapter does not pass OpenCode's `--dir` option. OpenCode
uses `process.env.PWD` before `process.cwd()` when `--dir` is absent. A
server `PWD` that differs from the realized workspace can therefore
place the OpenCode session and its tools in the wrong directory.

**Expected behavior**

OpenCode must use the workspace that Paperclip realized for the run. An
explicit `--dir` in `extraArgs` must remain valid and must not be
duplicated.

**Steps to reproduce**

1. Start the Paperclip server from directory A.
2. Configure an OpenCode agent with directory B, or realize directory B
on a remote execution target.
3. Start a run without a manual `--dir` value in `extraArgs`.
4. Inspect the OpenCode session directory or run a directory-sensitive
tool.
5. Before this change, OpenCode can use directory A from the inherited
`PWD`.
6. After this change, OpenCode receives `--dir B`.

**Paperclip version or commit**

`b38d6ddb811b3ff3145ff5df60174eb9e7313fe6`

**Deployment mode**

Self-hosted server. The same adapter path is used in local development
and remote execution.

**Installation method**

Built from source.

**Agent adapter(s) involved**

OpenCode.

**Database mode**

Not database-related.

**Additional context**

OpenCode v1.17.13 defines `--dir` and uses the inherited `PWD` as its
fallback root. See the [OpenCode run command
source](https://github.com/anomalyco/opencode/blob/10c894bdeef3618f5666fb506ef7f9491bb964d8/packages/opencode/src/cli/cmd/run.ts#L333-L339).

## What Changed

- Add the realized execution workspace as `--dir` for OpenCode runs.
- Preserve an explicit `--dir` or `--dir=...` value from `extraArgs`.
- Stop option detection at the first `--` terminator.
- Extend the remote execution tests for realized, explicit, and
post-terminator directory arguments.

## Verification

- `pnpm exec vitest run packages/adapters/opencode-local/src` passed: 7
files and 40 tests.
- `pnpm --filter @paperclipai/adapter-opencode-local typecheck` passed.
- `pnpm --filter @paperclipai/adapter-opencode-local build` passed.
- `pnpm -r typecheck` passed for all 31 selected workspace projects.
- `pnpm build` passed for all selected workspace projects.
- `git diff --check` passed.

I also ran `pnpm test:run`. It completed with 334 test files passing and
2 test files failing. It reported 3,790 passing tests and 4 skipped
tests. The two failures are in `issue-monitor-scheduler.test.ts` and
`workspace-runtime.test.ts`. Each failure reproduces on the unchanged
base commit after this pull request is removed. Neither test imports or
covers the OpenCode adapter.

## Risks

- The behavior change is limited to OpenCode run arguments.
- A custom old OpenCode binary that does not support `--dir` will reject
the option. The current official OpenCode v1.17.13 CLI supports it.
- An explicit operator `--dir` remains authoritative. The adapter does
not add a duplicate option because OpenCode's parser converts repeated
string options to an array.
- This change does not modify schemas, migrations, APIs, telemetry, or
user data.

> For core feature work, check [`ROADMAP.md`](ROADMAP.md) first and
discuss it in `#dev` before opening the PR. Feature PRs that overlap
with planned core work may need to be redirected — check the roadmap
first. See `CONTRIBUTING.md`.

## Model Used

OpenAI Codex based on GPT-5. The runtime did not expose a more specific
model ID or context-window size. The agent used high-depth reasoning,
repository access, shell execution, and GitHub tools.

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [ ] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

Co-authored-by: commitperclip-bot <305974387+commitperclip-bot@users.noreply.github.com>
2026-10-10 10:46:21 -05:00
DottaandPaperclip 180bfdcb0a Keep extended runner acceptance cases in the stacked feature PR
Preserve the original baseline suites on the backend branch while the full Boat feature branch retains all added runtime-context, transport, and SSH acceptance coverage.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:17:23 -05:00
DottaandPaperclip 00d1d4ea61 fix(runtime): bind persistent computer homes into Claude runtime context
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:17:23 -05:00
DottaandPaperclip 51e52d5849 fix(runtime): bind persistent computer homes into Claude runtime context
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 10:16:34 -05:00