Skip to content

add .entire/logs to .entire/.gitignore, small refactor - #3

Merged
Soph merged 2 commits into
mainfrom
soph/git-ignore-entire-logs-too
Jan 5, 2026
Merged

Soph merged 2 commits into
mainfrom
soph/git-ignore-entire-logs-too

Conversation

@Soph

@Soph Soph commented Jan 5, 2026 •

Copy link
Copy Markdown
Collaborator

This adds the .entire/logs folder to .entire/.gitignore too. We don't want to commit this.

Also:

  • Renamed function EnsureMetadataGitignore → EnsureEntireGitignore
  • Consolidated duplicate gitignore logic from 2 locations to 1
  • remove cryptic string builder variable name

Soph added 2 commits January 5, 2026 15:17
Entire-Checkpoint: 510c10bf7b7a
@Soph
Soph requested a review from dipree January 5, 2026 16:55

@dipree dipree left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Looking good

@@ -397,11 +405,11 @@ func EnsureMetadataGitignore() error {
}

// Append missing entries to gitignore

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, contentSb73 was kind of a bizare name.

@Soph
Soph merged commit c1f83ac into main Jan 5, 2026
3 checks passed
@Soph
Soph deleted the soph/git-ignore-entire-logs-too branch January 7, 2026 16:19
Soph added a commit that referenced this pull request May 31, 2026
entiredb refactored the mirror surface (ENT-741, on main; ENT-743 /
entiredb#1830 merged): the by-mirror lookup is removed and delete is now
DELETE /mirrors by upstream coords, dissolving the repoId-vs-mirrorId gap.

Our committed spec predates the refactor, so the generated client still
exposes LookupRepoByMirror + DeleteMirror{MirrorID} and mirror remove
still does the two-call lookup->delete. Rewrite #3 from a workaround note
to a refresh-migration checklist: on the next spec refresh, mirror remove
collapses to one delete-by-coords call and must surface the new status
contract (404 no longer swallowed as idempotent success; 403/503/401).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Entire-Checkpoint: f583d875f660
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
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>
Soph added a commit that referenced this pull request Sep 21, 2026
…ical faults

MUST #2: nested directories were created 0o750 while the store root is 0o700,
so the property this branch documents was not delivered where the transcripts
actually land — Copilot, Cursor and Codex all write into nested directories.
TestSessionStore_CreatesNestedDirectories0700 pins the root and both levels
below it.

MUST #3: four sites reported ErrOutsideSessionStore for a problem decided
without consulting any store — an empty path, a dot component, a rooted
reference, and a relative reference escaping its own base. `<store>/./s.jsonl`
cleans to a file INSIDE the store, so "path is outside the agent's session
directory" named the wrong problem, which is the argument ErrUnsafeSessionName's
own doc comment makes. They report ErrUnsafeSessionName now.
ValidateExternalSessionRef says in its doc comment that it can only produce that
sentinel, since containment is ValidateExternalWriteRef's answer to give. Three
external test cases move with them; "absolute outside store" and "rooted path"
still reach Name's Rel branch on Unix and stay containment failures.

N2: only one committed assertion reached the missing-leaf walk, and it needed a
single strip — an implementation with no loop at all passed the whole suite. Two
references now force it past one iteration (several missing components, and a
missing store under a symlinked ancestor), and I verified a leaf-only mutant
fails both.

N3: restoredSessionFile's rejection branch shipped untested. Codex validates its
own answer and so cannot produce the case, so the test scripts a resolver:
inside is accepted, outside and a resolver error both warn and fall back.

N1: the built-in write path compares lexically and has no realpath retry. That
is deliberate — its SessionRef is derived from the same GetSessionDir result the
store was opened with, so there is only one speller, whereas an external plugin
reports its directory and returns its reference independently. Said so at
nameAcrossSymlinks rather than leaving the asymmetry for the next reader.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: 01M325VJD3HQAGMW8QVTF4F8FT
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.

2 participants