Repository navigation
1.0.0-alpha.52: Cursor workers first-class (CURSOR-ISCI) + queued fixes - #110
Merged
Merged
Conversation
…eport channel (CURSOR-ISCI C0/C1/C3) - C0: real cursor-agent 2026.10.19-6bbf2c4 stream-json captures as fixtures (probe, probe2 tool calls, auto, killed without result); only the host probe directory is replaced by /workspace, ids kept. - C1: normalizeCursorLine maps system/init, thinking, assistant, tool_call and result onto the existing worker event kinds (no new kind, schema v1): tools by a data table (unknown keys stay `other` and are counted unmapped), turns derived from assistant events, camelCase usage tokens, null cost, no models list. The line observer selects its normalizer by the new registry capability `eventStream` instead of provider literals (the hardcode ratchet refuses new slug dispatch); two resolved allowlist rows removed. - C3: registry `structuredReport` accepts the flagless `final-text-json` channel (cursor entry set). Preflight treats it as supported without a help flag, no argv is added, the instruction + schema are appended to the prompt after custody validation, and the collector (chosen by channel) reads the successful result text, unwrapping only one whole fenced block, then validates/redacts with validateFinalReport. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ed / provider-chosen verdicts (CURSOR-ISCI C2)
Owner K1/K2 2026-10-22: a CLI that reports only the model's display name at
session start gets an honest verdict; `verified` keeps its meaning.
- provider-catalog: modelUsageEvidence `session-start-name`; catalog model v3
metadata `reportedNames[{name,cliVersion,source,observedAt}]` and
`selection: 'provider'`; one name per channel model, CLI channels only,
bounded channel total (document parse and partial ledger merge).
- Frozen pin evidence (`reportedNames`, `otherReportedNames`, `providerChosen`)
derived from the catalog at Run admission (prepareWorkerEffortAdmission ->
compile/bind), re-checked by admitWorkerModels (BINDING_MISMATCH); absent
when the catalog has none, so Claude/Codex profile bytes are unchanged.
- verifyWorkerModels: provider-chosen / start-name-matched / substituted
(name of another model) / unverified (missing or unrecorded name).
New statuses are sealed as model.verification v3; all others stay v1/v2.
- Evaluation: verdict enum widened; session-start-name unverified is held
('unknown'), matched and provider-chosen accepted by criteria, substituted fails.
- Legacy unstamped records keep reading as `none`.
- Monitor line EN/TR texts; cursor registry capability set.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
Conflicts resolved as the union: cursor entry keeps eventStream + final-text-json report (C1) with modelUsageEvidence session-start-name (C2); capability mirror carries both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
…wn credential secret The cursor credential is only the access token, so known-secret redaction can only mask that value; the fixture secret of the other providers is not a Cursor secret. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
…image receipt (CURSOR-ISCI C4+C5)
C4: assets/model-catalog/cursor-cli-subscription.json (owner K2 narrow set + auto with selection provider; model-id variants carry a
fixed-model effortBinding, composer-2.5/auto carry none). reportedNames only where measured on a logged-in host (Composer 2.5, Auto).
Seed list in --seed help EN+TR, fixtures, tests.
C5: install.mjs records cursor: { version, installerSha256 } in installed.json; cursorInstallerSha256 kept.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ursor version (C4+C5) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
… model-id variants Owner re-logged Cursor 2026-10-22; names from stream-json system/init on cursor-agent 2026.10.19-6bbf2c4 (proof CURSOR-2026-10-22/init-names). All seven names distinct; init names differ from --list-models text (e.g. 'Claude Opus 5 300K High'). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
…pm 11.20 advisory; future npm blocks unreviewed scripts) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
…R, CHANGELOG, PLAN, ARCHITECTURE, version bump to 1.0.0-alpha.52 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
…a 2 s view window (DELIVERY-QUEUE-E2E-FLAKE) Root cause of CI run 39778067228 (node 26 shard 1): `s.list()` drives the shipped `task integration-queue-list` with no steps, so the PTY driver's post-step window (2 s, then SIGTERM/SIGKILL and status 'stopped') was the whole budget for Node startup, dist load, ledger read and render. On a loaded host the command took longer and the test read 'stopped' as its exit status. Not a product or queue/supervisor race. The driver now takes an optional `until-exit` mode: the program's own exit is the end condition, bounded like any step (40 s), and past that bound it returns a 'timeout' result (cliInPty throws "waited for \"exit\"") instead of a killed status. Views keep the 2 s stop. The shared fixture cliInPty uses it; the identical copies in the intent and reattempt e2e files now import the fixture's instead of carrying the same latent flake. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…xit (DELIVERY-QUEUE-E2E-FLAKE root cause) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
…ivery-queue e2e harness fix Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
…pen (Astra 2730 S1) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
…t-json enforces one last terminal result (REVISE 2730 R1+R2) R1: the Cursor normalizer emits session.ended tokens only when inputTokens, outputTokens, cacheReadTokens and cacheWriteTokens are all safe non-negative integers; empty, partial, string, negative, fractional, unsafe or null counters keep tokens null and count usage-invalid. The shared num helper (Claude/Codex) is unchanged. R2: the final-text-json collector accepts exactly one terminal result that is the last record; a second result (either order) or any later non-blank line, including an over-bound line, makes the report invalid, sticky to EOF. The Cursor normalizer emits one session.ended per session and counts a later result as result:duplicate. Claude/Codex collectors and normalizers are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rs) + R2 (final-text-json single terminal result) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.
Tip: disable this comment in your organization's Code Review settings.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
1.0.0-alpha.52: Cursor workers become first-class (CURSOR-ISCI, pre-beta, owner 2026-10-22), plus two queued fixes.
session.ended, so it no longer stays "running".final-text-json), and the existing report gates now apply to Cursor tasks.session-start-namewith two new verdicts:start-name-matched: accepted by criteria and shown.provider-chosen: Cursorauto, where the model choice is left to Cursor.substituted, which fails.verifiedis unchanged.cursor-cli-subscriptionseed with measured session-start names. The worker image receipt records the Cursor version.allowScripts.Evidence
101bf1c1asked for R1 (token counters) and R2 (terminal sequence). Both were fixed in8c4564d8and PASS 2732 on0af045ba.101bf1c1): 1097 files, 10095 passed, 8 skipped, 0 failed. The REVISE fix is confined to the Cursor path. It ran as targeted tests: red 21 → green 36, and 7 files / 108 tests with Docker and bwrap.CURSOR-2026-10-22. This includes the real Cursor streams and the measured init names.Doors and blast radius
reportedNames.🤖 Generated with Claude Code
https://claude.ai/code/session_01JrXPpzy6N7zFwchFM6Adob