Skip to content

use github runners#1

Merged
Soph merged 2 commits into
mainfrom
soph/only-use-github-runners
Jan 5, 2026
Merged

use github runners#1
Soph merged 2 commits into
mainfrom
soph/only-use-github-runners

Conversation

@Soph

@Soph Soph commented Jan 5, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

@Soph
Soph force-pushed the soph/only-use-github-runners branch from b9cd76e to 1d069e5 Compare January 5, 2026 10:42
@Soph
Soph merged commit 23c40ed into main Jan 5, 2026
3 checks passed
@Soph
Soph deleted the soph/only-use-github-runners branch January 7, 2026 16:18
peyton-alt added a commit that referenced this pull request Apr 21, 2026
…rivation

Covers issues #1-7 from the multi-agent PR review pass:

1-2. Settings-load errors no longer wipe user config. Both runReview and
     saveReviewConfig now distinguish "file missing" (settings.Load returns
     defaults) from "file malformed" (returns err). Malformed-file errors
     surface to the user with a friendly "fix .entire/settings.json" hint
     instead of silently opening the picker and overwriting unrelated
     settings with an empty EntireSettings{}.

3.  Pending marker is now cleaned up on every spawn-path failure via a
     deferred best-effort ClearPendingReviewMarker. Previously it only
     fired on execCmd.Run() non-zero exit, so a clean agent exit without
     any UserPromptSubmit (e.g. /quit) would leave the marker behind to
     mis-tag the next unrelated session.

4.  detectBaseBranch loop order now matches its docstring: all remote-
     tracking branches (origin/main, origin/master) are tried before any
     local branch. The doc-vs-code drift the comment-analyzer caught is
     fixed; a regression test pins the order.

5.  HasReview derivation no longer lives as a hardcoded string literal in
     the checkpoint package. session.Kind.IsReview() is the single source
     of truth; manual_commit_condensation sets WriteCommittedOptions
     .HasReview via that helper. Future review-kind Kind values just add
     to the IsReview disjunction and HasReview keeps covering them —
     previously a typo of "agent_review" in committed.go would have
     silently broken the feature.

6.  Context now threads through pendingMarkerPath, WritePendingReviewMarker,
     ReadPendingReviewMarker, ClearPendingReviewMarker. Previously they
     all used context.Background() internally, dropping cancellation and
     tracing from callers.

7.  headHasReviewCheckpoint now logs at Debug on each failure step
     (locate worktree root, read HEAD, parse trailer, open repo, resolve
     summary, HasReview false) so users debugging "why didn't the review
     badge show up?" have breadcrumbs instead of a single silent false.

Plus tests:
- TestKindIsReview pins the IsReview invariant and forces future review
  kinds to be added to the disjunction.
- TestSaveReviewConfig_ReturnsErrorOnMalformedSettings pins the data-loss
  regression fix.
- TestDetectBaseBranch_PrefersAllRemotesOverLocals pins the #4 fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: 410590b32b74
alishakawaguchi added a commit that referenced this pull request May 20, 2026
CI lint:
- escape U+200B literals (staticcheck ST1018)

Real bugs (cursor[bot] + Copilot review):
- loop: ctx-cancel mid-cmd.Run() now classifies as OutcomeCancelled
  instead of being counted as a turn failure and tripping OutcomePaused
  after two consecutive cancels (#1)
- loop: save state before returning OutcomePaused so --continue resumes
  from a snapshot that includes the failing turn (#11)
- investigate fix: wrap context.Canceled as SilentError so Ctrl+C during
  the fix session doesn't print a cobra usage banner (#2)
- cmd: redact URL userinfo on the issue-link Source: line in both
  interactive and non-interactive paths (#5)
- issuelink: redact URL userinfo across gh stderr (not just argv) so a
  token in --issue-link cannot leak via the error path (#10)
- cmd: outcome-aware footer — "Investigation ended" + resume hint for
  paused/cancelled, "Investigation complete" + fix hint only for
  Quorum/Stalled (#6)
- cmd: validate maxTurns/quorum bounds after settings/flag merge so a
  hand-edited negative max_turns or oversized quorum errors cleanly
  instead of silently stalling (#7)
- issuelink: tolerate GitHub URL trailing segments (/pull/123/files,
  trailing slash) — the regex now anchors prefix and ignores tail (#13)
- picker: don't print "Saved investigate config" before persistence;
  moved to the caller after SaveLocal succeeds (#14)
- picker: guard pickerFormOverride with atomic.Pointer so parallel
  tests that swap the override don't race (#12)

Docs:
- settings/loop: fix stale "0 → 3" max_turns doc; default is 2 (#8/#9)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: b0135abeee0d
Soph added a commit that referenced this pull request May 31, 2026
…ewire mirror remove

entiredb#1820 (accurate success codes) and the ENT-741 mirror refactor are
now on main, so refresh the spec and simplify against it:

- normalize.go: the success-code bug is fixed upstream (creates declare
  200, deletes 204), so stop collapsing success to a "2XX" range. Keep the
  real success code and fold only the explicit 4xx/5xx into a single
  "default" (all reference one ErrorModel) — still convenient errors, but
  ogen now returns the success type directly with no *…StatusCode wrapper.
  collapseTypeUnions stays: #1 (nullable-array shorthand) is still unfixed.
- Drop the .Response unwraps across org/project/repo/grant/repo_mirror now
  that methods return (*T, error); DELETEs return plain error.
- mirror remove: the by-mirror lookup endpoint is gone; call the new
  delete-by-coords route directly (DELETE /mirrors?provider&owner&repo&
  clusterHost). 404 is now a real, surfaced error, not idempotent success.
- UPSTREAM.md: reframe #2 (success-code bug fixed; the error-fold that
  remains is a deliberate ergonomics choice retired by a shared upstream
  "default"); remove #3 (resolved by delete-by-coords).

Net ~2.4k fewer generated lines. fmt/lint/test:ci green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Entire-Checkpoint: e7de894317fb
Soph added a commit that referenced this pull request Jun 1, 2026
…ewire mirror remove

entiredb#1820 (accurate success codes) and the ENT-741 mirror refactor are
now on main, so refresh the spec and simplify against it:

- normalize.go: the success-code bug is fixed upstream (creates declare
  200, deletes 204), so stop collapsing success to a "2XX" range. Keep the
  real success code and fold only the explicit 4xx/5xx into a single
  "default" (all reference one ErrorModel) — still convenient errors, but
  ogen now returns the success type directly with no *…StatusCode wrapper.
  collapseTypeUnions stays: #1 (nullable-array shorthand) is still unfixed.
- Drop the .Response unwraps across org/project/repo/grant/repo_mirror now
  that methods return (*T, error); DELETEs return plain error.
- mirror remove: the by-mirror lookup endpoint is gone; call the new
  delete-by-coords route directly (DELETE /mirrors?provider&owner&repo&
  clusterHost). 404 is now a real, surfaced error, not idempotent success.
- UPSTREAM.md: reframe #2 (success-code bug fixed; the error-fold that
  remains is a deliberate ergonomics choice retired by a shared upstream
  "default"); remove #3 (resolved by delete-by-coords).

Net ~2.4k fewer generated lines. fmt/lint/test:ci green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Entire-Checkpoint: e7de894317fb
suhaanthayyil added a commit that referenced this pull request Jun 30, 2026
Resolves the review packet on the Codex subagent change:

- #1 Codex task-checkpoint UUID: documented that CheckpointUUID is
  Claude-format-specific (tool_result/UUID) and resolves to "" for Codex —
  rewind to a Codex task checkpoint restores files via the shadow tree but does
  not truncate the transcript (graceful fall-through; restore truncation is also
  Claude-only). Codex-aware line-offset truncation is a deferred follow-up.
  Comment at the call site + AGENT.md.
- #2 Resumed-subagent token under-count: documented deliberate trade-off (chosen
  over the worse cross-turn double-count) + observability — logResumedOutOfRangeChildren
  debug-logs when a resume_agent targets a child spawned in a prior range.
- #3 Regression tests: CalculateTotalTokenUsage nil-main-with-subagent-tokens
  unit test (guards the nil-deref); new integration test
  TestCodexSubagentEnd_SourcesFilesFromChildNotParent (+ SimulateCodexSubagentStart/Stop
  harness helpers) guarding handleLifecycleSubagentEnd's child-not-parent resolver.
- #4 Debug logging across the discover→resolve→read→parse chain
  (readSubagentRolloutsUncached, CalculateTotalTokenUsage, spawn-output drop) so
  Codex wire-format drift is visible instead of silently zeroing attribution.
- #5 isCodexSubagentRollout: nested source.subagent fallback for rollouts without
  thread_source + backward-compat test (missing marker → treated as parent turn).
- #6 + nits: t.Parallel() on the pure-logic codex tests; AGENT.md PostToolUse line
  corrected (it IS consumed); StepTranscriptStart aligned to the resolved
  transcriptOffset (removes the exec/no-preState divergence; field is currently
  unconsumed by the strategy).

go build (incl. integration tag), vet, unit + codex integration tests, lint (0) all green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Soph added a commit that referenced this pull request Jun 30, 2026
…50MB cap

Address PR review (Copilot #3) and the trail finding.

OPF stale compact (#3): in replaceTranscript, when compact regeneration yields
nothing (failure, empty, or oversized), drop the prior transcript.jsonl and
clear CompactTranscriptStart instead of leaving a stale, less-redacted compact
on the branch with a marker pointing at content that no longer matches the
re-redacted full.jsonl. setCompactTranscriptStart now takes *int so it can clear
the marker. Regression test added.

Oversized-drop (#1 / trail finding): document the known limitation — the compact
transcript is not chunked, so output exceeding the 50MB blob cap is skipped and a
very long session may lack transcript.jsonl on some checkpoints; full.jsonl stays
authoritative and the compact is regenerable. Updated the architecture doc
(also correcting the now-stale "finalization keeps the previous transcript.jsonl"
clause) and CLAUDE.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: bd7061c21a95
Soph added a commit that referenced this pull request Jul 4, 2026
Follow-ups from review of the git-refs ULID-emission PR (the id-kind read-routing
item, #1, and the write-boundary kind guard, #2, are deferred — see below):

- id.CheckpointID.DisplayShort() (new): kind-aware trim — legacy hex shows its
  12-char prefix, a ULID is shown in full (front-truncating a ULID drops its
  entropy tail and yields an ambiguous, unresolvable prefix).
- explain checkpoint-list view uses DisplayShort instead of a blind 12-char cut,
  so ULID checkpoints no longer collapse to near-identical timestamp prefixes.
- blame --long sizes the Checkpoint/Session column to its content
  (attributionCheckpointColumnWidth) so a 26-char ULID + session renders whole
  instead of being clipped to a session-less 21-char prefix.
- attach's fetch hint now resolves its target via resolveCheckpointFetchTarget —
  the same path FetchCheckpointRef uses — so the pasteable command matches the
  remote the fetch actually ran (fixes a bare "git fetch origin …" that fails in
  a token-only environment with an SSH origin).
- id.MaxIDLength ties to oklog/ulid's EncodedSize instead of a third hardcoded 26.
- eager-condense mints the checkpoint ID only after the skip checks, so a no-op
  session stop no longer pays the mint (and its checkpoints-config load).
- docs/architecture/sessions-and-checkpoints.md: checkpoint IDs are 12-hex OR
  ULID (not fixed-width), minted via checkpoint.GenerateCheckpointID.

Deferred to the id-kind read-routing follow-up (tracked separately):
- #1 attach routes presence/refresh/fetch-hint by current config, not by the
  trailer ID's kind — after a git-branch⇄git-refs flip attach looks in the wrong
  place and can suggest an unfixable fetch. This is the read-routing work the PR
  body already names; the two concrete attach dead-ends belong in that issue.
- #2 the ULID⇒refs invariant has no write-boundary guard. A naive "git-branch
  store saw a ULID → warn" misfires when git-branch is a *mirror* of a git-refs
  primary (a valid topology where ULIDs legitimately reach it), so the correct
  guard needs topology-role awareness and belongs with the routing work.

Tests: TestCheckpointID_DisplayShort, TestAttributionCheckpointColumnWidth.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: 14006b64f8d1
SnowingFox pushed a commit to SnowingFox/cli that referenced this pull request Jul 5, 2026
Follow-up entireio#1 from the ULID-emission review: reads resolved only against the
configured primary store, so after a git-branch⇄git-refs flip (or during
coexistence) a checkpoint stored in the other backend was reported missing. Now
`checkpoint.Open` returns a kind-routing store that resolves id-keyed reads by the
checkpoint's format:

- A ULID is read from the git-refs store only — never the branch (any backend).
- A hex ID is read from the active primary first; under a git-refs primary it also
  falls back to the git-branch store (a hex checkpoint may still sit on the
  pre-migration v1 branch, or have been migrated into refs).
- List unions both backends; GetCheckpointAuthor routes the same way (AuthorReader
  preserved). Writes are NOT kind-routed — they stay on the configured primary
  (+ mirrors); the minted ID already matches the primary's format.

The router is built once in Open, reusing the primary for its kind and building
the sibling read store. All the general read paths (resume, explain, attribution,
blame, tokens, attach) inherit routing for free.

Tests: routing_store_test.go covers ULID→refs (incl. "a ULID never reads from the
branch"), hex→branch, hex-fallback and migrated-hex-in-refs under a refs primary,
List union, session-read routing, and author routing. Updated open_config_test to
the new "Persistent is always the routing store" invariant.

Verified: unit + integration (390) + canary both backends (git-branch, git-refs).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: fe977d819cd6
suhaanthayyil added a commit that referenced this pull request Jul 15, 2026
Resolves the review packet on the Codex subagent change:

- #1 Codex task-checkpoint UUID: documented that CheckpointUUID is
  Claude-format-specific (tool_result/UUID) and resolves to "" for Codex —
  rewind to a Codex task checkpoint restores files via the shadow tree but does
  not truncate the transcript (graceful fall-through; restore truncation is also
  Claude-only). Codex-aware line-offset truncation is a deferred follow-up.
  Comment at the call site + AGENT.md.
- #2 Resumed-subagent token under-count: documented deliberate trade-off (chosen
  over the worse cross-turn double-count) + observability — logResumedOutOfRangeChildren
  debug-logs when a resume_agent targets a child spawned in a prior range.
- #3 Regression tests: CalculateTotalTokenUsage nil-main-with-subagent-tokens
  unit test (guards the nil-deref); new integration test
  TestCodexSubagentEnd_SourcesFilesFromChildNotParent (+ SimulateCodexSubagentStart/Stop
  harness helpers) guarding handleLifecycleSubagentEnd's child-not-parent resolver.
- #4 Debug logging across the discover→resolve→read→parse chain
  (readSubagentRolloutsUncached, CalculateTotalTokenUsage, spawn-output drop) so
  Codex wire-format drift is visible instead of silently zeroing attribution.
- #5 isCodexSubagentRollout: nested source.subagent fallback for rollouts without
  thread_source + backward-compat test (missing marker → treated as parent turn).
- #6 + nits: t.Parallel() on the pure-logic codex tests; AGENT.md PostToolUse line
  corrected (it IS consumed); StepTranscriptStart aligned to the resolved
  transcriptOffset (removes the exec/no-preState divergence; field is currently
  unconsumed by the strategy).

go build (incl. integration tag), vet, unit + codex integration tests, lint (0) all green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SnowingFox pushed a commit to SnowingFox/cli that referenced this pull request Jul 19, 2026
Importing (via `entire import` or the `entire enable` offer) writes read-only
checkpoints to the local entire/checkpoints/v1 store and never syncs on its own
— sync happens later via the git pre-push hook, only once logged in. So an
import run while logged out succeeds locally but silently never reaches the
dashboard, and re-importing after login is a no-op (idempotent on local
existence).

Surface this: after a logged-out import that wrote local history, print a notice
that it's local-only and to log in before importing so it syncs. No-op when
logged in or when nothing was imported. Login detection is local-only (ENTIRE_TOKEN
or a current stored context) — no network on the import path. The existing
"Imported N turn(s)" line is unchanged.

This is fix entireio#1 (the UX guard) for entireio#1773; the sync-trigger for already-imported,
commit-less checkpoints is tracked separately there.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant