Commit Graph
5544 Commits
Author SHA1 Message Date
Dotta 338381bd98 Merge branch 'codex/dependable-finalization-recovery' into codex/dependable-stop-resume
* codex/dependable-finalization-recovery:
  test: retain automatic repository success evidence
2026-10-21 11:17:12 -05:00
Dotta 4d5f3700ab Merge branch 'codex/dependable-qualification-checkpoint' into codex/dependable-finalization-recovery
* codex/dependable-qualification-checkpoint:
  test: retain automatic repository success evidence
2026-10-21 11:17:12 -05:00
Dotta 2aabab54d9 Merge branch 'codex/dependable-question-journey' into codex/dependable-qualification-checkpoint
* codex/dependable-question-journey:
  test: retain automatic repository success evidence
2026-10-21 11:17:12 -05:00
Dotta 78be9db928 Merge branch 'codex/dependable-repository-conversion' into codex/dependable-question-journey
* codex/dependable-repository-conversion:
  test: retain automatic repository success evidence
2026-10-21 11:17:12 -05:00
Dotta 7a7c26f668 test: retain automatic repository success evidence 2026-10-21 11:15:18 -05:00
Dotta 380047f4b9 Merge branch 'codex/dependable-finalization-recovery' into codex/dependable-stop-resume
* codex/dependable-finalization-recovery:
  fix: defer saved native continuations behind their predecessor
2026-10-21 10:55:48 -05:00
Dotta 12a8b96c01 Merge branch 'codex/dependable-qualification-checkpoint' into codex/dependable-finalization-recovery
* codex/dependable-qualification-checkpoint:
  fix: defer saved native continuations behind their predecessor
2026-10-21 10:55:48 -05:00
Dotta 0819b36f0c Merge branch 'codex/dependable-question-journey' into codex/dependable-qualification-checkpoint
* codex/dependable-question-journey:
  fix: defer saved native continuations behind their predecessor
2026-10-21 10:55:48 -05:00
Dotta 4be3ebe335 Merge branch 'codex/dependable-repository-conversion' into codex/dependable-question-journey
* codex/dependable-repository-conversion:
  fix: defer saved native continuations behind their predecessor
2026-10-21 10:55:48 -05:00
Dotta 877eae29a8 Merge branch 'codex/plain-task-repository-admission' into codex/dependable-repository-conversion
* codex/plain-task-repository-admission:
  fix: defer saved native continuations behind their predecessor
2026-10-21 10:55:48 -05:00
Dotta 99821a1691 fix: defer saved native continuations behind their predecessor 2026-10-21 10:55:32 -05:00
Dotta 0b78a49178 Merge branch 'codex/dependable-finalization-recovery' into codex/dependable-stop-resume
* codex/dependable-finalization-recovery:
  test: type deleted reply fixture timestamps explicitly
2026-10-21 10:26:25 -05:00
DottaandPaperclip 81587f5784 test: type deleted reply fixture timestamps explicitly
Co-Authored-By: Paperclip <paperclip@paperclip.ing>
2026-10-21 10:26:01 -05:00
DottaandPaperclip 39c1ceba52 test: verify follow-ups across Stop and task resumption
Co-Authored-By: Paperclip <paperclip@paperclip.ing>
2026-10-21 10:24:51 -05:00
Dotta bffe1169a2 Merge branch 'codex/dependable-qualification-checkpoint' into codex/dependable-finalization-recovery
* codex/dependable-qualification-checkpoint:
  style: format runner continuation regression sources
2026-10-21 10:10:23 -05:00
Dotta 2db949c26e Merge branch 'codex/dependable-question-journey' into codex/dependable-qualification-checkpoint
* codex/dependable-question-journey:
  style: format runner continuation regression sources
2026-10-21 10:10:21 -05:00
Dotta d6b6a11d20 Merge branch 'codex/dependable-repository-conversion' into codex/dependable-question-journey
* codex/dependable-repository-conversion:
  style: format runner continuation regression sources
2026-10-21 10:10:20 -05:00
Dotta 70d64663df Merge branch 'codex/plain-task-repository-admission' into codex/dependable-repository-conversion
* codex/plain-task-repository-admission:
  style: format runner continuation regression sources
2026-10-21 10:10:18 -05:00
DottaandPaperclip 219513a59d style: format runner continuation regression sources
Co-Authored-By: Paperclip <paperclip@paperclip.ing>
2026-10-21 10:09:48 -05:00
DottaandPaperclip 7e3f512ac0 test: observe recovered delivery through persisted reply receipts
Co-Authored-By: Paperclip <paperclip@paperclip.ing>
2026-10-21 10:09:29 -05:00
Dotta 408ffba914 Merge branch 'codex/dependable-qualification-checkpoint' into codex/dependable-finalization-recovery
* codex/dependable-qualification-checkpoint:
  fix: carry server-owned workspace continuations through runner bridges
2026-10-21 10:05:50 -05:00
Dotta aa16d67221 Merge branch 'codex/dependable-question-journey' into codex/dependable-qualification-checkpoint
* codex/dependable-question-journey:
  fix: carry server-owned workspace continuations through runner bridges
2026-10-21 10:05:48 -05:00
Dotta b900e0da11 Merge branch 'codex/dependable-repository-conversion' into codex/dependable-question-journey
* codex/dependable-repository-conversion:
  fix: carry server-owned workspace continuations through runner bridges
2026-10-21 10:05:35 -05:00
Dotta a7593dcc67 Merge branch 'codex/plain-task-repository-admission' into codex/dependable-repository-conversion
* codex/plain-task-repository-admission:
  fix: carry server-owned workspace continuations through runner bridges
2026-10-21 10:05:30 -05:00
DottaandPaperclip b852cdec59 fix: carry server-owned workspace continuations through runner bridges
Co-Authored-By: Paperclip <paperclip@paperclip.ing>
2026-10-21 10:05:02 -05:00
DottaandPaperclip 2b532d0c3e test: verify preserved results across finalization crashes
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 09:37:49 -05:00
DottaandPaperclip 09a45d29bb Merge current journey candidate into the qualification checkpoint
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 09:20:10 -05:00
DottaandPaperclip c4e409d819 Merge repaired repository setup into the question journey candidate
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 09:17:55 -05:00
DottaandPaperclip 9456bbdf51 Merge the complete setup repair into repository qualification
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 09:16:48 -05:00
DottaandPaperclip 941467168c fix: accept server-resolved workspace continuations in Codex
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 09:16:18 -05:00
DottaandPaperclip 9b924462b9 test: retain lifecycle state for repository journeys
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 09:13:25 -05:00
DottaandPaperclip be153175a5 test: open and inspect the delivered question result
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 09:09:02 -05:00
DottaandPaperclip 9dcccc9e46 fix: resume pending repository work with an empty work list
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 09:05:47 -05:00
DottaandPaperclip 3d6d6d1bda test: preserve complete question identity across an answer
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 08:59:31 -05:00
Dotta 6df51567e7 Merge current master into the complete repository setup repair
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* origin/master:
  fix(evals): classify latency from observation bounds (#16829)
  docs: define module ownership and shared change review (#17087)
  fix: stop idle MCP event polling (#17036)
  fix(recovery): let preservation owners reopen retained sources (#17053)
  perf(budgets): scope accounting and deliver enforcement asynchronously (#17046)

# Conflicts:
#	tests/runner-e2e/README.md
#	tests/runner-e2e/installed-cli.test.ts
2026-10-21 08:49:06 -05:00
DottaandPaperclip 9d322bfa21 test: verify necessary free-text questions through one real answer
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 08:48:07 -05:00
DottaandPaperclip 3fc3af5a61 test: require every journey before daily qualification rotation
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 08:41:52 -05:00
DottaandPaperclip a6eaf005a2 Merge the verified task-source and conversion baseline repairs
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/dependable-repository-conversion:
  test: create conversion-compatible Claude baseline settings
  fix: preserve plain task sources through shared workspace reuse
2026-10-21 08:40:08 -05:00
DottaandPaperclip d942a5c874 test: create conversion-compatible Claude baseline settings
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 08:39:51 -05:00
DottaandPaperclip 8748c2b5df Merge retained task-source reuse repair
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/plain-task-repository-admission:
  fix: preserve plain task sources through shared workspace reuse
2026-10-21 08:38:37 -05:00
DottaandPaperclip 3568193a71 fix: preserve plain task sources through shared workspace reuse
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 08:38:18 -05:00
DottaandPaperclip 53732c811b fix(evals): classify latency from observation bounds (#16829)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work.
> - Product E2E probes measure when acknowledgements and replies become
visible.
> - A poll gives a time interval for an event.
> - The first positive poll can occur after a target that the event
could still meet.
> - This pull request compares the full interval with a strict or
inclusive target.
> - Reports retain the raw observations and the original verdict when
the timing verdict changes.

## Linked Issues or Issue Description

**What happened?**

A historical acknowledgement was absent at 1901 ms and first present at
2427 ms. A report marked the 2000 ms target as failed. The interval
crosses that target, so the available evidence cannot give a pass or
fail verdict.

**Expected behavior**

Return pass when the full interval meets the target. Return fail when
the full interval rules out the target. Return inconclusive for overlap,
invalid evidence, or insufficient evidence. Respect strict and inclusive
targets and open and closed endpoints.

**Steps to reproduce**

Run the deterministic timing tests. Use the acknowledgement interval
`(1901, 2427] ms` with `<= 2000 ms`. Compare the late reply interval
`(52965, 53334] ms` with `<= 30000 ms`. The first is inconclusive. The
second fails.

**Paperclip version or commit**

The source includes master at
`14afc12124017d4ec30d0f4bfd6892f8ce475d21`.

Related PR:
[#13710](https://github.com/paperclipai/paperclip/pull/13710) changed
chat latency and session reuse. This change corrects probe evidence and
report verdicts.

## What Changed

- Add a shared interval classifier with explicit endpoint and target
operators.
- Start observation before dispatch. Use a monotonic clock. Bound
asynchronous reads by request start and completion.
- Measure the first visible response separately from message creation
and final settlement. Share browser reads with an optional
acknowledgement probe.
- Keep raw bounds, clock resolution, message metadata, failed reads, and
original verdicts in retained report evidence.
- Add deterministic coverage for threshold equality, missing data,
edited messages, asynchronous reads, teardown, report correction, and a
finite-domain oracle.
- Bound observer shutdown to one second across pending and final reads.
Retain timeout counts. Ignore late completions and start no more reads
after shutdown.
- Document the timing contract in the existing Product E2E guide.
- Keep current startup reuse evidence after the master merge. Update
four stale test expectations for qualified Copilot admission. Keep the
explicit suite and provider restrictions.

## Verification

- Current head: `c42e87e6d3b4b347e7cb176f56819c1d0abe106d`.
- Passed: `pnpm test:e2e:runner:unit` (3,287 Vitest tests and 128 native
completion tests; two explicit skips).
- Passed: `pnpm test:e2e:runner:typecheck`, `pnpm -r typecheck`, `pnpm
build`, `pnpm check:token-gates`, and `git diff origin/master --check`.
- Passed: [exact-head
CI](https://github.com/paperclipai/paperclip/actions/runs/39607140418),
including both required checks (`ci / verify` and `ci / e2e`), all
general and serialized test jobs, all eight browser shards, build,
canary dry run, and the clean public npm-install smoke.
- Greptile reviewed the complete current diff and returned [5/5 with no
actionable
issues](https://github.com/paperclipai/paperclip/pull/16829#issuecomment-6266704814).
All review threads are resolved.
- The redundant local `pnpm test:run` was stopped after the exact-head
CI test jobs passed. It did not produce a complete local verdict; the
full repository test evidence is the CI run above.
- The [earlier broad
run](https://github.com/paperclipai/paperclip/actions/runs/39249282597)
failed on the old head. Its full test command timed out after 15
minutes. Five E2E support failures came from ambient `NODE_PATH` and a
missing historical Git object. Current master supplies the
closed-environment launcher and retained source fixture. The full
support suite passes with these fixes.
- After the current master merge, four stale Copilot assertions and the
nested unit launcher failed. Copilot is now qualified. Those assertions
now require no qualification override and retain the rejected
suite/provider cases. The full documented unit command passes.
- The first local typecheck after the merge used stale generated package
declarations and failed. The typechecks pass after `pnpm build`.
- These checks use synthetic timing evidence. They make no live provider
calls and claim no new live latency measurement.

## Risks

- The browser diagnostic depends on the existing message and receipt DOM
markers. Controlled tests cover visibility, receipt separation,
concurrent reads, and teardown.
- Corrected timing verdicts can become inconclusive. The report keeps
the original verdict and does not change the overall workflow grade.
- This change adds no database migration or product surface.

## Model Used

- OpenAI GPT-6 Codex. Model family: GPT-6. This session does not expose
a more specific model ID or context window size. The agent used
reasoning, shell tools, code inspection, and deterministic tests. The
earlier implementation session did not retain its exact model ID.

## 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-21 08:31:22 -05:00
DottaandPaperclip 2e7efc625b test: preserve reports while rejecting missing or duplicate proof
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 08:29:29 -05:00
DottaandPaperclip 9a8c50ca5d Merge the tested repository candidate into qualification reporting
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/dependable-repository-conversion:
  fix: validate actual task roots and unfinished response waits
  test: qualify conversion prerequisites before runner selection
2026-10-21 08:24:30 -05:00
Dotta 65fd231271 Merge the measured workspace and completion repairs
Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/plain-task-repository-admission:
  fix: validate actual task roots and unfinished response waits

# Conflicts:
#	doc/plans/2026-10-20-dependable-everyday-work.md
2026-10-21 08:23:16 -05:00
DottaandPaperclip 91c026f169 fix: validate actual task roots and unfinished response waits
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 08:21:54 -05:00
DottaandPaperclip 14afc12124 docs: define module ownership and shared change review (#17087)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work.
> - Coding agents extend connectors and shared control-plane services.
> - Provider details can leak into shared services during these changes.
> - Moving code into a new file does not explain why shared behavior
must change.
> - This pull request adds module ownership and shared-change review
rules.
> - The rules help agents justify the change before implementation and
review.

## Linked Issues or Issue Description

**Issue type**

Missing documentation.

**Where is the issue?**

Repository architecture rules and the connector authoring playbook.

**What's wrong?**

Subsystem rules describe some ownership boundaries. The repository lacks
a general rule for deciding which behavior belongs in a feature module,
what shared contracts must change, and how to review the resulting
scope. An integration can therefore add provider-specific logic to
shared code or bundle large platform changes into one connector PR.

**Suggested fix**

Add a repository-wide rule and load it in Greptile. Apply the rule
during connector planning and PR preparation. Keep provider protocol
behavior with its owner. Require a reason for shared changes and checks
through affected consumers.

Related public context: [Notebook connector PR
#16984](https://github.com/paperclipai/paperclip/pull/16984). This PR
changes instructions only.

## What Changed

- Add a concise module-boundary rule for ownership, narrow contracts,
shared controls, delivery scope, and verification.
- Register the rule as repository-wide Greptile context.
- Add planning and PR review steps to the connector playbook. Keep tests
and docs with their behavior.

## Verification

- Passed rule frontmatter, Greptile registration, referenced-file, and
playbook-link checks.
- Passed `git diff --check origin/master...HEAD`.
- Reviewed the rule against the relevant connector failure and allowed
cases: small dispatch branches, one-consumer shared capabilities, and
unrelated fixes.
- Fresh Greptile and Paperclip reviews both scored commit
`759572fe503e1b6dfa9527f53de6c326a2c3bff6` 5/5. No actionable findings
or unresolved review threads remain.
- Final current-commit GitHub checks: 55 successful, 1 neutral, and 2
skipped; no pending or failed checks. Both required `ci / verify` and
`ci / e2e` gates passed.
- Initial CI attempt: the build and runtime boot smoke test passed. The
spot runner received a shutdown signal during the clean public npm
install check, canceling that step and failing the build job.
[Interrupted job
log](https://github.com/paperclipai/paperclip/actions/runs/39601811838/job/119228042468).
Retried failed jobs once. Attempt 2 passed the complete build, runtime
boot, and clean-install verification. The initial runner interruption
remains recorded here.
- Full local application checks are unavailable: this checkout has no
workspace dependencies, and `pnpm -r typecheck` stopped during pnpm
bootstrap because registry fetches failed and the requested pnpm version
could not be verified. Local application tests and build were not run.
GitHub checks must pass before merge.

## Risks

- The rule could cause unnecessary abstractions or extra PRs if applied
mechanically. It permits small dispatch branches and useful capabilities
with one consumer. It rejects arbitrary file counts and unrelated
restructuring.
- Prose and metadata checks do not prove that future agents will follow
the rule. Hosted review receives it when this branch is reviewed.

## Model Used

- OpenAI Codex: `gpt-6-astra` authored the guidance; `gpt-6.1-sol`
prepared delivery. Both used reasoning, filesystem tools, and GitHub
tooling. Context window size was not recorded in the available model
settings.

## 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 (focused documentation and
metadata validation; application checks unavailable as stated above)
- [x] I have added or updated tests where applicable (no runtime change;
targeted structural checks cover the changed instructions)
- [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-21 08:13:16 -05:00
DottaandPaperclip 16922a1832 test: qualify conversion prerequisites before runner selection
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 08:06:11 -05:00
DottaandPaperclip cb4b55dd58 test: reject inherited and untrusted qualification metadata
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-21 08:00:17 -05:00
Dotta 6b1837ece8 test: retain full everyday-work qualification evidence 2026-10-21 07:57:54 -05:00