Commit Graph
4842 Commits
Author SHA1 Message Date
Devin FoleyandPaperclip 803d7e2d52 Merge reviewed ACPX receipt retention and deterministic test teardown
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-04 00:23:08 -07:00
Devin FoleyandPaperclip 1cf7bba6f2 Merge reviewed ACPX receipt retention and deterministic test teardown
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-04 00:23:05 -07:00
Devin FoleyandPaperclip 28d661a124 Merge deterministic heartbeat fixture teardown
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-04 00:22:37 -07:00
Devin FoleyandPaperclip 79b7516322 fix: retain ACPX usage when receipt persistence rejects
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-04 00:22:37 -07:00
Devin FoleyandPaperclip 722db815da test: drain heartbeat work before deleting recovery fixtures
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-04 00:22:36 -07:00
Devin FoleyandPaperclip f60247951b fix: recover pending receipts before replacing run recorder
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-04 00:09:32 -07:00
Devin Foley 4f9dd4d04e Merge quota reconnect recovery and current master
Co-Authored-By: Paperclip <noreply@paperclip.ing>

# Conflicts:
#	server/src/services/heartbeat.ts
2026-10-04 00:03:13 -07:00
Devin FoleyandPaperclip 7c6d3f1526 Merge current master and adapter startup proof
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-04 00:00:59 -07:00
Devin FoleyandPaperclip f0b683a24e Merge current master and resolved fixture synchronization
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:55:14 -07:00
Devin FoleyandPaperclip 2d56b73b75 fix: discard obsolete quota recovery after reconnect
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:54:10 -07:00
Devin FoleyandPaperclip 99c84ccca2 Merge current master into accounting test isolation
Keep upstream runtime startup assertions, which independently fix the same PID-persistence race, alongside our port-claim isolation and canonical path fixtures.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:54:09 -07:00
Devin FoleyandPaperclip 4176cfdcde Merge durable quota token recovery and fixture synchronization
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:44:45 -07:00
Devin FoleyandPaperclip 0ae6037cf2 Merge upstream runtime metadata test synchronization
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:44:19 -07:00
Devin FoleyandPaperclip 7966dac682 fix: journal exchanged quota credentials before transactional save
Encrypt and fsync replacement OAuth tokens before vault/grant/activity writes. Retry failed saves from the journal without consuming the old refresh token again; retain durable recovery through rollback, commit failures, restart, and lost commit responses. Fence replay against revocation and reconnect.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:44:19 -07:00
Devin FoleyandPaperclip 420af2835f Merge runtime metadata fixture synchronization
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:42:54 -07:00
Devin FoleyandPaperclip 87b5bd6aae test: await committed runtime metadata before asserting process identity
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:42:50 -07:00
Devin FoleyandPaperclip a8c6256c72 fix: fence accounting closure and budget stops against recovery races
Keep retryable native receipts pending, preserve cumulative recovery usage, complete admission before atomic dispatch, and serialize retry gates in accounting lock order. Revalidate budget enforcement at its durable stop intent and retain startup failure proof.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:42:49 -07:00
Devin FoleyandPaperclip e2664b655b Merge upstream startup accounting proof and fixture isolation
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:21:21 -07:00
Devin FoleyandPaperclip 1dd6c03d2c Merge adapter startup accounting proof and test isolation
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:21:17 -07:00
Devin FoleyandPaperclip 065bf17ba3 fix: preserve proof of process adapter bootstrap failures
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:21:13 -07:00
Devin FoleyandPaperclip 2d30ee8868 Merge runtime test isolation fixes into adapter receipts
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:19:30 -07:00
Devin FoleyandPaperclip 1275ef8282 test: isolate runtime port claims and canonicalize fixture paths
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 23:19:25 -07:00
Devin FoleyandPaperclip 1fae0e7554 Merge reviewed credential write-back fix into accounting core
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 22:43:10 -07:00
Devin FoleyandPaperclip fc97e24392 fix: retain and retry contended credential write-back
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 22:31:28 -07:00
Devin FoleyandPaperclip 04bd774133 Merge quota deadline and revision fixes into accounting stack
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 22:10:39 -07:00
Devin FoleyandPaperclip 8bd5846ba0 fix: preserve OAuth refresh lifetime and quota revision caches
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 22:10:36 -07:00
Devin FoleyandPaperclip b2815ee3cd fix: retain failed native receipts and known attempted-run charges
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:51:37 -07:00
Devin FoleyandPaperclip a9c6f25b88 Merge bounded provider record accounting into core stack
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:45:30 -07:00
Devin FoleyandPaperclip c4f738d112 Merge bounded provider record accounting into quota stack
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:45:27 -07:00
Devin FoleyandPaperclip fb8b03a083 fix: bound accounting strings before buffering provider records
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:45:23 -07:00
Devin FoleyandPaperclip acba463d56 test: drain heartbeat finalizers before fixture teardown
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:43:43 -07:00
Devin FoleyandPaperclip cde30114b2 Merge credential and adapter review follow-ups into accounting stack
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:38:49 -07:00
Devin FoleyandPaperclip dfd62bd7e2 fix: recheck credential versions after waits and defer conflicting refreshes
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:38:46 -07:00
Devin FoleyandPaperclip beb28fef65 Merge full-stream accounting fixes into quota stack
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:33:57 -07:00
Devin FoleyandPaperclip 6e7168ac5c fix: retain full-stream usage and scope biller inference to its provider
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:33:54 -07:00
Devin FoleyandPaperclip 7cf8df553d fix: serialize managed credential refresh with reads and secret edits
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:30:51 -07:00
Devin FoleyandPaperclip 2e9b1de70e fix: preserve policy settings and initialize cancellation on demand
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:24:09 -07:00
Devin FoleyandPaperclip 482cdc5fa5 Merge adapter and quota review fixes into accounting stack
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:15:10 -07:00
Devin FoleyandPaperclip 05035f9f65 fix: address accounting recovery and budget review findings
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:15:10 -07:00
Devin FoleyandPaperclip feba1f926f Merge adapter timeout contract regression update
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:11:22 -07:00
Devin FoleyandPaperclip 14bc077440 test: distinguish unavailable Kimi prices from incomplete receipts
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:10:56 -07:00
Devin FoleyandPaperclip dce0c0f265 Merge reviewed quota and adapter fixes into durable accounting
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:06:51 -07:00
Devin FoleyandPaperclip bd377f0906 fix: recover managed quota credentials and preserve account displays
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:06:14 -07:00
Devin FoleyandPaperclip 2c29548c8c Merge reviewed adapter receipt fixes into account quota reporting
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:02:21 -07:00
Devin FoleyandPaperclip 17bb7679b5 test: clean up interrupted usage fixture formatting
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:02:05 -07:00
Devin FoleyandPaperclip c858cf52b0 fix: settle adapter usage only with terminal accounting evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 21:01:46 -07:00
Devin FoleyandPaperclip f056a4ae59 Merge test isolation review fixes into adapter receipts
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 20:59:55 -07:00
Devin FoleyandPaperclip 1885918563 test: preserve host port leases with isolated test homes
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-03 20:59:38 -07:00
DottaandPaperclip 994d6edcdd Fix Markdown in provisional task titles (#15047)
## Thinking Path

> - Paperclip uses issues to organize work for AI agents.
> - Paperclip creates a provisional issue title from the issue
description.
> - A description can start with a Markdown image or other Markdown
syntax.
> - The old title logic truncated the raw Markdown source.
> - This pull request parses Markdown before it truncates the title.
> - The benefit is a short and readable provisional title.

## Linked Issues or Issue Description

**What happened?**

When an issue description started with a Markdown image, Paperclip used
the raw image syntax and URL in the provisional title. Other common
Markdown markers could also appear in the title.

**Expected behavior**

Paperclip must remove Markdown syntax before it creates the
120-character provisional title. It must keep useful text, such as link
labels and inline code content.

**Steps to reproduce**

1. Create an issue without an explicit title.
2. Start the issue description with a Markdown image.
3. Add Markdown text after the image.
4. Observe that the provisional title contains raw Markdown syntax or an
image URL.

**Paperclip version or commit**

The problem reproduces on `master` before this change.

**Deployment mode**

Local development with the embedded PGlite database.

## What Changed

- Parse the description and remove image nodes before title generation.
- Convert the remaining Markdown to plain text before the 120-character
limit.
- Keep link labels, inline code, and identifier punctuation.
- Use image alt text, or `Image`, for an image-only description.
- Fall back to a simple 120-character title if Markdown parsing or
conversion fails.
- Add regression tests for image and inline-code titles, parser
failures, and text-conversion failures.

## Verification

- `./node_modules/.bin/vitest run
server/src/__tests__/task-title-routes.test.ts`
- `./node_modules/.bin/tsc -p server/tsconfig.json --noEmit`
- Full GitHub CI matrix passed on commit
`663f3a0517c9e450f174b6c37970756457067ba5`.
- Greptile reviewed the latest commit with a 5/5 confidence score and no
unresolved findings.

## Risks

- Low risk. This change only affects generated provisional titles. It
does not change explicit titles or full issue descriptions.
- The implementation uses the Markdown parser and plain-text converter
that are already present in the server.

> This is a focused bug fix. It does not add planned core work from
`ROADMAP.md`.

## Model Used

- OpenAI Codex with GPT-5. The run used reasoning, tool use, code
execution, and repository access. The runtime did not expose the context
window size.

## 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>
canary/v2026.1004.0-canary.1
2026-10-03 21:19:55 -05:00
DottaandPaperclip db72ad4c73 fix(ui): explain branch artifacts without remote links (#15051)
## Thinking Path

> - Paperclip helps people manage agent work and inspect its results.
> - The issue artifact list presents those results as work-product
cards.
> - A branch can have no remote URL or structured metadata.
> - The current card hides its summary and has no action in that case.
> - This pull request shows the summary and provides an accessible
details action.
> - The card labels the absent link without making a false link.

## Linked Issues or Issue Description

**What happened?**
A branch work product without a URL showed a short title and an icon. It
did not show the saved summary or provide an action.

**Expected behavior**
The card must show what the branch contains. People must be able to open
the saved details. It must not imply that a remote URL exists.

**Steps to reproduce**
1. Open the artifact list of an issue with a branch work product that
has `url: null` and `metadata: null`.
2. Find the branch card. Its summary and details action are missing
before this change.

Related work: #12717 introduced rich work-product cards.

## What Changed

- Keep linkless branch cards concise: show the title and no-link state.
Keep the full summary behind an optional Saved description toggle.
- Label a branch with no URL as having no remote link. Let a person open
its details with a keyboard-accessible button.
- Add a focused interaction test and two Storybook states for the
no-link branch.

## Verification

- `pnpm --filter @paperclipai/ui typecheck` passed.
- Focused Vitest tests passed: 45 tests in two files.
- `pnpm --filter @paperclipai/ui build` passed.
- `pnpm --filter @paperclipai/ui build-storybook` passed.
- `pnpm check:token-gates` passed.
- The Storybook collapsed and expanded states rendered in Chromium. Both
screenshots were captured.
- Full workspace typecheck could not finish: the runner Rust package
requires `cargo`, which is not installed in this environment.

## Risks

- Low risk. The change affects card text and the action for records
without a URL. It does not change the saved data or routes.
- Long saved summaries on other linkless work products expand the card
height after a person selects Details.

## Model Used

- OpenAI Codex coding agent. The execution environment does not expose
the exact model ID or context window to this agent. It used code
execution and a browser to validate the change.

## 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)
- [ ] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
(the managed execution workspace fixes this branch name)
- [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
(Storybook examples)
- [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>
canary/v2026.1004.0-canary.0
2026-10-03 21:05:48 -05:00