Commit Graph
5248 Commits
Author SHA1 Message Date
DottaandPaperclip f29dad6c94 merge: preserve current canonical source and Claude fixture review
Keep the qualified four-target selection and both Linux provider-pack assembly paths while carrying the current shared source.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 21:07:15 -05:00
DottaandPaperclip 10821ccf61 chore(storybook): reconcile runner fixtures and source catalog
Preserve all existing story IDs, classify scoped source review separately from six fixture plays, and retain final package/provider qualification gates.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 21:05:39 -05:00
DottaandPaperclip 304e95c320 merge: compose Claude behavior with canonical master reconciliation
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 20:42:52 -05:00
DottaandPaperclip 48ffca9438 merge: reconcile published native prerequisite and current master
Preserve canonical startup ownership, scoped evidence, current Storybook IDs, and the Codex form controls while carrying Claude effort and immutable source bindings.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 20:40:11 -05:00
DottaandPaperclip c8f2c26577 chore: apply contribution rules to platform qualification
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 20:34:26 -05:00
DottaandPaperclip 48d4ab54d6 chore: reconcile contribution rules and onboarding fixtures
Extract the guided setup test fixture without dropping cases. Supply current settings/discovery contracts and Opus 5.5 in the isolated Storybook boundary.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 20:34:26 -05:00
DottaandPaperclip bb765e9009 chore(runner): apply contribution rules with immutable source attestations
Retain Pi profile 24 and bind the updated sandbox source in profile 25. Provider closures and qualification boundaries are unchanged.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 20:34:26 -05:00
DottaandPaperclip 64c074fb8d docs: record runtime qualification and catalog review
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 20:33:39 -05:00
DottaandPaperclip c1b9933a24 chore: follow source comment contribution rules
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 20:33:39 -05:00
DottaandPaperclip 8ec42ffd1c merge: compose canonical repair and current Claude setup guards
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/claude-runner-default:
  docs: record retained-preview mobile runner evidence
  fix(runner): retain startup ownership through cancellation
  test(server): initialize issue routes within the fixture hook
  test(runner): reserve the occupied credential quorum fixture
  fix(ui): wait for current guided runner settings
2026-10-12 20:09:22 -05:00
DottaandPaperclip 21c4f8afd5 merge: reconcile canonical protocol and local runner controls
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/claude-runner-protocol:
  fix(runner): retain startup ownership through cancellation
  test(runner): reserve the occupied credential quorum fixture
2026-10-12 20:08:42 -05:00
DottaandPaperclip e3a8171679 merge: reconcile canonical startup ownership repair
Preserve the source prerequisite repair and Claude effort/resume contracts. Eight no-process controls and runner noemit pass; native readiness remains a hosted CI gate.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 20:08:07 -05:00
DottaandPaperclip 56079be516 docs: record retained-preview mobile runner evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 20:03:29 -05:00
DottaandPaperclip 9f59ff36cf merge: reconcile runtime qualification with current master
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* origin/master:
  fix(server): keep classified provider quota runs out of Sentry (#16029)
  refactor(chat): extract delivery, reaction, and setup boundaries (#16024)
  fix(heartbeat): answer an unsettled adapter Stop with a 409 instead of a 500 (#16032)
  refactor(storybook): organize folders and navigation by feature map (#16049)
  test: remove repeated setup and strengthen regression proof (#16022)
  feat: maintain Storybook through a downstream feature catalog (#16046)
  ci: route PR admission through reserved AWS capacity (#16042)
  docs(release): canonicalize v2026.1012.0 release notes (#16045)
  ci: add protected routing workflow for reserved AWS capacity (#16039)
  docs: add PR rules for file size and code comments (#16036)
  Add managed Slack setup with an independent own-app path (#15679)
2026-10-12 20:02:47 -05:00
DottaandPaperclip d69d94a0f8 docs: record startup ownership and production readiness gates
Keep feature and access maps synchronized with the scoped cancellation repair, and retain the exact source and unresolved installed/staging qualification.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 20:02:06 -05:00
DottaandPaperclip ce23716503 fix(runner): retain startup ownership through cancellation
Reuse the shared startup repair with duplicate admission, shutdown-aware readiness, and resume fences. Preserve absolute cleanup deadlines and unconfirmed recovery state.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 19:59:20 -05:00
DottaandPaperclip 42e5d9bae4 test(server): initialize issue routes within the fixture hook
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 19:51:30 -05:00
DottaandPaperclip 50e7554069 test(runner): reserve the occupied credential quorum fixture
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 19:51:23 -05:00
DottaandPaperclip 0d998fad49 fix(ui): wait for current guided runner settings
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 19:51:12 -05:00
Dotta 173a73ec95 Merge branch 'codex/claude-runner-default' into codex/claude-runner-platforms
* codex/claude-runner-default:
  docs: distinguish passing ownership proof from resume fixture deadline
  test(runner): allow complete durable resume timeout envelope
2026-10-12 19:31:42 -05:00
DottaandPaperclip 4440df2e44 docs: distinguish passing ownership proof from resume fixture deadline
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 19:31:40 -05:00
Dotta 23f0b6c877 Merge branch 'codex/claude-runner-protocol' into codex/claude-runner-default
* codex/claude-runner-protocol:
  test(runner): allow complete durable resume timeout envelope
2026-10-12 19:31:40 -05:00
DottaandPaperclip c60bf4b6b9 test(runner): allow complete durable resume timeout envelope
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 19:31:38 -05:00
Dotta 66925e79c9 Merge branch 'codex/claude-runner-default' into codex/claude-runner-platforms
* codex/claude-runner-default:
  fix(claude): require current setup metadata and recover failed reads
  fix(runner): drain owned startup before certifying cleanup
2026-10-12 19:17:42 -05:00
Dotta be0e68872f Merge branch 'codex/claude-runner-protocol' into codex/claude-runner-default
* codex/claude-runner-protocol:
  fix(runner): drain owned startup before certifying cleanup
2026-10-12 19:17:23 -05:00
DottaandPaperclip 193d8e188a fix(claude): require current setup metadata and recover failed reads
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 19:17:23 -05:00
DottaandPaperclip 463ebb6266 fix(runner): drain owned startup before certifying cleanup
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 19:16:15 -05:00
Dotta f4ad1b610f Merge branch 'codex/claude-runner-default' into codex/claude-runner-platforms
* codex/claude-runner-default:
  fix(claude): await matching runner discovery during onboarding
2026-10-12 18:46:49 -05:00
DottaandPaperclip d663c7f98f fix(claude): await matching runner discovery during onboarding
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 18:46:47 -05:00
Dotta 2977b1a102 Merge branch 'codex/claude-runner-default' into codex/claude-runner-platforms
* codex/claude-runner-default:
  docs: retain cloud attestation context failure and correction
  fix(build): retain Pi v24 attestation in Docker context
2026-10-12 18:32:44 -05:00
DottaandPaperclip 79779c5a96 docs: retain cloud attestation context failure and correction
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 18:32:41 -05:00
Dotta 98613ddac5 Merge branch 'codex/claude-runner-protocol' into codex/claude-runner-default
* codex/claude-runner-protocol:
  fix(build): retain Pi v24 attestation in Docker context
2026-10-12 18:32:41 -05:00
DottaandPaperclip 3aaf1f8b1e fix(build): retain Pi v24 attestation in Docker context
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 18:32:37 -05:00
Dotta 579192c560 Merge branch 'codex/claude-runner-default' into codex/claude-runner-platforms
* codex/claude-runner-default:
  docs: record Claude setup and attestation repair evidence
  fix(claude): use discovered runner in guided agent setup
  fix(runner): version Pi attestation for owned settings initialization
2026-10-12 18:29:57 -05:00
DottaandPaperclip 45c325edf9 docs: record Claude setup and attestation repair evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 18:29:47 -05:00
Dotta 8f9dfa4e03 Merge branch 'codex/claude-runner-protocol' into codex/claude-runner-default
* codex/claude-runner-protocol:
  fix(runner): version Pi attestation for owned settings initialization
2026-10-12 18:29:28 -05:00
DottaandPaperclip e2e5c60496 fix(claude): use discovered runner in guided agent setup
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 18:29:28 -05:00
DottaandPaperclip 0ff31b2b76 fix(runner): version Pi attestation for owned settings initialization
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 18:29:22 -05:00
DottaandPaperclip dc12ffcd23 merge: retain owned configuration and resolved Legacy limits
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/claude-runner-default:
  fix(claude): preserve Legacy limits after automatic runner resolution
  fix(runner): initialize Claude settings under lifetime ownership
2026-10-12 18:13:17 -05:00
DottaandPaperclip f1ef0a9c9b merge: preserve exclusive Claude settings initialization
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/claude-runner-protocol:
  fix(runner): initialize Claude settings under lifetime ownership
2026-10-12 18:13:13 -05:00
DottaandPaperclip 75239d8cd7 fix(claude): preserve Legacy limits after automatic runner resolution
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 18:13:12 -05:00
DottaandPaperclip 4cdb5ec4b3 fix(runner): initialize Claude settings under lifetime ownership
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 18:10:09 -05:00
4b958ecbd8 fix(server): keep classified provider quota runs out of Sentry (#16029)
A run that stops because the user's provider account hit its usage
limit is an expected wait, not a Paperclip defect. The adapter already
classifies it (errorCode and resultJson.errorFamily are both
provider_quota) and recovery schedules a retry at the reset time.

Skip the Sentry report only when both adapter-owned fields agree, the
run status is failed, no signal stopped it, and the failure did not
happen during setup. Timeouts, cancellations, signals, other codes and
missing or mismatched families still report.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Dotta <cryppadotta@users.noreply.github.com>
canary/v2026.1012.1-canary.3
2026-10-12 15:59:27 -07:00
DottaandPaperclip 64bd6e9e07 refactor(chat): extract delivery, reaction, and setup boundaries (#16024)
## Thinking Path

> - Paperclip manages AI agents and their work.
> - Chat channels connect that work to provider conversations.
> - One shared service contains callback, delivery, reaction, and setup
logic.
> - These responsibilities have distinct contracts and existing
public-path tests.
> - This PR moves ten cohesive responsibilities into focused modules.
> - The service retains shared runtime ownership and scheduling.
> - Provider behavior is easier to locate and review.

## Linked Issues or Issue Description

Refs #15995, #16026, #16027, #16030, #16031, #16035, #16037, #16038,
#16041, #16043.

This PR consolidates the reviewed extraction stack. The plan is
`doc/plans/2026-10-12-chat-channel-delivery-boundaries-refactor.md`.

## What Changed

- Move Slack callback verification into the Slack folder.
- Move Discord Gateway events and root-thread admission/recovery into
the Discord folder.
- Extract durable receipt reactions and inbound reaction
admission/replay.
- Extract inbound attachment ingestion and outbound integrity-checked
hydration. Preserve the public hydration export.
- Extract durable provider effects. Keep Telegram callback notices in
the Telegram folder.
- Extract conversation/activity reads and setup qualification. Keep
Slack and Teams projections in their channel folders.
- Preserve the merged managed Slack setup behavior, shared workers,
credential leases, and transaction boundaries.
- Reduce `chat-channels.ts` from 26,493 lines / 1,048,769 bytes to
21,460 lines / 862,284 bytes. This removes 5,033 lines from the service.

## Verification

- Each extraction passed its selected existing tests before and after
through public service paths.
- On updated master, all 55 selected Slack cases passed before
extraction. All 194 selected chat/managed-Slack cases passed on the
final stack tip.
- `pnpm -r typecheck`, `pnpm build`, module-boundary checks, and
whitespace checks passed on that tip.
- The normalized syntax audit verifies 69 moved declarations and all
retained statements, including their relative order, against updated
master.
- The eight earlier stack merges retain the exact validated repository
tree. The combined root equals the validated tip merged with current
master. All chat-channel files remain byte-identical to the validated
tip. Current combined-root CI and review are pending.
- Full local verification remains unverified. The unchanged
`workspace-git-snapshot-streaming.test.ts:56` stress test timed out at
300,000 ms in a clean run and again in isolation. The full run was
stopped after the reproduced failure. No timeout or assertion was
weakened.
- These checks use assembled services, real local databases, and
provider fixtures. They do not prove live third-party execution.

Reviewers can run the public-path suites:

```sh
pnpm exec vitest run server/src/__tests__/chat-channels.integration.test.ts server/src/services/chat-outbound-attachment-hydration.test.ts server/src/__tests__/slack-development-manager.test.ts
```

## Risks

- Factory wiring must preserve live values, shared state, and
initialization order. Identity-link construction retains deferred access
to the provider-effects callback.
- Credential fences, authorization transactions, and delivery settlement
must keep their original ordering. Syntax parity and public-path
integration cases cover these boundaries.
- Full local verification has the recorded Git-streaming timeout. The
combined PR must pass master’s required CI before merging into master.

## Model Used

OpenAI Codex, GPT-6 family, with reasoning and repository tools. The
exact runtime model ID and context-window size are not exposed in this
session. No separate agent was used.

## 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
- [ ] 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

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
canary/v2026.1012.1-canary.2
2026-10-12 22:46:25 +00:00
Devin FoleyandPaperclip 9b1b905e01 fix(heartbeat): answer an unsettled adapter Stop with a 409 instead of a 500 (#16032)
An owned adapter Stop that is still settling when the 60s request wait
expires now returns 409 adapter_stop_pending instead of escaping as an
HTTP 500. Stop proof, lease and restore ownership are unchanged.

Sentry is notified only when the same execution is still unsettled ten
minutes after the Stop request (measured from stopRequestedAt), so real
Stop hangs stay visible and slow workspace sync-back no longer pages.

Co-Authored-By: Paperclip <Paperclip-Paperclip@users.noreply.github.com>
2026-10-12 15:44:47 -07:00
DottaandPaperclip a97a681f1c merge: retain qualified harness discovery documentation
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/claude-runner-default:
  docs(claude): align discovery recipes with both qualified harnesses
2026-10-12 17:29:45 -05:00
DottaandPaperclip 1285cb77f6 docs(claude): align discovery recipes with both qualified harnesses
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 17:29:43 -05:00
DottaandPaperclip 510930672c merge: retain final composition and qualification limits
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/claude-runner-default:
  docs(claude): record final source composition and qualification limits
2026-10-12 17:29:30 -05:00
DottaandPaperclip 913c1a6d77 docs(claude): record final source composition and qualification limits
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-12 17:29:28 -05:00
DottaandPaperclip 88bf4c6c1d refactor(storybook): organize folders and navigation by feature map (#16049)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work.
> - The feature map describes product areas and verification entry
points.
> - Storybook has 223 story suites that show production components,
proposals, and retained history.
> - The parent PR maps those suites to features, but their folders and
sidebar still use unrelated groups.
> - This pull request puts the existing suites under feature folders and
uses the feature map's names and order in the sidebar.
> - Explicit meta IDs preserve existing story links while the titles
change.
> - Contributors can find stories through the same product structure
without losing examples.

## Linked Issues or Issue Description

Refs #16046. This is the requested follow-up. Parent #16046 is merged.
This PR now targets master, with its single follow-up commit rebased
onto the parent squash merge. The Storybook implementation is unchanged
by that rebase. Related open Storybook PRs were checked; this change
organizes existing suites and adds no product capability.

## What Changed

- Move all 223 story files into folders named for their primary feature
area. Keep useful scenario groups below the feature's sidebar label.
- Order the sidebar by the eight feature-map sections. Put Overview
first and shared Foundations last. Leave areas with no stories out of
the sidebar.
- Move 19 support files into `ui/storybook/support/` and update relative
imports and active documentation.
- Preserve all 2,210 story IDs and the single docs ID through explicit
CSF meta IDs. Keep all entry names and story exports.
- Record stable IDs and sidebar titles in the downstream catalog.
Validate feature folders, title prefixes, and IDs. Update the
maintenance skill and review evidence.

## Verification

- Storybook build passed. Built index comparison against parent
`75bd3c977cd828d5222823850339e8204f40eb47` found the same 2,211 entries,
IDs, and names.
- UI typecheck passed (`ui/node_modules/.bin/tsc -b` from `ui`, invoked
as `./node_modules/.bin/tsc -b`).
- UI Vitest project: 728 files and 8,176 tests passed.
- Catalog checker and its nine tests passed. Feature-map checks, token
gates, and the maintenance-skill validator passed.
- Chromium: nine existing play cases and one render case reached
`storyFinished: success` with no page exceptions. The guide rendered,
sidebar sections followed map order, and a search for `steering/queue`
opened its preserved story link.
- Source comparison found only meta title/ID changes, rebased relative
references, and updated fixture path text in story files.
- To inspect: build Storybook, start `node
scripts/serve-storybook-static.mjs --port 6136`, and open the Overview
guide. Expand feature folders and use existing story links.
- The complete repository suite was not repeated for this organization
change. The parent records a backend timeout that passed in isolation,
without a complete broad-suite pass. Visual comparisons remain blocked
by the unpublished empty baseline. The separate fixture-server story was
not run.

## Risks

- Open branches that add stories under old paths will need to choose a
feature folder and update the catalog. Cross-feature suites have one
primary home and retain related capability references.
- Sidebar paths change; story and docs IDs remain stable. Automated
references to source paths may need the new location.
- This is one requested follow-up with 258 changed files, mostly moves.
It exceeds the usual review-size guideline because splitting it would
leave the sidebar and folder convention partly migrated.
- Browser verification samples ten stories, not all 2,210. Existing
production/prototype classifications and review gaps remain unchanged.
- Required CI gates and a 5/5 review passed on the original head. Fresh
checks and review are running for the rebased head. Catalog validation
and all nine checker tests passed after rebase; UI, map, skill, and
checker contents are identical to the original reviewed head.

## Model Used

- OpenAI Codex, GPT-6. The exact runtime model ID and context-window
size are not exposed in this session. Used reasoning, repository
inspection, code execution, and local browser automation.

## 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
- [ ] 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

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-10-12 22:29:22 +00:00