Antigravity Two-File Source Identity#
Status: Pending implementation — Antigravity-specific ingestion does not yet exist in the codebase as of 2026-09-05. The guidance below describes the required design for when it is added.
What Is This#
Antigravity CLI 1.1.22 creates two relevant files per session:
- Statusline transcript path — reported by the Antigravity CLI, located at
~/.gemini/antigravity/.../transcript.jsonl - Actual transcript — the file that contains the real session content, written at
~/.gemini/antigravity-cli/.../transcript_full.jsonl
When decant ingests an Antigravity session, it must treat these two files as a single logical source: resolve the reported path to the actual transcript, and build the ingest fingerprint from both files.
Path Resolution#
The Antigravity CLI's statusline reports a path under ~/.gemini/antigravity/, but the actual transcript is written to the sibling directory ~/.gemini/antigravity-cli/ with the filename transcript_full.jsonl. Any Antigravity source reader must:
- Receive (or discover) the legacy statusline path.
- Rewrite it to the
antigravity-clicounterpart to obtain the actual transcript content.
This mirrors how geminiSessionLayout() and geminiProjectPath() in derive structured layout information from a raw file path before parsing — path resolution is a prerequisite to reading content.
Why the Fingerprint Must Include Sidecar Content#
Decant's current skip logic decides whether to re-ingest a file by comparing three values stored in ingest_source:
size(bytes)mtime(seconds)ingest_revision
This three-factor check is insufficient for Antigravity sessions because:
Same-size, same-timestamp sidecar replacement. If the sidecar (
transcript_full.jsonl) is atomically replaced by a new file of identical byte length written in the same filesystem-timestamp second, the skip condition at evaluates totrueand the updated session is silently ignored.
The fix: include a hash of the sidecar's content in the fingerprint. The Antigravity ingest path should compute a combined SHA-256 fingerprint — e.g., hash the concatenation or XOR of the statusline transcript content and the transcript_full.jsonl content — so that any byte-level change in either file triggers re-ingest regardless of size and mtime collisions.
This is analogous to how Claude Code uses readClaudeSidecarMeta() to pull in adjacent .meta.json data during session parsing, though for Antigravity the sidecar content must influence the fingerprint, not just the parse.
Implementation Guidance#
When adding Antigravity support:
| Concern | Guidance |
|---|---|
| Source file discovery | Walk ~/.gemini/antigravity-cli/ (not the statusline path) to find transcript_full.jsonl files. |
| Registered path | Store the transcript_full.jsonl path as the canonical ingest_source.path, not the legacy statusline path. |
| Skip check augmentation | Extend the fingerprint beyond size+mtime+ingest_revision to include a SHA-256 hash of the sidecar content. |
| Parser entry point | Add src/sources/antigravity.ts following the pattern of (src/sources/gemini.ts) and wire it into the if/else dispatch in . |
INGEST_PIPELINE_REVISION bump | Increment the revision constant when the Antigravity parser ships so previously-skipped files are re-evaluated. |
Related Code#
- Skip / fingerprint logic:
readClaudeSidecarMeta(sidecar pattern precedent):- Gemini layout resolution (path-resolution precedent):
- Parser dispatch:
- Gemini source parser (structural template):